codeforge-dev 1.8.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/.devcontainer/.env +3 -0
  2. package/.devcontainer/CHANGELOG.md +107 -0
  3. package/.devcontainer/CLAUDE.md +30 -9
  4. package/.devcontainer/README.md +61 -2
  5. package/.devcontainer/config/defaults/main-system-prompt.md +162 -128
  6. package/.devcontainer/config/defaults/rules/spec-workflow.md +75 -0
  7. package/.devcontainer/config/defaults/rules/workspace-scope.md +7 -0
  8. package/.devcontainer/config/defaults/settings.json +63 -66
  9. package/.devcontainer/config/file-manifest.json +30 -18
  10. package/.devcontainer/connect-external-terminal.sh +17 -17
  11. package/.devcontainer/devcontainer.json +143 -144
  12. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +104 -97
  13. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/.claude-plugin/plugin.json +7 -0
  14. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +158 -0
  15. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +39 -0
  16. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/collect-edited-files.py +47 -0
  17. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/format-on-stop.py +297 -0
  18. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/lint-file.py +536 -0
  19. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/syntax-validator.py +146 -0
  20. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/architect.md +81 -4
  21. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +18 -0
  22. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +18 -0
  23. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +89 -4
  24. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +18 -0
  25. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +142 -8
  26. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/git-archaeologist.md +18 -0
  27. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +108 -1
  28. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/perf-profiler.md +24 -0
  29. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +97 -1
  30. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/researcher.md +33 -1
  31. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/security-auditor.md +24 -0
  32. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +50 -12
  33. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +96 -1
  34. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +100 -95
  35. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/advisory-test-runner.py +186 -13
  36. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/spec-reminder.py +122 -0
  37. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/SKILL.md +1 -1
  38. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-check/SKILL.md +98 -0
  39. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/SKILL.md +99 -0
  40. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/backlog-template.md +23 -0
  41. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/roadmap-template.md +33 -0
  42. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/SKILL.md +110 -0
  43. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/references/template.md +129 -0
  44. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-refine/SKILL.md +194 -0
  45. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-update/SKILL.md +142 -0
  46. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +19 -12
  47. package/.devcontainer/scripts/check-setup.sh +24 -25
  48. package/.devcontainer/scripts/setup-aliases.sh +88 -76
  49. package/.devcontainer/scripts/setup-config.sh +86 -83
  50. package/.devcontainer/scripts/setup-projects.sh +172 -131
  51. package/.devcontainer/scripts/setup-terminal.sh +48 -0
  52. package/.devcontainer/scripts/setup-update-claude.sh +49 -107
  53. package/.devcontainer/scripts/setup.sh +4 -17
  54. package/README.md +2 -2
  55. package/package.json +42 -42
@@ -20,5 +20,8 @@ SETUP_PLUGINS=true
20
20
  # Setup: auto-update Claude Code CLI to latest on container start (runs in background)
21
21
  SETUP_UPDATE_CLAUDE=true
22
22
 
23
+ # Setup: configure VS Code Shift+Enter keybinding for Claude Code terminal
24
+ SETUP_TERMINAL=true
25
+
23
26
  # Plugin blacklist (comma-separated plugin names to skip during auto-install)
24
27
  PLUGIN_BLACKLIST=""
@@ -1,5 +1,112 @@
1
1
  # CodeForge Devcontainer Changelog
2
2
 
