Skip to main content
Jason Finance
AI Startup

Claude Code for Beginners: Installation, CLAUDE.md, Skills, Hooks and Permissions, No Coding Required

A Claude Code tutorial for non-coders: requirements, plans, three ways to install, your first hour, and what CLAUDE.md, skills, hooks, permissions and MCP do.

On this page
  1. 1.Before you start: plan, computer and network
  2. 2.Installing Claude Code: pick one of three ways
  3. 2.1Native install (officially recommended)
  4. 2.2Other ways
  5. 2.3Check the install and sign in
  6. 3.Your first hour: do these in order
  7. 4.Claude Code tutorial: the main features and how non-coders use them
  8. 4.1CLAUDE.md: Claude’s working rules
  9. 4.2Skills: turning a set procedure into a command
  10. 4.3Hooks: things that always happen
  11. 4.4Permission modes: how often Claude asks you
  12. 4.5settings.json: hard-coding the rules
  13. 4.6MCP: connecting Claude to other tools
  14. 4.7Slash commands: remember these first
  15. 4.8Remote Control: give it work when you’re away from the computer
  16. 5.The three things beginners get stuck on most
  17. 5.1Permission prompts: understand before you approve, don’t just keep pressing Yes
  18. 5.2Long conversations: they get compacted automatically, and rules said only in the conversation can be lost
  19. 5.3Keys and passwords: not in the conversation, not in Git
  20. 6.How I actually use it: Git, previews, and asking me based on the effect
  21. FAQ

Claude Code is Anthropic’s AI coding assistant. It reads and edits files and runs commands on your computer or server. It wrote all of Jason Finance’s code and handles its deployments and data updates; I can’t read code myself. This Claude Code tutorial covers the parts that matter to people who can’t code: installation, your first hour, what each main feature is for, and the pitfalls I’ve run into or that the official docs specifically warn about.

The short version: Claude Code requires a paid plan (Pro, Max, Team, Enterprise or Console); the free plan doesn’t include it. Once it’s installed, the things most worth your time first are CLAUDE.md and the permission settings. Learn the commands as you need them. Your job is to say clearly what you want, check the results and make the decisions; let it run the commands.

This post is my own notes from using it, not an official tutorial. Features, commands and supported plans all change. The official docs below were checked on 12 October 2026; before acting on anything, go by the Claude Code official docs.

Before you start: plan, computer and network

Item Official requirement (checked 12 October 2026)
Account Pro, Max, Team, Enterprise or Console; the free claude.ai plan does not include Claude Code; Amazon Bedrock, Google Cloud and Microsoft Foundry also work
Operating system macOS 13.0 or later, Windows 10 1809 or later or Windows Server 2019 or later, Ubuntu 20.04 or later, Debian 10 or later, Alpine Linux 3.19 or later
Hardware 4 GB of RAM or more, x64 or ARM64 processor
Network Internet connection required
Shell Bash, Zsh, PowerShell or CMD
Region A country or region Anthropic supports

Source: Advanced setup.

My Claude Code runs on an ARM server in Oracle Cloud, and ARM64 works fine; the setup is in Running Claude Code Remote Control on a Free Oracle Cloud Server. For your first try, installing it on your own computer is enough.

Installing Claude Code: pick one of three ways

If you’ve never opened a terminal, the official docs have a terminal guide that shows how to open one and paste commands. If you’d rather not touch the terminal at all, you can download the Desktop app and use Claude Code through a graphical interface.

macOS, Linux, WSL:

curl -fsSL https://claude.ai/install.sh | bash

Windows PowerShell (the prompt is PS C:\):

irm https://claude.ai/install.ps1 | iex

Windows CMD (the prompt is C:\, without PS in front):

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

On Windows you don’t need to run it as administrator. The native install updates itself automatically in the background.

Other ways

Method Command Things to note
Homebrew (macOS) brew install --cask claude-code Doesn’t update automatically; run brew upgrade claude-code yourself
WinGet (Windows) winget install Anthropic.ClaudeCode Doesn’t update automatically; run winget upgrade Anthropic.ClaudeCode yourself
apt, dnf, apk (Linux) Add the signed package repository following the official steps Updates with the system, not on its own
npm npm install -g @anthropic-ai/claude-code Requires Node.js 22 or later; the docs warn not to use sudo npm install -g

Check the install and sign in

Open a new terminal window:

claude --version   # if it prints a version number, it's installed
claude doctor      # checks the installation and settings without starting a conversation

