SONUB
EN English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

How to enable notifications

Notifications are unavailable in this browser or on this address. Try a supported browser on the secure SONUB site.

If notifications are blocked, allow them in your browser settings.

  1. Open the site controls beside the address bar, or your browser’s site settings. Set Notifications for this site to Allow.
  2. In your device settings, allow notifications for your browser and check Do Not Disturb or Focus.
  3. Return to SONUB and reload the page. Once notifications are on, the bell disappears.

On iPhone or iPad, add SONUB to your Home Screen, open it there, then allow notifications.

Admin Log in Display theme Default theme Dark theme Pink theme Chat 1:1 Chat Group Chat Forum Notices News Suggestions Introductions Main menu Log out

Claude Code — Anthropic’s agentic coding tool in your terminal

Teach repeated jobs with , hand big jobs to , enforce must-follow with , connect outside with , and put unattended work into scripts with claude -p.

Advanced — skills, subagents, hooks, MCP, headless

Agent skills — teach it jobs you repeat

)

A is a folder with a in it. Normally knows only each skill's name and description; when a job matches the description, it reads the body and follows it. So many skills take up almost no room. The old custom commands (.claude/commands/) have now been merged into skills.

  • .claude/skills/<name>/SKILL.md is for this project, ~/.claude/skills/<name>/SKILL.md for all your projects.
  • Say clearly in description what it does and when to use it, so Claude picks it on its own.
  • You can also call it directly with /<skill name>. Before you make a new skill, run /skills to see the names already in use: if the new skill has the same name as one in another place, only one of them runs as /<name> (the name are in the next two sections).
  • Keep and reference documents in the same folder and point to them from SKILL.md. Keep SKILL.md short, under 500 lines.
.claude/skills/release-notes/SKILL.md
---
name: release-notes
description: Write release notes from the git log. Use when the user asks for release notes, a changelog or "what changed since the last tag".
---

# Release notes

1. Find the last tag: `git describe --tags --abbrev=0`
2. Read the commits since then: `git log <tag>..HEAD --oneline`
3. Group them under Added / Fixed / Changed.
4. Write plain sentences a user can understand. Skip internal refactors.

Skills are an open standard — but Claude Code works its own way

)

were first made by , the company behind Claude, and released for free. Today they are an called , managed at agentskills.io. , , , and many other tools read the same SKILL.md folder.

Be careful, though: the standard only defines what goes inside a skill folder. Where to look for skills and which one wins when names clash are left to each tool, and works differently from what agentskills.io recommends. So a skill that works in another tool can behave differently in Claude Code.

  • Folder: agentskills.io recommends .agents/skills/, which many tools share, but Claude Code reads (in the project) and ~/.claude/skills/ (personal). It does not read .agents/skills/.
  • Same name: the common rule in the standard is that a project skill beats a personal one. In Claude Code it is the other way round — enterprise beats personal, and personal (~/.claude/skills/) beats project.
  • Parent and child folders: the standard does not say. Claude Code reads the folder you start in and every parent up to the , and a child folder only when it works there (next section).
  • : the standard has six fields — name, description, , compatibility, and . Claude Code adds more, such as disable-model-invocation, : fork and . Other tools ignore them, and claude.ai uploads and the Skills stop with an error.

For a skill you share with other AI tools, write the frontmatter with only the six standard fields. Then it loads unchanged in Claude Code and in the other tools.

Where Claude Code finds skills — your folder and its parents together

)

Claude Code reads .claude/skills/ in the folder where you start claude and in every up to the git repository root, and uses them all together — start in apps/web/ and the root skills are there too (in a it goes up only to the worktree root). A .claude/skills/ above the repository root is not read, so put skills for all your projects in ~/.claude/skills/.

  • Skills in a folder below where you started are not read at first. They load the first time Claude reads or edits a file in that folder and stay until the ends — until then they are not in the / menu. To load them early, run /add-dir with that folder.
  • If the root and apps/web/ both have a skill named , both stay available: /deploy runs the root one and /apps/web:deploy runs the one in apps/web/. Claude Code also lists both for Claude with an instruction to use the one whose folder holds the files it is working on, so the apps/web/ skill still applies to work there (official docs: Skills — skills that share a name).
  • skills are separate, called as /<plugin-name>:<skill-name>, so they never clash with yours.
Run claude in apps/web/
~/projects/                    ← above the repository root
├── .claude/skills/            ← not loaded (put shared skills in ~/.claude/skills/)
└── repo/                      ← git repository root
    ├── .claude/skills/        ← loaded
    └── apps/web/              ← run claude here
        ├── .claude/skills/    ← loaded (used together with the root)
        └── src/
            └── .claude/skills/  ← not at start — loads when Claude first reads or edits a file in src/
Same name in two folders (claude started at the repository root)
repo/
├── .claude/skills/deploy/SKILL.md            → /deploy
└── apps/web/.claude/skills/deploy/SKILL.md   → /apps/web:deploy

Run /skills to see which skills are loaded now. With many skills in parent and child folders, the descriptions of the least-used ones get cut first, so check now and then with /skill-doctor.

Subagents — hand off parts of the work

)

