forge-cc 0.1.23 → 0.1.25

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/skills/forge-go.md +25 -12
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forge-cc",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "Pre-PR verification harness for Claude Code agents — gate runner + CLI + MCP server",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -95,7 +95,9 @@ If `.forge.json` includes `visual` in gates or specifies a `devServerUrl`, captu
95
95
  3. Screenshots save to `.forge/screenshots/before/`
96
96
  4. Stop the dev server
97
97
 
98
- This establishes the visual baseline for regression detection. Skip if no visual gate is configured.
98
+ This establishes the visual baseline for regression detection.
99
+
100
+ **The visual gate MUST run if configured — do not skip based on your assessment of whether changes affect the UI.** Parser changes, data fixes, and test-only changes can surface unexpected visual regressions. The only valid reason to skip is: `.forge.json` does NOT include `visual` in gates AND does NOT specify a `devServerUrl`.
99
101
 
100
102
  ### Step 2.5 — Session Isolation (Automatic)
101
103
 
@@ -214,7 +216,18 @@ npx forge verify
214
216
 
215
217
  If verification **fails**: proceed to Step 4 (self-healing loop).
216
218
 
217
- If verification **passes**: proceed to reviewer.
219
+ If verification **passes**: capture after screenshots (if visual gate configured), then proceed to reviewer.
220
+
221
+ #### 3e-vis. Capture After Screenshots (If Visual Gate Configured)
222
+
223
+ If `.forge.json` includes `visual` in gates or specifies a `devServerUrl`, capture after screenshots:
224
+
225
+ 1. Start the dev server (from `.forge.json` devServerUrl or `npm run dev`)
226
+ 2. Run `npx forge verify --gate visual --after-only` (or manually call the screenshot capture)
227
+ 3. Screenshots save to `.forge/screenshots/after/`
228
+ 4. Stop the dev server
229
+
230
+ **This step is mandatory when the visual gate is configured — same rule as Step 2.** The reviewer needs both before and after screenshots to detect visual regressions.
218
231
 
219
232
  #### 3f. Reviewer Consensus Protocol
220
233
 
@@ -265,7 +278,7 @@ If no findings (or all findings resolved): print wave completion summary and pro
265
278
  - agent-1: OK (created file1.ts, file2.ts)
266
279
  - agent-2: OK (modified file3.ts)
267
280
  - Mechanical verification: PASSED
268
- - Visual gate: PASSED (3 viewports captured) | SKIPPED (not configured)
281
+ - Visual gate: PASSED (3 viewports captured) | SKIPPED (not in .forge.json gates)
269
282
  - Reviewer: {N} findings, {M} resolved, 0 outstanding
270
283
 
271
284
  Proceeding to Wave {N+1}...
@@ -349,12 +362,12 @@ Check for the Linear project ID in this priority order:
349
362
 
350
363
  If a Linear project ID is found:
351
364
 
352
- 1. Transition issues for the completed milestone to appropriate state:
353
- - If this was the **last milestone**: move issues to "In Review"
365
+ 1. **Transition issues** for the completed milestone:
366
+ - If this was the **last milestone**: use `mcp__linear__update_issue` on each issue to set state to "In Review"
354
367
  - Otherwise: keep issues as-is (they were set to "In Progress" at start)
355
368
 
356
- 2. If this is the **last milestone**, also:
357
- - Transition the project to "In Review"
369
+ 2. If this is the **last milestone**, **also transition the project itself** (separate from issues):
370
+ - Use `mcp__linear__update_project` to set the project state to "In Review". **Do not skip this — the project is a separate entity from its issues.**
358
371
  - Create a PR (see Step 8)
359
372
 
360
373
  If no Linear project ID is found in either location, skip this step silently.
@@ -501,12 +514,12 @@ At the START of milestone execution (between Step 2 and Step 3), check for the L
501
514
  1. `linearProjectId` field in `.planning/status/<slug>.json`
502
515
  2. `linearProject` field in `.forge.json`
503
516
 
504
- If a Linear project ID is found:
517
+ If a Linear project ID is found, **execute ALL four steps below — do not skip any**:
505
518
 
506
- 1. Find issues associated with this milestone in Linear.
507
- 2. Transition them to "In Progress".
508
- 3. Transition the project to "In Progress" (if not already).
509
- 4. Add a brief comment: "Starting execution via forge:go."
519
+ 1. **Find issues:** Use `mcp__linear__list_issues` with the project ID to find issues associated with this milestone.
520
+ 2. **Transition issues:** Use `mcp__linear__update_issue` on each issue to set state to "In Progress".
521
+ 3. **Transition the project:** Use `mcp__linear__update_project` to set the project state to "In Progress". **This is a separate step from transitioning issues — do not skip it.** The project and its issues are independent entities in Linear.
522
+ 4. **Add comment:** Use `mcp__linear__create_comment` on each milestone issue with the body: "Starting execution via forge:go."
510
523
 
511
524
  If no Linear project ID is found, skip silently.
512
525