3
+ ## [v1.10.0] - 2026-02-13
4
+
5
+ ### Added
6
+
7
+ #### New Skill: spec-refine (code-directive plugin — 26 skills total)
8
+ - **`/spec-refine`** — iterative 6-phase spec refinement: assumption mining, requirement validation (`[assumed]` → `[user-approved]`), acceptance criteria review, scope audit, and final approval gate
9
+
10
+ #### setup-terminal.sh
11
+ - New setup script configures VS Code Shift+Enter keybinding for Claude Code multi-line terminal input (idempotent, merges into existing keybindings.json)
12
+
13
+ ### Changed
14
+
15
+ #### Native Binary Preference
16
+ - **setup-aliases.sh** — introduces `_CLAUDE_BIN` variable resolution: prefers `~/.local/bin/claude` (official `claude install` location), falls back to `/usr/local/bin/claude`, then PATH. All aliases (`cc`, `claude`, `ccraw`) use `"$_CLAUDE_BIN"`
17
+ - **setup-update-claude.sh** — complete rewrite: delegates to `claude install` (first run) and `claude update` (subsequent starts) instead of manual binary download/checksum/swap. Logs to `/tmp/claude-update.log`
18
+
19
+ #### Smart Test Selection
20
+ - **advisory-test-runner.py** — rewritten to run only affected tests based on edited files. Maps source files to test files (pytest directory mirroring, vitest `--related`, jest `--findRelatedTests`, Go package mapping). Timeout reduced from 60s to 15s. Skips entirely if no files edited
21
+ - **hooks.json** — advisory-test-runner timeout reduced from 65s to 20s
22
+
23
+ #### Two-Level Project Detection
24
+ - **setup-projects.sh** — two-pass scanning: depth-1 directories with project markers registered directly; directories without markers treated as containers and children scanned. Recursive inotifywait with noise exclusion. Clean process group shutdown
25
+
26
+ #### Spec Approval Workflow
27
+ - **spec-writer agent** — adds `**Approval:** draft` field, requires `[assumed]` tagging on all requirements, adds `## Resolved Questions` section, references `/spec-refine` before implementation
28
+ - **spec-new skill** — pre-fills `**Approval:** draft`, notes features should come from backlog
29
+ - **spec-check skill** — adds Unapproved (high) and Assumed Requirements (medium) issue checks, Approval column in health table, approval summary
30
+ - **spec-update skill** — minor alignment with approval workflow
31
+ - **spec-init templates** — backlog template expanded with P0–P3 priority grades + Infrastructure section; roadmap template rewritten with pull-from-backlog workflow
32
+ - **specification-writing skill** — updated with approval field and requirement tagging guidance
33
+
34
+ #### Spec Workflow Completeness
35
+ - **spec-workflow.md (global rule)** — softened 200-line hard cap to "aim for ~200"; added approval workflow rules (spec-refine gate, requirement tags, spec-reminder hook); added `**Approval:**` and `## Resolved Questions` to standard template
36
+ - **main-system-prompt.md** — softened 4× hard "≤200 lines" references to "~200 lines"
37
+ - **spec-new skill** — fixed "capped at 200" internal contradiction; added explanation of what `/spec-refine` does and why
38
+ - **spec-new template** — added Approval Workflow section explaining `[assumed]`/`[user-approved]` tags and `draft`/`user-approved` status
39
+ - **spec-update skill** — added approval gate warning for draft specs; added spec-reminder hook documentation; added approval validation to checklist
40
+ - **spec-check skill** — added `implemented + draft` (High) and `inconsistent approval` (High) checks
41
+ - **spec-init skill** — expanded next-steps with full lifecycle (backlog → roadmap → spec → refine → implement → update → check)
42
+ - **spec-reminder.py** — added `/spec-refine` mention in advisory message for draft specs
43
+
44
+ #### Documentation Sizing
45
+ - **Relaxed 200-line hard cap** to "aim for ~200 lines" across global rule, system prompt, spec-new skill, architect agent, doc-writer agent, documentation-patterns skill, and spec-check skill
46
+
47
+ #### Other
48
+ - **setup.sh** — added `SETUP_TERMINAL` flag, normalized update-claude invocation via `run_script` helper
49
+ - **check-setup.sh** — removed checks for disabled features (shfmt, shellcheck, hadolint, dprint); checks RC files for alias instead of `type cc`
50
+ - **connect-external-terminal.sh** — uses `${WORKSPACE_ROOT:-/workspaces}` instead of hardcoded path
51
+ - **devcontainer.json** — formatting normalization
52
+ - **main-system-prompt.md** — updates for spec approval workflow and requirement tagging
53
+
54
+ ### Removed
55
+ - **test-project/README.md** — deleted (no longer needed)
56
+
57
+ ---
58
+
59
+ ## [v1.9.0] - 2026-02-10
60
+
61
+ ### Added
62
+
63
+ #### Agent Context Inheritance (code-directive plugin)
64
+ - **Project Context Discovery** — all 14 project-interacting agents now read `.claude/rules/*.md` and CLAUDE.md files before starting work. Agents walk up the directory tree from their working directory to the workspace root, applying conventions from each level (deeper files take precedence)
65
+ - **Execution Discipline** — 7 agents (generalist, refactorer, migrator, test-writer, doc-writer, architect, researcher) gain structured pre/post-work verification: read before writing, verify after writing, no silent deviations, failure diagnosis before retry
66
+ - **Code Standards** — 5 agents (generalist full; refactorer, migrator, test-writer, architect compact) gain SOLID, DRY/KISS/YAGNI, function size limits, error handling rules, and forbidden patterns (god classes, magic numbers, dead code)
67
+ - **Professional Objectivity** — 10 agents gain explicit instruction to prioritize technical accuracy over agreement, present evidence when it conflicts with assumptions
68
+ - **Communication Standards** — all 14 agents gain response brevity rules: substance-first responses, no preamble, explicit uncertainty marking, file:line references
69
+ - **Documentation Convention** — 2 write agents (generalist, migrator) gain inline comment guidance (explain "why", not "what")
70
+ - **Context Management** — generalist gains instruction to continue working normally when context runs low
71
+ - **Testing Guidance** — generalist gains testing standards (verify behavior not implementation, max 3 mocks per test)
72
+ - **Scope Discipline** — refactorer gains explicit constraint: never expand scope beyond the requested refactoring
73
+ - **Tiered approach**: Tier 1 (generalist, 139→268 lines, all blocks), Tier 2 (4 write agents, full blocks), Tier 3 (9 read-only agents, compact blocks). 3 agents skipped (bash-exec, claude-guide, statusline-config — no project context needed)
74
+
75
+ #### Specification Workflow System (code-directive plugin — 4 new skills, 25 total)
76
+ - **`/spec-new`** — creates a new spec from the standard template in `.specs/`
77
+ - **`/spec-update`** — performs as-built spec update after implementation (checks off criteria, adds implementation notes, updates paths)
78
+ - **`/spec-check`** — audits spec health: stale specs, missing coverage, orphaned files
79
+ - **`/spec-init`** — bootstraps `.specs/` directory structure for projects that don't have one
80
+ - **`spec-reminder.py`** `[Stop]` — new advisory hook reminds about spec updates when implementation work is detected
81
+ - **Spec skills assigned to agents** — generalist and spec-writer agents gain spec skill access in frontmatter
82
+
83
+ #### Default Rules Distribution
84
+ - **`config/defaults/rules/`** — new directory containing default `.claude/rules/` files distributed to all projects via file-manifest
85
+ - **`spec-workflow.md`** — rule enforcing spec-before-implementation workflow, ≤200 line spec limit, `.specs/` directory convention, as-built update requirement
86
+ - **`workspace-scope.md`** — rule restricting file operations to the current project directory
87
+
88
+ #### New Plugin: auto-code-quality
89
+ - **Self-contained code quality plugin** — combines auto-formatter + auto-linter into a single drop-in plugin with independent temp file namespace (`claude-cq-*`). Includes all 7 formatters (Ruff, Biome, gofmt, shfmt, dprint, rustfmt, Black fallback) and 7 linters (Pyright, Ruff, Biome, ShellCheck, go vet, hadolint, clippy) plus syntax validation. Designed for use outside the CodeForge devcontainer where auto-formatter and auto-linter aren't available separately
90
+
91
+ ### Changed
92
+
93
+ #### Config System
94
+ - **`file-manifest.json`** — added 2 new entries for default rules files (`defaults/rules/spec-workflow.md`, `defaults/rules/workspace-scope.md`) targeting `${CLAUDE_CONFIG_DIR}/rules`
95
+ - **`setup-config.sh` bug fix** — fixed bash field-collapse bug where empty `destFilename` caused subsequent fields to shift. Uses `__NONE__` sentinel in jq output to prevent `read` from collapsing consecutive tab delimiters
96
+
97
+ #### Plugin References
98
+ - **`frontend-design` plugin name corrected** — fixed `frontend-design@claude-code-plugins` → `frontend-design@claude-plugins-official` in both `settings.json` and `CLAUDE.md`
99
+
100
+ #### Code-Directive Plugin
101
+ - **`hooks.json`** — added `spec-reminder.py` to Stop hooks (now 3 Stop hooks: advisory-test-runner, commit-reminder, spec-reminder)
102
+ - **`marketplace.json`** — added `auto-code-quality` plugin entry (10 plugins total, was 9)
103
+ - **Agent definitions** — 14 of 17 agents updated with orchestrator-mirrored instructions (see Agent Context Inheritance above)
104
+
105
+ #### Formatting
106
+ - **Whitespace normalization** — `settings.json`, `file-manifest.json`, `marketplace.json`, `hooks.json`, `package.json`, `setup-config.sh` reformatted to consistent tab indentation
107
+
108
+ ---
109
+
3
110
  ## [v1.8.0] - 2026-02-09