A is a helper with its own , instructions and tools. Hand it a side job that would otherwise fill your conversation with search results, or file contents you will not need again — a big search, a , a test run. However many files it reads, only its summary comes back, so the main conversation stays short and focused on your task. It also gives you control: a subagent can be limited to certain tools (a reviewer that only reads), run on a faster, cheaper and follow the same instructions every time. Make one when you keep asking for the same kind of helper.

  • .claude/agents/<name>.md is for the project ( it to share with the team), ~/.claude/agents/ is just for you. Only name and description are required.
  • Limiting the tools it may use with tools is safer — let a reviewer only read.
  • There are two ways it starts. ① You ask in your : name it ("Review this change with the code-reviewer subagent"), or type @ and pick it to make sure that one runs. ② Claude hands work to it on its own: it compares your request with the description in the subagent's file, so write there what it does and when to use it — adding "use proactively" makes Claude delegate more readily.
  • To make a new subagent, ask Claude to create one or write the file in the folder above yourself. Built-in ones such as Explore and Plan are there from the start.
.claude/agents/code-reviewer.md
---
name: code-reviewer
description: Reviews code changes for bugs, security problems and missing tests. Use after writing or changing code.
tools: Read, Grep, Glob, Bash
model: sonnet
---

You are a careful senior reviewer.
Run `git diff` to see the changes, then report:
1. Bugs (with file and line)
2. Security problems
3. Missing tests
Do not edit files.

Hooks — commands that always run at set moments

)

is a request, so it can sometimes be forgotten, but a is a command Claude Code always runs at a set moment. Use hooks to run a after a file edit, block dangerous commands or edits to files, and get a notification when work is done.

  • — before a tool is used (can block it), — after a tool is used
  • — when you send a request, Stop — when Claude finishes its answer, SessionStart — when a session starts, Notification — when it needs your attention
  • chooses which the hook applies to (for example Edit|Write, ).
  • What 2 does depends on the event. On PreToolUse the action is blocked and the reason written to is passed to Claude. On PostToolUse the tool has already run, so Claude only gets that reason as feedback.
  • /hooks shows the hooks in place. The example below runs on every file Claude edits or writes: reads the file path from the hook input and npx prettier --write formats that file, so it needs jq and ().
.claude/settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

Hooks run on your computer with your . Add a hook from someone else only after you have read and understood its command.

MCP — connect outside tools

)

is an open standard that lets AI tools use outside services (issue trackers, , , document tools). Add an and Claude can use the tools that provides.

  • claude mcp add --transport http <name> <> — add a remote server on the internet.
  • <name> -- <command> — add a server that runs on your computer (stdio). Everything goes to the server unchanged.
  • Added with --scope project, it is saved in at the top of the and shared with the team (approval is asked on first use).
  • /mcp shows the connection status and signs in (). claude mcp list shows the list.
# A remote server (HTTP)
claude mcp add --transport http notion https://mcp.notion.com/mcp

# A server that runs on your computer (stdio)
claude mcp add playwright -- npx @playwright/mcp@latest

# Share it with the team — saved in .mcp.json
claude mcp add --scope project playwright -- npx @playwright/mcp@latest

claude mcp list

Headless — scripts without the chat screen

)

claude -p "…" runs once without the chat screen, prints the result and exits. Use Claude as a building block in shell scripts, and .

  • Pass input through a pipe (cat error.log | claude -p "…").
  • gives the result, session id and cost as JSON; stream-json sends progress line by line.
  • --allowedTools sets the tools allowed for this run, and --max-turns the maximum number of .
  • claude -p --continue continues the previous run, or <session id> continues that session.
Terminal
# One question, one answer
claude -p "Explain what src/auth.ts does in 5 lines"

# Pipe input in
cat build-error.log | claude -p "Find the cause and suggest a fix"

# JSON output for scripts (result, session_id, total_cost_usd)
claude -p "List the TODO comments in src/" --output-format json

# Limit what it may do and how long it runs
claude -p "Run the tests and fix failures" \
  --allowedTools "Read,Edit,Bash(npm test *)" --max-turns 10

In scripts, starts fast without reading CLAUDE.md, hooks, plugins or MCP (the official docs say it will become the default for -p). Leave it out if you need the project instructions.

Advanced practice

)
  1. Turn one job you do often (, commit messages) into a skill in .claude/skills/ and call it with /skill-name.
  2. Make a code-reviewer subagent and have it review your current change.
  3. Use a PostToolUse hook so a formatter or runs on every file edit.
  4. Add one MCP server and check the connection with /mcp.
  5. Write a one-line shell script that summarizes an with claude -p.

Done all five? Move on to the [Master] tab.

Official documentation

Checked against the official documentation on 2026-10-19. These tools change often — if a command fails, see the official docs.

Claude Code lab Sonub Lab — Claude Code practice Use the real Claude Code on your own computer in this page’s terminal — install it in three steps and run sonub start. It uses the SONUB practice brain, so you need no Claude subscription or API key.

Glossary

Pick a word you don't know. You'll see a simple explanation and related terms.

No matching term yet.

Pick a term to see its explanation.

Reading window