mindsystem-cc 3.10.0 → 3.11.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.
- package/README.md +3 -6
- package/agents/ms-designer.md +8 -8
- package/agents/ms-executor.md +14 -163
- package/agents/ms-plan-checker.md +2 -3
- package/agents/ms-plan-writer.md +5 -11
- package/agents/ms-roadmapper.md +101 -16
- package/agents/ms-verify-fixer.md +1 -1
- package/commands/ms/complete-milestone.md +1 -1
- package/commands/ms/create-roadmap.md +126 -56
- package/commands/ms/design-phase.md +12 -10
- package/commands/ms/execute-phase.md +0 -9
- package/commands/ms/help.md +24 -35
- package/commands/ms/new-milestone.md +184 -80
- package/commands/ms/new-project.md +3 -3
- package/commands/ms/research-project.md +2 -2
- package/commands/ms/review-design.md +9 -5
- package/commands/ms/verify-work.md +1 -1
- package/mindsystem/references/continuation-format.md +2 -3
- package/mindsystem/references/design-directions.md +1 -1
- package/mindsystem/references/mock-patterns.md +48 -0
- package/mindsystem/references/plan-format.md +2 -129
- package/mindsystem/references/routing/between-milestones-routing.md +5 -7
- package/mindsystem/references/scope-estimation.md +3 -3
- package/mindsystem/templates/config.json +0 -2
- package/mindsystem/templates/design.md +1 -1
- package/mindsystem/templates/milestone-context.md +76 -0
- package/mindsystem/templates/phase-prompt.md +6 -142
- package/mindsystem/templates/summary.md +24 -0
- package/mindsystem/workflows/complete-milestone.md +27 -8
- package/mindsystem/workflows/execute-phase.md +35 -124
- package/mindsystem/workflows/execute-plan.md +12 -517
- package/mindsystem/workflows/generate-mocks.md +74 -0
- package/mindsystem/workflows/mockup-generation.md +1 -1
- package/mindsystem/workflows/plan-phase.md +7 -24
- package/mindsystem/workflows/verify-work.md +97 -17
- package/package.json +1 -1
- package/scripts/__pycache__/compare_mockups.cpython-314.pyc +0 -0
- package/scripts/compare_mockups.py +219 -0
- package/skills/flutter-code-quality/SKILL.md +1 -1
- package/skills/flutter-code-simplification/SKILL.md +1 -1
- package/skills/flutter-senior-review/AGENTS.md +1 -1
- package/skills/flutter-senior-review/SKILL.md +1 -1
- package/commands/ms/define-requirements.md +0 -128
- package/mindsystem/references/checkpoint-detection.md +0 -50
- package/mindsystem/references/checkpoints.md +0 -788
- package/mindsystem/workflows/create-milestone.md +0 -243
- package/mindsystem/workflows/discuss-milestone.md +0 -310
|
@@ -1,29 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ms:new-milestone
|
|
3
|
-
description: Start a new milestone
|
|
3
|
+
description: Start a new milestone — discover what to build, update PROJECT.md, create context for downstream
|
|
4
4
|
argument-hint: "[milestone name, e.g., 'v1.1 Notifications']"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
8
8
|
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
9
11
|
- AskUserQuestion
|
|
10
12
|
---
|
|
11
13
|
|
|
12
14
|
<objective>
|
|
13
|
-
Start a new milestone by
|
|
15
|
+
Start a new milestone by helping the user discover what to build next, then updating PROJECT.md and creating MILESTONE-CONTEXT.md for downstream consumption.
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
Self-contained command — three phases: Orient (load context, present directions), Deepen (collaborative discovery), Commit (update files, route forward).
|
|
16
18
|
|
|
17
|
-
Output: Updated PROJECT.md, routes to
|
|
19
|
+
Output: Updated PROJECT.md, new MILESTONE-CONTEXT.md, routes to create-roadmap or research-project
|
|
18
20
|
</objective>
|
|
19
21
|
|
|
20
22
|
<execution_context>
|
|
21
23
|
@~/.claude/mindsystem/references/questioning.md
|
|
22
24
|
@~/.claude/mindsystem/templates/project.md
|
|
25
|
+
@~/.claude/mindsystem/templates/milestone-context.md
|
|
23
26
|
</execution_context>
|
|
24
27
|
|
|
25
28
|
<context>
|
|
26
|
-
Milestone name: $ARGUMENTS (optional
|
|
29
|
+
Milestone name: $ARGUMENTS (optional — will emerge during discovery if not provided)
|
|
27
30
|
|
|
28
31
|
**Load project context:**
|
|
29
32
|
@.planning/PROJECT.md
|
|
@@ -34,149 +37,249 @@ Milestone name: $ARGUMENTS (optional - will prompt if not provided)
|
|
|
34
37
|
|
|
35
38
|
<process>
|
|
36
39
|
|
|
40
|
+
## Phase 1: Orient
|
|
41
|
+
|
|
37
42
|
1. **Load context:**
|
|
38
|
-
- Read PROJECT.md (existing project,
|
|
43
|
+
- Read PROJECT.md (existing project, validated requirements, decisions)
|
|
39
44
|
- Read MILESTONES.md (what shipped previously)
|
|
40
45
|
- Read STATE.md (pending todos, blockers)
|
|
46
|
+
- Read config.json (project settings)
|
|
41
47
|
- Calculate previous milestone version from MILESTONES.md (e.g., if last shipped was v1.0, previous=1.0)
|
|
42
48
|
|
|
43
|
-
2. **
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
49
|
+
2. **Check for active milestone:**
|
|
50
|
+
|
|
51
|
+
If STATE.md or ROADMAP.md indicates a milestone is in progress:
|
|
52
|
+
|
|
53
|
+
Use AskUserQuestion:
|
|
54
|
+
- header: "Active milestone"
|
|
55
|
+
- question: "There's a milestone in progress (v[X.Y]). What do you want to do?"
|
|
56
|
+
- options:
|
|
57
|
+
- "Complete it first" — run /ms:complete-milestone
|
|
58
|
+
- "Add phases to it" — run /ms:add-phase
|
|
59
|
+
- "Continue anyway" — discuss next milestone scope
|
|
60
|
+
|
|
61
|
+
If "Complete it first" or "Add phases to it": present the relevant command and stop.
|
|
62
|
+
If "Continue anyway": proceed.
|
|
63
|
+
|
|
64
|
+
3. **Strategic assessment (silent — do not output this step):**
|
|
65
|
+
- Check for previous milestone artifacts using calculated version:
|
|
48
66
|
- `.planning/milestones/v{VERSION}-DECISIONS.md` (if exists)
|
|
49
67
|
- `.planning/milestones/v{VERSION}-MILESTONE-AUDIT.md` (if exists)
|
|
50
68
|
- `.planning/TECH-DEBT.md` (if exists)
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
3. **Present suggested directions:**
|
|
69
|
+
- `.planning/LEARNINGS.md` (if exists)
|
|
70
|
+
- Identify: outstanding tech debt, untested assumptions, high-impact gaps, unaddressed requirements
|
|
71
|
+
- This is background analysis — synthesize silently, surface through suggestions in step 4
|
|
55
72
|
|
|
56
|
-
|
|
73
|
+
4. **Present brief context and suggested directions:**
|
|
57
74
|
|
|
58
75
|
```
|
|
76
|
+
## Last Milestone
|
|
77
|
+
|
|
78
|
+
v[X.Y] [Name] — [key accomplishments, 1-2 lines]
|
|
79
|
+
|
|
59
80
|
## Suggested Directions
|
|
60
81
|
|
|
61
|
-
- **[Direction 1]** — [brief rationale]
|
|
82
|
+
- **[Direction 1]** — [brief rationale from tech debt, audit, or strategic gaps]
|
|
62
83
|
- **[Direction 2]** — [brief rationale]
|
|
63
84
|
- **[Direction 3]** — [brief rationale]
|
|
64
85
|
```
|
|
65
86
|
|
|
66
87
|
Sources for suggestions:
|
|
67
88
|
- High-impact tech debt from TECH-DEBT.md or MILESTONE-AUDIT.md
|
|
89
|
+
- Untested assumptions from previous audit
|
|
68
90
|
- Unaddressed requirements from previous milestones
|
|
69
91
|
- Strategic features inferred from PROJECT.md's problem/audience/USP
|
|
70
|
-
|
|
71
|
-
Evaluate each by impact on user engagement, revenue, or growth.
|
|
92
|
+
- Pending todos from STATE.md
|
|
72
93
|
|
|
73
94
|
If no meaningful artifacts exist (first milestone after v1.0), base suggestions purely on PROJECT.md.
|
|
74
95
|
|
|
75
|
-
|
|
96
|
+
5. **Freeform opening:**
|
|
76
97
|
|
|
77
98
|
Ask inline (freeform text, NOT AskUserQuestion):
|
|
78
99
|
|
|
79
100
|
"What do you want to build next?"
|
|
80
101
|
|
|
81
|
-
The user can pick
|
|
102
|
+
The user can pick a suggestion, combine them, describe their own idea, share external context (specs, docs, analytics), or ask for help thinking it through.
|
|
82
103
|
|
|
83
|
-
|
|
84
|
-
- Based on what the user said, ask follow-up questions using AskUserQuestion
|
|
85
|
-
- Challenge vagueness, make abstract concrete
|
|
86
|
-
- Consult `questioning.md` for techniques
|
|
87
|
-
- Weave in relevant previous context (tech debt, pending todos) as natural follow-ups when relevant, not as a wall of info upfront
|
|
88
|
-
- Continue until clear goals emerge
|
|
104
|
+
## Phase 2: Deepen
|
|
89
105
|
|
|
90
|
-
6. **
|
|
106
|
+
6. **Adaptive depth based on response clarity:**
|
|
91
107
|
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
- options:
|
|
96
|
-
- "Update PROJECT.md" — Let's move forward
|
|
97
|
-
- "Keep exploring" — I want to share more / ask me more
|
|
108
|
+
- **Clear, detailed response** → brief confirmation ("Sounds like you want X, Y, Z — let me confirm a few things"), then move toward Phase 3 quickly
|
|
109
|
+
- **Vague response** → probe with AskUserQuestion, explore features, challenge vagueness
|
|
110
|
+
- **External context shared** → integrate it, clarify implications, ask follow-ups
|
|
98
111
|
|
|
99
|
-
|
|
112
|
+
7. **Follow the thread:**
|
|
113
|
+
- Dig into what they said before switching topics
|
|
114
|
+
- Challenge vagueness, make abstract concrete (questioning.md techniques)
|
|
115
|
+
- "When you say X, do you mean A or B?"
|
|
116
|
+
- "Walk me through what that looks like"
|
|
117
|
+
- "What's the simplest version of this that would be useful?"
|
|
100
118
|
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
119
|
+
8. **Probe for edges:**
|
|
120
|
+
- Simplest useful version vs full vision
|
|
121
|
+
- MVP vs complete — what can wait?
|
|
122
|
+
- Constraints: technical, time, dependencies
|
|
123
|
+
- What's explicitly NOT part of this milestone?
|
|
105
124
|
|
|
106
|
-
|
|
125
|
+
9. **Surface previous context organically:**
|
|
126
|
+
- When relevant to what the user described, weave in tech debt, untested assumptions, pending todos
|
|
127
|
+
- NOT as a wall of info upfront — only when it connects to their stated direction
|
|
128
|
+
- "That relates to [tech debt item] from last milestone — want to address that too?"
|
|
107
129
|
|
|
108
|
-
|
|
130
|
+
10. **Synthesize periodically:**
|
|
109
131
|
|
|
110
|
-
|
|
111
|
-
## Current Milestone: v[X.Y] [Name]
|
|
132
|
+
When you have a clear picture forming:
|
|
112
133
|
|
|
113
|
-
|
|
134
|
+
```
|
|
135
|
+
Here's what I'm hearing:
|
|
114
136
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- [Feature 3]
|
|
119
|
-
```
|
|
137
|
+
**Features:**
|
|
138
|
+
- [Feature 1]: [brief description]
|
|
139
|
+
- [Feature 2]: [brief description]
|
|
120
140
|
|
|
121
|
-
|
|
141
|
+
**Priority:** [what matters most]
|
|
142
|
+
**Scope boundary:** [what's NOT included]
|
|
143
|
+
```
|
|
122
144
|
|
|
123
|
-
|
|
145
|
+
11. **Decision gate:**
|
|
124
146
|
|
|
125
|
-
|
|
147
|
+
Use AskUserQuestion:
|
|
148
|
+
- header: "Ready?"
|
|
149
|
+
- question: "Ready to create the milestone?"
|
|
150
|
+
- options:
|
|
151
|
+
- "Create milestone" — update PROJECT.md and generate context
|
|
152
|
+
- "Keep exploring" — I want to share more or ask me more
|
|
153
|
+
- "Let me add context" — I have specs/docs/details to share
|
|
126
154
|
|
|
127
|
-
|
|
128
|
-
|
|
155
|
+
If "Keep exploring" or "Let me add context" → loop back to step 6.
|
|
156
|
+
Loop until "Create milestone" selected.
|
|
129
157
|
|
|
130
|
-
|
|
131
|
-
Plan: —
|
|
132
|
-
Status: Defining requirements
|
|
133
|
-
Last activity: [today] — Milestone v[X.Y] started
|
|
134
|
-
```
|
|
158
|
+
## Phase 3: Commit
|
|
135
159
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
```
|
|
160
|
+
12. **Determine milestone version:**
|
|
161
|
+
- Parse last version from MILESTONES.md
|
|
162
|
+
- Suggest next version (v1.0 → v1.1, or v2.0 for major shifts)
|
|
163
|
+
- Confirm with user via AskUserQuestion
|
|
141
164
|
|
|
142
|
-
|
|
165
|
+
13. **Present milestone summary:**
|
|
143
166
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
167
|
+
```
|
|
168
|
+
## Milestone Summary
|
|
169
|
+
|
|
170
|
+
**Version:** v[X.Y] [Name]
|
|
171
|
+
**Goal:** [One sentence]
|
|
172
|
+
**Target features:**
|
|
173
|
+
- [Feature 1]
|
|
174
|
+
- [Feature 2]
|
|
175
|
+
- [Feature 3]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Use AskUserQuestion:
|
|
179
|
+
- header: "Confirm"
|
|
180
|
+
- question: "Look good?"
|
|
181
|
+
- options:
|
|
182
|
+
- "Looks good" — proceed
|
|
183
|
+
- "Adjust" — let me change something
|
|
184
|
+
|
|
185
|
+
If "Adjust" → ask what to change, update, re-confirm.
|
|
186
|
+
|
|
187
|
+
14. **Update PROJECT.md:**
|
|
153
188
|
|
|
154
|
-
|
|
189
|
+
Add/update these sections:
|
|
155
190
|
|
|
156
|
-
|
|
191
|
+
```markdown
|
|
192
|
+
## Current Milestone: v[X.Y] [Name]
|
|
193
|
+
|
|
194
|
+
**Goal:** [One sentence describing milestone focus]
|
|
195
|
+
|
|
196
|
+
**Target features:**
|
|
197
|
+
- [Feature 1]
|
|
198
|
+
- [Feature 2]
|
|
199
|
+
- [Feature 3]
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Update Active requirements section with new goals.
|
|
203
|
+
Update "Last updated" footer.
|
|
204
|
+
|
|
205
|
+
15. **Write MILESTONE-CONTEXT.md:**
|
|
206
|
+
|
|
207
|
+
Create `.planning/MILESTONE-CONTEXT.md` using template from `~/.claude/mindsystem/templates/milestone-context.md`.
|
|
208
|
+
|
|
209
|
+
Populate from the conversation:
|
|
210
|
+
- Vision — the "why" in user's words
|
|
211
|
+
- Features — with rationale and scope notes
|
|
212
|
+
- External context — any specs, docs, or references shared
|
|
213
|
+
- Scope boundaries — what's explicitly excluded
|
|
214
|
+
- Priorities — must-have vs nice-to-have
|
|
215
|
+
- Open questions — things needing research
|
|
216
|
+
|
|
217
|
+
16. **Update STATE.md:**
|
|
218
|
+
|
|
219
|
+
```markdown
|
|
220
|
+
## Current Position
|
|
221
|
+
|
|
222
|
+
Phase: Not started (run /ms:create-roadmap)
|
|
223
|
+
Plan: —
|
|
224
|
+
Status: Defining requirements
|
|
225
|
+
Last activity: [today] — Milestone v[X.Y] started
|
|
226
|
+
|
|
227
|
+
Progress: ░░░░░░░░░░ 0%
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Keep Accumulated Context (decisions, blockers) from previous milestone.
|
|
231
|
+
|
|
232
|
+
17. **Git commit:**
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
git add .planning/PROJECT.md .planning/STATE.md .planning/MILESTONE-CONTEXT.md
|
|
236
|
+
git commit -m "$(cat <<'EOF'
|
|
237
|
+
docs: start milestone v[X.Y] [Name]
|
|
238
|
+
EOF
|
|
239
|
+
)"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
18. **Calculate next phase number:**
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
LAST_PHASE=$(ls -d .planning/phases/[0-9]*-* 2>/dev/null | sort -V | tail -1 | grep -oE '[0-9]+' | head -1)
|
|
246
|
+
if [ -n "$LAST_PHASE" ]; then
|
|
247
|
+
NEXT_PHASE=$((10#$LAST_PHASE + 1))
|
|
248
|
+
else
|
|
249
|
+
NEXT_PHASE=1
|
|
250
|
+
fi
|
|
251
|
+
echo "Next milestone phases will start at: Phase $NEXT_PHASE"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
19. **Route to next step:**
|
|
255
|
+
|
|
256
|
+
Based on the conversation, recommend ONE path. If unfamiliar domains or open questions surfaced during discovery, recommend `/ms:research-project`. Otherwise recommend `/ms:create-roadmap`.
|
|
157
257
|
|
|
158
258
|
```
|
|
159
259
|
Milestone v[X.Y] [Name] initialized.
|
|
160
260
|
|
|
161
261
|
PROJECT.md updated with new goals.
|
|
262
|
+
Context saved to MILESTONE-CONTEXT.md
|
|
162
263
|
Phases will start at: Phase $NEXT_PHASE
|
|
163
264
|
|
|
164
265
|
---
|
|
165
266
|
|
|
166
267
|
## ▶ Next Up
|
|
167
268
|
|
|
168
|
-
**[Recommended command
|
|
269
|
+
**[Recommended command]** — [one-line reason from conversation]
|
|
169
270
|
|
|
170
271
|
`/ms:[recommended-command]`
|
|
171
272
|
|
|
172
|
-
|
|
273
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
173
274
|
|
|
174
275
|
---
|
|
175
276
|
|
|
176
277
|
**Also available:** `/ms:[alternative-command]`
|
|
278
|
+
|
|
279
|
+
---
|
|
177
280
|
```
|
|
178
281
|
|
|
179
|
-
|
|
282
|
+
20. **Update last command:**
|
|
180
283
|
- Update `.planning/STATE.md` Last Command field
|
|
181
284
|
- Format: `Last Command: ms:new-milestone $ARGUMENTS | YYYY-MM-DD HH:MM`
|
|
182
285
|
|
|
@@ -185,7 +288,8 @@ Milestone name: $ARGUMENTS (optional - will prompt if not provided)
|
|
|
185
288
|
<success_criteria>
|
|
186
289
|
- PROJECT.md updated with Current Milestone section
|
|
187
290
|
- Active requirements reflect new milestone goals
|
|
291
|
+
- MILESTONE-CONTEXT.md created with vision, features, scope, priorities
|
|
188
292
|
- STATE.md reset for new milestone
|
|
189
293
|
- Git commit made
|
|
190
|
-
- User routed to
|
|
294
|
+
- User routed to create-roadmap (or research-project if unknowns surfaced)
|
|
191
295
|
</success_criteria>
|
|
@@ -305,10 +305,10 @@ Research ecosystem → define requirements → create roadmap. Discovers standar
|
|
|
305
305
|
|
|
306
306
|
`/ms:research-project`
|
|
307
307
|
|
|
308
|
-
**Option B: Define requirements directly** (familiar domains)
|
|
309
|
-
Skip research, define requirements from what you know
|
|
308
|
+
**Option B: Define requirements and roadmap directly** (familiar domains)
|
|
309
|
+
Skip research, define requirements and create roadmap from what you know.
|
|
310
310
|
|
|
311
|
-
`/ms:
|
|
311
|
+
`/ms:create-roadmap`
|
|
312
312
|
|
|
313
313
|
<sub>`/clear` first → fresh context window</sub>
|
|
314
314
|
|
|
@@ -150,7 +150,7 @@ IMPORTANT for subsequent milestones:
|
|
|
150
150
|
</project_context>
|
|
151
151
|
|
|
152
152
|
<downstream_consumer>
|
|
153
|
-
Your FEATURES.md feeds into /ms:
|
|
153
|
+
Your FEATURES.md feeds into /ms:create-roadmap. Categorize clearly:
|
|
154
154
|
- Table stakes (must have or users leave)
|
|
155
155
|
- Differentiators (competitive advantage)
|
|
156
156
|
- Anti-features (things to deliberately NOT build)
|
|
@@ -336,7 +336,7 @@ Key findings:
|
|
|
336
336
|
|
|
337
337
|
---
|
|
338
338
|
## > Next Up
|
|
339
|
-
**Define requirements** - `/ms:
|
|
339
|
+
**Define requirements and create roadmap** - `/ms:create-roadmap`
|
|
340
340
|
<sub>`/clear` first</sub>
|
|
341
341
|
---
|
|
342
342
|
```
|
|
@@ -117,12 +117,16 @@ ls .planning/phases/${PHASE_ARG}-*/*-DESIGN.md 2>/dev/null
|
|
|
117
117
|
|
|
118
118
|
### Step 2.3: Optional Context
|
|
119
119
|
|
|
120
|
-
**
|
|
120
|
+
**Project UI skill (if exists):**
|
|
121
|
+
|
|
122
|
+
Discover project-level skills:
|
|
121
123
|
```bash
|
|
122
|
-
ls .claude/skills
|
|
124
|
+
ls .claude/skills/*/SKILL.md 2>/dev/null
|
|
123
125
|
```
|
|
124
126
|
|
|
125
|
-
If
|
|
127
|
+
If skills found, read the YAML frontmatter (name + description) of each SKILL.md. Identify any skill whose description indicates it provides UI implementation patterns (screens, widgets, components, theming, spacing, visual patterns).
|
|
128
|
+
|
|
129
|
+
If a UI skill is found, load as authoritative source for existing patterns.
|
|
126
130
|
|
|
127
131
|
**Codebase analysis:**
|
|
128
132
|
- Detect platform (Flutter, React, etc.)
|
|
@@ -192,7 +196,7 @@ Apply quality-forcing patterns from `ai-driven-ui-design-system.md`:
|
|
|
192
196
|
|
|
193
197
|
### 3.5: Pattern Alignment
|
|
194
198
|
|
|
195
|
-
If
|
|
199
|
+
If project UI skill or codebase patterns exist:
|
|
196
200
|
- Check for consistent color usage
|
|
197
201
|
- Check for consistent component patterns
|
|
198
202
|
- Check for consistent spacing scale
|
|
@@ -478,7 +482,7 @@ Apply these patterns throughout the review:
|
|
|
478
482
|
|
|
479
483
|
<success_criteria>
|
|
480
484
|
- [ ] Target code scope clarified (via arguments or AskUserQuestion)
|
|
481
|
-
- [ ] Context chain loaded (PROJECT.md, DESIGN.md if exists,
|
|
485
|
+
- [ ] Context chain loaded (PROJECT.md, DESIGN.md if exists, project UI skill)
|
|
482
486
|
- [ ] Code analyzed across all quality dimensions
|
|
483
487
|
- [ ] Retroactive DESIGN.md created if missing
|
|
484
488
|
- [ ] Improvements presented with benefits AND trade-offs
|
|
@@ -41,7 +41,7 @@ Phase: $ARGUMENTS (optional)
|
|
|
41
41
|
2. **Check for active UAT sessions** — Resume or start new
|
|
42
42
|
3. **Find SUMMARY.md files** for the phase
|
|
43
43
|
4. **Extract testable deliverables** from summaries
|
|
44
|
-
5. **Classify tests by mock requirements** —
|
|
44
|
+
5. **Classify tests by mock requirements** — Use SUMMARY.md mock_hints when available; classify inline with keyword heuristics when absent. Confirm data availability with user before batching.
|
|
45
45
|
6. **Group into batches** — By mock type, max 4 per batch, no-mock tests first
|
|
46
46
|
- If any tests require mocks: Read `~/.claude/mindsystem/references/mock-patterns.md` and `~/.claude/mindsystem/workflows/generate-mocks.md` for mock generation guidance
|
|
47
47
|
7. **For each batch:**
|
|
@@ -167,16 +167,15 @@ All 4 phases shipped
|
|
|
167
167
|
|
|
168
168
|
## ▶ Next Up
|
|
169
169
|
|
|
170
|
-
**
|
|
170
|
+
**Start v1.1** — discover what to build next
|
|
171
171
|
|
|
172
|
-
`/ms:
|
|
172
|
+
`/ms:new-milestone`
|
|
173
173
|
|
|
174
174
|
<sub>`/clear` first → fresh context window</sub>
|
|
175
175
|
|
|
176
176
|
---
|
|
177
177
|
|
|
178
178
|
**Also available:**
|
|
179
|
-
- `/ms:new-milestone` — create directly if scope is clear
|
|
180
179
|
- Review accomplishments before moving on
|
|
181
180
|
|
|
182
181
|
---
|
|
@@ -93,7 +93,7 @@ Rule: If you can only tell variants apart by squinting at colors, they are not d
|
|
|
93
93
|
|
|
94
94
|
<existing_aesthetic_constraint>
|
|
95
95
|
|
|
96
|
-
When the project has an existing visual aesthetic (
|
|
96
|
+
When the project has an existing visual aesthetic (project UI skill, established codebase patterns):
|
|
97
97
|
|
|
98
98
|
**ALL variants use the same colors, fonts, and component shapes.** Directions differ ONLY in:
|
|
99
99
|
- Layout and spatial organization
|
|
@@ -16,6 +16,47 @@ Without mocks, testing "error message display" requires actually triggering serv
|
|
|
16
16
|
4. **Removable** — Delete file + remove imports = clean
|
|
17
17
|
</philosophy>
|
|
18
18
|
|
|
19
|
+
<classification_framework>
|
|
20
|
+
|
|
21
|
+
**Two-question framework for mock classification:**
|
|
22
|
+
|
|
23
|
+
For each test, ask two questions in order:
|
|
24
|
+
|
|
25
|
+
1. **Is the observable state transient?**
|
|
26
|
+
- Does it appear briefly during async operations? (loading skeleton, spinner, transition animation)
|
|
27
|
+
- Does it require precise timing to observe? (appears for <1s before real data loads)
|
|
28
|
+
- If YES → `mock_type: "transient_state"` — needs delay/force mock strategy
|
|
29
|
+
|
|
30
|
+
2. **Does the test depend on external data?**
|
|
31
|
+
- Does the feature fetch from an API, database, or external service?
|
|
32
|
+
- Would the test fail without specific data existing locally?
|
|
33
|
+
- If YES → `mock_type: "external_data"` — confirm data availability with user first
|
|
34
|
+
|
|
35
|
+
**Two-tier classification priority:**
|
|
36
|
+
|
|
37
|
+
| Priority | Source | When used |
|
|
38
|
+
|----------|--------|-----------|
|
|
39
|
+
| 1 | SUMMARY.md `mock_hints` | Executor captured hints at build time (including `none` for explicit no-mock) |
|
|
40
|
+
| 2 | Inline classification + keyword heuristics | No `mock_hints` key (legacy summaries) — classify in main context using two-question framework + keywords |
|
|
41
|
+
|
|
42
|
+
**Why keyword matching alone fails:**
|
|
43
|
+
|
|
44
|
+
Domain terms don't map reliably to mock types. "View recipe list" needs external_data mocks but contains no keywords. "Loading skeleton" is transient_state but keyword matching might miss the underlying async dependency. The two-question framework traces UI elements to their data sources instead of pattern-matching descriptions.
|
|
45
|
+
|
|
46
|
+
**Category examples:**
|
|
47
|
+
|
|
48
|
+
| Test | Classification | Reasoning |
|
|
49
|
+
|------|---------------|-----------|
|
|
50
|
+
| "Recipe list loading skeleton" | transient_state | Brief UI state during async fetch — resolves in <1s |
|
|
51
|
+
| "View recipe list" | external_data | Fetches from /api/recipes — data may not exist locally |
|
|
52
|
+
| "Login error message" | error_state | Error response from auth endpoint |
|
|
53
|
+
| "Empty favorites placeholder" | empty_response | Requires zero items in collection |
|
|
54
|
+
| "Premium badge display" | premium_user | Requires premium subscription state |
|
|
55
|
+
| "Offline sync indicator" | offline_state | Requires network disconnection |
|
|
56
|
+
| "Tap login button" | no mock needed | Happy path with available test credentials |
|
|
57
|
+
|
|
58
|
+
</classification_framework>
|
|
59
|
+
|
|
19
60
|
<git_stash_lifecycle>
|
|
20
61
|
|
|
21
62
|
**Why stash?**
|
|
@@ -95,10 +136,12 @@ class TestOverrides {
|
|
|
95
136
|
static bool forceErrorState = false;
|
|
96
137
|
static bool forceEmptyResponse = false;
|
|
97
138
|
static bool forceLoadingState = false;
|
|
139
|
+
static bool forceTransientState = false;
|
|
98
140
|
|
|
99
141
|
// === MOCK DATA ===
|
|
100
142
|
static String mockErrorMessage = 'Simulated error for testing';
|
|
101
143
|
static Duration mockLoadingDelay = const Duration(seconds: 3);
|
|
144
|
+
static Duration mockTransientDelay = const Duration(seconds: 5);
|
|
102
145
|
|
|
103
146
|
static Map<String, dynamic> mockPremiumUser = {
|
|
104
147
|
'id': 'test-user-001',
|
|
@@ -113,6 +156,7 @@ class TestOverrides {
|
|
|
113
156
|
forceErrorState = false;
|
|
114
157
|
forceEmptyResponse = false;
|
|
115
158
|
forceLoadingState = false;
|
|
159
|
+
forceTransientState = false;
|
|
116
160
|
}
|
|
117
161
|
}
|
|
118
162
|
```
|
|
@@ -142,6 +186,10 @@ class UserService {
|
|
|
142
186
|
if (TestOverrides.forceErrorState) {
|
|
143
187
|
throw Exception(TestOverrides.mockErrorMessage);
|
|
144
188
|
}
|
|
189
|
+
// TEST OVERRIDE - Extend transient state (loading skeleton stays visible)
|
|
190
|
+
if (TestOverrides.forceTransientState) {
|
|
191
|
+
await Future.delayed(TestOverrides.mockTransientDelay);
|
|
192
|
+
}
|
|
145
193
|
|
|
146
194
|
// Real implementation
|
|
147
195
|
final response = await _api.get('/items');
|