4
111
 
5
112
  ### Added
@@ -44,10 +44,12 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
44
44
 
45
45
  | Command | Purpose |
46
46
  |---------|---------|
47
- | `claude` | Run Claude Code with auto-configuration (creates local `.claude/` if needed) |
47
+ | `claude` | Run Claude Code with auto-configuration (prefers native binary at `~/.local/bin/claude`) |
48
48
  | `cc` | Shorthand for `claude` with config |
49
49
  | `ccraw` | Vanilla Claude Code without any config (bypasses function override) |
50
50
  | `ccusage` | Analyze token usage history |
51
+ | `ccburn` | Real-time token burn rate visualization |
52
+ | `agent-browser` | Headless Chromium for browser automation (Playwright-based) |
51
53
  | `gh` | GitHub CLI for repo operations |
52
54
  | `uv` | Fast Python package manager |
53
55
  | `ast-grep` | Structural code search |
@@ -89,6 +91,17 @@ Every local feature supports `"version": "none"` to skip installation entirely.
89
91
 
90
92
  When `version` is set to `"none"`, the feature's `install.sh` exits immediately with a skip message. The feature entry stays in `devcontainer.json` so re-enabling is a one-word change.
91
93
 
94
+ **Currently disabled features** (not needed for Python/JS/TS workflow):
95
+
96
+ | Feature | Handles | Reason |
97
+ |---------|---------|--------|
98
+ | `shfmt` | Shell formatting | Not needed — Python/JS/TS only |
99
+ | `shellcheck` | Shell linting | Not needed — Python/JS/TS only |
100
+ | `hadolint` | Dockerfile linting | Not needed — Python/JS/TS only |
101
+ | `dprint` | Markdown/YAML/TOML/Dockerfile formatting | Not needed — Python/JS/TS only |
102
+
103
+ The auto-formatter and auto-linter plugins gracefully skip missing tools at runtime.
104
+
92
105
  **All local features support this pattern:**
