Copy-paste د تولید څخه د pre-commit تصدیق، PII سکن، د پلور ساتنې، او د سیشن لوګ کولو لپاره د کوک ترتیبونه د 6 میاشتو مخکې، زه زما د ډیزاین په اړه یو ښکلي نوټ لرم. دا وايي: "کیا تاسو د لنډول ترلاسه کړ؟ آیا تاسو د زون چک کړ؟ آیا تاسو وګورئ چې دا چمتو کړ؟" هر کلود کوډ سیشن، ورته لارښود چکونه. هر وخت چې کلود فایبر راټول، زه به د بل ترمینل ته بدل شي او د فارمیټټر چلند. هر وخت چې دا د بیچ امر چلند، زه به د محصول په اړه فکر وکړي که څه هم د تولید ته اړتيا لري. هر وخت چې دا هڅه کوي، زه به چمتو کړي چې زه لومړی په حق شاوخوا کې وي. د پوښونو نوټ د ستونزو نه وه. ستونزه دا دی چې زه د کمپیوټر کار کار کوي. د هر عمل په اړه د تکرار موډل، په ورځ کې ډیری وختونه. دا هغه لپاره چې سکرپټونه دي. بيا زه پوهم چې Claude کوډ واقعیتونه راټول کوي. هر واحد عمل. د وسایلو تماسونه، د فایل ترمیمونه، Bash فرمانونه، سیشن پیلونه، سیشن ختمونه. ټول دوی. او تاسو کولی شئ د ایکسچینګ سکرپټ سره د دوی څخه هر یو راټول کړئ. د پوښونو نندارې کولی شو. دلته دا چې دا بدل دی. د واقعې سیسټم په اړه هیڅکله خبرې نه کوي Claude کوډ یوازې یو چیټ انټرنیټ نه دی چې کوډ کښته کوي. د سطحه لاندې، دا د ژوند چرګانو په چټکۍ سره چلند کوي. کاروونکي یو پاملرنه ورکوي. Claude فیصلہوي چې کوم وسایلو باید کارول شي. د وسایلو اجراوي. Claude د پایلو په لټه کې. تکرار شي تر هغه وخت چې بشپړ شي. په دې چڼاسکه کې هر تبادلې کې، کلود کوډ یو واقعې راټول کوي. او تاسو کولی شئ د هر ډول کې د کنټرولر سره تړاو کړئ. د دوو واقعې چې تر ټولو مهم دي: PreToolUse د وسایلو د تماس ترسره کولو دمخه بریښنالیکونه. ستاسو مدیر کولی شي د تماس تفتیش کړي او د JSON قضاوت ته ورسیږي: اجازه ورکړئ، انکار وکړئ، یا سکون وکړئ او د عادي اجازه په جریان کې اجازه ورکړئ. PostToolUse د وسایلو تماس په بریالیتوب سره راځي. ستاسو مدیر د بشپړ محصول ترلاسه کوي. د هغه سره هر څه وکړئ چې تاسو غواړئ. د فایل لټون. د امر لګول. د ویب کوک ورکړئ. د وسایلو اوس مهال چلول کیږي، نو دا ریښتیني، نه مخنیوی ده. د کارپوهانو په کې ثبت شوي دي . دوی کولی شي shell commands، HTTP endpoints، یا LLM prompts. زه shell commands کاروي ځکه چې دوی چټک دي، debuggable، او نه اړتيا لري د زیربنا. .claude/settings.json ټول انټرنیټ دی: Claude کوډ JSON ته د خپل سکرپٹ stdin پټوي. ستاسو سکرپٹ اختیاري JSON ته stdout ورکوي. دا دا دی. که ستاسو سکرپټ د خوندي کولو له لارې خارج کیږي، Claude کوډ په عادي ډول کار کوي. سکرپٹ 1: د زړښت د مخابراتو د سکرپٹ د کلورډ هڅه کولو وروسته زه دا یو نوشتم یو د جوړولو لیږدونه چې په واقعیت کې زما د کور پوډر کې د simlink لري. هیڅکله غلط نه وي ځکه چې زه دا په اجازه وړاندیز کې ترلاسه کړ. مګر زه باید دا ترلاسه کړي. یو ماشین باید دا ترلاسه کړي. rm -rf #!/bin/bash # .claude/hooks/guard.sh # Blocks destructive commands before they execute CMD=$(jq -r '.tool_input.command // empty') [ -z "$CMD" ] && exit 0 # Patterns I never want to run unreviewed BLOCKED_PATTERNS=( 'rm -rf' 'rm -r /' 'DROP TABLE' 'DROP DATABASE' 'truncate ' '> /dev/sd' 'mkfs\.' 'dd if=' ) for pattern in "${BLOCKED_PATTERNS[@]}"; do if echo "$CMD" | grep -qi "$pattern"; then jq -n --arg reason "Blocked: command matches dangerous pattern '$pattern'" '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: $reason } }' exit 0 fi done د هشتو نمونې. کولی شي د هشتاد. د موضوع نه ده چې د هر خطرناک امر شمیره. د موضوع ده چې د هغه چې تاسو په شخصي توګه تقریبا په تصادفيه توګه چلولو لري په لټه کې ونیسي. زما لیست زما زرق ته وده ورکوي. ستاسو به ستاسو ته وده ورکوي. د ثبت په : .claude/settings.json "PreToolUse": [ { "matcher": "Bash", "hooks": [{ "type": "command", "command": ".claude/hooks/guard.sh" }] } ] د په وسایلو نوم کې یو regex دی. معنی دا کوک یوازې د Bash فرمانونو لپاره فایبرونه کوي، نه د فایل ترمیمونه یا لوستونه. دا چټک کوي. matcher "Bash" سکرین 2: د Formatter چې هیڅکله فراموش نه کوي د دې کوک څخه مخکې، زما د کار د جریان دی: د کوډ فلیټونه ترمیم کوي، زه د فارمیټ کولو غلطه راځي، زه د کوډو له دې اصلاح وکړم، کوډو د فارمیټټر چلوي، زه د فارمیټ شوي نسخه وګورئ. د هغه څه لپاره چې باید د ګامونو په لټه کې وي. #!/bin/bash # .claude/hooks/fmt.sh # Formats files immediately after Claude edits them TOOL=$(jq -r '.tool_name // empty') [ "$TOOL" != "Edit" ] && [ "$TOOL" != "Write" ] && exit 0 FP=$(jq -r '.tool_input.file_path // .tool_input.path // empty') [ -z "$FP" ] || [ ! -f "$FP" ] && exit 0 case "${FP##*.}" in js|ts|jsx|tsx|mjs) if [ -f node_modules/.bin/prettier ]; then node_modules/.bin/prettier --write "$FP" 2>/dev/null elif command -v npx &>/dev/null; then npx prettier --write "$FP" 2>/dev/null fi ;; rs) rustfmt "$FP" 2>/dev/null ;; py) command -v ruff &>/dev/null && ruff format "$FP" 2>/dev/null command -v ruff &>/dev/null && ruff check --fix "$FP" 2>/dev/null ;; go) gofmt -w "$FP" 2>/dev/null ;; css|scss) command -v stylelint &>/dev/null && stylelint --fix "$FP" 2>/dev/null ;; esac exit 0 دا نسخه د سندونو کې تاسو د لږ تر لږه مثال څخه ډیر دقیق دی. دا چمتو کوي که آیا د فارمیټټر په حقیقت کې شتون لري مخکې له دې ته ودلي. دا د کورني نصب یا NPX له لارې Prettier کار کوي. دا دوه کار کوي او د پیټون لپاره ځکه چې د فارمیټ کولو او لینټینګ د مختلفو څه دي. ruff format ruff check --fix دا د PostToolUse سره یو ثبت کړئ د فلیټ د هر ډول بدلون وروسته. د فلیټ د کوډا څخه مخکې جوړ شوی دی چې دا راټول شي یا په راتلونکي ترمیم کې حرکت کوي. "Edit|Write" د مرکب اغېز مهم دی. په یوه اونۍ کې زه دا اندازه کړم. د کوک په لټه کې، زه په منځنۍ توګه د 4 دقیقې په هر سیشن کې د کوډو ته د شکل کولو ستونزې حل کولو ته پوښتنه ورکړم. د کوک سره، نل. په اونۍ کې د 30 سیشنونو کې، چې دوه ساعتونه شتون لري. د سکرین 3: د راز ډیکټر دا یو له امله شتون لري. Claude د API انټرنېټ ډبګګنگ کوي، د سیسټم API کلید لري چې د سیسټم API کلید لري، او په ځواب کې د کلید شامل دي. د کلید د سټیشن چاپیریال لپاره دی او په راتلونکي ورځ چټک شوی. مګر د اصول زما ته مشورې ورکړل. د وسایلو نندارتونونه د خبرې کولو له لارې چلوي، پیاوړتیا لري، ممکن د لاس ریکارډ کړئ. زه د دې جریان کې د تصدیقاتو نه غواړم. #!/bin/bash # .claude/hooks/secrets.sh # Scans tool output for credential-shaped strings OUTPUT=$(jq -r '.tool_output // empty') [ -z "$OUTPUT" ] && exit 0 ALERTS="" # AWS keys (AKIA...) echo "$OUTPUT" | grep -qE 'AKIA[0-9A-Z]{16}' && ALERTS="$ALERTS aws_key" # Generic API key patterns (long hex/base64 after common key names) echo "$OUTPUT" | grep -qiE '(api_key|apikey|secret_key|access_token|auth_token)["\x27: =]+[A-Za-z0-9+/]{20,}' && ALERTS="$ALERTS api_credential" # Private key headers echo "$OUTPUT" | grep -q 'BEGIN.*PRIVATE KEY' && ALERTS="$ALERTS private_key" # JWT tokens echo "$OUTPUT" | grep -qE 'eyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.' && ALERTS="$ALERTS jwt_token" # Connection strings with passwords echo "$OUTPUT" | grep -qiE '(postgresql|mysql|mongodb|redis)://[^:]+:[^@]+@' && ALERTS="$ALERTS connection_string" if [ -n "$ALERTS" ]; then TS=$(date '+%H:%M:%S') TOOL=$(jq -r '.tool_name // unknown') echo "[$TS] SECRET_ALERT in $TOOL:$ALERTS" >> .claude/secret-alerts.log echo "WARNING: potential credential in $TOOL output ($ALERTS)" >&2 fi exit 0 دا د مناسب راز مدیریت بدلون نه ده. دا یو tripwire دی. دا د واضح نمونې په لټه کې لري: د AWS لاس رسی کلیدونه، شیانو چې د API تصدیقاتو په څیر وي، د شخصي کلیدونو بلاکونه، JWTs، د ډاټا ډاټا کنکشن کرښو سره د نښلیدو پاسورډونو سره. کله چې دا د بریښنا، دا د او د stderr ته یو هشدار چاپوي. دا هرڅه مخنیوی نه کوي. د جعلي مثبت پر ځای کول به ستاسو د جریان سره مخنیوي. د حقیقي مثبت پر ځای کول تاسو ته د سیشن په پای کې څیړنه ورکوي. .claude/secret-alerts.log د Reviews په ورځ کې یو ځل. ډیری ثبتونه غلط مثبت دي (ټیټیټونه، د سند د مثالونو). د اونۍ په اړه یو ځل، یو حقیقي کافی دی چې د تصدیق کولو یا د .gitignore تازه کولو ته اړتيا لري. secret-alerts.log سکرین 4: د فابريکې Cop ټیټ، ښکلي، او له یو حقیقي غلطۍ څخه جوړه شوه. ، د کلورډ ته چمتو کړي چې په چټکۍ سره حل کړي، او دا مخکې چې زه ثبت کړم چې څه دی. د فشار له لارې چمتو شوی. CI خړ دی. هیڅ نقصان نه ترسره شوی. مګر د سوداګرۍ باید د PR پرته په اصلي کې ځي نه وي. main git push origin main #!/bin/bash # .claude/hooks/no-push-main.sh # Prevents git push to main/master/production branches CMD=$(jq -r '.tool_input.command // empty') echo "$CMD" | grep -q 'git push' || exit 0 BRANCH=$(git branch --show-current 2>/dev/null) PROTECTED="main master production release" for b in $PROTECTED; do if [ "$BRANCH" = "$b" ]; then jq -n --arg branch "$BRANCH" '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: ("Push to " + $branch + " blocked. Create a feature branch first.") } }' exit 0 fi done # Also block force push to any branch if echo "$CMD" | grep -qE 'push.*(-f|--force)'; then jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: "Force push blocked. Use --force-with-lease if you must." } }' fi دوه ساتونکي په یوه سکرپټ کې. نه د ساتلو د ګاڼو ته فشار. نه د هر ګاڼو ته فشار. د دوهم قواعد اختیاري دی مګر زه دا لرم ځکه چې د ځواک د فشار د هغه ډول څه دی چې تاسو ته اړتيا لري چې خپل ځان کښته ورکړئ، په بشپړه توګه پوه شي چې تاسو څه کار کوي. د کوډ د انکار سره ګرځنده کار کوي. دا د دلیل وګورئ، د ځانګړتیاوو د فریکونۍ جوړولو ته پیشنهاد کوي، او په سمه پړاو کې حرکت کوي. د کوک د سیشن تبادله نه کوي. دا دا راټولوي. سکرپټ 5: د تور بکس ریکارډر هر وسایلو د تماس. هر input. هر output. Timestamped او په یو ژور فایل کې تړل شوي. دا د کوک دی چې زه ډیری وختونه د ټیمونو ته سپارښتنه کوي ځکه چې دا د پوښتنې ځواب کوي چې تاسو په هر وخت کې پوهیږئ کله چې څه غلط شي: "چې دقیقا کولی؟" #!/bin/bash # .claude/hooks/record.sh # Logs every tool call to a structured audit file TS=$(date '+%Y-%m-%d %H:%M:%S') TOOL=$(jq -r '.tool_name // "unknown"') SESSION=$(jq -r '.session_id // "unknown"') # Compact input (one line, no whitespace bloat) INPUT=$(jq -c '.tool_input // {}') # Truncate output to prevent log bloat (first 500 chars) OUTPUT=$(jq -r '.tool_output // empty' | head -c 500) # Tab-separated for easy parsing with awk/cut printf '%s\t%s\t%s\t%s\t%s\n' \ "$TS" "$SESSION" "$TOOL" "$INPUT" "$OUTPUT" \ >> .claude/session-log.tsv exit 0 Tab-separated، نه JSON. د عادي انتخاب. TSV فایلونه د معياري Unix وسایلو سره سم، ډول شي، او cuttable دي. اړتیا لرئ چې هر Bash امر له ورځ څخه وګورئ؟ grep "$(date +%Y-%m-%d)" .claude/session-log.tsv | grep "Bash" | cut -f4 اړتیا لرئ چې په دې اونۍ کې Claude کتنه فایلونه ترمیم کړي؟ grep -c "Edit\|Write" .claude/session-log.tsv د صادراتو په سيمه کې د 500 ځانګړنو ته مخکښ شي ترڅو د ډیری میګابایټ ژور فایلونه مخنیوي کله چې Claude لوی فایلونه وګورئ. که تاسو د بشپړ صادراتو ته اړتیا لرئ، د هر سیشن ژور فایلونه ته بدل کړئ: د فایل نوم سره بدل کړئ . .claude/logs/session-${SESSION}.tsv د ټیمونو لپاره چې د مرکزي لګولو ته اړتيا لري، د فایل پینځو کې د HTTP هاک سره بدل کړئ چې ستاسو د لګولو انټرنېټ ته اشاره کوي. د JSON ګټور وزن Claude Code sends شامل دي هر څه چې دا سکرپټ کښته کوي، او اضافي کنکټورونه لکه د کار د لیږد او وسایلو ترتیب. د ترکیب Settings فایل ټول د 5 سکرپټونه، په ګډه جوړ شوي: { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": ".claude/hooks/guard.sh" }, { "type": "command", "command": ".claude/hooks/no-push-main.sh" } ] } ], "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": ".claude/hooks/fmt.sh" } ] }, { "matcher": "", "hooks": [ { "type": "command", "command": ".claude/hooks/secrets.sh" }, { "type": "command", "command": ".claude/hooks/record.sh" } ] } ] } } د JSON کپی کړئ . د 5 سکرپټونه جوړ کړئ د چلولو د ډون .claude/settings.json .claude/hooks/ chmod +x .claude/hooks/*.sh PreToolUse hooks په نظم کې چلند. او د هر بیچ امر تبادله کړئ. که هر یو د انکار ته ورسیږي، دا امر بلاک کیږي. PostToolUse هاکونه هم په ترتیب کې چلند کیږي، مګر دوی کولی شي څه هم بلاک کړي؛ د وسایلو bereits ausgeführt. guard.sh no-push-main.sh په دویم PostToolUse ورژن کې د خالی توازن معنی لري او په هر وسایلو تماس کې، نه یوازې د فایل ترمیمونو کې. دا عمدی دی. زه غواړم د انډولونو لپاره د بیس اخيستنه ونیسئ او زه غواړم هر څه، د وسایلو ډول په اړه د ریکارډ کولو لپاره. secrets.sh record.sh هغه څه چې زه په 6 میاشتو کې د دې چلولو کې زده کړې ټول بل د ضمانت دی. د فارمټر یو فوری، اندازه کولی شي وخت خوندي کړي. لومړی چې یو نصب کړئ حتی که تاسو د نورو په لټه کې ونیسئ. The formatter hook pays for itself on day one. زه ترټولو ترټولو په اونۍ کې د دس جعلي تفتیشونو څېړنه کولی شي چې د یو حقیقي تصدیقې له لاسه ورکړئ. د ژور فایل څېړنه 30 ثانیو ته اړتيا لري. د رخصت شوي تصدیقې چڼاسکه کولو لپاره یو ساعت ته اړتيا لري. False positives in the secret scanner are fine. هر ځینې اونۍ کې زه د نږدې ناڅاپي وروسته د نمونې اضافه وکړم. دا سره پیل شوه اوس دا د 8 نمونې لري. د 6 میاشتو کې دا به د 20 وي. دا د موضوع دی. دا ستاسو د ټیم په اړه د ادارو معلوماتو په اړه د هغه څه چې هرڅه باید غیرقانوني ترسره شي راټول کوي. The guard script needs to evolve. rm -rf خو کله چې څه هم غلطه کیږي، د هر عمل بشپړ ریکارډ کولو لپاره کوليډ د دوو ساعتونو څیړنې په پنج دقیقه کې راټول کوي. The audit log is most valuable after incidents. هر PreToolUse کوک د هر وسایلو تماس کې د اوږدوالی اضافه کوي. زما guard او branch-cop سکرپټونه په هر ډول کې د 5ms لاندې چلند کوي. د Formatter د 50-200ms په اړه د فایل اندازه پورې اړه لري، مګر دا PostToolUse چلند کوي نو دا د پایپینټ بلاک نه کوي. که ستاسو کوک د غیرقانوني API په تماس کې وي، PostToolUse کارول یا اوږدوالی قبول کړئ. Keep hooks fast. د Sticky Note دی د څارنې چې مخکې زما په ذهن کې ژوند کوي اوس د 150 لړۍ په کلکه کې د پیاوړې سکرپټونو کې ژوند کوي. دوی په هر وسایلو تماس کې پرته له زما د ګډون پرته کار کوي. دوی د هغه څهونو په لټه کې دي چې زه کله چې زه د اوږد سټیشن په پای کې خسته وي. دوی هیڅکله د شاوخوا چمتو کولو په لټه کې نلري. د AI کوډ کولو مسؤلیتونه قوي دي. مګر د guardrails پرته د بریښنا یوازې د خطر دی چې تاسو هیڅکله اندازه نلري. پنج سکرپټونه، د ده دقیقې سیسټمونه، او د خطر په نږدې کچه کولی شي. د ښکلي نوټ له خوا یو څه ښه بدل شوی دی. څه چې زما په یادونو کې باور نه کوي چې دا وګورئ.