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.Before you start: plan, computer and network
- 2.Installing Claude Code: pick one of three ways
- 2.1Native install (officially recommended)
- 2.2Other ways
- 2.3Check the install and sign in
- 3.Your first hour: do these in order
- 4.Claude Code tutorial: the main features and how non-coders use them
- 4.1CLAUDE.md: Claudeâs working rules
- 4.2Skills: turning a set procedure into a command
- 4.3Hooks: things that always happen
- 4.4Permission modes: how often Claude asks you
- 4.5settings.json: hard-coding the rules
- 4.6MCP: connecting Claude to other tools
- 4.7Slash commands: remember these first
- 4.8Remote Control: give it work when youâre away from the computer
- 5.The three things beginners get stuck on most
- 5.1Permission prompts: understand before you approve, donât just keep pressing Yes
- 5.2Long conversations: they get compacted automatically, and rules said only in the conversation can be lost
- 5.3Keys and passwords: not in the conversation, not in Git
- 6.How I actually use it: Git, previews, and asking me based on the effect
- 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.
Native install (officially recommended)
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
- Start it inside your project folder:
cdinto the project, then runclaude. 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. - Check the current permission mode: the status bar at the bottom shows text such as
auto mode onormanual mode on. PressShift+Tabto switch; the differences are explained below. - Run
/init: Claude reads the whole project and generates a first version ofCLAUDE.md. - 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â.
- 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. - 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.
- Let it change something small: watch how it asks for permission and what it changes, then ask it to explain.
- Keep a record with Git: make sure the project is in Git so you can roll back if something breaks.
/rewindcan also take the conversation and the code back to an earlier state. - Set what it must not touch: in
.claude/settings.json, block reading files that hold passwords, such as.env(example in the next section). - Type
/to see the command list: knowing where/helpand/usageare 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.
/memoryopens 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 ofMEMORY.mdload 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+Tabto 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
/clearto start a new conversation. - Before a long task, you can run
/compact focus on XXfirst to say what the summary should keep. - Use
/contextto 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 (
.envand 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
mainbranch deploys automatically. Drafts go to thepreviewbranch 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
- How to Write CLAUDE.md: The Real Rules Behind a Multilingual Content SiteHow to write CLAUDE.md: Anthropic's key rules (location, loading, @ imports), a breakdown of the real CLAUDE.md behind Jason Finance, and a template to copy.
- Building a Website Without Reading Code: How I Built Jason Finance Cheaply with Claude Code + GitHub + Cloudflare, and What It CostsI can't read code. Jason Finance runs on Claude Code, GitHub, Cloudflare Workers and Supabase free plans. The setup, costs, AI permissions and limits.
- Git Can Push, but Claude Code Can't Read GitHub Issues: SSH vs GitHub API PermissionsClaude Code can't read GitHub Issues but git push works? SSH keys only cover Git. Sign in with gh CLI, check scope, protect the token, go from Issue to PR.

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.