codeforge-dev 1.13.0 → 1.14.1
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.
- package/.devcontainer/CHANGELOG.md +140 -4
- package/.devcontainer/CLAUDE.md +61 -276
- package/.devcontainer/README.md +1 -1
- package/.devcontainer/config/defaults/ccstatusline-settings.json +147 -0
- package/.devcontainer/config/defaults/main-system-prompt.md +6 -1
- package/.devcontainer/config/defaults/rules/spec-workflow.md +1 -55
- package/.devcontainer/config/file-manifest.json +14 -0
- package/.devcontainer/devcontainer.json +19 -1
- package/.devcontainer/docs/optional-features.md +0 -65
- package/.devcontainer/docs/plugins.md +38 -23
- package/.devcontainer/features/ast-grep/devcontainer-feature.json +0 -1
- package/.devcontainer/features/biome/install.sh +13 -0
- package/.devcontainer/features/ccburn/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccms/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccms/install.sh +1 -1
- package/.devcontainer/features/ccstatusline/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccstatusline/install.sh +17 -115
- package/.devcontainer/features/ccusage/devcontainer-feature.json +0 -1
- package/.devcontainer/features/chromaterm/README.md +42 -0
- package/.devcontainer/features/chromaterm/chromaterm.yml +35 -0
- package/.devcontainer/features/chromaterm/devcontainer-feature.json +22 -0
- package/.devcontainer/features/chromaterm/install.sh +113 -0
- package/.devcontainer/features/claude-monitor/devcontainer-feature.json +0 -1
- package/.devcontainer/features/claude-session-dashboard/README.md +2 -2
- package/.devcontainer/features/claude-session-dashboard/devcontainer-feature.json +1 -2
- package/.devcontainer/features/claude-session-dashboard/install.sh +2 -2
- package/.devcontainer/features/kitty-terminfo/README.md +32 -0
- package/.devcontainer/features/kitty-terminfo/devcontainer-feature.json +13 -0
- package/.devcontainer/features/kitty-terminfo/install.sh +72 -0
- package/.devcontainer/features/lsp-servers/devcontainer-feature.json +0 -1
- package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +0 -1
- package/.devcontainer/features/shellcheck/install.sh +6 -2
- package/.devcontainer/features/tree-sitter/devcontainer-feature.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +37 -69
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/README.md +197 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/architect.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/bash-exec.md +3 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/claude-guide.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/debug-logs.md +6 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/dependency-analyst.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/doc-writer.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/explorer.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/generalist.md +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/git-archaeologist.md +3 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/migrator.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/perf-profiler.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/refactorer.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/researcher.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/security-auditor.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/spec-writer.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/statusline-config.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/test-writer.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/hooks/hooks.json +23 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/guard-readonly-bash.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/inject-cwd.py +7 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/task-completed-check.py +166 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/teammate-idle-check.py +81 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-no-regression.py +14 -10
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-tests-pass.py +2 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +17 -31
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/advisory-test-runner.py +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/codeforge-lsp/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/README.md +140 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/commit-reminder.py +3 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/git-state-injector.py +18 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/todo-harvester.py +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/README.md +158 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/hooks/hooks.json +1 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/scripts/skill-suggester.py +189 -100
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/api-design/SKILL.md +9 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/ast-grep-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-agent-sdk/SKILL.md +8 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-code-headless/SKILL.md +8 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/debugging/SKILL.md +11 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/dependency-management/SKILL.md +10 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker/SKILL.md +8 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker-py/SKILL.md +9 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/documentation-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/fastapi/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/git-forensics/SKILL.md +11 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/migration-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/performance-profiling/SKILL.md +10 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/pydantic-ai/SKILL.md +8 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/refactoring-patterns/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/security-checklist/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/skill-building/SKILL.md +7 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/sqlite/SKILL.md +9 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/svelte5/SKILL.md +7 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/team/SKILL.md +71 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/testing/SKILL.md +10 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/README.md +192 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/scripts/spec-reminder.py +3 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-build/SKILL.md +9 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-check/SKILL.md +10 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/SKILL.md +8 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-new/SKILL.md +8 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-refine/SKILL.md +10 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-review/SKILL.md +10 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-update/SKILL.md +10 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/specification-writing/SKILL.md +9 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/plugin.json +1 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +104 -32
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/hooks/hooks.json +49 -3
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +269 -56
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/inject-workspace-cwd.py +44 -0
- package/.devcontainer/scripts/setup-aliases.sh +13 -5
- package/.devcontainer/scripts/setup-config.sh +1 -0
- package/README.md +5 -5
- package/package.json +6 -2
- package/setup.js +3 -2
- package/.devcontainer/.env +0 -33
- package/.devcontainer/features/README.md +0 -126
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/README.md +0 -81
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +0 -297
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/README.md +0 -92
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +0 -536
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/system-prompt.md +0 -184
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/__pycache__/guard-workspace-scope.cpython-314.pyc +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/{.claude-plugin/commands/debug.md → skills/debug/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272create-pr.md" → skills/ticketcreate-pr/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272new.md" → skills/ticketnew/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272review-commit.md" → skills/ticketreview-commit/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272work.md" → skills/ticketwork/SKILL.md} +0 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# spec-workflow
|
|
2
|
+
|
|
3
|
+
Claude Code plugin that manages the full specification lifecycle: creating, refining, building, reviewing, updating, and auditing feature specs. Includes an advisory hook that reminds about spec updates when code changes but specs don't.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
Two capabilities:
|
|
8
|
+
|
|
9
|
+
1. **Spec lifecycle skills** — 8 skills that cover the complete journey from bootstrapping a `.specs/` directory to closing out an as-built spec after implementation.
|
|
10
|
+
|
|
11
|
+
2. **Spec reminder hook** — A `Stop` hook that fires when source code was modified but no `.specs/` files were updated, advising Claude to run `/spec-update`.
|
|
12
|
+
|
|
13
|
+
### Skill Catalog
|
|
14
|
+
|
|
15
|
+
| Skill | Slash Command | Purpose |
|
|
16
|
+
|-------|---------------|---------|
|
|
17
|
+
| spec-init | `/spec-init` | Bootstrap `.specs/` directory with BACKLOG.md, MILESTONES.md, ROADMAP.md |
|
|
18
|
+
| spec-new | `/spec-new` | Create a new feature spec from EARS template |
|
|
19
|
+
| spec-refine | `/spec-refine` | Validate assumptions with user, upgrade requirements to `[user-approved]` |
|
|
20
|
+
| spec-build | `/spec-build` | Orchestrate full implementation: plan, build, review, close |
|
|
21
|
+
| spec-check | `/spec-check` | Audit all specs for health issues |
|
|
22
|
+
| spec-review | `/spec-review` | Verify implementation against a spec |
|
|
23
|
+
| spec-update | `/spec-update` | As-built closure: update spec to match implementation |
|
|
24
|
+
| specification-writing | `/skill specification-writing` | Domain knowledge for writing high-quality specs |
|
|
25
|
+
|
|
26
|
+
### Spec Lifecycle
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
/spec-init Bootstrap .specs/ directory
|
|
30
|
+
|
|
|
31
|
+
/spec-new Create feature spec (draft, [assumed] requirements)
|
|
32
|
+
|
|
|
33
|
+
/spec-refine Validate with user -> [user-approved] requirements
|
|
34
|
+
|
|
|
35
|
+
/spec-build 5-phase implementation orchestration:
|
|
36
|
+
| Phase 1: Discovery
|
|
37
|
+
| Phase 2: Planning
|
|
38
|
+
| Phase 3: Building ([ ] -> [~])
|
|
39
|
+
| Phase 4: Review ([~] -> [x])
|
|
40
|
+
| Phase 5: Closure (as-built update)
|
|
41
|
+
|
|
|
42
|
+
/spec-review Standalone verification (post-change audits)
|
|
43
|
+
|
|
|
44
|
+
/spec-update Manual as-built closure
|
|
45
|
+
|
|
|
46
|
+
/spec-check Health audit across all specs
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Acceptance Criteria Markers
|
|
50
|
+
|
|
51
|
+
| Marker | Meaning |
|
|
52
|
+
|--------|---------|
|
|
53
|
+
| `[ ]` | Not started |
|
|
54
|
+
| `[~]` | Implemented, not yet verified |
|
|
55
|
+
| `[x]` | Verified — tests pass, behavior confirmed |
|
|
56
|
+
|
|
57
|
+
### Approval and Requirement Tags
|
|
58
|
+
|
|
59
|
+
- `**Approval:** draft` — Spec is in draft, not ready for implementation
|
|
60
|
+
- `**Approval:** user-approved` — Spec reviewed and approved by user
|
|
61
|
+
- `[assumed]` — Requirement inferred by Claude, needs validation
|
|
62
|
+
- `[user-approved]` — Requirement explicitly approved by user
|
|
63
|
+
|
|
64
|
+
## How It Works
|
|
65
|
+
|
|
66
|
+
### Hook Lifecycle
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Claude stops responding (Stop event)
|
|
70
|
+
|
|
|
71
|
+
+-> Stop fires
|
|
72
|
+
|
|
|
73
|
+
+-> spec-reminder.py
|
|
74
|
+
|
|
|
75
|
+
+-> .specs/ directory exists?
|
|
76
|
+
| |
|
|
77
|
+
| +-> No -> Silent exit (no output)
|
|
78
|
+
| +-> Yes -> Continue
|
|
79
|
+
|
|
|
80
|
+
+-> Source code modified this session?
|
|
81
|
+
| |
|
|
82
|
+
| +-> No -> Silent exit
|
|
83
|
+
| +-> Yes -> Continue
|
|
84
|
+
|
|
|
85
|
+
+-> .specs/ files also modified?
|
|
86
|
+
|
|
|
87
|
+
+-> Yes -> Silent exit (already updated)
|
|
88
|
+
+-> No -> Inject advisory: "Run /spec-update"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Monitored Source Directories
|
|
92
|
+
|
|
93
|
+
The spec reminder watches for changes in these directories:
|
|
94
|
+
|
|
95
|
+
`src/`, `lib/`, `app/`, `pkg/`, `internal/`, `cmd/`, `tests/`, `api/`, `frontend/`, `backend/`, `packages/`, `services/`, `components/`, `pages/`, `routes/`
|
|
96
|
+
|
|
97
|
+
### Exit Code Behavior
|
|
98
|
+
|
|
99
|
+
| Exit Code | Meaning |
|
|
100
|
+
|-----------|---------|
|
|
101
|
+
| 0 | Advisory injected (or silent — no action needed) |
|
|
102
|
+
|
|
103
|
+
The hook never blocks operations.
|
|
104
|
+
|
|
105
|
+
### Error Handling
|
|
106
|
+
|
|
107
|
+
| Scenario | Behavior |
|
|
108
|
+
|----------|----------|
|
|
109
|
+
| No `.specs/` directory | Silent exit |
|
|
110
|
+
| Not a git repository | Silent exit |
|
|
111
|
+
| JSON parse failure | Silent exit |
|
|
112
|
+
|
|
113
|
+
### Timeouts
|
|
114
|
+
|
|
115
|
+
| Hook | Timeout |
|
|
116
|
+
|------|---------|
|
|
117
|
+
| Spec reminder (Stop) | 8s |
|
|
118
|
+
|
|
119
|
+
## Installation
|
|
120
|
+
|
|
121
|
+
### CodeForge DevContainer
|
|
122
|
+
|
|
123
|
+
Pre-installed and activated automatically — no setup needed.
|
|
124
|
+
|
|
125
|
+
### From GitHub
|
|
126
|
+
|
|
127
|
+
Use this plugin in any Claude Code setup:
|
|
128
|
+
|
|
129
|
+
1. Clone the [CodeForge](https://github.com/AnExiledDev/CodeForge) repository:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
git clone https://github.com/AnExiledDev/CodeForge.git
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
2. Enable the plugin in your `.claude/settings.json`:
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"enabledPlugins": {
|
|
140
|
+
"spec-workflow@<clone-path>/.devcontainer/plugins/devs-marketplace": true
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Replace `<clone-path>` with the absolute path to your CodeForge clone.
|
|
146
|
+
|
|
147
|
+
## Plugin Structure
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
spec-workflow/
|
|
151
|
+
+-- .claude-plugin/
|
|
152
|
+
| +-- plugin.json # Plugin metadata
|
|
153
|
+
+-- hooks/
|
|
154
|
+
| +-- hooks.json # Stop hook registration
|
|
155
|
+
+-- scripts/
|
|
156
|
+
| +-- spec-reminder.py # Spec update advisory (Stop)
|
|
157
|
+
+-- skills/
|
|
158
|
+
| +-- spec-init/ # Bootstrap .specs/ directory
|
|
159
|
+
| | +-- SKILL.md
|
|
160
|
+
| | +-- references/
|
|
161
|
+
| | +-- backlog-template.md
|
|
162
|
+
| | +-- milestones-template.md
|
|
163
|
+
| | +-- roadmap-template.md
|
|
164
|
+
| +-- spec-new/ # Create new feature spec
|
|
165
|
+
| | +-- SKILL.md
|
|
166
|
+
| | +-- references/
|
|
167
|
+
| | +-- template.md
|
|
168
|
+
| +-- spec-refine/ # Validate assumptions with user
|
|
169
|
+
| | +-- SKILL.md
|
|
170
|
+
| +-- spec-build/ # Full implementation orchestration
|
|
171
|
+
| | +-- SKILL.md
|
|
172
|
+
| | +-- references/
|
|
173
|
+
| | +-- review-checklist.md
|
|
174
|
+
| +-- spec-check/ # Spec health audit
|
|
175
|
+
| | +-- SKILL.md
|
|
176
|
+
| +-- spec-review/ # Implementation verification
|
|
177
|
+
| | +-- SKILL.md
|
|
178
|
+
| +-- spec-update/ # As-built closure
|
|
179
|
+
| | +-- SKILL.md
|
|
180
|
+
| +-- specification-writing/ # Domain knowledge skill
|
|
181
|
+
| +-- SKILL.md
|
|
182
|
+
| +-- references/
|
|
183
|
+
| +-- criteria-patterns.md
|
|
184
|
+
| +-- ears-templates.md
|
|
185
|
+
+-- README.md # This file
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Requirements
|
|
189
|
+
|
|
190
|
+
- Python 3.11+
|
|
191
|
+
- Git (for detecting file changes)
|
|
192
|
+
- Claude Code with plugin hook support (skills)
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/scripts/spec-reminder.py
CHANGED
|
@@ -9,7 +9,8 @@ Injects an advisory reminder as additionalContext pointing the user to
|
|
|
9
9
|
Only fires when a .specs/ directory exists (project uses the spec system).
|
|
10
10
|
|
|
11
11
|
Reads hook input from stdin (JSON). Returns JSON on stdout.
|
|
12
|
-
|
|
12
|
+
Blocks with decision/reason so Claude addresses the spec gap
|
|
13
|
+
before finishing. The stop_hook_active guard prevents infinite loops.
|
|
13
14
|
"""
|
|
14
15
|
|
|
15
16
|
import json
|
|
@@ -115,7 +116,7 @@ def main():
|
|
|
115
116
|
"or /spec-refine if the spec is still in draft status."
|
|
116
117
|
)
|
|
117
118
|
|
|
118
|
-
json.dump({"
|
|
119
|
+
json.dump({"decision": "block", "reason": message}, sys.stdout)
|
|
119
120
|
sys.exit(0)
|
|
120
121
|
|
|
121
122
|
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-build/SKILL.md
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-build
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
Orchestrates full implementation of an approved specification through
|
|
5
|
+
5 phases: discovery, planning, building, review, and closure. USE WHEN
|
|
6
|
+
the user asks to "implement the spec", "build from spec", "start building
|
|
7
|
+
the feature", "implement this feature", "build what the spec describes",
|
|
8
|
+
"run spec-build", or works with phased implementation workflows.
|
|
9
|
+
DO NOT USE for creating, refining, or updating specs — use spec-new,
|
|
10
|
+
spec-refine, or spec-update instead.
|
|
11
|
+
version: 0.2.0
|
|
12
|
+
argument-hint: "[spec-path]"
|
|
10
13
|
---
|
|
11
14
|
|
|
12
15
|
# Spec-Driven Implementation
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-check/SKILL.md
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-check
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
Audits all specifications in a project for health issues including stale
|
|
5
|
+
status, missing sections, unapproved drafts, and assumed requirements.
|
|
6
|
+
USE WHEN the user asks to "check spec health", "audit specs", "which
|
|
7
|
+
specs are stale", "find missing specs", "review spec quality",
|
|
8
|
+
"run spec-check", "are my specs up to date", or works with .specs/
|
|
9
|
+
directory maintenance and specification metadata.
|
|
10
|
+
DO NOT USE for single-spec code review or implementation verification
|
|
11
|
+
— use spec-review for deep code-level audits against one spec.
|
|
12
|
+
version: 0.2.0
|
|
13
|
+
argument-hint: "[domain or path]"
|
|
9
14
|
context: fork
|
|
10
15
|
agent: explorer
|
|
11
16
|
---
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/SKILL.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-init
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
Bootstraps the .specs/ directory structure for a project, creating
|
|
5
|
+
MILESTONES.md and BACKLOG.md from starter templates so spec-new has
|
|
6
|
+
a home. USE WHEN the user asks to "initialize specs", "set up specs",
|
|
7
|
+
"bootstrap specs", "start using specs", "create spec directory",
|
|
8
|
+
"init specs for this project", "set up .specs", or works with first-
|
|
9
|
+
time specification setup and project onboarding.
|
|
10
|
+
DO NOT USE if .specs/ already exists — use spec-check to audit health
|
|
11
|
+
or spec-new to add individual specs.
|
|
8
12
|
version: 0.2.0
|
|
9
13
|
---
|
|
10
14
|
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-new/SKILL.md
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-new
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
|
|
4
|
+
Creates a new feature specification from the standard EARS template
|
|
5
|
+
with domain inference, acceptance criteria, and requirement tagging.
|
|
6
|
+
USE WHEN the user asks to "create a spec", "new feature spec", "write
|
|
7
|
+
a spec for", "spec this feature", "start a new spec", "plan a feature",
|
|
8
|
+
"add a spec", or works with .specs/ directory and feature planning.
|
|
9
|
+
DO NOT USE for updating existing specs after implementation — use
|
|
10
|
+
spec-update instead. Not for refining draft specs — use spec-refine.
|
|
8
11
|
version: 0.2.0
|
|
12
|
+
argument-hint: "[feature-name] [domain]"
|
|
9
13
|
---
|
|
10
14
|
|
|
11
15
|
# Create New Feature Specification
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-refine/SKILL.md
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-refine
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
Guides iterative user-driven spec refinement through structured
|
|
5
|
+
questioning rounds that validate assumptions, tech decisions, and scope
|
|
6
|
+
boundaries. USE WHEN the user asks to "refine the spec", "review spec
|
|
7
|
+
assumptions", "validate spec decisions", "approve the spec", "walk me
|
|
8
|
+
through the spec", "check spec for assumptions", "iterate on the spec",
|
|
9
|
+
or works with [assumed] requirements needing user-approved upgrade.
|
|
10
|
+
DO NOT USE for creating new specs (use spec-new) or for post-
|
|
11
|
+
implementation updates (use spec-update).
|
|
12
|
+
version: 0.2.0
|
|
13
|
+
argument-hint: "[spec-path]"
|
|
11
14
|
---
|
|
12
15
|
|
|
13
16
|
# Iterative Spec Refinement
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-review/SKILL.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-review
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
adherence
|
|
9
|
-
|
|
4
|
+
Performs a standalone deep implementation review by reading code and
|
|
5
|
+
verifying full adherence to a specification's requirements and acceptance
|
|
6
|
+
criteria. USE WHEN the user asks to "review the spec", "verify
|
|
7
|
+
implementation", "does code match spec", "audit implementation",
|
|
8
|
+
"check spec adherence", "run spec-review", "regression check", or
|
|
9
|
+
works with post-implementation verification and pre-release audits.
|
|
10
|
+
DO NOT USE for batch metadata audits across all specs (use spec-check)
|
|
11
|
+
or for updating spec status after review (use spec-update).
|
|
12
|
+
version: 0.2.0
|
|
13
|
+
argument-hint: "[spec-path]"
|
|
10
14
|
---
|
|
11
15
|
|
|
12
16
|
# Spec Implementation Review
|
package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-update/SKILL.md
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-update
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
Performs the as-built spec update after implementation, closing the loop
|
|
5
|
+
between what was planned and what was built by setting status, checking
|
|
6
|
+
off acceptance criteria, and adding implementation notes. USE WHEN the
|
|
7
|
+
user asks to "update the spec", "mark spec as implemented", "as-built
|
|
8
|
+
update", "finish the spec", "close the spec", "update spec status",
|
|
9
|
+
"sync spec with code", or works with post-implementation documentation.
|
|
10
|
+
DO NOT USE for verifying code against a spec (use spec-review first)
|
|
11
|
+
or for creating new specs (use spec-new).
|
|
12
|
+
version: 0.2.0
|
|
13
|
+
argument-hint: "[spec-path]"
|
|
9
14
|
---
|
|
10
15
|
|
|
11
16
|
# As-Built Spec Update
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: specification-writing
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"write Given/When/Then scenarios", "
|
|
8
|
-
"structure
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
version: 0.
|
|
4
|
+
Teaches EARS requirement formats, Given/When/Then acceptance criteria,
|
|
5
|
+
and structured specification patterns for feature definitions. USE WHEN
|
|
6
|
+
the user asks to "write requirements", "use EARS format", "define
|
|
7
|
+
acceptance criteria", "write Given/When/Then scenarios", "create a
|
|
8
|
+
feature spec", "structure requirements", "write user stories", or works
|
|
9
|
+
with Gherkin syntax, FR/NFR numbering, and completeness checklists.
|
|
10
|
+
DO NOT USE for managing the spec lifecycle (create, refine, build,
|
|
11
|
+
review, update) — use the dedicated spec-* skills instead.
|
|
12
|
+
version: 0.2.0
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
# Specification Writing
|
|
@@ -74,6 +74,34 @@ Each ticket created by `/ticket:new` includes:
|
|
|
74
74
|
|
|
75
75
|
The plugin injects a system prompt that defines the assistant persona, coding standards (SOLID, DRY, KISS, YAGNI), testing standards, and the ticket workflow rules. This ensures consistent behavior across all four commands.
|
|
76
76
|
|
|
77
|
+
## Installation
|
|
78
|
+
|
|
79
|
+
### CodeForge DevContainer
|
|
80
|
+
|
|
81
|
+
Pre-installed and activated automatically — no setup needed.
|
|
82
|
+
|
|
83
|
+
### From GitHub
|
|
84
|
+
|
|
85
|
+
Use this plugin in any Claude Code setup:
|
|
86
|
+
|
|
87
|
+
1. Clone the [CodeForge](https://github.com/AnExiledDev/CodeForge) repository:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
git clone https://github.com/AnExiledDev/CodeForge.git
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
2. Enable the plugin in your `.claude/settings.json`:
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"enabledPlugins": {
|
|
98
|
+
"ticket-workflow@<clone-path>/.devcontainer/plugins/devs-marketplace": true
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Replace `<clone-path>` with the absolute path to your CodeForge clone.
|
|
104
|
+
|
|
77
105
|
## Plugin Structure
|
|
78
106
|
|
|
79
107
|
```
|
package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py
CHANGED
|
@@ -129,7 +129,15 @@ def main():
|
|
|
129
129
|
if len(output) > TOTAL_OUTPUT_CAP:
|
|
130
130
|
output = output[:TOTAL_OUTPUT_CAP] + "\n...(truncated)"
|
|
131
131
|
|
|
132
|
-
json.dump(
|
|
132
|
+
json.dump(
|
|
133
|
+
{
|
|
134
|
+
"hookSpecificOutput": {
|
|
135
|
+
"hookEventName": "UserPromptSubmit",
|
|
136
|
+
"additionalContext": output,
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
sys.stdout,
|
|
140
|
+
)
|
|
133
141
|
sys.exit(0)
|
|
134
142
|
|
|
135
143
|
|