From 1a58b1a62c84c21c99c8e257a6f32a26ed09f0dd Mon Sep 17 00:00:00 2001 From: Tym Rabchuk Date: Sat, 4 Apr 2026 22:57:15 -0400 Subject: [PATCH 1/2] Clean up roadmap: retire 6 speculative items already solved by existing infrastructure All remaining roadmap items were either already addressed by existing code (stop hook early-exit, budget enforcement, SQLite step tracking, YAML workflows as presets) or too speculative to justify complexity (framework checklists, conditional hook firing). Documented rationale in a Retired section. --- README.md | 8 ++----- ROADMAP.md | 63 +++++++++++++++++------------------------------------- 2 files changed, 22 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index f3e7ad3..b132164 100644 --- a/README.md +++ b/README.md @@ -531,9 +531,5 @@ See [ROADMAP.md](ROADMAP.md) for full details. - [x] Go code quality hooks — error-path access, nil-return, race detection, portability - [x] **Language-universal hooks** — consolidated Go-specific hooks into `lang-review.sh` with Go, TypeScript, Rust, Python, and Shell support - [x] **Hook consolidation** — merged 14 hooks into 9, reduced per-edit shell processes from 7 to 4. Consolidated stop hooks (dirty-bit + go-vet-stop + old stop-gate) into single `stop-gate.sh` -- [ ] Stop hook redesign — opt-in or session-end only, not every turn -- [ ] Cost event hooks — budget threshold events with auto-downgrade actions -- [ ] Execution registry — centralized step tracking with timing and token usage -- [ ] Preset library — curated prompt templates for common review/improvement scenarios -- [ ] Framework-specific review checklists — React, Django, Go, Rust patterns -- [ ] Conditional hook firing — gitBranch, fileExists, envSet conditions + +All planned items complete. See [ROADMAP.md](ROADMAP.md) for retired items and rationale. diff --git a/ROADMAP.md b/ROADMAP.md index e266de8..dc8f2b3 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -5,7 +5,7 @@ - **20 slash commands** — Lifecycle workflows, self-improvement loops, multi-agent dispatch, project health audit, post-PR monitoring, AST repo mapping - **14 context-activated skills** — 6 auto-trigger workflows (test-gen, doc-gen, changelog, onboard, research, scrape) + 6 coding principles (executing, clean-code, DRY, YAGNI, dont-reinvent, stuck) + 2 tools (gcli, creating-workflows) - **6 agents** — Scoped tool access, worktree isolation, model assignment -- **8 hooks** — Safety (destructive command blocking, edit-time security patterns, PR gate), observability (audit trail, slop detection, post-validation, subagent verification), optimization (RTK token compression) +- **9 hooks** — Safety (destructive command blocking, edit-time security patterns, PR gate), observability (audit trail, slop detection, post-validation, subagent verification, language-aware code review), optimization (RTK token compression) - **Graceful degradation** — tri:* commands work with 1-3 agents depending on installed CLIs - **Goal decomposition** — Task DAG with dependency ordering and parallel execution - **Concurrency limits** — Max 3 parallel agents in multi-agent commands @@ -18,45 +18,22 @@ - **Hypothesis-driven perf** — Evidence gathering, ranked hypotheses, one-at-a-time testing replaces blind benchmark loops - **Post-PR monitoring** — CI watching + iterative reviewer comment resolution - **AST repo mapping** — Symbol index with dependency graph, cached for agent navigation - -## Future - -### Stop Hook Redesign -The Stop hook fires on every turn, not just session end. Redesign to fire only on explicit session end or make it opt-in via a command flag. - -**When:** Next release. This is a usability blocker. - -### Framework-Specific Review Checklists -React hooks rules, Django ORM patterns, Go concurrency, Rust safety — 20-50 patterns per framework loaded dynamically based on detected tech stack. - -**When:** When tri-review needs to produce more actionable, framework-aware findings. - -### Conditional Hook Firing -Hooks that only fire on certain git branches, when files exist, or env vars are set. Similar to skill-bus's condition system but built into devkit's hook stack. - -**When:** When users need project-specific hook behavior without modifying global hooks. - -### Task DAG Scheduler (Runtime) -Replace markdown-described DAGs with a runtime scheduler that topologically sorts and auto-parallelizes. Currently decompose describes the pattern; a Go/TS harness would execute it deterministically. - -**When:** When workflows regularly exceed 10+ steps with complex interdependencies. - -### Shared Context Injection -Automatically inject upstream agent outputs into downstream agent prompts. Currently done manually in command descriptions; could be automated. - -**When:** When tri:* and decompose commands need richer inter-agent communication. - -### Cost Event Hooks -Budget threshold events (warning at 80%, critical at 90%, exceeded at 100%) with auto-downgrade actions. Currently budget is guidance only. - -**When:** When users need hard budget enforcement, not just guidance. - -### Execution Registry -Centralized tracking of step state (pending/running/done/failed/skipped) with timing and token usage per step. Currently tracked in temp files during execution. - -**When:** When workflow observability needs to improve beyond log files. - -### Preset Library -Curated prompt templates for common review/improvement scenarios (Python security, Go performance, React optimization, etc.). - -**When:** When the community identifies common patterns worth standardizing. +- **Generic YAML workflow engine** — Deterministic step execution, branching, loops, parallel dispatch, budget enforcement in compiled Go +- **Triage-based phase skipping** — TINY/SMALL/MEDIUM/LARGE classification with fast paths +- **Iteration scratchpads** — Persistent memory across loop iterations to prevent repeated failures +- **Cross-domain dirty-bit enforcement** — Blocks completion without test evidence per domain +- **Language-universal hooks** — Consolidated language-specific hooks into `lang-review.sh` with Go, TypeScript, Rust, Python, and Shell support +- **Hook consolidation** — Merged 14 hooks into 9, reduced per-edit shell processes from 7 to 4 + +## Retired + +Items below were on the roadmap but determined to be unnecessary — either already solved by existing infrastructure or too speculative to justify the complexity. + +| Item | Why removed | +|------|-------------| +| Stop hook redesign | Already solved — stop-gate.sh exits early with `approve` when no files are changed, making it near-instant on clean trees | +| Cost event hooks | Budget enforcement already exists in the Go engine via `overBudget()` + `addCost()` callbacks with hard limits | +| Execution registry | Step tracking already handled by SQLite via `lib.DB` with status, cost, and timing per step | +| Preset library | The 12 YAML workflows and 14 skills already serve this purpose | +| Framework-specific review checklists | `lang-review.sh` covers language-level patterns; framework-specific rules are better added per-project via hookify | +| Conditional hook firing | Hooks already self-filter internally (extension checks, changed-file checks); a generic condition system adds complexity for no current need | From 43ea75aedc48ba077c5c28e92c5cb530f757a9e9 Mon Sep 17 00:00:00 2001 From: Tym Rabchuk Date: Sat, 4 Apr 2026 23:25:47 -0400 Subject: [PATCH 2/2] Fix hook count (10 not 9), skill count (15 not 14), stop hook rationale Caught by PR review agents: hooks.json registers 10 distinct scripts, skills/ has 15 entries (scratchpad added recently), and stop hook retirement rationale was misleading about the firing-every-turn concern. --- README.md | 6 +++--- ROADMAP.md | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b132164..c8a7607 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ For brainstorming, planning, TDD, verification, and skill authoring — install ## Hooks -Devkit ships 9 hooks across 4 lifecycle events. All are installed automatically with the plugin — no setup required. +Devkit ships 10 hooks across 4 lifecycle events. All are installed automatically with the plugin — no setup required. ### PreToolUse @@ -344,7 +344,7 @@ devkit/ │ ├── test-writer.md # Sonnet, worktree isolation │ ├── documenter.md # Haiku, worktree isolation │ └── security-auditor.md # Opus, worktree isolation -├── hooks/ # 9 hooks across 4 lifecycle events +├── hooks/ # 10 hooks across 4 lifecycle events │ ├── hooks.json # Hook config (auto-loaded) │ ├── safety-check.sh # Dangerous operation blocker │ ├── security-patterns.sh # Edit-time vulnerability detection @@ -530,6 +530,6 @@ See [ROADMAP.md](ROADMAP.md) for full details. - [x] Cross-domain dirty-bit enforcement — blocks completion without test evidence per domain - [x] Go code quality hooks — error-path access, nil-return, race detection, portability - [x] **Language-universal hooks** — consolidated Go-specific hooks into `lang-review.sh` with Go, TypeScript, Rust, Python, and Shell support -- [x] **Hook consolidation** — merged 14 hooks into 9, reduced per-edit shell processes from 7 to 4. Consolidated stop hooks (dirty-bit + go-vet-stop + old stop-gate) into single `stop-gate.sh` +- [x] **Hook consolidation** — merged 14 hooks into 10, reduced per-edit shell processes from 7 to 4. Consolidated stop hooks (dirty-bit + go-vet-stop + old stop-gate) into single `stop-gate.sh` All planned items complete. See [ROADMAP.md](ROADMAP.md) for retired items and rationale. diff --git a/ROADMAP.md b/ROADMAP.md index dc8f2b3..c2d0036 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -3,9 +3,9 @@ ## Implemented - **20 slash commands** — Lifecycle workflows, self-improvement loops, multi-agent dispatch, project health audit, post-PR monitoring, AST repo mapping -- **14 context-activated skills** — 6 auto-trigger workflows (test-gen, doc-gen, changelog, onboard, research, scrape) + 6 coding principles (executing, clean-code, DRY, YAGNI, dont-reinvent, stuck) + 2 tools (gcli, creating-workflows) +- **15 context-activated skills** — 6 auto-trigger workflows (test-gen, doc-gen, changelog, onboard, research, scrape) + 6 coding principles (executing, clean-code, DRY, YAGNI, dont-reinvent, stuck) + 2 tools (gcli, creating-workflows) + 1 iteration memory (scratchpad) - **6 agents** — Scoped tool access, worktree isolation, model assignment -- **9 hooks** — Safety (destructive command blocking, edit-time security patterns, PR gate), observability (audit trail, slop detection, post-validation, subagent verification, language-aware code review), optimization (RTK token compression) +- **10 hooks** — Safety (destructive command blocking, edit-time security patterns, PR gate), observability (audit trail, slop detection, post-validation, subagent verification, language-aware code review), optimization (RTK token compression) - **Graceful degradation** — tri:* commands work with 1-3 agents depending on installed CLIs - **Goal decomposition** — Task DAG with dependency ordering and parallel execution - **Concurrency limits** — Max 3 parallel agents in multi-agent commands @@ -31,9 +31,9 @@ Items below were on the roadmap but determined to be unnecessary — either alre | Item | Why removed | |------|-------------| -| Stop hook redesign | Already solved — stop-gate.sh exits early with `approve` when no files are changed, making it near-instant on clean trees | +| Stop hook redesign | Still fires every turn, but exits early with `approve` when no files are changed — near-instant on clean trees, so the performance concern is moot. Revisit only if it causes measurable latency. | | Cost event hooks | Budget enforcement already exists in the Go engine via `overBudget()` + `addCost()` callbacks with hard limits | | Execution registry | Step tracking already handled by SQLite via `lib.DB` with status, cost, and timing per step | -| Preset library | The 12 YAML workflows and 14 skills already serve this purpose | +| Preset library | The 12 YAML workflows and 15 skills already serve this purpose | | Framework-specific review checklists | `lang-review.sh` covers language-level patterns; framework-specific rules are better added per-project via hookify | | Conditional hook firing | Hooks already self-filter internally (extension checks, changed-file checks); a generic condition system adds complexity for no current need |