II.
Page JSON
Structured · livepage:docs-agent-stack-hooks-coverage-matrix
Hook Event Coverage Matrix json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:docs-agent-stack-hooks-coverage-matrix",
"_kind": "Page",
"_file": "wiki/docs/agent-stack/hooks/coverage-matrix.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"sourcePath": "docs/agent-stack/hooks/coverage-matrix.md",
"sourceKind": "repo-docs",
"title": "Hook Event Coverage Matrix",
"displayName": "Hook Event Coverage Matrix",
"slug": "docs/agent-stack/hooks/coverage-matrix",
"articlePath": "wiki/docs/agent-stack/hooks/coverage-matrix.md",
"article": "\n# Hook Event Coverage Matrix\n\n30 Claude Code hook events vs. implementation status across the agent stack.\n\n## Legend\n- **atlas**: Event defined in atlas graph schema\n- **hooks-adapter**: Canonical phase exists in hooks-adapter core\n- **adapters runtime**: Native runtime hook registration/dispatch exists\n- **SDK**: SDK-emitted harness hook exists where SDK owns the source\n- **agent-core**: Session event type exists\n\n## Full Matrix\n\n| # | Event | Canonical Phase | atlas | hooks-adapter | adapters runtime | SDK | Status |\n|---|-------|----------------|-------|-----------|---------------|-----|--------|\n| 1 | SessionStart | session.start | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 2 | Setup | session.setup | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 3 | SessionEnd | session.end | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 4 | UserPromptSubmit | turn.user_prompt_submitted | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 5 | UserPromptExpansion | turn.prompt_expansion | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 6 | Stop | turn.stop | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 7 | StopFailure | turn.stop_failure | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 8 | PreToolUse | tool.before | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 9 | PermissionRequest | tool.permission_request | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 10 | PermissionDenied | tool.permission_denied | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 11 | PostToolUse | tool.after | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 12 | PostToolUseFailure | tool.after_failure | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 13 | PostToolBatch | tool.after_batch | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 14 | SubagentStart | subagent.start | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 15 | SubagentStop | subagent.end | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 16 | TaskCreated | task.created | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 17 | TaskCompleted | task.completed | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 18 | TeammateIdle | team.idle | ✅ | ✅ | ❌ | ❌ | **BLOCKED** |\n| 19 | FileChanged | session.file_changed | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 20 | CwdChanged | session.cwd_changed | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 21 | ConfigChange | session.config_changed | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 22 | InstructionsLoaded | session.instructions_loaded | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 23 | PreCompact | session.compact.before | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 24 | PostCompact | session.compact.after | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 25 | Elicitation | mcp.elicitation | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 26 | ElicitationResult | mcp.elicitation_result | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 27 | WorktreeCreate | session.worktree_create | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 28 | WorktreeRemove | session.worktree_remove | ✅ | ✅ | ✅ | ✅ | **DONE** |\n| 29 | MessageDisplay | message.received | ✅ | ✅ | ✅ | ❌ | **PARTIAL** |\n| 30 | Notification | notification | ✅ | ✅ | ✅ | ✅ | **DONE** |\n\n## Summary\n\n| Status | Count | Percentage |\n|--------|-------|-----------|\n| DONE | 21 | 70% |\n| PARTIAL | 8 | 27% |\n| BLOCKED | 1 | 3% |\n| atlas covered | 30 | 100% |\n\n`PARTIAL` means hooks-adapter and the native adapters runtime bridge can represent/dispatch the event, but a separate SDK-owned emission point is still absent or only applies where a concrete runtime source exists. `BLOCKED` means the canonical contract exists, but the stack does not yet have a real lifecycle boundary to emit the event.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "page:docs-agent-stack-hooks",
"to": "page:docs-agent-stack-hooks-coverage-matrix",
"kind": "contains_page"
}
]
}