@leeovery/claude-technical-workflows 2.0.9 → 2.0.11
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/README.md +26 -22
- package/commands/start-discussion.md +203 -21
- package/package.json +1 -1
- package/skills/technical-implementation/SKILL.md +14 -12
- package/skills/technical-implementation/references/environment-setup.md +2 -2
- package/skills/technical-implementation/references/plan-execution.md +1 -1
- package/skills/technical-implementation/references/tdd-workflow.md +41 -21
package/README.md
CHANGED
|
@@ -5,25 +5,16 @@
|
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<a href="#
|
|
8
|
+
<a href="#what-is-this">What is this?</a> •
|
|
9
|
+
<a href="#how-do-i-use-it">How to Use</a> •
|
|
9
10
|
<a href="#installation">Installation</a> •
|
|
10
|
-
<a href="#the-six-phase-workflow">Workflow</a> •
|
|
11
11
|
<a href="#skills">Skills</a> •
|
|
12
|
-
<a href="#commands">Commands</a> •
|
|
13
|
-
<a href="#how-it-works">How It Works</a> •
|
|
14
12
|
<a href="#contributing">Contributing</a>
|
|
15
13
|
</p>
|
|
16
14
|
|
|
17
15
|
---
|
|
18
16
|
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
| Version | Package Manager | Status | Branch |
|
|
22
|
-
|---------|-----------------|------------|------------------------------------------------------------------------|
|
|
23
|
-
| 2.x | npm | **Active** | `main` |
|
|
24
|
-
| 1.x | Composer | Deprecated | [`v1`](https://github.com/leeovery/claude-technical-workflows/tree/v1) |
|
|
25
|
-
|
|
26
|
-
## About
|
|
17
|
+
## What is this?
|
|
27
18
|
|
|
28
19
|
A six-phase workflow for Claude Code that captures context, decisions, and rationale before any code is written, then implements and validates the work against those artifacts.
|
|
29
20
|
|
|
@@ -47,7 +38,22 @@ Review → Validate against spec
|
|
|
47
38
|
|
|
48
39
|
**Model compatibility:** These skills have been developed and refined for Claude Code running on **Opus 4.5**. Different models may exhibit different edge cases, and future model releases may require adjustments to the prompts and workflows.
|
|
49
40
|
|
|
50
|
-
|
|
41
|
+
### Quick Install
|
|
42
|
+
|
|
43
|
+
**Marketplace** (cached globally):
|
|
44
|
+
```
|
|
45
|
+
/plugin marketplace add leeovery/claude-plugins-marketplace
|
|
46
|
+
/plugin install claude-technical-workflows@claude-plugins-marketplace
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**npm** (copied to your repo):
|
|
50
|
+
```bash
|
|
51
|
+
npm install -D @leeovery/claude-technical-workflows
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
See [Installation](#installation) for details and trade-offs.
|
|
55
|
+
|
|
56
|
+
## How do I use it?
|
|
51
57
|
|
|
52
58
|
You have two entry points:
|
|
53
59
|
|
|
@@ -84,12 +90,10 @@ Run the command directly or ask Claude to run it. Each command gathers the conte
|
|
|
84
90
|
|
|
85
91
|
## Installation
|
|
86
92
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
|
90
|
-
|
|
91
|
-
| **Marketplace** | Local Claude Code | Simple install, skills cached globally |
|
|
92
|
-
| **npm** | Claude Code for Web | Skills copied to repo, requires npm |
|
|
93
|
+
| Method | Where files live | Best for |
|
|
94
|
+
|--------|------------------|----------|
|
|
95
|
+
| **Marketplace** | `~/.claude/plugins/` (global cache) | Quick setup, don't need files in repo |
|
|
96
|
+
| **npm** | `.claude/` in your project | Ownership, version control, Claude Code for Web |
|
|
93
97
|
|
|
94
98
|
### Option 1: Claude Marketplace
|
|
95
99
|
|
|
@@ -98,15 +102,15 @@ Two installation methods are available:
|
|
|
98
102
|
/plugin install claude-technical-workflows@claude-plugins-marketplace
|
|
99
103
|
```
|
|
100
104
|
|
|
101
|
-
|
|
105
|
+
Skills are cached globally. They won't be available in Claude Code for Web since files aren't in your repository.
|
|
102
106
|
|
|
103
|
-
### Option 2: npm
|
|
107
|
+
### Option 2: npm
|
|
104
108
|
|
|
105
109
|
```bash
|
|
106
110
|
npm install -D @leeovery/claude-technical-workflows
|
|
107
111
|
```
|
|
108
112
|
|
|
109
|
-
Skills are copied to `.claude/`
|
|
113
|
+
Skills are copied to `.claude/` and can be committed—giving you ownership and making them available everywhere including Claude Code for Web.
|
|
110
114
|
|
|
111
115
|
<details>
|
|
112
116
|
<summary>pnpm users</summary>
|
|
@@ -1,36 +1,218 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Start a technical discussion
|
|
2
|
+
description: Start a technical discussion. Discovers research and existing discussions, offers multiple entry paths, and invokes the technical-discussion skill.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
Invoke the **technical-discussion** skill for this conversation.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Instructions
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Follow these steps EXACTLY as written. Do not skip steps or combine them. Present output using the EXACT format shown in examples - do not simplify or alter the formatting.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Before beginning, discover existing work and determine the best entry path.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- What sparked this discussion?
|
|
15
|
-
- What problem are we trying to solve?
|
|
16
|
-
- Why are we discussing this now?
|
|
13
|
+
## Important
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
- Is there any background information I need to understand before we begin?
|
|
20
|
-
- Are there specific concepts, technologies, or architectures I should know about?
|
|
21
|
-
- Any constraints, requirements, or limitations I should be aware of?
|
|
15
|
+
Use simple, individual commands. Never combine multiple operations into bash loops or one-liners. Execute commands one at a time.
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
- Are there specific files in this repository I should read first?
|
|
25
|
-
- Should I explore any particular directories or components?
|
|
26
|
-
- Is there existing code related to this discussion?
|
|
17
|
+
## Step 1: Discover Existing Work
|
|
27
18
|
|
|
28
|
-
|
|
19
|
+
Scan the codebase for research and discussions:
|
|
29
20
|
|
|
30
|
-
|
|
21
|
+
1. **Find research**: Look in `docs/workflow/research/`
|
|
22
|
+
- Run `ls docs/workflow/research/` to list research files
|
|
23
|
+
- Note which files exist (may include `exploration.md` and semantic files like `market-landscape.md`)
|
|
24
|
+
|
|
25
|
+
2. **Find discussions**: Look in `docs/workflow/discussion/`
|
|
26
|
+
- Run `ls docs/workflow/discussion/` to list discussion files
|
|
27
|
+
- Each file is named `{topic}.md`
|
|
28
|
+
|
|
29
|
+
3. **Check discussion status**: For each discussion file
|
|
30
|
+
- Run `head -10 docs/workflow/discussion/{topic}.md` to extract the `Status:` field
|
|
31
|
+
- Status values: `Exploring`, `Deciding`, or `Concluded`
|
|
32
|
+
- Do NOT use bash loops - run separate commands for each file
|
|
33
|
+
|
|
34
|
+
## Step 2: Present Workflow State and Options
|
|
35
|
+
|
|
36
|
+
Present the workflow state and available options based on what was discovered.
|
|
37
|
+
|
|
38
|
+
**Format:**
|
|
39
|
+
```
|
|
40
|
+
📂 Workflow state:
|
|
41
|
+
📚 Research: {count} files found / None found
|
|
42
|
+
💬 Discussions: {count} existing / None yet
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Then present the appropriate options:
|
|
46
|
+
|
|
47
|
+
**If research AND discussions exist:**
|
|
48
|
+
```
|
|
49
|
+
How would you like to proceed?
|
|
50
|
+
|
|
51
|
+
1. **From research** - Analyze research and suggest undiscussed topics
|
|
52
|
+
2. **Continue discussion** - Resume an existing discussion
|
|
53
|
+
3. **Fresh topic** - Start a new discussion
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**If ONLY research exists:**
|
|
57
|
+
```
|
|
58
|
+
How would you like to proceed?
|
|
59
|
+
|
|
60
|
+
1. **From research** - Analyze research and suggest topics to discuss
|
|
61
|
+
2. **Fresh topic** - Start a new discussion
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**If ONLY discussions exist:**
|
|
65
|
+
```
|
|
66
|
+
How would you like to proceed?
|
|
67
|
+
|
|
68
|
+
1. **Continue discussion** - Resume an existing discussion
|
|
69
|
+
2. **Fresh topic** - Start a new discussion
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**If NOTHING exists:**
|
|
73
|
+
```
|
|
74
|
+
Starting fresh - no prior research or discussions found.
|
|
75
|
+
|
|
76
|
+
What topic would you like to discuss?
|
|
77
|
+
```
|
|
78
|
+
Then skip to Step 5 (Fresh topic path).
|
|
79
|
+
|
|
80
|
+
Wait for the user to choose before proceeding.
|
|
81
|
+
|
|
82
|
+
## Step 3A: "From research" Path
|
|
83
|
+
|
|
84
|
+
Read each research file and analyze the content to extract key themes and potential discussion topics. For each theme:
|
|
85
|
+
- Note the source file and relevant line numbers
|
|
86
|
+
- Summarize what the theme is about in 1-2 sentences
|
|
87
|
+
|
|
88
|
+
Cross-reference with existing discussions to identify what has and hasn't been discussed.
|
|
89
|
+
|
|
90
|
+
**Present findings:**
|
|
91
|
+
```
|
|
92
|
+
🔍 Analyzing research documents...
|
|
93
|
+
|
|
94
|
+
💡 Topics identified:
|
|
95
|
+
|
|
96
|
+
✨ {Theme name}
|
|
97
|
+
Source: {filename}.md (lines {start}-{end})
|
|
98
|
+
"{Brief 1-2 sentence summary of the theme and what needs deciding}"
|
|
99
|
+
|
|
100
|
+
✨ {Another theme}
|
|
101
|
+
Source: {filename}.md (lines {start}-{end})
|
|
102
|
+
"{Brief summary}"
|
|
103
|
+
|
|
104
|
+
✅ {Already discussed theme} → discussed in {topic}.md
|
|
105
|
+
Source: {filename}.md (lines {start}-{end})
|
|
106
|
+
"{Brief summary}"
|
|
107
|
+
|
|
108
|
+
Which topic would you like to discuss? (Or describe something else)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Key:**
|
|
112
|
+
- ✨ = Undiscussed topic (potential new discussion)
|
|
113
|
+
- ✅ = Already has a corresponding discussion
|
|
114
|
+
|
|
115
|
+
**Important:** Keep track of the source file and line numbers for the chosen topic - this will be passed to the skill.
|
|
116
|
+
|
|
117
|
+
Wait for the user to choose before proceeding to Step 4.
|
|
118
|
+
|
|
119
|
+
## Step 3B: "Continue discussion" Path
|
|
120
|
+
|
|
121
|
+
List existing discussions with their status:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
💬 Existing discussions:
|
|
125
|
+
|
|
126
|
+
⚡ {topic}.md — {Status}
|
|
127
|
+
"{Brief description from context section}"
|
|
128
|
+
|
|
129
|
+
⚡ {topic}.md — {Status}
|
|
130
|
+
"{Brief description}"
|
|
131
|
+
|
|
132
|
+
✅ {topic}.md — Concluded
|
|
133
|
+
"{Brief description}"
|
|
134
|
+
|
|
135
|
+
Which discussion would you like to continue?
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Key:**
|
|
139
|
+
- ⚡ = In progress (Exploring or Deciding)
|
|
140
|
+
- ✅ = Concluded (can still be continued/reopened)
|
|
141
|
+
|
|
142
|
+
Wait for the user to choose, then proceed to Step 4.
|
|
143
|
+
|
|
144
|
+
## Step 3C: "Fresh topic" Path
|
|
145
|
+
|
|
146
|
+
Proceed directly to Step 4.
|
|
147
|
+
|
|
148
|
+
## Step 4: Gather Context
|
|
149
|
+
|
|
150
|
+
Gather context based on the chosen path.
|
|
151
|
+
|
|
152
|
+
**If starting new discussion (from research or fresh):**
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
## New discussion: {topic}
|
|
156
|
+
|
|
157
|
+
Before we begin:
|
|
158
|
+
|
|
159
|
+
1. What's the core problem or decision we need to work through?
|
|
160
|
+
|
|
161
|
+
2. Any constraints or context I should know about?
|
|
162
|
+
|
|
163
|
+
3. Are there specific files in the codebase I should review first?
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Wait for responses before proceeding.
|
|
167
|
+
|
|
168
|
+
**If continuing existing discussion:**
|
|
169
|
+
|
|
170
|
+
Read the existing discussion document first, then ask:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
## Continuing: {topic}
|
|
174
|
+
|
|
175
|
+
I've read the existing discussion.
|
|
176
|
+
|
|
177
|
+
What would you like to focus on in this session?
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Wait for response before proceeding.
|
|
181
|
+
|
|
182
|
+
## Step 5: Invoke Discussion Skill
|
|
183
|
+
|
|
184
|
+
Begin the discussion session with appropriate context based on the path taken.
|
|
185
|
+
|
|
186
|
+
**If from research:**
|
|
187
|
+
```
|
|
188
|
+
Discussion session for: {topic}
|
|
189
|
+
Output: docs/workflow/discussion/{topic}.md
|
|
190
|
+
|
|
191
|
+
## Research Reference
|
|
192
|
+
Source: docs/workflow/research/{filename}.md (lines {start}-{end})
|
|
193
|
+
Summary: {the 1-2 sentence summary from Step 3A}
|
|
194
|
+
|
|
195
|
+
Begin discussion using the technical-discussion skill.
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**If continuing or fresh:**
|
|
199
|
+
```
|
|
200
|
+
Discussion session for: {topic}
|
|
201
|
+
Source: {existing discussion | fresh}
|
|
202
|
+
Output: docs/workflow/discussion/{topic}.md
|
|
203
|
+
|
|
204
|
+
Begin discussion using the technical-discussion skill.
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Setup:**
|
|
31
208
|
- Ensure discussion directory exists: `docs/workflow/discussion/`
|
|
32
|
-
-
|
|
33
|
-
-
|
|
209
|
+
- If new: Create file using the template structure
|
|
210
|
+
- If continuing: Work with existing file
|
|
34
211
|
- Commit frequently at natural discussion breaks
|
|
35
212
|
|
|
36
|
-
|
|
213
|
+
## Notes
|
|
214
|
+
|
|
215
|
+
- Ask questions clearly and wait for responses before proceeding
|
|
216
|
+
- Discussion captures WHAT and WHY - don't jump to specifications or implementation
|
|
217
|
+
- The goal is to work through edge cases, debates, and decisions before planning
|
|
218
|
+
- Commit the discussion document frequently during the session
|
package/package.json
CHANGED
|
@@ -22,12 +22,18 @@ You're at step 5. Execute the plan. Don't re-debate decisions.
|
|
|
22
22
|
|
|
23
23
|
## Hard Rules
|
|
24
24
|
|
|
25
|
+
**MANDATORY. No exceptions. Violating these rules invalidates the work.**
|
|
26
|
+
|
|
25
27
|
1. **No code before tests** - Write the failing test first. Always.
|
|
26
|
-
2. **No test changes to pass** -
|
|
28
|
+
2. **No test changes to pass** - Fix the code, not the test.
|
|
27
29
|
3. **No scope expansion** - If it's not in the plan, don't build it.
|
|
28
30
|
4. **No assumptions** - Uncertain? Check specification. Still uncertain? Stop and ask.
|
|
29
31
|
5. **Commit after green** - Every passing test = commit point.
|
|
30
32
|
|
|
33
|
+
**Pragmatic TDD**: The discipline is test-first sequencing, not artificial minimalism. Write complete, functional implementations - don't fake it with hardcoded returns. "Minimal" means no gold-plating beyond what the test requires.
|
|
34
|
+
|
|
35
|
+
See **[tdd-workflow.md](references/tdd-workflow.md)** for the full TDD cycle, violation recovery, and guidance on when tests can change.
|
|
36
|
+
|
|
31
37
|
## Workflow
|
|
32
38
|
|
|
33
39
|
### IMPORTANT: Setup Instructions
|
|
@@ -50,24 +56,20 @@ Complete ALL setup steps before proceeding to implementation work.
|
|
|
50
56
|
- Load the output adapter: `skills/technical-planning/references/output-{format}.md`
|
|
51
57
|
- Follow the **Implementation** section for how to read tasks and update progress
|
|
52
58
|
|
|
53
|
-
3. **
|
|
59
|
+
3. **Read the TDD workflow** - Load **[tdd-workflow.md](references/tdd-workflow.md)** before writing any code. This is mandatory.
|
|
60
|
+
|
|
61
|
+
4. **Validate scope** (if specific phase or task was requested)
|
|
54
62
|
- If the requested phase or task doesn't exist in the plan, STOP immediately
|
|
55
63
|
- Ask the user for clarification - don't assume or proceed with a different scope
|
|
56
64
|
- Wait for the user to either correct the scope or ask you to stop
|
|
57
65
|
|
|
58
|
-
|
|
59
|
-
- Announce phase start
|
|
60
|
-
-
|
|
61
|
-
- For each task:
|
|
62
|
-
- Derive test from task's micro acceptance criteria
|
|
63
|
-
- Write failing test
|
|
64
|
-
- Implement minimal code to pass
|
|
65
|
-
- Refactor if needed (only when green)
|
|
66
|
-
- Commit
|
|
66
|
+
5. **For each phase**:
|
|
67
|
+
- Announce phase start and review acceptance criteria
|
|
68
|
+
- For each task: follow the TDD cycle loaded in step 3
|
|
67
69
|
- Verify all phase acceptance criteria met
|
|
68
70
|
- **Ask user before proceeding to next phase**
|
|
69
71
|
|
|
70
|
-
|
|
72
|
+
6. **Reference specification** when rationale unclear
|
|
71
73
|
|
|
72
74
|
## Progress Announcements
|
|
73
75
|
|
|
@@ -62,7 +62,7 @@ Each output adapter contains prerequisites and installation instructions for tha
|
|
|
62
62
|
|
|
63
63
|
## Example Setup Document
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
````markdown
|
|
66
66
|
# Environment Setup
|
|
67
67
|
|
|
68
68
|
Instructions for setting up the implementation environment.
|
|
@@ -100,4 +100,4 @@ Run tests to verify setup:
|
|
|
100
100
|
```bash
|
|
101
101
|
php artisan test
|
|
102
102
|
```
|
|
103
|
-
|
|
103
|
+
````
|
|
@@ -21,7 +21,7 @@ Plans live in `docs/workflow/planning/{topic}.md` with phases and tasks.
|
|
|
21
21
|
|
|
22
22
|
For each phase:
|
|
23
23
|
1. Announce phase start with acceptance criteria
|
|
24
|
-
2. For each task:
|
|
24
|
+
2. For each task: follow the TDD cycle in **[tdd-workflow.md](tdd-workflow.md)**
|
|
25
25
|
3. Verify all acceptance criteria met
|
|
26
26
|
4. **Wait for user confirmation before next phase**
|
|
27
27
|
|
|
@@ -8,56 +8,76 @@
|
|
|
8
8
|
|
|
9
9
|
RED → GREEN → REFACTOR → COMMIT
|
|
10
10
|
|
|
11
|
-
Repeat for each task.
|
|
11
|
+
Repeat for each task. **Never skip steps. Never reorder.**
|
|
12
|
+
|
|
13
|
+
### Pragmatic TDD
|
|
14
|
+
|
|
15
|
+
This is pragmatic TDD, not purist. The mandatory discipline is **test-first sequencing**:
|
|
16
|
+
- You MUST write a failing test before implementation
|
|
17
|
+
- You MUST see it fail for the right reason
|
|
18
|
+
- You MUST NOT change tests to make broken code pass
|
|
19
|
+
|
|
20
|
+
But write **complete, functional implementations** - don't artificially minimize with hardcoded returns or fake values that you'll "fix later". "Minimal" means no gold-plating beyond what the test requires, not "return 42 and triangulate".
|
|
21
|
+
|
|
22
|
+
## TDD Violation Recovery
|
|
23
|
+
|
|
24
|
+
**If you catch yourself violating TDD, stop immediately and recover:**
|
|
25
|
+
|
|
26
|
+
| Violation | Recovery |
|
|
27
|
+
|-----------|----------|
|
|
28
|
+
| Wrote code before test | DELETE the code. Write the failing test. Then rewrite the code. |
|
|
29
|
+
| Multiple failing tests | Comment out all but one. Fix that one. Uncomment next. |
|
|
30
|
+
| Test passes immediately | Suspicious. Verify the test actually exercises your code. Check for false positives. |
|
|
31
|
+
| Changed test to make code pass | REVERT the test change. Fix the implementation instead. |
|
|
32
|
+
| "While I'm here" improvement | STOP. Is it in the plan? No? Don't do it. |
|
|
33
|
+
|
|
34
|
+
**These are not suggestions. Skipping recovery corrupts the entire TDD discipline.**
|
|
12
35
|
|
|
13
36
|
## RED: Write Failing Test
|
|
14
37
|
|
|
15
38
|
1. Read task's micro acceptance criteria
|
|
16
39
|
2. Write test asserting that behavior
|
|
17
|
-
3. Run test -
|
|
18
|
-
4. Verify it fails for the right reason
|
|
40
|
+
3. Run test - **MUST fail**
|
|
41
|
+
4. Verify it fails for the **right reason** (not syntax error, not missing import)
|
|
19
42
|
|
|
20
43
|
**Derive tests from plan**: Task's micro acceptance becomes your first test. Edge cases become additional tests.
|
|
21
44
|
|
|
22
45
|
**Write test names first**: List all test names before writing bodies. Confirm coverage matches acceptance criteria.
|
|
23
46
|
|
|
24
|
-
|
|
47
|
+
**No implementation code exists yet.** If you're tempted to "just sketch out the class first" - don't. The test comes first. Always.
|
|
25
48
|
|
|
26
|
-
|
|
27
|
-
|
|
49
|
+
## GREEN: Implementation
|
|
50
|
+
|
|
51
|
+
Write complete, functional code that passes:
|
|
52
|
+
- No extra features beyond what the test requires
|
|
28
53
|
- No "while I'm here" improvements
|
|
29
54
|
- No edge cases not yet tested
|
|
30
55
|
|
|
31
|
-
If you think "I should also handle X" -
|
|
56
|
+
If you think "I should also handle X" - STOP. Write a test for X first.
|
|
32
57
|
|
|
33
|
-
**One test at a time**: Write →
|
|
58
|
+
**One test at a time**: Write test → Run (fails) → Implement → Run (passes) → Commit → Next
|
|
34
59
|
|
|
35
60
|
## REFACTOR: Only When Green
|
|
36
61
|
|
|
37
62
|
**Do**: Remove duplication, improve naming, extract methods
|
|
38
63
|
**Don't**: Touch code outside current task, optimize prematurely
|
|
39
64
|
|
|
40
|
-
Run tests after. If they fail, undo.
|
|
65
|
+
Run tests after. If they fail, undo the refactor.
|
|
41
66
|
|
|
42
67
|
## COMMIT: After Every Green
|
|
43
68
|
|
|
44
|
-
Commit with descriptive message referencing the task.
|
|
69
|
+
Commit with descriptive message referencing the task. This is non-negotiable - it creates recovery points.
|
|
45
70
|
|
|
46
71
|
## When Tests CAN Change
|
|
47
72
|
|
|
48
|
-
- Genuine bug in test
|
|
49
|
-
-
|
|
73
|
+
- Genuine bug in test logic
|
|
74
|
+
- Test asserts implementation details, not behavior
|
|
50
75
|
- Missing setup/fixtures
|
|
51
76
|
|
|
52
77
|
## When Tests CANNOT Change
|
|
53
78
|
|
|
54
|
-
- To make broken code pass
|
|
55
|
-
- To avoid difficult
|
|
56
|
-
- To skip temporarily
|
|
57
|
-
|
|
58
|
-
## Red Flags
|
|
79
|
+
- To make broken code pass → **fix the code**
|
|
80
|
+
- To avoid difficult implementation → **the test IS the requirement**
|
|
81
|
+
- To skip temporarily → **fix it now or escalate**
|
|
59
82
|
|
|
60
|
-
|
|
61
|
-
- Multiple failing tests → work on one at a time
|
|
62
|
-
- Test passes immediately → investigate
|
|
63
|
-
- Changing tests frequently → design unclear, review plan
|
|
83
|
+
Changing a test to pass is admitting the implementation is wrong and hiding it. Don't.
|