93
106
  ast-grep, biome, ccstatusline, claude-monitor, dprint, hadolint, lsp-servers, mcp-qdrant, mcp-reasoner, notify-hook, ruff, shfmt, shellcheck, splitrail, tmux
94
107
 
@@ -114,18 +127,26 @@ Scripts in `./scripts/` run via `postStartCommand`:
114
127
  |--------|---------|
115
128
  | `setup.sh` | Main orchestrator |
116
129
  | `setup-config.sh` | Copies config files per `config/file-manifest.json` to destinations |
117
- | `setup-aliases.sh` | Creates `cc`/`claude`/`ccraw` shell aliases |
130
+ | `setup-aliases.sh` | Creates `cc`/`claude`/`ccraw` shell aliases (prefers native binary at `~/.local/bin/claude` via `_CLAUDE_BIN`) |
118
131
  | `setup-plugins.sh` | Registers local marketplace + installs official Anthropic plugins |
119
- | `setup-update-claude.sh` | Background auto-update of Claude Code binary |
132
+ | `setup-update-claude.sh` | Installs native Claude Code binary on first run; background auto-updates on subsequent starts |
133
+ | `setup-terminal.sh` | Configures VS Code Shift+Enter keybinding for Claude Code multi-line input |
120
134
  | `setup-projects.sh` | Auto-detects projects for VS Code Project Manager |
121
135
  | `setup-symlink-claude.sh` | Symlinks ~/.claude for third-party tool compatibility |
122
136
 
137
+ ### External Terminal
138
+
139
+ `connect-external-terminal.sh` connects to the running devcontainer from an external terminal with tmux support for Claude Code Agent Teams split-pane workflows. Run from the host:
140
+ ```bash
141
+ .devcontainer/connect-external-terminal.sh
142
+ ```
143
+
123
144
  ## Installed Plugins
