Skip to main content

extend-harness

Extend frontend-skills hook harness. Add new rules via skill-manifest.json, pick severity tier (block/warn/nudge/info/block-strict/diagnostic), view analytics via /frontend-skills-stats. Use when adding enforcement, tuning rule severity, or debugging hook that isn't firing.

معلومات المصدر

المستودع
redpanda-data/ui-harness
آخر نشاط في المصدر
٨ مايو ٢٠٢٦ في ١١:٢١
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٣٤
التفرعات
٤

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
extend-harness
description
Extend frontend-skills hook harness. Add new rules via skill-manifest.json, pick severity tier (block/warn/nudge/info/block-strict/diagnostic), view analytics via /frontend-skills-stats. Use when adding enforcement, tuning rule severity, or debugging hook that isn't firing.
# Extend the Harness ## 1. Never hand-edit generated configs `.claude/settings.json` and `hooks/hooks.json` generated. Edit `skill-manifest.json`, regenerate: ```bash bash scripts/generate-hook-configs.sh --apply bash scripts/generate-hook-configs.sh --check # drift check (lefthook runs this pre-push) ``` ## 2. Add a new rule (grep-expressible) 1. Write `my-check.sh` in `.claude/hooks/` -- start from any existing `*-check.sh` as template. 2. Add filename to matcher block in `skill-manifest.json` (usually `PostToolUse.Edit|Write`). 3. Regenerate: `bash scripts/generate-hook-configs.sh --apply`. 4. Test: feed synthetic edit event on stdin: ```bash echo '{"hook_event_name":"PostToolUse","tool_name":"Edit","tool_input":{"file_path":"/tmp/x.ts"}}' | bash .claude/hooks/my-check.sh ``` ## 3. Pick the right severity tier | Function | Exit | Claude sees | Logged | Use when | |---|---|---|---|---| | `hook_block` | 2 | systemMessage | JSONL | Must fix before continuing | | `hook_block_strict` | 2 | `[STRICT]` prefix | JSONL | Security-critical, no escape hatch | | `hook_warn` | 0 | systemMessage | JSONL | Should fix, but proceed | | `hook_nudge` | 0 | `[nudge]` prefix | JSONL | Pattern suboptimal most cases | | `hook_info` | 0 | -- | JSONL | Telemetry only, no UI | | `hook_emit_diagnostic` | 0 or 2 | LSP JSON with `range` + `fix` | JSONL | Machine-parseable with auto-fix | Default `hook_warn` for style, `hook_block` for correctness, `hook_info` for observation. ## 4. When grep isn't enough Grep can't express nested interactives, exhaustive switches, or useState-object-ref leaks reliably. AST-level patterns: handle in code review for now, or file issue for future Biome custom-rule integration. Don't fake with fragile multi-line regex -- too many false positives. ## 5. View analytics ``` /frontend-skills-stats ``` Reports per-hook P50/P95 latency, blocks/warns/nudges/infos per rule, zero-fire candidates (prune), over-aggressive hooks (soften). Needs >=5 session summaries in `~/.claude/hook-metrics/`. ## 6. Debug a hook that isn't firing ```bash HOOK_DEBUG=1 HOOKS_FAIL_CLOSED=1 claude ``` Then: `tail -f /tmp/hook-session-*/debug.log`. Fail-closed turns crash-into-silent-exit into crash-into-visible-block. ## 7. Verification checklist - [ ] `skill-manifest.json` lists script under correct event+matcher - [ ] `bash scripts/generate-hook-configs.sh --check` exits 0 - [ ] Script executable (`chmod +x`) - [ ] Sources `_hook-lib.sh`, parses input, filters extension, handles escape hatch - [ ] Test fixture added to `evals/` if non-trivial - [ ] `bash evals/run.sh` passes
عرض على GitHub