Fəsil 03 · 7 dəq oxu

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ə 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?". 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: 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:

FaylKim üçünTipik məzmun
~/.claude/CLAUDE.mdSiz, bütün layihələrdəŞəxsi üstünlüklər: dil, üslub, tez-tez işlətdiyiniz alətlər
./CLAUDE.mdKomanda, bu layihədə, version control-daBuild və test, konvensiyalar, architecture qeydləri
./CLAUDE.local.mdSiz, bu layihədə, git-dən kənardaLokal yollar, şəxsi qeydlər
./src/api/CLAUDE.mdAlt qovluqYalnız həmin qovluqda işləyəndə yüklənən qaydalar

Alt qovluq faylları tənbəl yüklənir: 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: 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:

CommandNə edir
/helpBütün command-ların siyahısı
/clearSö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 nə ilə dolduğunu göstərir
/costSession-ın və xərc hesabatı
/modelModeli dəyişir: sürətli, balanslı, ən güclü
/permissionsİcazə qaydalarını göstərir və redaktə edir
/configAyarlar paneli
/resumeƏvvəlki session-ı seçib davam edir
/rewindSöhbəti və faylları əvvəlki nöqtəyə qaytarır
/reviewDəyişiklikləri review edir
/doctorQuraş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, 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:

  • Esc dayandırır; iki dəfə Esc əvvəlki mesajlara qayıtmağı təklif edir.
  • Shift+Tab permission 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ə olunur cü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ışı 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ə vaxtTipik istifadə
PreToolUseTool çağırılmazdan əvvəlTəhlükəli command-ı bloklamaq
PostToolUseTool bitəndən sonraDəyişdirilən faylı formatlamaq, test işlətmək
UserPromptSubmitSiz göndərəndə context əlavə etmək
Stop cavabı bitirəndəBildiriş, səs, log
SubagentStop bitəndəNəticəni log-a yazmaq
SessionStartSession açılandaMühit dəyişənlərini və context-i hazırlamaq
NotificationClaude Code diqqət istəyəndəMasaüstü bildirişi

Sadə nümunə: 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

  1. Layihənizdə /init işlədin və yaranan CLAUDE.md-ni birinci fəslin qaydası ilə redaktə edin. Sonra üç 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.
  2. Ən çox təkrarladığınız üç sorğunu custom command-a çevirin. Hər birinə $ARGUMENTS və ya ! ilə dinamik context əlavə edin və nəticənin sabit qaldığını yoxlayın.
  3. PreToolUse hook-u yazın: .env və secrets/ ilə bağlı hər Bash command-ını bloklasın. qəsdən .env faylını oxumağı istəyin və hook-un reaksiyasını, model-in gördüyü mesajı və sonrakı davranışını izləyin.