ه — مرجع: Decision matrix جامع و خلاصهی stack
این بخش یک مرجع متراکم است برای زمانی که در حین کار واقعی نمیدانید کدام primitive درست است.
الف. canon یعنی Explore → Plan → Code → Commit
نقل قول رسمی: «Letting Claude jump straight to coding can produce code that solves the wrong problem. Use Plan Mode to separate exploration from execution.»
فازها:
1. Explore — Plan Mode، read-only.
2. Plan — plan مکتوب، با Ctrl+G ویرایش کنید.
3. Code — Normal Mode، پیادهسازی + verify.
4. Commit — commit message توصیفی + PR.
ب. سلسلهمراتب CLAUDE.md
ترتیب load (specific ترین برنده، همگی concat میشوند):
1. CLAUDE.md Managed policy (قابل exclude نیست).
2. User: ~/.claude/CLAUDE.md.
3. ancestor walk پروژه: …/CLAUDE.md، …/CLAUDE.local.md از cwd به بالا.
4. subdirectory CLAUDE.md (on-demand وقتی Claude در آن subdir فایل میخواند).
قواعد کیفیت (verbatim):
- هدف: زیر ۲۰۰ خط.
- «Keep it concise. For each line, ask: 'Would removing this cause Claude to make mistakes?' If not, cut it.»
- از @path برای organization استفاده کنید (هزینهی context کم نمیشود ولی فایل تمیزتر میشود).
- از .claude/rules/*.md با frontmatter paths: برای rule های path-scoped استفاده کنید.
- «Bloated CLAUDE.md files cause Claude to ignore your actual instructions!»
ج. Decision matrix کامل: Subagent vs Skill vs Hook vs MCP vs CLAUDE.md vs Rule vs Team
| Primitive | محل | Trigger | Context loaded | بهترین کاربرد |
|---|---|---|---|---|
CLAUDE.md |
فایلهای CLAUDE.md |
همیشه (هر session) | بدنهی کامل، هر session | fact های ثابت، convention |
| Path-scoped rule | .claude/rules/*.md با paths: |
auto وقتی فایلهای تطابق خوانده میشوند | بدنهی کامل، on match | convention مخصوص ناحیهای از کد |
| Skill | .claude/skills/<name>/SKILL.md |
model-invoked (auto از description) یا /skill-name |
بدنه فقط هنگام استفاده | playbook قابل استفاده مجدد، procedure on-demand |
| Subagent | .claude/agents/<name>.md |
تطابق description، @agent-name, --agent |
context window خودش | research، worker تخصصی، کنترل هزینه با Haiku |
| Hook | settings.json |
رویداد lifecycle (PreToolUse و غیره) |
N/A — اجرای deterministic | automation که حتماً باید رخ دهد، validation، block کردن |
| MCP | .mcp.json یا claude mcp add |
فراخوانی tool به mcp__<server>__<tool> |
توضیحات tool در context | سیستم بیرونی (DB, Figma, browser, Jira) |
| Agent team | config در agent-teams/ |
team lead سشنها را spawn میکند | یک context per teammate | همکاری موازی، cross-session |
د. لیست کانونیک hook event ها
- Per-session:
SessionStart,SessionEnd. - Per-turn:
UserPromptSubmit,Stop,StopFailure. - Per-tool-call:
PreToolUse,PostToolUse,PostToolUseFailure,PermissionRequest,PermissionDenied. - Async:
FileChanged,CwdChanged,ConfigChange,Notification,WorktreeCreate,WorktreeRemove,InstructionsLoaded,PreCompact,PostCompact,Elicitation,ElicitationResult,SubagentStart,SubagentStop,PostToolBatch,TaskCreated,TaskCompleted,TeammateIdle,UserPromptExpansion,Setup.
رویدادهای block-capable با exit code 2 یا decision: "block" / permissionDecision: "deny" پاسخ میدهند. PostToolUse نمیتواند block کند (action قبلاً اجرا شده)؛ برای block از PreToolUse استفاده کنید.
ه. مرجع SDK — Claude Agent SDK
یادآوری: نام قبلی
Claude Code SDKبود؛ rename بهClaude Agent SDK.
- نصب:
pip install claude-agent-sdk(Python) /npm install @anthropic-ai/claude-agent-sdk(TS). - دو entrypoint:
query()async iterator برای task یکبار مصرف؛ClaudeSDKClientبرای agent stateful چندنوبتی. - شکل options (Python
ClaudeAgentOptions/ TSoptions):allowed_tools/allowedTools,disallowed_tools/disallowedTools,max_turns/maxTurns,model,permission_mode/permissionMode(default|acceptEdits|auto|dontAsk|bypassPermissions|plan),system_prompt,mcp_servers/mcpServers,agents,hooks,setting_sources/settingSources,resume(session_id). - hook اختصاصی Python callable / TS callback است که
(input_data, tool_use_id, context)میگیرد و یک dict با شکل JSON برمیگرداند. - subagent ها از طریق
AgentDefinition(Python) یا object inline (TS) declare میشوند؛Agentرا درallowedToolsparent بگذارید. - session ها بهصورت JSONL روی filesystem persist میشوند؛
session_idرا ازSystemMessageاولیه capture کنید و باresume=session_idادامه دهید. - مقایسه: Agent SDK = library در فرایند خودتان، file-system sandboxing؛ Managed Agents = REST API، sandbox میزبانیشده توسط Anthropic per session.
و. الگوهای custom slash command (که حالا skill هستند)
هر دوی .claude/commands/<name>.md و .claude/skills/<name>/SKILL.md دستور /name میسازند. skill ها توصیه میشوند چون از فایلهای جانبی، frontmatter و auto-invocation پشتیبانی میکنند. الگوهای رایج:
# /commit — manual, side effects
---
name: commit
description: Stage and commit the current changes
disable-model-invocation: true
allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)
---
# /fix-issue 1234 — args via $ARGUMENTS
---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---
Fix GitHub issue $ARGUMENTS following our coding standards.
# /migrate-component SearchBar React Vue — positional args
---
name: migrate-component
description: Migrate a component from one framework to another
---
Migrate the $0 component from $1 to $2.
خلاصه فصل
سه ایدهی کلیدی این فصل را به ذهن بسپارید:
- Claude Code agentic است، نه autocomplete. هدف نهایی را توصیف کنید، معیار موفقیت بدهید (test، screenshot، expected output)، و اجازه دهید حلقهی agentic مسیر را پیدا کند. context را بهصورت aggressive مدیریت کنید.
- چهار primitive قابل توسعه را بدانید چه زمانی کدام را انتخاب کنید.
CLAUDE.mdبرای fact ثابت؛skillبرای playbook on-demand؛subagentبرای worker تخصصی با context مستقل؛hookبرای دستوری که باید اجرا شود؛MCP serverبرای ابزار بیرونی. این تمایز، خط بین advisory و deterministic است. - دو gotcha کلیدی را در ذهن داشته باشید. اول، rename از
Claude Code SDKبهClaude Agent SDK(نام package جدید). دوم،CLAUDE.mdصرفاً context است نه enforcement؛ اگر correctness به یک action وابسته است، آن را به hook ببرید.
این فصل پایهی شماست برای فصلهای بعدی. در فصل ۴ (Building with the Claude API) بهصورت کامل tool use را بررسی میکنیم؛ در فصل ۵ روی MCP عمیق میشویم؛ و در فصل ۷ چارچوب AI Fluency و الگوهای کار با agent را پوشش میدهیم.
تمرینهای پیشنهادی
- روی یک پروژهی موجود
claudeو سپس/initاجرا کنید. خروجیCLAUDE.mdرا با چشم بحرانی بخوانید: کدام خط واقعاً اگر حذف شود باعث اشتباه میشود؟ بقیه را prune کنید تا فایل به زیر ۲۰۰ خط برسد. - یک skill سادهی
/changelogبنویسید که با!`git log --oneline -20`آخرین کامیتها را به prompt تزریق کند و یک خلاصهی فارسی بسازد. آن را در.claude/skills/changelog/SKILL.mdبگذارید و تست کنید. - یک subagent به نام
security-reviewerبا مدلopusو tool هایRead, Grep, Glob, Bashبسازید (الگوی Lecture 1.7 را استفاده کنید). با@agent-security-reviewerآن را روی یک diff واقعی اجرا کنید و گزارش را با review انسانی مقایسه کنید. - یک hook بنویسید که قبل از هر
Bashکه شاملrm -rfاست، آن را block کند (الگوی Lecture 2.12). در.claude/settings.jsonconfig کنید و با اجرای یک فرمان آزمایشی تست کنید. - یک GitHub Action با
anthropics/claude-code-action@v1روی یک repo شخصی نصب کنید و config کنید که روی هر PR یک review امنیتی بنویسد (الگوی Lecture 2.9).--max-turns 5وconcurrency:را فراموش نکنید. - یک script Python با
claude-agent-sdkبنویسید که یک bug در یک repo را پیدا و fix کند (الگوی Lecture 2.16). باpermission_mode="acceptEdits"اجرا کنید و session را با capture کردنsession_idresume کنید. - چالش design: یک رفتار «همیشه بعد از edit، prettier اجرا شود» را یکبار با
CLAUDE.mdپیاده کنید و یکبار با hook. تفاوت قابلیت اطمینان را در ۱۰ session مشاهده کنید — این تمرین تفاوت advisory و deterministic را عمیقاً جا میاندازد.
منابع تکمیلی
- Claude Code overview
- Quickstart
- Best practices
- Common workflows
- Memory / CLAUDE.md
- Sub-agents
- Skills
- Hooks
- Hooks guide
- MCP
- GitHub Actions integration
- Permission modes
- Permissions
- Checkpointing
- Context window
- Features overview
- Claude Agent SDK overview
- Claude Agent SDK on platform
anthropics/claude-code(CLI repo)anthropics/claude-code-action(GitHub Action)anthropics/claude-agent-sdk-pythonanthropics/claude-agent-sdk-typescript- Model Context Protocol