question-log-hook.ts
PostToolUse hook that logs each AskUserQuestion question and the user's choice, so question prompts can be tuned.
- Kind
- Hook
- Works with
- Claude Code
- Languages
- TypeScript / JavaScript
- Source
- garrytan/gstack @ 01593aa67c94
- Path
- hosts/claude/hooks/question-log-hook.ts
- License
- MIT
- Jobs
- Automation
InstallCopy it from the source repository, or sign in and let the assistant adapt it for your project.
#!/usr/bin/env bun
/**
* PostToolUse hook for AskUserQuestion (Claude Code, plan-tune cathedral T5).
*
* Reads hook stdin JSON, extracts every AUQ question + user choice from the
* tool_input/tool_response, and writes them via gstack-question-log so the
* substrate captures fires deterministically — no agent compliance required.
*
* Triggered by ~/.claude/settings.json:
* {
* "hooks": {
* "PostToolUse": [
* {
* "matcher": "(AskUserQuestion|mcp__.*__AskUserQuestion)",
* "hooks": [
* { "type": "command",
* "command": "$CLAUDE_PROJECT_DIR/.claude/skills/gstack/hosts/claude/hooks/question-log-hook",
* "timeout": 5 }
* ]
* }
* ]
* }
* }
*
* Invariants:
* - Always exits 0. A failing hook MUST NOT block the user's session.
* Errors land in ~/.gstack/hook-errors.log for postmortem.
* - Spawns gstack-question-log as a subprocess; that bin handles
* validation, dedup (source+tool_use_id), async derive.
* - Marker-first question_id (`<gstack-qid:foo-bar>`), hash fallback
* (D18 progressive markers).
*
…