If you see command not found, the install path most likely hasn’t been added to PATH yet; follow the official troubleshooting page. Then go to your project folder and run claude. The first time, it opens a browser for you to sign in.

If ANTHROPIC_API_KEY is set in your environment and you agree to use it when asked, Claude Code skips the sign-in and uses that key instead. If you want to connect back from your phone with Remote Control, note that it only supports signing in with a claude.ai subscription, not an API key.

Your first hour: do these in order

  1. Start it inside your project folder: cd into the project, then run claude. The docs mention that if you start it directly in your home directory, your choice to trust the folder isn’t remembered, and it asks again every time.
  2. Check the current permission mode: the status bar at the bottom shows text such as auto mode on or manual mode on. Press Shift+Tab to switch; the differences are explained below.
  3. Run /init: Claude reads the whole project and generates a first version of CLAUDE.md.
  4. Turn CLAUDE.md into your rules: add what it can’t tell from the code, such as “talk to me in Traditional Chinese” or “ask me before publishing”.
  5. Run /context: confirm CLAUDE.md was loaded (it’s listed under Memory files), and see how much of the conversation’s space is already used.
  6. Give it a small task: for example, “What does this project do? Explain it in plain language.” Have it read without changing anything, and see whether it understands correctly.
  7. Let it change something small: watch how it asks for permission and what it changes, then ask it to explain.
  8. Keep a record with Git: make sure the project is in Git so you can roll back if something breaks. /rewind can also take the conversation and the code back to an earlier state.
  9. Set what it must not touch: in .claude/settings.json, block reading files that hold passwords, such as .env (example in the next section).
  10. Type / to see the command list: knowing where /help and /usage are is enough; look up the rest when you need them.

Claude Code tutorial: the main features and how non-coders use them

Feature What it is What non-coders use it for
CLAUDE.md Project instructions read at the start of every session Your communication language, what it must ask you first, the site’s fixed rules
Auto memory Notes Claude keeps for itself Things you’ve corrected don’t need repeating next time
Skills A set procedure written in a SKILL.md file Work that’s the same every time: polishing, pre-publishing checks, generating reports
Hooks Commands that always run at specific points Sending a notification when it’s waiting for you, blocking edits to important files
Permission modes Decide which actions need your approval first Choose how often you get asked, based on the risk of the work
settings.json Settings file with allow, ask and deny rules Hard-code rules such as “never read the password file”
MCP A standard for connecting external tools Let Claude query Notion, a database or monitoring data directly
Slash commands Commands that start with / Check usage, compact the conversation, switch models
Remote Control Take over a session on your computer from your phone or the web Give it work and check progress when you’re away from the computer

CLAUDE.md: Claude’s working rules

The official memory docs list several locations: the project’s ./CLAUDE.md (or ./.claude/CLAUDE.md) is shared with your team through Git; ~/.claude/CLAUDE.md applies to all your projects; ./CLAUDE.local.md is for you only and should be added to .gitignore.

Key points:

  • Keep each file under 200 lines; a longer one eats into the conversation’s space and is followed less reliably.
  • You can import other documents with @file path, but imported content also loads at the start of the session, so it doesn’t save space.
  • CLAUDE.md is background information, not enforced configuration. The docs state that actions which must be blocked no matter what Claude decides need a PreToolUse hook.
  • /memory opens and edits these files and turns auto memory on or off. Auto memory is stored in ~/.claude/projects/<project>/memory/, and the first 200 lines or first 25KB of MEMORY.md load at the start of each session.

Which rules a multilingual site’s CLAUDE.md actually needs, and how to divide it into sections, is covered separately in How to Write CLAUDE.md.

Skills: turning a set procedure into a command

A skill is a folder that must contain a SKILL.md: the description at the top tells Claude when to use it, and the body lists the steps. Put it in ~/.claude/skills/<name>/ and all your projects can use it; put it in the project’s .claude/skills/<name>/ and it’s shared with the repo.

There are two ways to use one: Claude loads it automatically when the description matches what you need, or you type /name to call it directly. For procedures that have real consequences (such as deployment), you can set disable-model-invocation: true in the frontmatter so it only runs when you call it. The docs also say the old custom commands (.claude/commands/) have been merged into skills, and existing files still work.

Unlike CLAUDE.md, a skill’s body only loads when it’s used, so long instructions take up less space in a skill.

Hooks: things that always happen

Hooks are commands you define that Claude Code runs at specific points, without the AI deciding whether to run them. Common points:

