@polymorphism-tech/morph-spec 4.10.0 → 4.10.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/README.md +2 -2
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/CLAUDE.md +5 -69
- package/framework/agents/backend/api-designer.md +3 -0
- package/framework/agents/backend/dotnet-senior.md +3 -0
- package/framework/agents/backend/ef-modeler.md +2 -0
- package/framework/agents/backend/hangfire-orchestrator.md +2 -0
- package/framework/agents/backend/ms-agent-expert.md +2 -0
- package/framework/agents/frontend/blazor-builder.md +2 -0
- package/framework/agents/frontend/nextjs-expert.md +2 -0
- package/framework/agents/infrastructure/azure-architect.md +2 -0
- package/framework/agents/infrastructure/azure-deploy-specialist.md +2 -0
- package/framework/agents/infrastructure/bicep-architect.md +2 -0
- package/framework/agents/infrastructure/container-specialist.md +2 -0
- package/framework/agents/infrastructure/devops-engineer.md +3 -0
- package/framework/agents/infrastructure/infra-architect.md +3 -0
- package/framework/agents/integrations/asaas-financial.md +2 -0
- package/framework/agents/integrations/azure-identity.md +2 -0
- package/framework/agents/integrations/clerk-auth.md +3 -0
- package/framework/agents/integrations/hangfire-integration.md +2 -0
- package/framework/agents/integrations/resend-email.md +2 -0
- package/framework/commands/morph-apply.md +151 -161
- package/framework/commands/morph-archive.md +28 -28
- package/framework/commands/morph-infra.md +79 -79
- package/framework/commands/morph-preflight.md +92 -56
- package/framework/commands/morph-proposal.md +94 -70
- package/framework/commands/morph-status.md +31 -31
- package/framework/commands/morph-troubleshoot.md +63 -60
- package/framework/rules/csharp-standards.md +3 -0
- package/framework/rules/frontend-standards.md +2 -0
- package/framework/rules/infrastructure-standards.md +3 -0
- package/framework/rules/morph-workflow.md +57 -2
- package/framework/rules/nextjs-standards.md +2 -0
- package/framework/rules/testing-standards.md +3 -0
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +54 -49
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +42 -19
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +8 -5
- package/framework/skills/level-0-meta/morph-code-review-nextjs/SKILL.md +7 -5
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +139 -136
- package/framework/skills/level-0-meta/morph-init/SKILL.md +42 -13
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +130 -130
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +95 -87
- package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +24 -0
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +42 -41
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +22 -11
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +123 -114
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +120 -102
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +206 -214
- package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +38 -0
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +241 -360
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +107 -115
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +135 -135
- package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +14 -0
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +143 -139
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +168 -165
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +57 -8
- package/package.json +3 -3
- package/src/commands/project/doctor.js +7 -2
- package/src/commands/project/update.js +4 -4
- package/src/lib/stack-filter.js +58 -0
- package/src/scripts/setup-infra.js +53 -18
- package/src/utils/agents-installer.js +19 -5
- package/src/utils/claude-md-injector.js +90 -0
- package/src/utils/hooks-installer.js +1 -4
- package/src/utils/skills-installer.js +67 -7
- package/CLAUDE.md +0 -98
- package/framework/memory/patterns-learned.md +0 -766
- package/framework/skills/level-0-meta/morph-terminal-title/SKILL.md +0 -61
- package/framework/skills/level-0-meta/morph-terminal-title/scripts/set_title.sh +0 -65
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: morph:post-implementation
|
|
3
|
-
description:
|
|
4
|
-
scans
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: Orchestrates the complete post-implementation flow: stack detection,
|
|
4
|
+
automated scans (C#/Next.js), tests, validate-feature, smoke test via Playwright
|
|
5
|
+
(mandatory if dev server active), code review checklist by stack, checkpoint, and
|
|
6
|
+
recap generation. Use after completing all tasks.
|
|
7
7
|
argument-hint: "[feature-name]"
|
|
8
8
|
user-invocable: true
|
|
9
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Task,
|
|
9
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Task, AskUserQuestion,
|
|
10
10
|
mcp__playwright__browser_navigate, mcp__playwright__browser_snapshot,
|
|
11
11
|
mcp__playwright__browser_take_screenshot, mcp__playwright__browser_console_messages
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# Post-Implementation Review
|
|
15
15
|
|
|
16
|
-
>
|
|
17
|
-
> Use
|
|
16
|
+
> Post-implementation orchestrator: runs all checks in logical sequence and blocks on failure.
|
|
17
|
+
> Use after completing all implementation tasks, before creating the PR.
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Prerequisites
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
23
|
+
- All tasks marked as done (`morph-spec task done`)
|
|
24
|
+
- Project build compiling without errors
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
## Step 1 —
|
|
28
|
+
## Step 1 — Detect Stack
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
31
|
node .claude/skills/morph-post-implementation/scripts/detect-stack.mjs
|
|
@@ -33,34 +33,34 @@ node .claude/skills/morph-post-implementation/scripts/detect-stack.mjs
|
|
|
33
33
|
|
|
34
34
|
Output JSON: `{ stack: "DOTNET" | "NEXTJS" | "FULLSTACK" | "UNKNOWN", frontendPath, backendPath, startCommand }`
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Priority order (most reliable first):
|
|
37
37
|
1. `.morph/config/config.json` → `config.project.stack` + `frontendPath`/`backendPath`
|
|
38
|
-
2. `.morph/context/README.md` →
|
|
39
|
-
3. Fallback: Glob
|
|
38
|
+
2. `.morph/context/README.md` → section `## Tech Stack`
|
|
39
|
+
3. Fallback: Glob for `*.csproj` and `package.json` with dep `"next"`
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Store the result — all following steps depend on the detected `stack`.
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
45
|
## Step 2 — Automated Scans
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
Run automated scans based on detected stack.
|
|
48
48
|
|
|
49
|
-
###
|
|
49
|
+
### If DOTNET or FULLSTACK:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
node .claude/skills/morph-code-review/scripts/scan-csharp.mjs --diff
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
###
|
|
55
|
+
### If NEXTJS or FULLSTACK:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
node .claude/skills/morph-code-review-nextjs/scripts/scan-nextjs.mjs --diff
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
**🚫 BLOCK
|
|
61
|
+
**🚫 BLOCK if any CRITICAL finding found.**
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Fix all CRITICALs before continuing. To review the full checklist:
|
|
64
64
|
- .NET: `/morph:code-review`
|
|
65
65
|
- Next.js: `/morph:code-review-nextjs`
|
|
66
66
|
|
|
@@ -68,7 +68,7 @@ Corrija todos os CRITICALs antes de continuar. Para revisar a lista completa de
|
|
|
68
68
|
|
|
69
69
|
## Step 3 — Test Suite
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
Run tests based on stack.
|
|
72
72
|
|
|
73
73
|
### DOTNET:
|
|
74
74
|
|
|
@@ -84,176 +84,176 @@ npm test -- --watchAll=false
|
|
|
84
84
|
|
|
85
85
|
### FULLSTACK:
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
Run both in parallel (use Task tool with two independent subagents).
|
|
88
88
|
|
|
89
|
-
**🚫 BLOCK
|
|
89
|
+
**🚫 BLOCK if tests fail.**
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
Do not proceed while tests are failing. Fix failures and re-run before continuing.
|
|
92
92
|
|
|
93
93
|
---
|
|
94
94
|
|
|
95
95
|
## Step 4 — Framework Validation
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
npx morph-spec validate-feature $ARGUMENTS
|
|
98
|
+
npx morph-spec validate-feature $ARGUMENTS
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
**🚫 BLOCK
|
|
101
|
+
**🚫 BLOCK if it fails.**
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
Read validation output, fix reported issues, and re-run until it passes.
|
|
104
104
|
|
|
105
105
|
---
|
|
106
106
|
|
|
107
107
|
## Step 5 — Smoke Test (Playwright MCP)
|
|
108
108
|
|
|
109
|
-
### 5a.
|
|
109
|
+
### 5a. Detect Dev Server
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
112
|
node .claude/skills/morph-post-implementation/scripts/detect-dev-server.mjs "<startCommand>"
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
Pass the `startCommand` returned by detect-stack in Step 1.
|
|
116
116
|
|
|
117
|
-
|
|
118
|
-
1.
|
|
119
|
-
2.
|
|
120
|
-
3.
|
|
121
|
-
4.
|
|
117
|
+
The script:
|
|
118
|
+
1. Scans ports `[3000, 3001, 4200, 5000, 5001, 7000, 8000, 8080]` with `fetch()` timeout 500ms
|
|
119
|
+
2. If it finds an active server → returns `{ found: true, url }`
|
|
120
|
+
3. If not found and `startCommand` provided → tries to start automatically and waits 30s
|
|
121
|
+
4. Returns exit code 0 (server available) or 1 (not available after attempt)
|
|
122
122
|
|
|
123
|
-
### 5b.
|
|
123
|
+
### 5b. If dev server available (exit 0):
|
|
124
124
|
|
|
125
|
-
**
|
|
125
|
+
**Smoke test is MANDATORY.**
|
|
126
126
|
|
|
127
|
-
1.
|
|
128
|
-
2.
|
|
127
|
+
1. Read feature `spec.md` to identify critical happy paths (maximum 3 flows, section Functional Requirements)
|
|
128
|
+
2. Run the smoke test via Playwright MCP:
|
|
129
129
|
|
|
130
130
|
```javascript
|
|
131
|
-
//
|
|
132
|
-
await mcp__playwright__browser_navigate({ url: '<url
|
|
131
|
+
// Navigate to the feature
|
|
132
|
+
await mcp__playwright__browser_navigate({ url: '<detected-url>' });
|
|
133
133
|
|
|
134
|
-
//
|
|
134
|
+
// Capture page state
|
|
135
135
|
await mcp__playwright__browser_snapshot();
|
|
136
136
|
|
|
137
|
-
//
|
|
137
|
+
// Check for critical console errors
|
|
138
138
|
await mcp__playwright__browser_console_messages({ level: 'error' });
|
|
139
139
|
|
|
140
|
-
// Screenshot
|
|
140
|
+
// Screenshot for documentation
|
|
141
141
|
await mcp__playwright__browser_take_screenshot({
|
|
142
142
|
type: 'png',
|
|
143
143
|
filename: '.morph/features/$ARGUMENTS/5-implement/smoke-screenshots/smoke-<timestamp>.png'
|
|
144
144
|
});
|
|
145
145
|
```
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
- Capture screenshot
|
|
147
|
+
For each critical happy path from the spec:
|
|
148
|
+
- Navigate to the flow
|
|
149
|
+
- Verify key elements are visible (`browser_snapshot`)
|
|
150
|
+
- Confirm absence of critical console errors
|
|
151
|
+
- Capture screenshot of final state
|
|
152
152
|
|
|
153
|
-
**
|
|
154
|
-
- [ ]
|
|
155
|
-
- [ ]
|
|
156
|
-
- [ ] Console
|
|
157
|
-
- [ ]
|
|
153
|
+
**Mandatory checks:**
|
|
154
|
+
- [ ] Page loads without 404/500 error
|
|
155
|
+
- [ ] Main feature elements visible (per spec)
|
|
156
|
+
- [ ] Console without critical errors (level: error)
|
|
157
|
+
- [ ] Main happy path functional
|
|
158
158
|
|
|
159
|
-
**🚫 BLOCK
|
|
159
|
+
**🚫 BLOCK if any check fails.** Do not create PR with failing smoke test.
|
|
160
160
|
|
|
161
|
-
### 5c.
|
|
161
|
+
### 5c. If dev server NOT available (exit 1):
|
|
162
162
|
|
|
163
|
-
**⚠️
|
|
163
|
+
**⚠️ WARNING: Dev server not found after attempt to start.**
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
Request explicit user confirmation before skipping smoke test:
|
|
166
166
|
|
|
167
167
|
```
|
|
168
|
-
Dev server
|
|
169
|
-
|
|
168
|
+
Dev server not detected on expected port. Smoke test via Playwright is mandatory
|
|
169
|
+
to ensure the code works in the browser before creating the PR.
|
|
170
170
|
|
|
171
|
-
|
|
172
|
-
1.
|
|
173
|
-
2.
|
|
171
|
+
Options:
|
|
172
|
+
1. Start the server manually (`npm run dev` / `dotnet run`) and re-run /post-implementation
|
|
173
|
+
2. Explicitly confirm you want to skip the smoke test and why
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
Cannot proceed to PR creation without smoke test or explicit confirmation.
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
-
**
|
|
178
|
+
**Wait for response before continuing.**
|
|
179
179
|
|
|
180
180
|
---
|
|
181
181
|
|
|
182
182
|
## Step 6 — Code Review Checklist (CRITICAL + HIGH)
|
|
183
183
|
|
|
184
|
-
>
|
|
184
|
+
> Before reviewing, read: `.claude/skills/morph-code-review/references/review-guidelines.md` — apply confidence ≥ 75, ignore pre-existing violations, include file:line in each finding.
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
Review the most important items by stack. For complete review, use the dedicated skills.
|
|
187
187
|
|
|
188
|
-
###
|
|
188
|
+
### If FULLSTACK:
|
|
189
189
|
|
|
190
|
-
Dispatch
|
|
190
|
+
Dispatch two subagents in parallel (Task tool):
|
|
191
191
|
|
|
192
192
|
**Subagent 1 — Backend Review:**
|
|
193
|
-
>
|
|
193
|
+
> .NET focused reviewer. Scope: ONLY changed .cs files (git diff main...HEAD).
|
|
194
194
|
> Run: `node .claude/skills/morph-code-review/scripts/scan-csharp.mjs --diff`
|
|
195
|
-
>
|
|
196
|
-
>
|
|
197
|
-
> Output: findings
|
|
195
|
+
> Then manually review CRITICAL+HIGH checklist items for .NET.
|
|
196
|
+
> Apply review-guidelines.md: confidence ≥ 75, skip pre-existing.
|
|
197
|
+
> Output: findings with file:line, or "✅ No CRITICAL/HIGH in changed backend."
|
|
198
198
|
|
|
199
199
|
**Subagent 2 — Frontend Review:**
|
|
200
|
-
>
|
|
200
|
+
> Next.js focused reviewer. Scope: ONLY changed .tsx/.ts files (git diff main...HEAD).
|
|
201
201
|
> Run: `node .claude/skills/morph-code-review-nextjs/scripts/scan-nextjs.mjs --diff`
|
|
202
|
-
>
|
|
203
|
-
>
|
|
204
|
-
> Output: findings
|
|
202
|
+
> Then manually review CRITICAL+HIGH checklist items for Next.js.
|
|
203
|
+
> Apply review-guidelines.md: confidence ≥ 75, skip pre-existing.
|
|
204
|
+
> Output: findings with file:line, or "✅ No CRITICAL/HIGH in changed frontend."
|
|
205
205
|
|
|
206
|
-
|
|
206
|
+
Wait for both. **🚫 BLOCK if either returns unresolved CRITICAL.**
|
|
207
207
|
|
|
208
|
-
###
|
|
208
|
+
### If DOTNET:
|
|
209
209
|
|
|
210
|
-
**
|
|
210
|
+
**CRITICAL and HIGH items — .NET:**
|
|
211
211
|
|
|
212
212
|
```
|
|
213
|
-
[ ] CancellationToken
|
|
214
|
-
[ ]
|
|
215
|
-
[ ] Domain
|
|
216
|
-
[ ]
|
|
217
|
-
[ ]
|
|
218
|
-
[ ] Background ops
|
|
219
|
-
[ ]
|
|
220
|
-
[ ] Interfaces
|
|
221
|
-
[ ]
|
|
222
|
-
[ ] DTOs
|
|
213
|
+
[ ] CancellationToken propagated through the entire async chain
|
|
214
|
+
[ ] No .Result / .Wait() (deadlock risk)
|
|
215
|
+
[ ] Domain has zero refs to Infrastructure or Web
|
|
216
|
+
[ ] No circular dependencies
|
|
217
|
+
[ ] No empty catch blocks
|
|
218
|
+
[ ] Background ops use IDbContextFactory + await using
|
|
219
|
+
[ ] Async methods have Async suffix
|
|
220
|
+
[ ] Interfaces prefixed with I
|
|
221
|
+
[ ] No classes > 300 lines
|
|
222
|
+
[ ] DTOs with descriptive names + correct types
|
|
223
223
|
```
|
|
224
224
|
|
|
225
|
-
>
|
|
225
|
+
> For full list: `/morph:code-review`
|
|
226
226
|
|
|
227
|
-
###
|
|
227
|
+
### If NEXTJS:
|
|
228
228
|
|
|
229
|
-
**
|
|
229
|
+
**CRITICAL and HIGH items — Next.js:**
|
|
230
230
|
|
|
231
231
|
```
|
|
232
232
|
[ ] node .claude/skills/morph-code-review-nextjs/scripts/scan-nextjs.mjs --diff → 0 CRITICAL
|
|
233
|
-
[ ] File names
|
|
234
|
-
[ ] 'use client'
|
|
235
|
-
[ ]
|
|
236
|
-
[ ] Zod schema
|
|
237
|
-
[ ] zodResolver
|
|
238
|
-
[ ] Query key factory
|
|
233
|
+
[ ] File names in kebab-case (user-card.tsx, not UserCard.tsx)
|
|
234
|
+
[ ] 'use client' only in components with hooks/event handlers
|
|
235
|
+
[ ] No useEffect for data fetching → Server Component or useQuery
|
|
236
|
+
[ ] Zod schema defined first, type derived with z.infer<>
|
|
237
|
+
[ ] zodResolver connected to useForm, useMutation for submit
|
|
238
|
+
[ ] Query key factory used (userKeys.lists(), not ['users'])
|
|
239
239
|
[ ] Feature public API via features/{name}/index.ts
|
|
240
|
-
[ ] components/ui/
|
|
241
|
-
[ ]
|
|
240
|
+
[ ] components/ui/ untouched (shadcn CLI only)
|
|
241
|
+
[ ] No any type annotation
|
|
242
242
|
```
|
|
243
243
|
|
|
244
|
-
>
|
|
244
|
+
> For full list: `/morph:code-review-nextjs`
|
|
245
245
|
|
|
246
|
-
**🚫 BLOCK
|
|
246
|
+
**🚫 BLOCK if any CRITICAL item is unresolved.**
|
|
247
247
|
|
|
248
248
|
---
|
|
249
249
|
|
|
250
250
|
## Step 7 — Checkpoint + Recap
|
|
251
251
|
|
|
252
252
|
```bash
|
|
253
|
-
#
|
|
253
|
+
# Save post-review checkpoint
|
|
254
254
|
npx morph-spec checkpoint-save $ARGUMENTS --note "post-implementation review"
|
|
255
255
|
|
|
256
|
-
#
|
|
256
|
+
# Generate final recap
|
|
257
257
|
npx morph-spec generate recap $ARGUMENTS
|
|
258
258
|
```
|
|
259
259
|
|
|
@@ -293,69 +293,69 @@ This skill will:
|
|
|
293
293
|
|
|
294
294
|
## Step 9 — Pre-PR Compliance Checklist
|
|
295
295
|
|
|
296
|
-
|
|
296
|
+
Before creating the PR, invoke the compliance checklist:
|
|
297
297
|
|
|
298
298
|
```
|
|
299
299
|
Skill(morph:checklist)
|
|
300
300
|
```
|
|
301
301
|
|
|
302
|
-
|
|
303
|
-
**🚫 BLOCK
|
|
302
|
+
This skill checks: security, SEO, performance, accessibility, and LGPD compliance.
|
|
303
|
+
**🚫 BLOCK if any CRITICAL item is unresolved.**
|
|
304
304
|
|
|
305
305
|
---
|
|
306
306
|
|
|
307
307
|
## Step 10 — PR Suggestion
|
|
308
308
|
|
|
309
|
-
|
|
309
|
+
When all steps pass, suggest the PR:
|
|
310
310
|
|
|
311
311
|
```bash
|
|
312
312
|
gh pr create \
|
|
313
|
-
--title "feat($ARGUMENTS): <
|
|
313
|
+
--title "feat($ARGUMENTS): <concise feature description>" \
|
|
314
314
|
--body "$(cat <<'EOF'
|
|
315
315
|
## Summary
|
|
316
316
|
|
|
317
|
-
- <
|
|
318
|
-
- <tasks
|
|
317
|
+
- <main implemented changes>
|
|
318
|
+
- <completed tasks>
|
|
319
319
|
|
|
320
320
|
## Test Results
|
|
321
321
|
|
|
322
|
-
- Build: ✅
|
|
323
|
-
- Tests: ✅ X
|
|
324
|
-
- Smoke Test: ✅ happy path
|
|
322
|
+
- Build: ✅ passed
|
|
323
|
+
- Tests: ✅ X tests passing
|
|
324
|
+
- Smoke Test: ✅ happy path verified via Playwright
|
|
325
325
|
|
|
326
326
|
## Screenshots
|
|
327
327
|
|
|
328
|
-
<!--
|
|
328
|
+
<!-- Paste screenshot paths saved in smoke-screenshots/ -->
|
|
329
329
|
|
|
330
330
|
## Checklist
|
|
331
331
|
|
|
332
332
|
- [ ] Automated scans: 0 CRITICAL findings
|
|
333
333
|
- [ ] All tests passing
|
|
334
334
|
- [ ] Smoke test via Playwright: ✅
|
|
335
|
-
- [ ] Code review checklist: CRITICAL + HIGH
|
|
336
|
-
- [ ] validate-feature: ✅
|
|
337
|
-
- [ ] Checkpoint
|
|
338
|
-
- [ ] recap.md
|
|
335
|
+
- [ ] Code review checklist: CRITICAL + HIGH items verified
|
|
336
|
+
- [ ] validate-feature: ✅ passed
|
|
337
|
+
- [ ] Checkpoint saved
|
|
338
|
+
- [ ] recap.md generated
|
|
339
339
|
EOF
|
|
340
340
|
)"
|
|
341
341
|
```
|
|
342
342
|
|
|
343
343
|
---
|
|
344
344
|
|
|
345
|
-
##
|
|
345
|
+
## Block Summary
|
|
346
346
|
|
|
347
|
-
| Step |
|
|
348
|
-
|
|
349
|
-
| Step 2 |
|
|
350
|
-
| Step 3 |
|
|
351
|
-
| Step 4 | `validate-feature`
|
|
352
|
-
| Step 5 | Dev server
|
|
353
|
-
| Step 5 | Dev server
|
|
354
|
-
| Step 6 |
|
|
347
|
+
| Step | Block Condition |
|
|
348
|
+
|------|-----------------|
|
|
349
|
+
| Step 2 | Any CRITICAL finding in automated scans |
|
|
350
|
+
| Step 3 | Any test failing |
|
|
351
|
+
| Step 4 | `validate-feature` failing |
|
|
352
|
+
| Step 5 | Dev server active + smoke test failing |
|
|
353
|
+
| Step 5 | Dev server not detected without explicit user confirmation |
|
|
354
|
+
| Step 6 | Any unresolved CRITICAL item in manual checklist |
|
|
355
355
|
| Step 8 | Tests failing in worktree before merge/PR |
|
|
356
|
-
| Step 9 |
|
|
356
|
+
| Step 9 | Unresolved CRITICAL item in `morph:checklist` |
|
|
357
357
|
|
|
358
|
-
**
|
|
358
|
+
**All BLOCKs must be resolved before creating the PR.**
|
|
359
359
|
|
|
360
360
|
---
|
|
361
361
|
|