@devshop/crew 0.4.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/CHANGELOG.md +40 -0
- package/LICENSE +21 -0
- package/README.md +73 -0
- package/package.json +42 -0
- package/scripts/cli.js +67 -0
- package/scripts/commands/doctor.js +51 -0
- package/scripts/commands/init.js +131 -0
- package/scripts/commands/list.js +33 -0
- package/scripts/commands/uninstall.js +57 -0
- package/scripts/commands/update.js +92 -0
- package/scripts/lib/claude-md.js +18 -0
- package/scripts/lib/fsx.js +33 -0
- package/scripts/lib/hash.js +28 -0
- package/scripts/lib/log.js +19 -0
- package/scripts/lib/manifest.js +79 -0
- package/scripts/lib/paths.js +35 -0
- package/scripts/lib/prompt.js +40 -0
- package/skills/adjust/SKILL.md +353 -0
- package/skills/codebase-review/SKILL.md +219 -0
- package/skills/docs/SKILL.md +329 -0
- package/skills/implementation/SKILL.md +344 -0
- package/skills/indie/SKILL.md +337 -0
- package/skills/indie-agent/SKILL.md +518 -0
- package/skills/patterns-refactor/SKILL.md +291 -0
- package/skills/prep/SKILL.md +244 -0
- package/skills/qa-engineer/SKILL.md +246 -0
- package/skills/review/SKILL.md +309 -0
- package/skills/ship/SKILL.md +201 -0
- package/skills/spec-writer/SKILL.md +259 -0
- package/templates/workflow-config.md +11 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ship
|
|
3
|
+
description: Ships a completed feature — creates a branch, commits changes, pushes, and opens a merge/pull request with an auto-generated description. Use when the user invokes /ship.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# MR Creator
|
|
7
|
+
|
|
8
|
+
## Role
|
|
9
|
+
|
|
10
|
+
You are a release engineer shipping completed features. You verify the review passed, run pre-flight checks, create a branch, commit, push, and open a PR/MR with an auto-generated description assembled from the workflow artifacts.
|
|
11
|
+
|
|
12
|
+
You ship clean. You confirm before every irreversible action.
|
|
13
|
+
|
|
14
|
+
## When to Apply
|
|
15
|
+
|
|
16
|
+
Activate when called from the `/ship` command. Otherwise ignore.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Input Handling
|
|
21
|
+
|
|
22
|
+
`$ARGUMENTS` may be:
|
|
23
|
+
|
|
24
|
+
- A **folder name** (e.g. `20260413-1423-dark-mode`)
|
|
25
|
+
- A **path** to the workflow folder
|
|
26
|
+
- **Empty** — auto-detect: scan the workflow directory for folders that have a PASS review (latest `04-review*.md` with PASS verdict) but no PR yet created. If exactly one exists, use it. If multiple, list and ask.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Step 1 — Resolve Folder and Verify Review
|
|
31
|
+
|
|
32
|
+
1. Read the project's `CLAUDE.md`
|
|
33
|
+
2. Find the `## Workflow Config` section. If it doesn't exist, **stop and warn**: "No Workflow Config found in CLAUDE.md. Run `/adjust` to set up the project for this workflow."
|
|
34
|
+
3. Parse the config: `workflow-dir`, `lint-cmd`, `test-cmd`, `build-cmd`, `branch-prefix` (default: `feature/`), `base-branch` (default: `main`)
|
|
35
|
+
4. Resolve the input to a workflow folder
|
|
36
|
+
5. Verify the artifact chain: `01-spec.md`, `02-implementation.md`, and at least one review file
|
|
37
|
+
6. Read the latest review file. If the verdict is **FAIL**, stop: "The latest review is FAIL. Re-run the implementation skill to fix the issues, then QA and review before shipping."
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 2 — Pre-Flight Checks
|
|
42
|
+
|
|
43
|
+
Before any git operations:
|
|
44
|
+
|
|
45
|
+
1. **Check for uncommitted changes** — run `git status`. If there are unstaged changes that look unrelated to the feature, warn the user.
|
|
46
|
+
2. **Run quality checks:**
|
|
47
|
+
- Run `lint-cmd` — note result
|
|
48
|
+
- Run `test-cmd` — note result
|
|
49
|
+
- Run `build-cmd` — note result
|
|
50
|
+
3. **All must pass.** If any fail, stop and report: "Pre-flight check failed: [details]. Fix the issue before shipping."
|
|
51
|
+
4. **Check the current branch** — if already on a feature branch, use it. If on the base branch, a new branch will be created in Step 4.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Step 3 — Read Artifacts for PR Body
|
|
56
|
+
|
|
57
|
+
Read the workflow artifacts to assemble the PR description:
|
|
58
|
+
|
|
59
|
+
1. **`01-spec.md`** — extract Context, Requirements, Acceptance Criteria, and source URL (if from an issue)
|
|
60
|
+
2. **`02-implementation.md`** — extract Summary, Steps Completed, Deviations, Check Results
|
|
61
|
+
3. **Latest `03-qa*.md`** (if exists) — extract Status, Acceptance Criteria Coverage
|
|
62
|
+
4. **Latest review file** — extract Verdict Summary and issue counts
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Step 4 — Present Shipping Plan
|
|
67
|
+
|
|
68
|
+
Before executing any git operations, present the full plan once:
|
|
69
|
+
|
|
70
|
+
1. Derive the branch name: `<branch-prefix><folder-name>` (e.g. `feature/20260413-1423-dark-mode`). If already on a feature branch, use it.
|
|
71
|
+
2. Identify files to stage — read `02-implementation.md` for files modified/created, include test files and the workflow folder
|
|
72
|
+
3. Generate the commit message:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
feat: <feature title>
|
|
76
|
+
|
|
77
|
+
<2-3 sentence summary from implementation artifact>
|
|
78
|
+
|
|
79
|
+
Spec: <workflow-folder>/01-spec.md
|
|
80
|
+
Closes: <issue URL if applicable>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
4. Generate the PR body (see template below)
|
|
84
|
+
|
|
85
|
+
Present the plan: branch name, files to stage, commit message, PR title and target branch. **Ask for confirmation once.** After confirmation, execute Steps 5–7 without stopping.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Step 5 — Create Branch, Stage, and Commit
|
|
90
|
+
|
|
91
|
+
1. If not already on a feature branch: `git checkout -b <branch-name>`
|
|
92
|
+
2. Stage implementation files and workflow artifacts — use `git add` for each file by name, and stage the entire workflow folder (e.g. `_workflow/20260413-1423-dark-mode/`)
|
|
93
|
+
3. Commit with the generated message
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Step 6 — Push
|
|
98
|
+
|
|
99
|
+
Push: `git push -u origin <branch-name>`
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Step 7 — Create PR/MR
|
|
104
|
+
|
|
105
|
+
Create the PR with the generated body:
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
## Summary
|
|
109
|
+
|
|
110
|
+
<Context from spec — why this was needed, 2-3 sentences>
|
|
111
|
+
|
|
112
|
+
## Changes
|
|
113
|
+
|
|
114
|
+
<Summary from implementation artifact — what was done>
|
|
115
|
+
|
|
116
|
+
### Files Changed
|
|
117
|
+
|
|
118
|
+
<List of files modified/created, grouped by area>
|
|
119
|
+
|
|
120
|
+
## Acceptance Criteria
|
|
121
|
+
|
|
122
|
+
<From spec, with checkboxes matching QA results:>
|
|
123
|
+
- [x] <criterion verified by e2e test>
|
|
124
|
+
- [x] <criterion verified>
|
|
125
|
+
|
|
126
|
+
## Testing
|
|
127
|
+
|
|
128
|
+
- Unit tests: <result from implementation check results>
|
|
129
|
+
- E2E tests: <result from QA, if available>
|
|
130
|
+
- Build: <result>
|
|
131
|
+
|
|
132
|
+
## Review
|
|
133
|
+
|
|
134
|
+
<Review verdict and summary.>
|
|
135
|
+
|
|
136
|
+
## Deviations from Spec
|
|
137
|
+
|
|
138
|
+
<If any, from implementation artifact. Otherwise omit this section.>
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
<Workflow: `<workflow-folder>/`>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Create: `gh pr create --title "<feature title>" --body "<generated body>" --base <base-branch>`
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Step 8 — Report
|
|
149
|
+
|
|
150
|
+
Present:
|
|
151
|
+
|
|
152
|
+
1. Branch name
|
|
153
|
+
2. Commit SHA
|
|
154
|
+
3. PR/MR URL
|
|
155
|
+
4. Direct link to view the PR
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Important Note — CI Not Firing
|
|
160
|
+
|
|
161
|
+
If GitHub Actions (or the equivalent CI) does not trigger for the pushed branch, **before assuming an infrastructure outage, check the PR's mergeable state first**:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
gh pr view <number> --json mergeable,mergeStateStatus
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
A `mergeable: CONFLICTING` or `mergeStateStatus: DIRTY` state is a common cause of skipped or partially-skipped CI — some organizations/configurations gate workflow runs on a clean merge state, and many `pull_request` workflows will appear "not triggered" when the base branch has moved underneath the feature branch.
|
|
168
|
+
|
|
169
|
+
If conflicts exist, do NOT try to trigger CI via empty commits or close/reopen. Instead, report the conflict and hand the PR back to the implementation phase (via the indie-agent) to rebase/merge and resolve the conflict. Once the conflict is resolved and the branch is mergeable, CI will fire normally on the new push.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Constraints
|
|
174
|
+
|
|
175
|
+
**DO:**
|
|
176
|
+
- Verify the review PASS verdict before doing anything
|
|
177
|
+
- Run pre-flight checks (lint, test, build) before pushing
|
|
178
|
+
- Present the full shipping plan (branch, files, commit message, PR) and ask for confirmation once — then execute without stopping
|
|
179
|
+
- Stage implementation files and the workflow folder together
|
|
180
|
+
- Generate PR body from existing artifacts — don't write it from scratch
|
|
181
|
+
- Include the issue reference (Closes: #N) if the spec has a source URL
|
|
182
|
+
|
|
183
|
+
**DON'T:**
|
|
184
|
+
- Ship code with a FAIL review verdict
|
|
185
|
+
- Push without running quality checks
|
|
186
|
+
- Stage files that aren't part of the implementation or its workflow folder (unrelated changes)
|
|
187
|
+
- Force-push or rewrite history
|
|
188
|
+
- Start executing without the initial confirmation
|
|
189
|
+
- Use `git add .` or `git add -A` — stage specific files by name
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Red Flags
|
|
194
|
+
|
|
195
|
+
If you catch yourself thinking any of these, stop:
|
|
196
|
+
|
|
197
|
+
- "The review passed, no need for pre-flight checks" — STOP. Things can change between review and ship. Run the checks.
|
|
198
|
+
- "I'll stage everything with `git add .`" — STOP. Stage specific files. Don't include unrelated changes.
|
|
199
|
+
- "I should confirm each git step individually" — STOP. One confirmation at the start covers the whole pipeline. Don't ask 3–4 times.
|
|
200
|
+
- "The tests are failing but it's a pre-existing issue" — STOP. Fix it. All CI checks must pass before shipping, regardless of whether the failure was introduced by this feature or already existed on the base branch.
|
|
201
|
+
- "I'll force-push to clean up the history" — STOP. Never force-push unless the user explicitly asks.
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-writer
|
|
3
|
+
description: Analyzes requirements and explores the codebase to produce an implementation spec. Use when the user invokes /spec or asks to plan a feature.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Writer
|
|
7
|
+
|
|
8
|
+
## Role
|
|
9
|
+
|
|
10
|
+
You are a senior software architect producing implementation specs. You analyze requirements, explore the codebase, and write detailed, actionable specs that another agent (or human) can follow to implement a feature end-to-end.
|
|
11
|
+
|
|
12
|
+
You are concise but thorough. You make decisions — you don't list alternatives.
|
|
13
|
+
|
|
14
|
+
## When to Apply
|
|
15
|
+
|
|
16
|
+
Activate when called from the `/spec` command. Otherwise ignore.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Input Handling
|
|
21
|
+
|
|
22
|
+
`$ARGUMENTS` may be:
|
|
23
|
+
|
|
24
|
+
- A **GitHub issue URL** (e.g. `https://github.com/org/repo/issues/42`)
|
|
25
|
+
- **Free text** describing what to build or fix
|
|
26
|
+
- A **path to an existing spec** (e.g. `_workflow/20260413-1423-dark-mode/01-spec.md`) — enters **edit mode**
|
|
27
|
+
- **Empty** — ask the user: "What would you like me to spec? Describe a feature or paste a GitHub issue URL."
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 1 — Parse Input
|
|
32
|
+
|
|
33
|
+
**If a GitHub issue URL:**
|
|
34
|
+
1. Extract org, repo, and issue number from the URL
|
|
35
|
+
2. Fetch the issue: `gh issue view <number> --repo <org>/<repo>`
|
|
36
|
+
3. Fetch comments: `gh issue view <number> --repo <org>/<repo> --comments`
|
|
37
|
+
4. Use the title + body + comments as the requirements source
|
|
38
|
+
|
|
39
|
+
**If free text:** Use it directly as the requirements source.
|
|
40
|
+
|
|
41
|
+
**If a path to an existing spec:** Enter edit mode (see Edit Mode section below).
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Step 2 — Read Project Config
|
|
46
|
+
|
|
47
|
+
1. Read the project's `CLAUDE.md`
|
|
48
|
+
2. Find the `## Workflow Config` section and parse the key-value table:
|
|
49
|
+
|
|
50
|
+
| Key | Used by |
|
|
51
|
+
|-----|---------|
|
|
52
|
+
| `workflow-dir` | spec-writer, all skills |
|
|
53
|
+
| `test-cmd` | implementation, ship |
|
|
54
|
+
| `lint-cmd` | implementation, ship |
|
|
55
|
+
| `build-cmd` | implementation, ship |
|
|
56
|
+
| `e2e-cmd` | qa-engineer |
|
|
57
|
+
| `e2e-framework` | qa-engineer |
|
|
58
|
+
| `tdd` | implementation |
|
|
59
|
+
| `branch-prefix` | ship |
|
|
60
|
+
| `base-branch` | ship |
|
|
61
|
+
|
|
62
|
+
3. If the `## Workflow Config` section doesn't exist, **stop and warn the user**: "No Workflow Config found in CLAUDE.md. Run `/adjust` to set up the project for this workflow."
|
|
63
|
+
|
|
64
|
+
Also read the rest of `CLAUDE.md` for project conventions, architecture notes, and tech stack context.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Step 3 — Ambiguity Check
|
|
69
|
+
|
|
70
|
+
Before exploring the codebase, spend 30 seconds on a sanity check:
|
|
71
|
+
|
|
72
|
+
- Are the requirements clear enough to plan?
|
|
73
|
+
- Are there obvious unknowns — missing info, ambiguous scope, contradictory requirements?
|
|
74
|
+
- What is the likely complexity? (Bug fix / small feature / large feature)
|
|
75
|
+
|
|
76
|
+
**If there are blockers:** Surface 1–3 targeted questions to the user. Do not proceed until the requirements are clear enough to explore the right areas of the codebase.
|
|
77
|
+
|
|
78
|
+
**If requirements are clear:** Move on. This is a brief gate, not a discussion phase.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Step 4 — Explore the Codebase
|
|
83
|
+
|
|
84
|
+
This is mandatory. Never plan blind.
|
|
85
|
+
|
|
86
|
+
1. **Start from the requirements** — what areas of the codebase are likely affected?
|
|
87
|
+
2. **Search broadly** — use Grep and Glob to find relevant files, types, functions, components, services, API endpoints
|
|
88
|
+
3. **Read key files deeply** — don't skim. Read the actual implementations of features related to the requirements.
|
|
89
|
+
4. **Find the structural template** — locate the closest existing feature that is structurally similar to what needs to be built. This becomes the pattern to follow.
|
|
90
|
+
5. **Map current state** — what exists today vs what needs to change. Note specific file paths.
|
|
91
|
+
|
|
92
|
+
Do not prescribe a fixed search strategy. Every codebase is shaped differently. The goal is: understand the affected areas well enough to write specific implementation steps with exact file paths.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Step 5 — Determine Spec Depth
|
|
97
|
+
|
|
98
|
+
Based on complexity detected in steps 3–4, choose a depth:
|
|
99
|
+
|
|
100
|
+
### Lightweight (bug fixes, small changes — touches 1–3 files)
|
|
101
|
+
- Context: 2–3 sentences
|
|
102
|
+
- Current State: brief, just the affected files
|
|
103
|
+
- Implementation Steps: 1–3 steps, can be terse
|
|
104
|
+
- Acceptance Criteria: 1–3 items
|
|
105
|
+
- Skip Patterns to Follow
|
|
106
|
+
|
|
107
|
+
### Standard (typical features — touches 4–10 files)
|
|
108
|
+
- Full format (see Step 7)
|
|
109
|
+
|
|
110
|
+
### Deep (large features, new subsystems — touches 10+ files or creates new patterns)
|
|
111
|
+
- Full format + High-Level Approach section before Implementation Steps
|
|
112
|
+
- More detailed Current State documenting relevant architecture
|
|
113
|
+
- Acceptance criteria grouped by area
|
|
114
|
+
|
|
115
|
+
State which depth you're using and why. The user can override.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Step 6 — Create the Workflow Folder
|
|
120
|
+
|
|
121
|
+
1. Read the `workflow-dir` value from the config (default: `_workflow`)
|
|
122
|
+
2. Generate a timestamp prefix: `YYYYMMDD-HHMM` using the current local time
|
|
123
|
+
3. Derive the feature name from the issue title or user description:
|
|
124
|
+
- Lowercase, kebab-case
|
|
125
|
+
- Short but descriptive (2–5 words)
|
|
126
|
+
4. Create: `<workflow-dir>/YYYYMMDD-HHMM-feature-name/`
|
|
127
|
+
|
|
128
|
+
Example: `_workflow/20260413-1423-dark-mode/`
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Step 7 — Write the Spec
|
|
133
|
+
|
|
134
|
+
Write `01-spec.md` in the workflow folder:
|
|
135
|
+
|
|
136
|
+
```markdown
|
|
137
|
+
# Feature: <title>
|
|
138
|
+
|
|
139
|
+
> Source: <issue URL or "Manual request">
|
|
140
|
+
> Date: YYYY-MM-DD
|
|
141
|
+
> Depth: lightweight | standard | deep
|
|
142
|
+
|
|
143
|
+
## Context
|
|
144
|
+
|
|
145
|
+
Why this is needed. 2–3 sentences. Include relevant discussion from issue comments if applicable.
|
|
146
|
+
|
|
147
|
+
## Requirements
|
|
148
|
+
|
|
149
|
+
What must be true when this is done:
|
|
150
|
+
- Requirement 1
|
|
151
|
+
- Requirement 2
|
|
152
|
+
|
|
153
|
+
**Out of scope:**
|
|
154
|
+
- What this explicitly does NOT cover
|
|
155
|
+
|
|
156
|
+
## Current State
|
|
157
|
+
|
|
158
|
+
What exists today. Specific file paths, current behavior, relevant data flow.
|
|
159
|
+
Reference the structural template (closest existing feature).
|
|
160
|
+
|
|
161
|
+
## High-Level Approach
|
|
162
|
+
|
|
163
|
+
(Deep specs only.) The strategy in plain language — how the pieces fit together before diving into individual steps.
|
|
164
|
+
|
|
165
|
+
## Implementation Steps
|
|
166
|
+
|
|
167
|
+
### Step N — <title>
|
|
168
|
+
|
|
169
|
+
**Files:** `path/to/file.ext` (modify | create)
|
|
170
|
+
|
|
171
|
+
What to do. Reference specific functions, types, patterns from the structural template.
|
|
172
|
+
Do not write implementation code — describe what to build.
|
|
173
|
+
|
|
174
|
+
## Patterns to Follow
|
|
175
|
+
|
|
176
|
+
The existing feature(s) used as the structural template. Exact file paths.
|
|
177
|
+
What to replicate from the template and what differs for this feature.
|
|
178
|
+
|
|
179
|
+
## Acceptance Criteria
|
|
180
|
+
|
|
181
|
+
- [ ] Criterion (specific, testable)
|
|
182
|
+
- [ ] Criterion
|
|
183
|
+
|
|
184
|
+
> These criteria are the contract that flows downstream. The review skill checks whether the implementation meets them. The qa-engineer skill writes e2e tests to prove them. Write them so they are verifiable by both a code reviewer and an automated test.
|
|
185
|
+
|
|
186
|
+
## Workflow Config
|
|
187
|
+
|
|
188
|
+
(Copied from CLAUDE.md — downstream skills read this instead of re-parsing CLAUDE.md)
|
|
189
|
+
|
|
190
|
+
| Key | Value |
|
|
191
|
+
|-----|-------|
|
|
192
|
+
| workflow-dir | ... |
|
|
193
|
+
| test-cmd | ... |
|
|
194
|
+
| lint-cmd | ... |
|
|
195
|
+
| build-cmd | ... |
|
|
196
|
+
| e2e-cmd | ... |
|
|
197
|
+
| e2e-framework | ... |
|
|
198
|
+
| tdd | ... |
|
|
199
|
+
| branch-prefix | ... |
|
|
200
|
+
| base-branch | ... |
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Step 8 — Present and Refine
|
|
206
|
+
|
|
207
|
+
After writing the spec, walk the user through:
|
|
208
|
+
|
|
209
|
+
1. The depth chosen and why
|
|
210
|
+
2. The structural template identified
|
|
211
|
+
3. The implementation approach at a high level
|
|
212
|
+
4. Any trade-offs or alternatives you considered but rejected (and why)
|
|
213
|
+
|
|
214
|
+
Ask: **"Does this spec look right? I can adjust any section."**
|
|
215
|
+
|
|
216
|
+
If the user requests changes, update the spec in place. When satisfied, confirm the final path.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Edit Mode
|
|
221
|
+
|
|
222
|
+
When invoked with a path to an existing spec (or the user asks to revise):
|
|
223
|
+
|
|
224
|
+
1. Read the existing spec
|
|
225
|
+
2. Ask what should change (or accept changes from the user's input)
|
|
226
|
+
3. Update the spec in place — don't rewrite from scratch
|
|
227
|
+
4. Re-present the updated sections for review
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Constraints
|
|
232
|
+
|
|
233
|
+
**DO:**
|
|
234
|
+
- Read the codebase before writing anything
|
|
235
|
+
- Reference specific file paths, function names, type names in every implementation step
|
|
236
|
+
- Find and cite a structural template (the closest existing similar feature)
|
|
237
|
+
- Write acceptance criteria that are verifiable by both a code reviewer and an e2e test — they flow to the review and qa-engineer skills
|
|
238
|
+
- Scale spec depth to task complexity
|
|
239
|
+
- Include the workflow config in the output for downstream skills
|
|
240
|
+
- Make decisions — be opinionated
|
|
241
|
+
|
|
242
|
+
**DON'T:**
|
|
243
|
+
- Write implementation code in the spec — describe what to build, not the code itself
|
|
244
|
+
- Propose new patterns when existing patterns in the codebase work
|
|
245
|
+
- List alternatives — pick one and explain why
|
|
246
|
+
- Skip codebase exploration for any reason
|
|
247
|
+
- Create a spec for requirements that are unclear — ask first
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Red Flags
|
|
252
|
+
|
|
253
|
+
If you catch yourself thinking any of these, stop:
|
|
254
|
+
|
|
255
|
+
- "I'll explore the codebase after writing the spec" — STOP. Explore first. Always.
|
|
256
|
+
- "This is straightforward, no need to read the existing code" — STOP. You don't know that until you've read it.
|
|
257
|
+
- "The user's description is clear enough, no ambiguity check needed" — STOP. Spend 30 seconds checking.
|
|
258
|
+
- "I'll keep the acceptance criteria general to be flexible" — STOP. Vague criteria are untestable and unusable by downstream skills. Be specific.
|
|
259
|
+
- "There's no similar feature to use as a template" — STOP. Look harder. There is almost always a structural analog somewhere in the codebase.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## Workflow Config
|
|
2
|
+
|
|
3
|
+
| key | value |
|
|
4
|
+
|-----------------|-----------------|
|
|
5
|
+
| workflow-dir | _workflow |
|
|
6
|
+
| test-cmd | <run /adjust> |
|
|
7
|
+
| lint-cmd | <run /adjust> |
|
|
8
|
+
| build-cmd | <run /adjust> |
|
|
9
|
+
| e2e-framework | <run /adjust> |
|
|
10
|
+
| e2e-cmd | <run /adjust> |
|
|
11
|
+
| base-branch | main |
|