{ "listing": { "skills": [ { "path": "skills/codebase-design/SKILL.md", "name": "codebase-design", "description": "Deep modules: shared vocabulary for module interfaces and seams. Use when the user wants to design or improve a module's interface, decide where a seam goes, or make code more testable or AI-navigable.\n", "files": { "skills/codebase-design/DEEPENING.md": "f3dd099ce99289bd213914d8ee3e2429b78309c3957ca4583f7659551b1d53c1", "skills/codebase-design/DESIGN-IT-TWICE.md": "8e740bf98446dbd4dfdc132ac4346d9a7eedaf93de6a495889171cf7f99f16bd", "skills/codebase-design/SKILL.md": "90f787548f9ca4e815d7615af5734fbceadbe2327776f429d8fda017e622efc0" } }, { "path": "skills/diagnosing-bugs/SKILL.md", "name": "diagnosing-bugs", "description": "Diagnosis loop for hard bugs and performance regressions. Use when the user says \"diagnose\"/\"debug this\", or reports something broken/throwing/failing/slow.", "files": { "skills/diagnosing-bugs/SKILL.md": "a9c534fa643d6e8a9e295c3dc8b25e333596f2b3316705ce707b4200868a393f", "skills/diagnosing-bugs/scripts/hitl-loop.template.sh": "35103539fc36873eea36074769ad454f9379d6fc8b2dc0e26ce987fd3bfe5503" } }, { "path": "skills/docs-writing/SKILL.md", "name": "docs-writing", "description": "Writes and audits technical docs with Diataxis type gating and runnable examples. Use when the user asks to review, audit or write docs, an API reference, a how-to, or a README. NOT for: AGENTS.md, CLAUDE.md or skills (use /aleph:writing-for-agents).\n", "files": { "skills/docs-writing/SKILL.md": "c0e3f85b874ff5f9f5c09423fb44bb6bdecf10a886a481bf74714ec36e098ba7", "skills/docs-writing/readme-template.md": "a7ac8ef1d3bdb3848b30fc57462b4d7903ba5594ae17b6403f319b531f21f310", "skills/docs-writing/rules/_sections.md": "6efd4a23cdce7fd7e8683b8976acc753d061c196b241c2dcceacc6bd695886a6", "skills/docs-writing/rules/_template.md": "df6315f9d818e5b06ffd6572a9ac7f571dbc574b7eac9d2ea0eecb4e57b77025", "skills/docs-writing/rules/clarity-defaults.md": "57761db10f267af61606b79b03d90201ae39fa4ff64473a62b0affe6fa23d55c", "skills/docs-writing/rules/clarity-no-latin.md": "eb7980e9c0d720911e80bfd0f41dbdcbe83aa6723b7aba26ad970c9615c768ee", "skills/docs-writing/rules/clarity-no-nominalizations.md": "306b8918f210a864c8cd96b41ab3969e001734b8cfb8c759de23bb6ebc59ee10", "skills/docs-writing/rules/clarity-one-idea-per-sentence.md": "e949a7f072791694bb56864de3e465862a2dffc5ade91269dafce2514311f533", "skills/docs-writing/rules/clarity-serial-comma.md": "e407f430f368ae612a1bfe785de4fdcf772ee12e921a390298ec1dfa3febe33d", "skills/docs-writing/rules/code-context-ratio.md": "5e3c45b228c3ba47c2ac8a5c1033d868957c3a2ffd5c6412c4bda883458e8f9d", "skills/docs-writing/rules/code-error-descriptions.md": "c9d4f7654413b74cb3952c67c7b4b7f68b9bc323a1211af79a6f4aabc9b5e284", "skills/docs-writing/rules/code-isolated-to-full.md": "a1923ee3b220c2c8c354982af3fbc27fa94066e3919c25c5e6529f3e1e3d22b7", "skills/docs-writing/rules/code-multiple-languages.md": "7ff6ba353f5cdeeb04fcb350d52a0e8a1be5c8735b1e242ca9d4f91251d49bdd", "skills/docs-writing/rules/code-named-functions.md": "9c9e00df19b66c97bafbf139faf08159bda510a5e4128bb0c3cc5116c6a96d4d", "skills/docs-writing/rules/code-placeholders.md": "62f5761088abf307d3550c0e2673963ae3f3d64b77996f0e1338b394c64d93bd", "skills/docs-writing/rules/code-realistic-example-names.md": "60de89e57b0c468dd7de5663525ae620bc7b6331cf4a6543757ef7425efa571a", "skills/docs-writing/rules/code-runnable-examples.md": "e17ef4dc105f0cf5bd384112e40db341f3f4cd1633c3b4cfeba9e4702faa6ff8", "skills/docs-writing/rules/format-bold-ui-code-font.md": "d29d9bb604d1635af9f374b34eb238c2a2dc6cf246f0b8e245a4784da8fcf4f4", "skills/docs-writing/rules/format-descriptive-links.md": "ab0172dbd1ff7051892ac905774dd741e618b8eefa5ddb4622085c09d92cb893", "skills/docs-writing/rules/format-image-alt-text.md": "35f8eccd7bcbe684653b95e3c37136615516919d10133208de58e2af17ccdb77", "skills/docs-writing/rules/format-lowercase-filenames.md": "150de61205f486a2065d9c4ce2a45d141dff51f1f5f358516d737d2620203518", "skills/docs-writing/rules/format-periods-inside-quotes.md": "54dab8d34cb67c7a5408d7078e576d1e00c0e9b3faebaa2b9f96ba4c9cade407", "skills/docs-writing/rules/format-semantic-html.md": "d7ec3af4b18767f912dcc9ae13626cfec48c62e69e1f35e45c8b18d4ec313027", "skills/docs-writing/rules/format-sentence-case.md": "acd89afe64a1ae91f981d6b6a9dda39d34cb3154501eb71af842418779235c90", "skills/docs-writing/rules/hygiene-delete-outdated.md": "6f5e888937cd4a487fb109ba8947b83c613cfdd6857763f439faf64dc3e2bb9f", "skills/docs-writing/rules/hygiene-docs-directory.md": "f80b3edad1736db2bb7e1e68fbbee34508761386999a752a4278aac2a3c4d76a", "skills/docs-writing/rules/hygiene-experimental-label.md": "294b10e4c35e4e2a32c932ab6f121bb18478845c590f0cddbf226361bae78a81", "skills/docs-writing/rules/hygiene-no-temporal.md": "c3ece0473751bc2689f4670231fbdb288b551e1763a11d0af7eb960863438773", "skills/docs-writing/rules/hygiene-planned-label.md": "31cd7e5c85aa6dc78c38a30c5c23a9caf2a0ba5a93859fdad1d3f79d324cde5f", "skills/docs-writing/rules/hygiene-update-metadata.md": "190dfe45b7df9f3e14f361bab362169b0673cb19f1b26f47c9567271b39f3a69", "skills/docs-writing/rules/nav-agent-readable.md": "88e5a823e6cdf8db90dccd0ba16f8ce6986f62d6961527e999720b8c1c0ee2f0", "skills/docs-writing/rules/nav-breadcrumb-context.md": "966dbe9c4db524ddc71d3d1889968814dc8c3143a61a66cbe094e8a429b1a639", "skills/docs-writing/rules/nav-dont-repeat.md": "1e0a184caac6e3a5f1a93a860b4c833b4836441daed1589ab6fd8dc3a23fe260", "skills/docs-writing/rules/nav-every-doc-linked.md": "2577db14483f56f8e36a8a914be62dcfdac5bdb2bba84b5f47a96d1b751ffbb7", "skills/docs-writing/rules/nav-layer-depth.md": "adbf52d1eb35593d51d5aebfd96dd644aaa4dcf95ef7e5981c11b9a828a56eb7", "skills/docs-writing/rules/nav-relative-paths.md": "2c753fbe925c0b928dcb45f859ad8ae1f05c538c6bb38c19af5948a9c22cd418", "skills/docs-writing/rules/nav-searchable-headings.md": "32945af5597cff4fd29c405f525a9f23eabcc618ae678199105379b13bfdd468", "skills/docs-writing/rules/review-defaults.md": "2eff528f212e7ba3d29741d4dc3d8b918721fc120b547b29f0f7bff56ad3c34f", "skills/docs-writing/rules/review-docs-with-code.md": "5cb22648782852b2fd03035ecb9668b09a42ffaac9b6b136c27d532ca1ae42c9", "skills/docs-writing/rules/review-verify-links.md": "cb51c91744334127e043bfca615da43416f4913b41436f6f029a348b80a2873d", "skills/docs-writing/rules/scan-defaults.md": "13e1e8cd18d535793f7aa69fae6bb89a72220a4f683f077d04c8609193d64e21", "skills/docs-writing/rules/scan-three-column-api.md": "186550ef0a1390c3b48e518167c217b77c78e67cbf7d136fdf95b055a975a3dd", "skills/docs-writing/rules/structure-bluf.md": "5181658e74561f17440a58e8253b0204ece98cee5e99cb5388f656b05f4a00c3", "skills/docs-writing/rules/structure-conditions-first.md": "f59754071bc2aa3a256f76c78f26abd6fb5baac50503ad760b1c8400022642d0", "skills/docs-writing/rules/structure-diataxis.md": "625b663d4c252343dfb72f4b2594be934ab47d97a7d1ab6fe983c473ce1a660e", "skills/docs-writing/rules/structure-heading-overview.md": "304319ac65432d9936621ace42c140f157579f77016fbd1aa53a9d38358e8e15", "skills/docs-writing/rules/structure-next-steps.md": "dc52417b026d7ce0b1212abec9a27bfda48b87091e54240261f496e93ff58122", "skills/docs-writing/rules/structure-no-filler-sections.md": "19e74fbe82cd8396e835f59607e94b4c82059e534ea5e04d04b16a736683d5df", "skills/docs-writing/rules/structure-one-idea-per-section.md": "35780bdd304991c0ab1db96b30cc14fcfc8daa6a4a8cd118efc22a56dee6e725", "skills/docs-writing/rules/structure-procedures.md": "0ce741d75c79cca9769bf3a553f9093d423b89df64b88d7164e3f0760ad3d17a", "skills/docs-writing/rules/structure-quick-start.md": "3a6688fcead6217b6a0f55e55a65df7b1dcaf2cca8a46d7e4dc420a749419039", "skills/docs-writing/rules/voice-defaults.md": "f2515ab7a75283b311f7eadea5353c74581f207cd15515979e5aa4a53739d0c8", "skills/docs-writing/rules/voice-no-anthropomorphism.md": "13c4f7243a4cb2d4f88a595e65920863a8b0b652c7d9ebe69cde75e641eab991", "skills/docs-writing/rules/voice-no-jargon.md": "9e46c2fee9572877009052987cee9d970e6f7cb0e3c2699c4871f6f864b917f9", "skills/docs-writing/rules/voice-requirements-language.md": "2e7d5ba2d5ae3b69a7f77b18de6962f75aa5a2401326a47c2b81d4848b14a47f" } }, { "path": "skills/domain-modeling/SKILL.md", "name": "domain-modeling", "description": "Domain model: change a project's glossary and decisions. Use when resolving a term, writing or editing CONTEXT.md, or recording or editing an ADR.\n", "files": { "skills/domain-modeling/ADR-FORMAT.md": "0ac002b561af2da292997981549ff842c42f02a1a60cb4b02829168b5830cd40", "skills/domain-modeling/CONTEXT-FORMAT.md": "17ab16ce783e4d2801ee52fd9acdf550cbf44de65ae76797a93943bbedf22a13", "skills/domain-modeling/SKILL.md": "bc88fc8cc9b266c902371cb48735c905bd61ac4ccef3a444377d169f94bd2e96" } }, { "path": "skills/grill-me/SKILL.md", "name": "grill-me", "description": "Grill the user about a plan, decision or idea until you reach shared understanding. Use when the user says \"grill me\" or \"interview me\", or wants a plan stress-tested in conversation. NOT for: general Q&A, ideas with no plan yet, implemented code (use /code-review), or review without the user in the loop (use /aleph:red-team).\n", "files": { "skills/grill-me/SKILL.md": "da38c2ea65d2c78d12e2391792b0fb0971a4435eefa5bb9636564f8495cd007f" } }, { "path": "skills/grill-with-docs/SKILL.md", "name": "grill-with-docs", "description": "Grill a plan and write CONTEXT.md and ADRs as terms and decisions settle.\n", "files": { "skills/grill-with-docs/SKILL.md": "5d0e07e431c7b9fcea718ab4e5560e4fd0e89a65e17ebb37177b06ae65dae72e" } }, { "path": "skills/handoff/SKILL.md", "name": "handoff", "description": "Save a session handoff so a fresh context can resume the work. Use when the user asks for a handoff, or when context is about to be cleared mid-task.\n", "files": { "skills/handoff/SKILL.md": "58cffe7806a1b1e03b77b4eb3ea0a3e071211a147d82554a5d41402fcc4455ec" } }, { "path": "skills/humanizer/SKILL.md", "name": "humanizer", "description": "Rewrite AI-sounding text so it reads like the writer without changing what it says.\nUse when editing or reviewing prose for AI tells: not-X-but-Y contrasts, one-line\nclosers, staged openers, forced triads, dashes everywhere, inflated claims, sales\nlanguage, stock AI words, bold labels, or filler. Based on Wikipedia's \"Signs of AI writing.\"\n", "files": { "skills/humanizer/SKILL.md": "300e6b1ad4e546b2120b72b13667f64426f3266cf369b69bb8da6876f7f8f03d" } }, { "path": "skills/improve-codebase-architecture/SKILL.md", "name": "improve-codebase-architecture", "description": "Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.", "files": { "skills/improve-codebase-architecture/HTML-REPORT.md": "581e8bb5a521e46bbda8ca7e19b15948bed882187108092ebb90c62513b77528", "skills/improve-codebase-architecture/SKILL.md": "ce1b79bfe1054aa7eff4107d294d4d6f833443693b70d2171ce9cbe813f7efb9" } }, { "path": "skills/pickup/SKILL.md", "name": "pickup", "description": "Pick up a saved handoff in a fresh context. Use when the user asks to pick up or resume where they left off.\n", "files": { "skills/pickup/SKILL.md": "70cfb8ebf1837c1813cd59129b25325cae69ac7a2ea7a76bfc49e8a2256314ef" } }, { "path": "skills/prior-art/SKILL.md", "name": "prior-art", "description": "Prior art: survey the open-source projects that solve the same problem as a repo you own, and rank what to take or skip. Use when the user asks how their project compares to others, what else solves this, or what to steal from them. NOT for: market or pricing research; one repo with no anchor; stress-testing a plan (use /aleph:red-team).\n", "files": { "skills/prior-art/SKILL.md": "23742c5c21ace272b8efb13b53c158802e2bc9c22916aedcb02d7550a8b2c9e7" } }, { "path": "skills/red-team/SKILL.md", "name": "red-team", "description": "Red-team a plan, proposal, design doc or PR description: parallel subagents check it against the code and return a ranked list of flaws. Use when a plan needs stress-testing before commit, including your own. NOT for: interviewing the user (use /aleph:grill-me), implemented code (use /code-review), bugs (use /aleph:diagnosing-bugs).\n", "files": { "skills/red-team/SKILL.md": "ea9cbd2248e949af1c5fae2c1b5287fe1ec3db5045e1127a269da6fabf78aabf" } }, { "path": "skills/retro/SKILL.md", "name": "retro", "description": "Retrospective on a coding session: read its trace and transcript, propose fixes to the agent's environment (identity, skills, hooks, vault, tooling).", "files": { "skills/retro/SKILL.md": "cb41c2e3fcafed8c9ace2447c5de136b19448d418cb32a18960ee8387376128c" } }, { "path": "skills/tdd/SKILL.md", "name": "tdd", "description": "Test-driven development: red before green, one vertical slice at a time. Use when the user wants to build a feature or fix a bug test-first, or wants integration tests.\n", "files": { "skills/tdd/SKILL.md": "2429a772aaca05d0deb97b44f8ea0bbd4c910bf2c95e371b7dad2024f43764bc", "skills/tdd/mocking.md": "3ceb807fdf4a47d6a93d4d9a891e5ba6d362a6247bd08adc451feebfc17361ef", "skills/tdd/tests.md": "859f9e592c188fda4fc7277dd180e4ce9c7a2e13f6efe1f6f29eccc9d28c106a" } }, { "path": "skills/tidy/SKILL.md", "name": "tidy", "description": "Tidy a repo: sweep the junk, prove dead code and delete it behind a green build, and gate it as ready to show. Modes: `sweep` (mechanical pass only), `polish` (the inspection gate). Use when the user asks to clean up a repo, find dead or unused code, files or dependencies, fix stray or misplaced files, or get a repo ready to show or open-source. NOT for improving code that should exist (use /aleph:improve-codebase-architecture).\n", "files": { "skills/tidy/DETECTORS.md": "2b33d5307486197b19f7c7a5316c67ad3bb4aa6ed697b1ee988746e0aa6705ee", "skills/tidy/POLISH.md": "a3a06648f5901a7ef209b8fe1404f455d9cf113ddf6269b503aa6c053edef350", "skills/tidy/PROVE.md": "845f8a9b8260921526d880bb6d87111c5abe0236923c2e8a6934b0c69235dce3", "skills/tidy/SKILL.md": "39a9cd4d2c3d3069de4daaab2e96bb670cff84854870749c95ed10b6b199fb0c" } }, { "path": "skills/to-spec/SKILL.md", "name": "to-spec", "description": "Spec: turn the decisions already made in this conversation into a development spec file, typically after /aleph:grill-me. Use when the user asks to write the spec. NOT for: gathering requirements (use /aleph:grill-me) or breaking work into tickets.\n", "files": { "skills/to-spec/SKILL.md": "ab3c58168defae74e120c709da40e48fc6c32a1b4b767da959a5fe072336d335" } }, { "path": "skills/vault/SKILL.md", "name": "vault", "description": "Read and write the memory vault at ~/.aleph/vault. Use when the user asks to remember something or what we know about X; when you learn how something behaves, decide something or get corrected; or to run lint or compile.\n", "files": { "skills/vault/MAINTAIN.md": "14b255b9e0b11e53ba2740777c5fb1063a029abc7cfd7244a64215ca2fce383c", "skills/vault/SKILL.md": "09c67754186dabc604d4a0147ad5c9ec40486b166d87c0a39b8a6d7f9cedef7d" } }, { "path": "skills/writing-for-agents/SKILL.md", "name": "writing-for-agents", "description": "Writing for agents: skills, AGENTS.md or CLAUDE.md, and any doc an agent reaches by a pointer. Use when creating, editing or auditing one.\n", "files": { "skills/writing-for-agents/SKILL-MECHANICS.md": "47fc9a063c58e2359d224982b9040a0e4bd4c563d320ab86ffffd26fa643e974", "skills/writing-for-agents/SKILL.md": "7f4b9ba8168f46abee614e1e26127a7968f0150d86cbe60e8a06f9fe4a338c4e" } } ], "hooks": [ { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "SessionStart", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "SessionStart", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/vault-context.ts" ], "timeout": 10, "statusMessage": "vault" }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "UserPromptSubmit", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "UserPromptSubmit", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/verify-gate.ts" ], "timeout": 10, "statusMessage": "verify gate" }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PreToolUse", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PreToolUse", "matcher": "Edit|Write", "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/git-guard.ts" ], "timeout": 10, "statusMessage": "git-guard" }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PreToolUse", "matcher": "Bash", "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/secret-scan.ts" ], "timeout": 10, "statusMessage": "secret-scan" }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PostToolUse", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PostToolUseFailure", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PermissionDenied", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "Stop", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "timeout": 5 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "Stop", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/verify-gate.ts" ], "timeout": 45, "statusMessage": "verify gate" }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "Stop", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/context-gate.ts" ], "timeout": 10, "statusMessage": "context gate" }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "StopFailure", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "timeout": 5 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "SubagentStart", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "SubagentStop", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PreCompact", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "PostCompact", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "async": true, "timeout": 10 }, "executed": false }, { "path": "hooks/hooks.json", "sha256": "ff86cfc47f867b03bb33ecaf7e5278c412831b43e43b431243551e608d501ba6", "event": "SessionEnd", "matcher": null, "declaration": { "type": "command", "command": "bun", "args": [ "${CLAUDE_PLUGIN_ROOT}/hooks/obs.ts" ], "timeout": 5 }, "executed": false } ], "executions": [] } }