Consolidates three codebases into a single agent orchestration repo: - agentci (from go-scm): Clotho dual-run verification, agent config, SSH security (sanitisation, secure commands, token masking) - jobrunner (from go-scm): Poll-dispatch-report pipeline with 7 handlers (dispatch, completion, auto-merge, publish draft, dismiss reviews, send fix command, tick parent epic) - plugins marketplace (from agentic/plugins): 27 Claude/Codex/Gemini plugins with shared MCP server All 150+ tests passing across 6 packages. Co-Authored-By: Virgil <virgil@lethean.io>
2.1 KiB
2.1 KiB
Hook Output Policy
Consistent policy for what hook output to expose to Claude vs hide.
Principles
Always Expose
| Category | Example | Reason |
|---|---|---|
| Test failures | FAIL: TestFoo |
Must be fixed |
| Build errors | cannot find package |
Blocks progress |
| Lint errors | undefined: foo |
Code quality |
| Security alerts | HIGH vulnerability |
Critical |
| Type errors | type mismatch |
Must be fixed |
| Debug statements | dd() found |
Must be removed |
| Uncommitted work | 3 files unstaged |
Might get lost |
| Coverage drops | 84% → 79% |
Quality regression |
Always Hide
| Category | Example | Reason |
|---|---|---|
| Pass confirmations | PASS: TestFoo |
No action needed |
| Format success | Formatted 3 files |
No action needed |
| Coverage stable | 84% (unchanged) |
No action needed |
| Timing info | (12.3s) |
Noise |
| Progress bars | [=====> ] |
Noise |
Conditional
| Category | Show When | Hide When |
|---|---|---|
| Warnings | First occurrence | Repeated |
| Suggestions | Actionable | Informational |
| Diffs | Small (<10 lines) | Large |
| Stack traces | Unique error | Repeated |
Implementation
Use output-policy.sh helper functions:
source "$SCRIPT_DIR/output-policy.sh"
# Expose failures
expose_error "Build failed" "$error_details"
expose_warning "Debug statements found" "$locations"
# Hide success
hide_success
# Pass through unchanged
pass_through "$input"
Hook-Specific Policies
| Hook | Expose | Hide |
|---|---|---|
check-debug.sh |
Debug statements found | Clean file |
post-commit-check.sh |
Uncommitted work | Clean working tree |
check-coverage.sh |
Coverage dropped | Coverage stable/improved |
go-format.sh |
(never) | Always silent |
php-format.sh |
(never) | Always silent |
Aggregation
When multiple issues, aggregate intelligently:
Instead of:
- FAIL: TestA
- FAIL: TestB
- FAIL: TestC
- (47 more)
Show:
"50 tests failed. Top failures:
- TestA: nil pointer
- TestB: timeout
- TestC: assertion failed"