124
145
 
125
146
  Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` and auto-activated on container start:
126
147
 
127
148
  ### Official (Anthropic)
128
- - `frontend-design@claude-code-plugins` — UI/frontend design skill
149
+ - `frontend-design@claude-plugins-official` — UI/frontend design skill
129
150
 
130
151
  ### Local Marketplace (devs-marketplace)
131
152
  - `codeforge-lsp@devs-marketplace` — LSP for Python + TypeScript/JavaScript
@@ -133,9 +154,9 @@ Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` a
133
154
  - `notify-hook@devs-marketplace` — Desktop notifications on completion
134
155
  - `dangerous-command-blocker@devs-marketplace` — Blocks destructive bash commands
135
156
  - `protected-files-guard@devs-marketplace` — Blocks edits to secrets/lock files
136
- - `auto-formatter@devs-marketplace` — Batch-formats edited files at Stop (Ruff/Black for Python, gofmt for Go, Biome for JS/TS/CSS/JSON/GraphQL/HTML, shfmt for Shell, dprint for Markdown/YAML/TOML/Dockerfile, rustfmt for Rust)
137
- - `auto-linter@devs-marketplace` — Auto-lints edited files at Stop (Pyright + Ruff for Python, Biome for JS/TS/CSS/GraphQL, ShellCheck for Shell, go vet for Go, hadolint for Dockerfile, clippy for Rust)
138
- - `code-directive@devs-marketplace` — 17 custom agents, 16 skills, syntax validation, skill suggestions, agent redirect hook
157
+ - `auto-formatter@devs-marketplace` — Batch-formats edited files at Stop (Ruff for Python, Biome for JS/TS/CSS/JSON/GraphQL/HTML; also supports shfmt, dprint, gofmt, rustfmt when installed)
158
+ - `auto-linter@devs-marketplace` — Auto-lints edited files at Stop (Pyright + Ruff for Python, Biome for JS/TS/CSS/GraphQL; also supports ShellCheck, hadolint, go vet, clippy when installed)
159
+ - `code-directive@devs-marketplace` — 17 custom agents, 17 skills, syntax validation, skill suggestions, agent redirect hook
139
160
 
140
161
  ### Local Marketplace
141
162
 
@@ -156,7 +177,7 @@ plugins/devs-marketplace/
156
177
 
157
178
  ## Agents & Skills
158
179
 
159
- The `code-directive` plugin includes 17 custom agent definitions and 16 coding reference skills.
180
+ The `code-directive` plugin includes 17 custom agent definitions and 17 coding reference skills.
160
181
 
161
182
  **Agents** (`plugins/devs-marketplace/plugins/code-directive/agents/`):
162
183
  architect, bash-exec, claude-guide, debug-logs, dependency-analyst, doc-writer, explorer, generalist, git-archaeologist, migrator, perf-profiler, refactorer, researcher, security-auditor, spec-writer, statusline-config, test-writer
@@ -164,7 +185,7 @@ architect, bash-exec, claude-guide, debug-logs, dependency-analyst, doc-writer,
164
185
  The `redirect-builtin-agents.py` hook (PreToolUse/Task) transparently swaps built-in agent types to these custom agents (e.g., Explore→explorer, Plan→architect).
165
186
 
166
187
  **Skills** (`plugins/devs-marketplace/plugins/code-directive/skills/`):
167
- claude-agent-sdk, claude-code-headless, debugging, docker, docker-py, fastapi, git-forensics, performance-profiling, pydantic-ai, refactoring-patterns, security-checklist, skill-building, specification-writing, sqlite, svelte5, testing
188
+ claude-agent-sdk, claude-code-headless, debugging, docker, docker-py, fastapi, git-forensics, performance-profiling, pydantic-ai, refactoring-patterns, security-checklist, skill-building, spec-refine, specification-writing, sqlite, svelte5, testing
168
189
 
169
190
  ## VS Code Keybinding Conflicts
170
191
 
@@ -293,11 +293,70 @@ Agent definitions in `plugins/devs-marketplace/plugins/code-directive/agents/` p
293
293
  | `statusline-config` | ccstatusline configuration |
