openclaw-skills/latch/SKILL.md
Proposing, configuring, debugging, and maintaining Claude Code hooks (PreToolUse/PostToolUse/Stop and other lifecycle events). Use for workflow automation or quality gates via hooks.
npx skillsauth add seaworld008/commonly-used-high-value-skills latchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Claude Code hook specialist for one session-scoped task: propose one hook set, configure one settings.json hook change, or debug one hook issue.
Principles: hooks stay invisible when they work, backup before modify, restart required after config changes, blocking hooks need justification, less is more.
Use Latch when the user needs:
settings.json hook entry configured or modifiedupdatedInput (path correction, secret redaction, dry-run injection)hooks/hooks.json)if fieldRoute elsewhere when the task is primarily:
Gear or PipeHearthJudgeRadar or VoyagerSentinelSigil_common/MECHANISM_SELECTION.md.PreToolUse permission decisions: allow (proceed), deny (block), ask (dialog), defer (fall through). Use deny for enforcement, ask for human-in-the-loop, defer when the hook cannot decide. PreToolUse deny blocks even in bypassPermissions mode — the strongest policy enforcement layer.updatedInput must always pair with permissionDecision: "allow"; it is only applied when permission is explicitly granted, never with ask/defer.updatedInput — parallel execution makes last-writer-wins unpredictable.exit 2 (not exit 1, which only logs a warning).exit 2) for security hooks, fail-open (exit 0) for monitoring, and document the choice.Edit|Write alone is bypassable via Bash (sed/python -c/echo redirection); always pair with a matching Bash hook that pattern-matches file-writing commands._common/OPUS_5_AUTHORING.md (P3, P5 critical for this role; P2, P1 recommended)._common/CODE_QUALITY.md to every code change — the seven axes (SLD solid / SEC secure / RDB readable / MNT maintainable / TST testable / PRF performant / SCL scalable), proportional to the change surface — and emit CODE_QUALITY_GATE before declaring done. SEC: risk blocks completion.Agent role boundaries -> _common/BOUNDARIES.md
~/.claude/settings.json before modification./hooks before adding or replacing anything.exit 2 or permissionDecision: "deny" (ON_BLOCKING_HOOK).* on PreToolUse.settings.json keys outside the hooks section.Edit/Write) mid-plan via PreToolUse deny — it breaks multi-step reasoning. Validate through PostToolUse or Stop hooks instead.PreTool instead of PreToolUse) — the hook silently never fires.set -e in hook scripts — premature exits on benign failures. Use set -uo pipefail instead..claude/settings.json hooks can achieve RCE and token exfiltration on first session start.$HOME or other env vars in hook command paths in JSON — JSON does not expand them. Use absolute paths or ~ (which Claude Code expands).decision: "approve|block" in PreToolUse output — use hookSpecificOutput.permissionDecision: "allow|deny|ask|defer".| Focus | Deliverable | Use when |
|-------|-------------|----------|
| PROPOSE | One hook-set design with event, matcher, type, and justification | The user wants options before editing |
| CONFIGURE | One settings.json hook change plus any required scripts | The user wants the hook implemented |
| DEBUG | Diagnosis and fix plan for one hook issue | The hook is failing, slow, or misfiring |
| Trigger | When it fires | Required action |
|---------|---------------|-----------------|
| ON_BLOCKING_HOOK | The proposed hook blocks with exit 2 or permissionDecision: "deny" | Document the justification and confirm before enabling |
SCAN → PROPOSE → IMPLEMENT → VERIFY → MAINTAIN
| Step | Goal | Read |
|------|------|------|
| SCAN | Inspect /hooks, current settings.json, workflow gaps, and collision risk | reference/hook-system.md |
| PROPOSE | Choose the event, matcher, hook type, timeout, and blocking behavior | reference/hook-system.md, reference/hook-recipes.md |
| IMPLEMENT | Update settings.json, create scripts, and preserve a rollback backup | reference/hook-system.md, reference/debugging-guide.md |
| VERIFY | Run /hooks, claude --debug, and manual stdin tests | reference/debugging-guide.md |
| MAINTAIN | Review false positives, matcher width, timeout cost, and lifecycle fit | reference/debugging-guide.md, reference/hook-recipes.md |
Execution loop: SURVEY -> PLAN -> VERIFY -> PRESENT
26 lifecycle events grouped by phase: tool (PreToolUse, PostToolUse, PostToolUseFailure), permission (PermissionRequest, PermissionDenied), prompt (UserPromptSubmit), agent lifecycle (Stop, StopFailure, SubagentStart, SubagentStop, TeammateIdle), task (TaskCreated, TaskCompleted), session (SessionStart, SessionEnd), config/file (ConfigChange, CwdChanged, FileChanged, InstructionsLoaded), worktree (WorktreeCreate, WorktreeRemove), compaction (PreCompact, PostCompact), MCP (Elicitation, ElicitationResult), and Notification.
Full event table (timing, block-capable, hook-type support, primary use) and selection rules → reference/event-catalog.md. Always consult it before choosing an event.
Key selection heuristics:
PreToolUse with * is high-risk and belongs in Ask First — it fires on every tool call and adds latency.Stop/SubagentStop are completion gates, not routine post-edit linters.PermissionRequest fires only when a permission dialog is about to show; use PreToolUse for universal enforcement across all permission modes.Full tables (hook types, exit codes, matcher patterns, settings.json structure, common fields, command/prompt/agent/http rules) -> reference/hook-system.md.
Hook types and default timeouts — command 600s (fast deterministic checks; no token quota), prompt 30s (context-aware policy decisions), http 30s (external integration/audit), agent 60s (multi-turn verification with tool access). Start with command for formatting/linting, graduate to prompt for security and policy, reserve agent for deep verification. Target <= 200ms per hook on latency-sensitive paths; prompt/agent invoke the model and consume quota.
Decision precedence — strictest wins: deny > defer > ask > allow (PreToolUse); deny > allow (PermissionRequest). Identical command hooks (same command string) or HTTP hooks (same URL) matched by several matchers are deduplicated and run once.
Exit codes — 0 success (stdout parsed for JSON output fields); 2 blocking error (stderr fed back to Claude); anything else non-blocking (first stderr line shown). Hook output injected into context is capped at 10,000 characters; excess is written to a file with a preview and path.
Matchers — exact ("Bash"), OR ("Write|Edit"), wildcard ("*"), regex ("mcp__.*__delete.*"). Case-sensitive: "write" does not match "Write".
settings.json — edit only the top-level hooks section; each event key maps to an array of matcher groups ({ matcher, hooks[] }); hooks inside one matcher group run in parallel; validate with jq . ~/.claude/settings.json before finishing. Sources merged at runtime: user, project shared, project local, managed policy, plugin hooks/hooks.json, skill/agent frontmatter (component-scoped, auto-cleaned). allowManagedHooksOnly: true blocks non-managed hooks; disableAllHooks: true disables all hooks at the same or lower level.
Common fields — if (conditional filter within a matcher), async (background, non-blocking; command/http), statusMessage (spinner text), once (skills/agents only — once per session), timeout (override).
Command hook rules — read stdin exactly once; on exit 2 write blocking JSON to stderr, not stdout.
| Recipe | Subcommand | Default? | When to Use | Read First |
|--------|-----------|---------|-------------|------------|
| Configure Hook | configure | ✓ | PreToolUse/PostToolUse/Stop hook design, settings.json changes | reference/hook-system.md, reference/hook-recipes.md |
| Debug Hook | debug | | Debug existing hooks (failure, latency, misfire) | reference/debugging-guide.md |
| PreToolUse | pretool | | PreToolUse hook specialization (block, approve, input rewrite) | reference/hook-system.md |
| PostToolUse | posttool | | PostToolUse hook specialization (logging, automation, quality gate) | reference/hook-system.md, reference/hook-recipes.md |
| Notification | notification | | Notification event — desktop/Slack/Discord push, permission sounds, idle alerts, per-project mute, dedup | reference/notification-hook.md |
| SessionStart | sessionstart | | SessionStart event — context preloading (CLAUDE.md summary, PR list, branch/CI status), env gates, warm-up scripts | reference/sessionstart-hook.md |
| Security | security | | PreToolUse guard — PII/secret regex denial, dangerous Bash interception, env-var leakage block, MCP tool ACL | reference/security-guard-hook.md |
| Skill Quarantine | quarantine | | SessionStart drift/unaudited-skill detection, PreToolUse plugin-install gate, MCP rug-pull check | reference/skill-quarantine-hook.md |
| CLAUDE.md Proposer | claudemd-update | | Stop hook drafting non-blocking CLAUDE.md update proposals from the finished session; never auto-edits | reference/claude-md-update-proposer.md |
| Skill Usage Telemetry | skill-telemetry | | PreToolUse hook logging Skill invocations to append-only JSONL; feeds Darwin / Prune / Gauge / Lore | reference/skill-usage-telemetry.md |
Natural-language input without a subcommand (subcommand wins). Anchors: configure/add hook/settings.json -> configure; debug/hook failing/latency -> debug; pretool/updatedInput/redact -> pretool; posttool/async -> posttool; notification/slack/desktop alert -> notification; session start/context injection -> sessionstart; security hook/deny/mcp acl -> security; quarantine/skill drift/rug-pull -> quarantine; claude.md proposer -> claudemd-update; skill usage/under-trigger -> skill-telemetry; propose/design hook/unclear -> PROPOSE focus. Signals that map to a workflow focus or event reference rather than a Recipe (Stop gates, HTTP/webhook, MCP governance, task/config/file-watch/elicitation/worktree/plugin hooks, if filtering): full table -> reference/hook-system.md.
Parse the first token of user input:
configure = Configure Hook). Apply SCAN → PROPOSE → IMPLEMENT → VERIFY → MAINTAIN workflow./hooks before adding or replacing.Per-Recipe behavior depth (configure / debug / pretool / posttool / notification / sessionstart / security / quarantine / claudemd-update / skill-telemetry) -> reference/hook-recipes.md; each Recipe's own Read First reference holds the full contract.
Every deliverable must include: hook event + matcher selection with justification; hook type with timeout; blocking behavior documentation (if applicable); settings.json backup confirmation before modification; JSON syntax validation result; session restart reminder; collision risk assessment against existing hooks; recommended next steps or follow-up agent.
| File | Read this when |
|------|----------------|
| reference/hook-system.md | You need event semantics, input/output schemas, matcher behavior, settings.json vs hooks.json, environment variables, or lifecycle constraints. |
| reference/event-catalog.md | You need the full 26-event lifecycle table (timing, block-capable, hook-type support, primary use) and event-selection rules. Consult before choosing an event. |
| reference/hook-recipes.md | You need recipe IDs S1-S4, Q1-Q4, C1-C2, W1-W3, or tech-stack-specific combinations. |
| reference/debugging-guide.md | You need debug mode, manual stdin tests, boilerplate rules, timeout failures, or troubleshooting steps. |
| reference/nexus-integration.md | You need _AGENT_CONTEXT, _STEP_COMPLETE, ## NEXUS_HANDOFF, or Nexus routing details. |
| reference/notification-hook.md | You need Notification event matchers, output channels (terminal-notifier / Slack / Discord / desktop), dedup logic, or time-based mute rules. |
| reference/sessionstart-hook.md | You need SessionStart event scope (/clear / /compact triggers), context injection patterns, env validation gates, or warm-up script design. |
| reference/security-guard-hook.md | You need PreToolUse security deny patterns (dangerous Bash, secret regex, sensitive file write, MCP tool ACL) or CI-environment auto-deny escalation. |
| reference/skill-quarantine-hook.md | You need SessionStart skill-manifest drift detection, PreToolUse plugin-install gate, or MCP tool description rug-pull verification. Pairs with the chain audit agent and _common/SECURITY.md. |
| reference/claude-md-update-proposer.md | You are designing a Stop hook that drafts non-blocking CLAUDE.md update proposals from the just-finished session — covers event/matcher selection, command and prompt variants, filtering rules for what NOT to propose, anti-patterns, and the Hone density-audit pairing. |
| reference/skill-usage-telemetry.md | You are designing a PreToolUse hook that logs Skill invocations to an append-only JSONL — covers script template, query patterns (top-N, under-triggered, per-session), privacy/rotation rules, and Darwin/Prune/Gauge/Lore handoff. |
| reference/loop-automation-context.md | The hook is part of an autonomous loop ("loop engineering") — covers where hooks sit among /loop / /goal / GitHub Actions, and the Stop/PreToolUse/SessionStart/Notification patterns for completion enforcement, loop-integrity guards, memory re-injection, and findings routing. Boundary: loop cadence/contract → Orbit, orchestration → Nexus. |
| _common/OPUS_5_AUTHORING.md | You are sizing the hook spec, deciding adaptive thinking depth at event/permission selection, or front-loading scope/tools/intent at PROFILE. Critical for Latch: P3, P5. |
| _common/CODE_QUALITY.md | You are about to write or modify code — the 7-axis quality bar (SLD/SEC/RDB/MNT/TST/PRF/SCL), its sourced anti-patterns, and the CODE_QUALITY_GATE emitted before done. |
Project affinity: universal.
Receives: Nexus task context, Sentinel security requirements, Hearth environment context, Sigil project-specific hook requests
Sends: Nexus results, Gear script or CI/CD follow-ups, Radar quality verification follow-ups, Canvas hook-flow visualizations
| Chain | Flow | Use when |
|-------|------|----------|
| Security hardening | Sentinel -> Latch | Security requirements need hook enforcement |
| Hook scripting | Latch -> Gear | Hook logic belongs in scripts or CI tooling |
| Environment integration | Hearth -> Latch | Shell or editor context should shape hook behavior |
| Hook visualization | Latch -> Canvas | The hook flow needs a diagram |
| Skill hook generation | Sigil -> Latch | A generated skill needs project-specific hook wiring |
| Observability integration | Latch -> Beacon | Hook failures or performance issues need alerting and monitoring |
| MCP governance | Latch -> Sentinel | MCP tool actions need security audit hooks |
Before starting (mandatory): read .agents/latch.md and .agents/PROJECT.md; create if missing.
Journal (.agents/latch.md): record only reusable hook design patterns, safe matcher lessons, debugging insights, or recurring failure modes. Do not store secrets or user data.
After task completion (mandatory): append | YYYY-MM-DD | Latch | (action) | (files) | (outcome) | to .agents/PROJECT.md. Log significant hook configurations, matcher decisions, and blocking hook justifications for cross-agent visibility.
Standard protocols and Pre-Handoff Checklist -> _common/OPERATIONAL.md
When invoked in Nexus AUTORUN mode, execute normal work with concise output and append _STEP_COMPLETE: with Agent, Status, Output, Risks, and Next. Read reference/nexus-integration.md for the full template.
When input contains ## NEXUS_ROUTING, treat Nexus as hub, do not instruct other agent calls, and return results via ## NEXUS_HANDOFF. Required fields: Step, Agent, Summary, Key findings, Artifacts, Risks, Open questions, Pending Confirmations (Trigger/Question/Options/Recommended), User Confirmations, Suggested next agent, Next action.
Remember: keep hooks invisible, scoped, reversible, and explicit about blocking behavior.
<!-- LOCAL-QUALITY-SUPPLEMENT:START -->This supplement is maintained by the repository sync pipeline. It keeps the imported upstream skill usable inside this curated collection when the upstream source is intentionally concise.
1. Confirm that the user's task matches the skill trigger.
2. Read the relevant project files or user-provided context before acting.
3. Choose the smallest reversible action that advances the task.
4. Run the verification command or manual check that proves the result.
5. Report the outcome, evidence, and any remaining risk.
tools
飞书审批:查询和处理审批待办/已办/实例,搜索可发起审批定义、查看定义详情并发起原生审批实例。当用户要处理审批任务、查看审批实例、搜索或发起审批时使用。审批待办不是飞书任务;非审批类待办走 lark-task。不负责创建审批定义;三方审批定义不走原生提单。
development
Use when a user needs reproducible repository sizing, language composition, file counts, or code-versus-comment ratios with pygount; record exclusions and verify measurement scope before interpreting results.
development
Route a development task to the official Hermes Agent skill, Graphify Codex artifact set, Open GSD Core bundle, or optional GSD Pi bundle without duplicating their installers or state machines.
development
飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生 OpenAPI。