Başlanğıc: əsas command-lar, custom command-lar və hook-lar
Başlanğıc: əsas command-ların turu
Bu fəsil praktikdir. Claude Code-u quraşdırırıq, ilk session-ı açırıq, layihə yaddaşını yaradırıq, gündəlik işdə lazım olan command-ları və klaviatura qısayollarını keçirik, sonra iki genişlənmə mexanizmi ilə tanış oluruq: custom command-lar və hook-lar. Fəslin sonunda Claude Code sizin üçün "chat" olmaqdan çıxıb konfiqurasiya olunan alətə çevrilmiş olacaq.
Quraşdırma və ilk session
Claude Code terminal proqramıdır; quraşdırma bir sətirdir və platformaya görə dəyişir, rəsmi sənədləşmə hər platforma üçün cari üsulu verir. Quraşdırdıqdan sonra layihənin kök qovluğuna keçib claude yazırsınız. İlk dəfə giriş tələb olunur: Claude abunəliyi və ya API açarı. Sonra terminalın içində prompt görünür və ilk sorğunu yazırsınız.
İlk sorğu üçün ən yaxşı seçim tapşırıq yox, sualdır: "Bu layihənin strukturunu izah et" və ya "Test-lər necə işlədilir?". Agent repository-ni oxuyur və cavab verir; siz isə onun layihəni necə gördüyünü görürsünüz. Çox vaxt bu ilk cavab CLAUDE.md-yə nə yazmaq lazım olduğunu göstərir: agent-in tapmadığı və ya səhv anladığı hər şey yaddaş faylına namizəddir.
Layihə yaddaşı: /init və CLAUDE.md
/init command-ı repository-ni analiz edib ilkin CLAUDE.md yaradır: build və test command-ları, əsas qovluqlar, kod üslubu. Bu, başlanğıc nöqtəsidir, yekun deyil. Faylı özünüz redaktə edirsiniz və birinci fəsildəki qayda ilə: yalnız davranışı dəyişən sətirlər.
CLAUDE.md faylları iyerarxiya təşkil edir və hamısı birlikdə yüklənir:
| Fayl | Kim üçün | Tipik məzmun |
|---|---|---|
~/.claude/CLAUDE.md | Siz, bütün layihələrdə | Şəxsi üstünlüklər: dil, üslub, tez-tez işlətdiyiniz alətlər |
./CLAUDE.md | Komanda, bu layihədə, version control-da | Build və test, konvensiyalar, architecture qeydləri |
./CLAUDE.local.md | Siz, bu layihədə, git-dən kənarda | Lokal yollar, şəxsi qeydlər |
./src/api/CLAUDE.md | Alt qovluq | Yalnız həmin qovluqda işləyəndə yüklənən qaydalar |
Alt qovluq faylları tənbəl yüklənir: agent həmin qovluqdakı fayla toxunanda context-ə düşür. Bu, böyük monorepo-da yaddaşı modullara bölməyin yoludur: hər modulun öz qaydaları var və onlar yalnız lazım olanda context xərcləyir. CLAUDE.md-nin içində @docs/testing.md kimi istinadla başqa faylı daxil etmək də olar; istinad olunan fayl hər dəfə yüklənir, buna görə onu da qısa saxlamaq lazımdır.
Session daxilində yaddaşa əlavə etmək üçün /memory command-ı yaddaş fayllarını açır. Qayda sadədir: agent eyni səhvi ikinci dəfə edirsə, bu, bir sətirlik CLAUDE.md qeydidir.
Gündəlik command-lar
Slash command-lar / ilə başlayır və Claude Code-un özünə ünvanlanır, model-ə yox. Ən çox işlənənlər:
| Command | Nə edir |
|---|---|
/help | Bütün command-ların siyahısı |
/clear | Söhbəti sıfırlayır; memory faylları yenidən yüklənir |
/compact [göstəriş] | Tarixçəni xülasə edir, istəyə görə nəyi saxlamağı deyirsiniz |
/context | Context window-un nə ilə dolduğunu göstərir |
/cost | Session-ın token və xərc hesabatı |
/model | Modeli dəyişir: sürətli, balanslı, ən güclü |
/permissions | İcazə qaydalarını göstərir və redaktə edir |
/config | Ayarlar paneli |
/resume | Əvvəlki session-ı seçib davam edir |
/rewind | Söhbəti və faylları əvvəlki nöqtəyə qaytarır |
/review | Dəyişiklikləri review edir |
/doctor | Quraşdırmanın sağlamlığını yoxlayır |
İki command xüsusi diqqətə layiqdir. /resume session-ları saxlayır: dünən yarımçıq qalan işi bu gün eyni context ilə davam etmək olur; terminaldan claude --continue son session-ı birbaşa açır. /rewind isə checkpoint sistemidir: Claude Code hər dəyişiklikdən əvvəl faylların vəziyyətini yadda saxlayır və səhv istiqamətə gedəndə həm söhbəti, həm də faylları geri qaytarmaq mümkündür. Bu, agent-ə sərbəstlik verməyi ucuzlaşdırır: cəhd uğursuz olsa, bir command ilə geriyə.
Klaviatura və prompt sintaksisi
Session-da bir neçə qısayol iş axınını dəyişir:
Escagent-i dayandırır; iki dəfəEscəvvəlki mesajlara qayıtmağı təklif edir.Shift+Tabpermission rejimlərini dövr edir: default, dəyişiklikləri avtomatik qəbul edən rejim, plan rejimi.- Sətrin əvvəlində
!yazılan command-ı birbaşa shell-də işlədir və nəticəni context-ə salır:!npm test. @fayl və ya qovluğu istinad edir:@src/auth/session.ts faylındakı bug-ı tap. Tab ilə tamamlanır.#ilə başlayan sətir yaddaşa gedir:# test-lərdə mock yox, real database istifadə olunurcümləsi CLAUDE.md-yə əlavə olunur.Ctrl+Rəvvəlki prompt-lar arasında axtarır.
Permission rejimləri 2-ci fəsildən tanışdır; burada praktik tərəfi vacibdir. Tanış kodda, test-lər yaxşı olanda, dəyişiklikləri avtomatik qəbul edən rejim sürət verir: hər Edit üçün təsdiq soruşulmur, amma Bash hələ soruşulur. Tanımadığınız sahədə plan rejimi ilə başlamaq daha təhlükəsizdir. Bütün icazələri söndürən rejim yalnız izolyasiya olunmuş konteynerdə, real data-dan uzaqda məqbuldur.
Custom command-lar
Eyni sorğunu üçüncü dəfə yazanda onu command-a çevirin. Custom command .claude/commands/ qovluğunda Markdown faylıdır; faylın adı command-ın adıdır:
---
description: Dəyişiklikləri review edib commit mesajı yazır
argument-hint: [commit üçün əlavə qeyd]
---
Hazırkı dəyişiklikləri `git diff --staged` ilə oxu. Dəyişikliyin tipini müəyyən et
(feat, fix, refactor, docs, test) və conventional commit formatında bir mesaj yaz.
Mesaj 72 simvoldan uzun olmasın. Əlavə qeyd: $ARGUMENTS
/commit-code auth modulunda yazanda fayl məzmunu model-ə gedir, $ARGUMENTS isə "auth modulunda" ilə əvəz olunur. Command-ın gövdəsində ! ilə shell command-ının nəticəsini də əvvəlcədən daxil etmək olar: !`git status --short` sətri command işə düşəndə icra olunur və çıxışı prompt-a yazılır. İstifadəçi səviyyəsində command-lar ~/.claude/commands/ qovluğundadır və bütün layihələrdə görünür.
Command-lar sadədir və məhz buna görə faydalıdır: dad-joke kimi əyləncəli nümunədən /commit-code kimi real iş alətinə qədər eyni mexanizmdir. Mürəkkəbləşəndə, yəni skript, şablon, bir neçə addım lazım olanda, 9-cu fəsildəki skill formatına keçirsiniz.
Hook-lar: deterministik reaksiya
Command siz çağıranda işləyir; hook isə hadisə baş verəndə. Hook-lar Claude Code-un lifecycle nöqtələrinə bağlanan shell command-larıdır və settings.json faylında konfiqurasiya olunur. Əsas hadisələr:
| Hadisə | Nə vaxt | Tipik istifadə |
|---|---|---|
PreToolUse | Tool çağırılmazdan əvvəl | Təhlükəli command-ı bloklamaq |
PostToolUse | Tool bitəndən sonra | Dəyişdirilən faylı formatlamaq, test işlətmək |
UserPromptSubmit | Siz prompt göndərəndə | Prompt-a context əlavə etmək |
Stop | Agent cavabı bitirəndə | Bildiriş, səs, log |
SubagentStop | Subagent bitəndə | Nəticəni log-a yazmaq |
SessionStart | Session açılanda | Mühit dəyişənlərini və context-i hazırlamaq |
Notification | Claude Code diqqət istəyəndə | Masaüstü bildirişi |
Sadə nümunə: agent işi bitirəndə səs çalan Stop hook-u. Uzun tapşırığı başladıb başqa işə keçirsiniz, səs sizi geri çağırır:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [{ "type": "command", "command": "afplay ~/.claude/done.wav" }]
}
]
}
}
Daha ciddi nümunə təhlükəsizlik hook-udur. PreToolUse hadisəsi Bash tool-u üçün skript işlədir; skript standart girişdən çağırış haqqında JSON alır, command-ı yoxlayır və qəbul edilməzsə exit kodu 2 ilə bloklayır:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "python3 .claude/hooks/security_check.py" }]
}
]
}
}
import json, re, sys
call = json.load(sys.stdin)
cmd = call.get("tool_input", {}).get("command", "")
banned = [r"rm\s+-rf\s+/", r"git\s+push\s+--force", r"DROP\s+TABLE"]
if any(re.search(p, cmd) for p in banned):
print(f"Bloklandı: {cmd}", file=sys.stderr)
sys.exit(2)
matcher sahəsi hook-un hansı tool-lara aid olduğunu deyir: boş sətir hamısı, Bash yalnız shell, Edit|Write fayl dəyişiklikləri, MCP tool-ları üçün mcp__server__.* kimi regex. Exit kodu semantikası sadədir: 0 davam, 2 blok və stderr-dəki mətn model-ə göstərilir. Skript JSON də qaytara bilər: qərar, səbəb, hətta tool-un girişini dəyişmək.
Hook-ların CLAUDE.md-dən fərqi deterministik olmasıdır. CLAUDE.md-də "force push etmə" yazanda model çox güman ki, əməl edir; hook-da yazanda isə mütləq əməl edilir, çünki qərar model-də deyil, harness-dədir. Qayda belədir: tövsiyə CLAUDE.md-yə, qadağa hook-a. Session-da /hooks command-ı mövcud hook-ları göstərir və yenisini əlavə edir.
Command ilə hook-u birləşdirmək kiçik avtomatlaşdırmalar verir: /commit-code commit yaradır, PostToolUse hook-u hər Edit-dən sonra formatter işlədir, Stop hook-u iş bitəndə test-ləri işlədib nəticəni bildirir. Hər biri ayrılıqda sadədir; birlikdə iş axınının çox hissəsini əhatə edir.
Tapşırıqlar
- Layihənizdə
/initişlədin və yaranan CLAUDE.md-ni birinci fəslin qaydası ilə redaktə edin. Sonra agent-ə üç fərqli tapşırıq verin və onun hansı səhvləri təkrarladığını qeyd edin; hər təkrar səhv üçün bir sətir əlavə edin. - Ən çox təkrarladığınız üç sorğunu custom command-a çevirin. Hər birinə
$ARGUMENTSvə ya!ilə dinamik context əlavə edin və nəticənin sabit qaldığını yoxlayın. PreToolUsehook-u yazın:.envvəsecrets/ilə bağlı hərBashcommand-ını bloklasın. Agent-dən qəsdən.envfaylını oxumağı istəyin və hook-un reaksiyasını, model-in gördüyü mesajı və sonrakı davranışını izləyin.