/plugin marketplace add jwilger/claude-code-setup/plugin install jwilger-sdlc-sdlc-2@jwilger/claude-code-setupDefined in hooks/hooks.json
{
"Stop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "MEMORY PROTOCOL CHECKPOINT: Before finishing, briefly consider:\n\n- Did you discover anything worth remembering?\n- Any patterns, debugging insights, or project conventions?\n- Solutions found through trial and error?\n- Current state of any in-progress work?\n\nIf so, store them in memento now.\n\nAlso: If there's uncommitted work, remind the user about their options (commit, stash, or discard per SDLC workflow)."
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "prompt",
"prompt": "MEMORY PROTOCOL CHECKPOINT: The conversation is about to be compacted.\n\nBefore proceeding, review this session for:\n- Discoveries, patterns, debugging insights\n- Project-specific knowledge and conventions\n- Solutions found through trial and error\n- Architectural decisions or constraints\n\nIf there are unsaved memories, store them NOW using:\n- mcp__memento__create_entities\n- mcp__memento__create_relations\n\nDon't let knowledge be lost to context truncation.\n\nAlso check: Is there work in progress on a GitHub issue? Note the current state so we can resume properly."
}
]
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "prompt",
"prompt": "TDD ENFORCEMENT CHECKPOINT\n\nYou are about to edit a file. Evaluate the file path and respond with a JSON decision.\n\nFILE CATEGORIES:\n\n1. BYPASS FILES (approve immediately):\n - *.md, *.yaml, *.yml, *.json, *.toml\n - .github/*, .claude/*, docs/*\n - Cargo.toml, package.json, pyproject.toml\n - Any config/documentation file\n\n2. TEST FILES (block - use sdlc-red agent):\n - *_test.rs, *.test.ts, *.test.js, test_*.py, *_spec.rb\n - Files in: tests/, __tests__/, spec/, test/\n\n3. PRODUCTION CODE (block - use sdlc-green agent):\n - Files in: src/, lib/, app/\n - *.rs, *.ts, *.js, *.py, *.rb, *.go, *.ex (not in test dirs)\n\n4. TYPE DEFINITIONS (block - use sdlc-domain agent):\n - New struct/enum/trait/interface definitions\n - Type signature files\n\nRESPOND WITH EXACTLY THIS JSON FORMAT:\n\n{\"decision\": \"approve\", \"reason\": \"Bypass file: <explanation>\"}\n\nOR\n\n{\"decision\": \"block\", \"reason\": \"<file type>: Use <agent-name> agent instead\"}\n\nEXAMPLES:\n- README.md → {\"decision\": \"approve\", \"reason\": \"Bypass file: documentation\"}\n- src/lib.rs → {\"decision\": \"block\", \"reason\": \"Production code: Use sdlc-green agent instead\"}\n- tests/foo_test.rs → {\"decision\": \"block\", \"reason\": \"Test file: Use sdlc-red agent instead\"}"
}
],
"matcher": "Edit"
},
{
"hooks": [
{
"type": "prompt",
"prompt": "TDD ENFORCEMENT CHECKPOINT\n\nYou are about to write a new file. Evaluate the file path and respond with a JSON decision.\n\nFILE CATEGORIES:\n\n1. BYPASS FILES (approve immediately):\n - *.md, *.yaml, *.yml, *.json, *.toml\n - .github/*, .claude/*, docs/*\n - Config and documentation files\n\n2. TEST FILES (block - use sdlc-red agent):\n - *_test.rs, *.test.ts, test_*.py, *_spec.rb\n - Files in: tests/, __tests__/, spec/, test/\n\n3. PRODUCTION CODE (block - use sdlc-green or sdlc-domain agent):\n - Files in: src/, lib/, app/\n - Source code files\n\nRESPOND WITH EXACTLY THIS JSON FORMAT:\n\n{\"decision\": \"approve\", \"reason\": \"Bypass file: <explanation>\"}\n\nOR\n\n{\"decision\": \"block\", \"reason\": \"<file type>: Use <agent-name> agent instead\"}"
}
],
"matcher": "Write"
}
]
}{
"riskFlags": {
"touchesBash": false,
"matchAllTools": false,
"touchesFileWrites": true
},
"typeStats": {
"prompt": 4
},
"eventStats": {
"Stop": 1,
"PreCompact": 1,
"PreToolUse": 2
},
"originCounts": {
"absolutePaths": 0,
"pluginScripts": 0,
"projectScripts": 0
},
"timeoutStats": {
"commandsWithoutTimeout": 0
}
}