294
294
  | `test-writer` | Test authoring with pass verification |
295
295
 
296
- ### Skills (16)
296
+ ### Skills (17)
297
297
 
298
298
  Skills in `plugins/devs-marketplace/plugins/code-directive/skills/` provide domain-specific coding references:
299
299
 
300
- `claude-agent-sdk` · `claude-code-headless` · `debugging` · `docker` · `docker-py` · `fastapi` · `git-forensics` · `performance-profiling` · `pydantic-ai` · `refactoring-patterns` · `security-checklist` · `skill-building` · `specification-writing` · `sqlite` · `svelte5` · `testing`
300
+ `claude-agent-sdk` · `claude-code-headless` · `debugging` · `docker` · `docker-py` · `fastapi` · `git-forensics` · `performance-profiling` · `pydantic-ai` · `refactoring-patterns` · `security-checklist` · `skill-building` · `spec-refine` · `specification-writing` · `sqlite` · `svelte5` · `testing`
301
+
302
+ ## Specification Workflow
303
+
304
+ CodeForge includes a specification-driven development workflow. Every non-trivial feature gets a spec before implementation begins.
305
+
306
+ ### Quick Start
307
+
308
+ ```bash
309
+ /spec-init # Bootstrap .specs/ directory (first time only)
310
+ /spec-new auth-flow v0.2.0 # Create a feature spec
311
+ /spec-refine auth-flow # Validate assumptions with user
312
+ # ... implement the feature ...
313
+ /spec-update auth-flow # As-built update after implementation
314
+ /spec-check # Audit all specs for health
315
+ ```
316
+
317
+ ### The Lifecycle
318
+
319
+ 1. **Backlog** — features live in `.specs/BACKLOG.md` with priority grades (P0–P3)
320
+ 2. **Roadmap** — when starting a version, pull features from backlog into `.specs/ROADMAP.md`
321
+ 3. **Spec** — `/spec-new` creates a spec from the standard template with all requirements tagged `[assumed]`
322
+ 4. **Refine** — `/spec-refine` walks through every assumption with the user, converting `[assumed]` → `[user-approved]`. The spec's approval status moves from `draft` → `user-approved`. **No implementation begins until approved.**
323
+ 5. **Implement** — build the feature using the spec's acceptance criteria as the definition of done
324
+ 6. **Update** — `/spec-update` performs the as-built update: sets status, checks off criteria, adds implementation notes
325
+ 7. **Health check** — `/spec-check` audits all specs for staleness, missing sections, unapproved status, and other issues
326
+
327
+ ### Approval Workflow
328
+
329
+ Specs use a two-level approval system:
330
+
331
+ - **Requirement-level:** each requirement starts as `[assumed]` (AI hypothesis) and becomes `[user-approved]` after explicit user validation via `/spec-refine`
332
+ - **Spec-level:** the `**Approval:**` field starts as `draft` and becomes `user-approved` when all requirements pass review
333
+
334
+ A spec-reminder advisory hook fires at Stop when code was modified but specs weren't updated.
335
+
336
+ ### Skills Reference
337
+
338
+ | Skill | Purpose |
339
+ |-------|---------|
340
+ | `/spec-init` | Bootstrap `.specs/` directory with ROADMAP and BACKLOG |
341
+ | `/spec-new` | Create a feature spec from the standard template |
342
+ | `/spec-refine` | Validate assumptions and get user approval (required before implementation) |
343
+ | `/spec-update` | As-built update after implementation |
344
+ | `/spec-check` | Audit all specs for health issues |
345
+ | `/specification-writing` | EARS format templates and acceptance criteria patterns |
346
+
347
+ ### Directory Structure
348
+
349
+ ```
350
+ .specs/
351
+ ├── ROADMAP.md # Current version scope
352
+ ├── BACKLOG.md # Priority-graded feature backlog
353
+ ├── v0.1.0.md # Single-file spec (small versions)
354
+ └── v0.2.0/ # Multi-feature version
355
+ ├── _overview.md # Parent linking sub-specs
356
+ └── feature.md # Individual feature spec
357
+ ```
358
+
359
+ Specs aim for ~200 lines each. Split by feature boundary when longer; link via a parent overview.
301
360
 
302
361
  ## Project Manager
303
362