Event When Example
Notification When Claude is waiting for your reply or approval Show a desktop notification
PreToolUse Before a tool runs; can block it Block edits to .env or .git/
PostToolUse After a tool runs successfully Auto-format files after editing
SessionStart When a session starts or resumes Load information you need to know that day
Stop When Claude finishes replying Reminders, logging

Hooks are configured in the hooks block of settings.json, and you can view them by typing /hooks. The official example uses a script that checks the path about to be edited; if it matches .env, package-lock.json or .git/, the script blocks it with exit code 2, and Claude receives the reason it was blocked. It’s fine if you can’t read the script: ask Claude to write one following the official example, then ask it to demonstrate a blocked edit.

Permission modes: how often Claude asks you

According to the official docs:

Mode What it can do without asking Suits
default (shown as Manual) Reading only Sensitive work, when you want to confirm each step
acceptEdits Reading, editing files, common file commands (mkdir, mv, cp and so on) When you’ll review the changes
plan Reading; it writes a plan for your approval before acting Seeing how it plans to do something before it changes anything
auto Everything, reviewed in the background by another model Long jobs, when you don’t want to be asked constantly
dontAsk Tools you’ve allowed in advance; everything else is refused Automation scripts
bypassPermissions Everything, with no checks Only isolated containers or virtual machines

Two things to know:

  • Newer versions default to auto mode: from Claude Code v2.1.283, interactive sessions in the terminal and VS Code start in auto by default. In older versions only the Pro, Max and Team plans defaulted to auto; the rest started in Manual. The docs also warn that auto mode reduces prompts but does not guarantee safety, so you still need to check sensitive operations yourself.
  • Press Shift+Tab to cycle through modes. To always start in Manual, set "permissions": {"defaultMode": "default"} in ~/.claude/settings.json.

settings.json: hard-coding the rules

Settings come in several layers, from highest to lowest priority: the organization’s managed settings, command-line arguments, .claude/settings.local.json (you, this project), .claude/settings.json (shared by the whole project) and ~/.claude/settings.json (you, all projects).

The most useful part is the permission rules. The official example:

{
  "permissions": {
    "allow": ["Bash(npm run lint)", "Bash(npm run test *)"],
    "deny": ["Read(./.env)", "Read(./.env.*)"]
  }
}

deny rules apply in every mode, even bypassPermissions. When you choose “Yes, and don’t ask again” at a permission prompt, Claude Code writes the rule into .claude/settings.local.json automatically. Check now and then with /permissions to see which allow rules have built up.

MCP: connecting Claude to other tools

MCP is an open standard for connecting external systems. Once connected, Claude can look up issues, databases or monitoring data directly, without you copying and pasting. Add a server with claude mcp add; use /mcp to check status and sign in.

The docs warn: make sure you trust a server before connecting it. Servers that fetch external content carry a risk of prompt injection (malicious instructions hidden in the content), and Anthropic does not audit MCP servers for security. My advice is to start by connecting only official services or ones you use yourself.

Slash commands: remember these first

Command What it does
/help Help and the command list
/init Generate CLAUDE.md
/memory Edit CLAUDE.md, turn auto memory on or off
/context See how much conversation space is used
/compact Compact the current conversation into a summary
/clear Start a new conversation and clear the content
/rewind Take the conversation or code back to an earlier state (alias /undo)
/permissions Manage allow, ask and deny rules
/usage See costs and plan usage (/cost is an alias)
/remote-control Let this session be taken over from your phone or the web (alias /rc)

For details, go by the official command list.

Remote Control: give it work when you’re away from the computer

Remote Control lets you take over a Claude Code session running on your computer from claude.ai/code or the Claude mobile app. The code runs, and the files stay, on the original machine. It supports Pro, Max, Team and Enterprise, not API keys; on Team and Enterprise, an Owner has to turn it on in the admin settings first.

To turn it on, type /remote-control in a session or run claude remote-control. If you want it on standby on a server for the long term, see how I made it a permanent service with systemd: Running Claude Code Remote Control on a Free Oracle Cloud Server.

The three things beginners get stuck on most

Permission prompts: understand before you approve, don’t just keep pressing Yes

In Manual mode, Claude asks you before editing files, running commands or going online. If you don’t understand a command, you can ask it: “What will this command do? Will it delete anything?” The docs state that reviewing the proposed code and commands before approving them is the user’s responsibility.

What I do (my own inference, not official advice): for common commands that can’t do damage (running tests, checking status) I choose “don’t ask again”; commands that delete, push or change production settings I check every time. If being asked so often gets annoying, switch to auto mode and use deny rules and hooks to guard what really must not be touched.

Long conversations: they get compacted automatically, and rules said only in the conversation can be lost

When a conversation nears its limit, Claude Code compacts it automatically into a summary, and the full tool output and intermediate steps are lost. After compaction, the CLAUDE.md at the project root and auto memory are reloaded from their files, and up to 5 recently edited files are reread.

In practice this means:

  • Put rules that must always be followed in CLAUDE.md instead of saying them once in the conversation.
  • When one task is done and you’re moving to another topic, use /clear to start a new conversation.
  • Before a long task, you can run /compact focus on XX first to say what the summary should keep.
  • Use /context to see how much space is left.

Keys and passwords: not in the conversation, not in Git

  • Don’t paste API keys, database passwords or private keys into the conversation. When one is needed, let the service’s own sign-in flow handle it, or keep it in a settings file only you can read.
  • Add files that hold passwords (.env and the like) to .gitignore, then use deny rules to block Claude from reading them.
  • According to the docs, sign-in credentials are stored in the Keychain on macOS and in a file with 0600 permissions on Linux.
  • Before sending a screenshot to Claude or posting one online, cover up IP addresses, account names and tokens.

How I actually use it: Git, previews, and asking me based on the effect

Claude Code has written Jason Finance since the first commit. A few practices you might find useful:

  • Claude Code lives on a server: an ARM server in Oracle Cloud, with Remote Control set up as a systemd service so it keeps running after SSH disconnects. I connect from the Claude app on my phone and give it work in Chinese.
  • Git is the content management system: posts are Markdown files, and pushing to the main branch deploys automatically. Drafts go to the preview branch first, which produces a preview URL that includes drafts; only after I’ve reviewed them are they published.
  • Whether to ask me depends on the effect: this is written in CLAUDE.md. Reading files, testing and ordinary commits it just does; publishing content I haven’t seen or changing production settings needs my decision; for deleting data, it explains the scope and risk once before starting. The details are in Building a Website Without Reading Code.
  • Rules become tests, not just lines in CLAUDE.md: for example, every post must belong to a topic and descriptions can’t exceed 160 characters, and breaking either fails the build. CLAUDE.md is background information and can be ignored; tests and hooks are what actually block things.

For how the whole site was built, see Jason Finance from Zero to One. More posts are on the AI Startup topic page.

FAQ

Do I have to pay for Claude Code? Does the free plan work?

According to the official installation guide, Claude Code requires a Pro, Max, Team, Enterprise or Console account; the free claude.ai plan does not include Claude Code. You can also use it through third-party platforms such as Amazon Bedrock, Google Cloud or Microsoft Foundry.

How do I install Claude Code? Does it work on Windows?

The official recommendation is the native install: on macOS, Linux and WSL, run the official install script in a terminal; on Windows, run the matching command in PowerShell or CMD, with no administrator rights needed. You can also install with Homebrew, WinGet or a Linux package manager, or use the Desktop app instead. Once installed, run claude --version to confirm.

What is CLAUDE.md? Do I have to write one?

CLAUDE.md is the project description Claude reads at the start of every session. You can generate a first version with /init and then edit it. The official docs state that it is background information for Claude, not enforced configuration; actions that must be blocked need hooks or permission rules.

What do I do if Claude Code keeps asking for permission?

Understand what it wants to do before deciding. For common, safe commands you can choose "don't ask again", and Claude Code saves that as an allow rule. In newer versions the default auto mode has another model review actions for you, so you get asked far less often, but the official docs also state that it does not guarantee safety.

Does Claude forget earlier parts of a long conversation?

When a conversation nears its limit, Claude Code automatically compacts it into a summary, and the full tool output and intermediate steps are lost. The CLAUDE.md at the project root is reloaded from the file, so put rules that must always be followed in CLAUDE.md instead of saying them once in the conversation.

Can I paste API keys or passwords into Claude Code?

It's not recommended. Keep keys and passwords out of the conversation and out of Git. You can use deny rules in settings.json to block reading files such as .env, or use hooks to block edits to them.

Related articles

About the author

Photo of Jason

Jason

Account Manager in Google Large Customer Sales and Columbia MBA admit, sharing the money tools and experience he actually uses.

Comments

Sign in with Google to comment. Your comment will not show your Google profile picture or name; it appears under a randomly generated nickname to protect your privacy.

By signing in you agree to this site's privacy policy.

  1. Loading comments…