codebyplan 1.13.52 → 1.13.54

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 (92) hide show
  1. package/dist/cli.js +3226 -897
  2. package/package.json +1 -1
  3. package/templates/agents/cbp-database-agent.md +1 -1
  4. package/templates/agents/cbp-e2e-maestro.md +1 -1
  5. package/templates/agents/cbp-e2e-playwright.md +24 -16
  6. package/templates/agents/cbp-e2e-tauri.md +1 -1
  7. package/templates/agents/cbp-e2e-vscode.md +1 -1
  8. package/templates/agents/cbp-e2e-xcuitest.md +1 -1
  9. package/templates/agents/cbp-improve-claude.md +2 -2
  10. package/templates/agents/{cbp-round-executor.md → cbp-round-builder.md} +23 -23
  11. package/templates/agents/{cbp-task-planner.md → cbp-round-planner.md} +26 -25
  12. package/templates/agents/cbp-security-agent.md +10 -2
  13. package/templates/agents/cbp-stripe-agent.md +2 -2
  14. package/templates/agents/cbp-testing-qa-agent.md +34 -20
  15. package/templates/agents/cbp-verify-reviewer.md +236 -0
  16. package/templates/context/architecture-map.md +4 -4
  17. package/templates/context/mcp-docs.md +57 -11
  18. package/templates/context/testing/e2e.md +9 -9
  19. package/templates/github-workflows/ci.yml +104 -0
  20. package/templates/github-workflows/publish.yml +8 -27
  21. package/templates/github-workflows/release-desktop.yml +215 -0
  22. package/templates/hooks/cbp-skill-context-guard.sh +1 -1
  23. package/templates/hooks/cbp-test-hooks.sh +9 -9
  24. package/templates/hooks/validate-structure-lengths.sh +1 -1
  25. package/templates/hooks/validate-structure-patterns.sh +1 -1
  26. package/templates/rules/README.md +1 -2
  27. package/templates/rules/agent-claim-verification.md +1 -1
  28. package/templates/rules/context-file-loading.md +10 -10
  29. package/templates/rules/development-workflow.md +73 -0
  30. package/templates/rules/e2e-mandatory.md +8 -8
  31. package/templates/rules/execution-proof.md +70 -0
  32. package/templates/rules/model-invocation-convention.md +2 -2
  33. package/templates/rules/parallel-waves.md +11 -11
  34. package/templates/rules/spawn-failure-is-gate-failure.md +76 -0
  35. package/templates/rules/task-routing-recommendation.md +1 -1
  36. package/templates/rules/todo-backend.md +3 -3
  37. package/templates/rules/two-tier-ci.md +63 -0
  38. package/templates/settings.project.base.json +15 -11
  39. package/templates/skills/cbp-build-cc-mode/SKILL.md +1 -1
  40. package/templates/skills/cbp-build-cc-settings/reference/cbp-permission-policy.md +7 -7
  41. package/templates/skills/cbp-build-cc-skill/SKILL.md +1 -1
  42. package/templates/skills/cbp-build-cc-skill/reference/cbp-quality.md +2 -2
  43. package/templates/skills/cbp-build-cc-skill/reference/fork-eligibility.md +11 -14
  44. package/templates/skills/cbp-checkpoint-check/SKILL.md +11 -3
  45. package/templates/skills/cbp-checkpoint-create/SKILL.md +16 -1
  46. package/templates/skills/cbp-checkpoint-end/SKILL.md +5 -1
  47. package/templates/skills/cbp-checkpoint-update/SKILL.md +3 -3
  48. package/templates/skills/cbp-clear-continue/SKILL.md +2 -2
  49. package/templates/skills/cbp-clear-prep/SKILL.md +3 -3
  50. package/templates/skills/{cbp-task-complete → cbp-finalize}/SKILL.md +25 -29
  51. package/templates/skills/{cbp-task-complete → cbp-finalize}/reference/checkpoint-done-branching.md +1 -1
  52. package/templates/skills/{cbp-task-complete → cbp-finalize}/reference/next-step-heuristic.md +1 -1
  53. package/templates/skills/cbp-frontend-design/SKILL.md +1 -1
  54. package/templates/skills/cbp-frontend-ui/SKILL.md +7 -7
  55. package/templates/skills/cbp-git-commit/SKILL.md +3 -3
  56. package/templates/skills/cbp-merge-main/SKILL.md +4 -4
  57. package/templates/skills/{cbp-round-execute → cbp-round-build}/SKILL.md +93 -75
  58. package/templates/skills/cbp-round-complete/SKILL.md +15 -14
  59. package/templates/skills/cbp-round-plan/SKILL.md +344 -0
  60. package/templates/skills/cbp-session-end/SKILL.md +1 -1
  61. package/templates/skills/cbp-setup-cd/SKILL.md +291 -0
  62. package/templates/skills/cbp-setup-cd/reference/github-actions-cd.md +231 -0
  63. package/templates/skills/cbp-setup-ci/SKILL.md +175 -0
  64. package/templates/skills/cbp-setup-ci/reference/github-actions.md +100 -0
  65. package/templates/skills/cbp-ship/SKILL.md +21 -0
  66. package/templates/skills/cbp-ship-main/SKILL.md +3 -2
  67. package/templates/skills/cbp-standalone-task-check/SKILL.md +10 -9
  68. package/templates/skills/cbp-standalone-task-complete/SKILL.md +12 -13
  69. package/templates/skills/cbp-standalone-task-create/SKILL.md +16 -9
  70. package/templates/skills/cbp-standalone-task-start/SKILL.md +9 -5
  71. package/templates/skills/cbp-standalone-task-testing/SKILL.md +16 -7
  72. package/templates/skills/cbp-task-create/SKILL.md +6 -7
  73. package/templates/skills/cbp-task-start/SKILL.md +8 -8
  74. package/templates/skills/cbp-todo/SKILL.md +6 -8
  75. package/templates/skills/cbp-verify/SKILL.md +146 -0
  76. package/templates/skills/cbp-verify/reference/deterministic-gates.md +114 -0
  77. package/templates/skills/{cbp-round-end → cbp-verify}/reference/findings-presentation.md +16 -12
  78. package/templates/skills/cbp-verify/reference/round-scope.md +62 -0
  79. package/templates/skills/cbp-verify/reference/task-scope.md +71 -0
  80. package/templates/agents/cbp-improve-round.md +0 -283
  81. package/templates/agents/cbp-task-check.md +0 -217
  82. package/templates/skills/cbp-round-check/SKILL.md +0 -132
  83. package/templates/skills/cbp-round-end/SKILL.md +0 -173
  84. package/templates/skills/cbp-round-end/reference/inline-fallback.md +0 -35
  85. package/templates/skills/cbp-round-execute/reference/inline-fallback.md +0 -55
  86. package/templates/skills/cbp-round-input/SKILL.md +0 -197
  87. package/templates/skills/cbp-round-start/SKILL.md +0 -261
  88. package/templates/skills/cbp-round-update/SKILL.md +0 -120
  89. package/templates/skills/cbp-ship/templates/workflow-eas-submit.yml +0 -53
  90. package/templates/skills/cbp-ship/templates/workflow-vsce-publish.yml +0 -31
  91. package/templates/skills/cbp-task-check/SKILL.md +0 -172
  92. package/templates/skills/cbp-task-testing/SKILL.md +0 -277
@@ -44,9 +44,9 @@ Given the parse from Step 0.5:
44
44
  | `{chk}` | Scan `.codebyplan/state/checkpoints/*.json` for `number === {chk}` (local-first; if missing/stale run `npx codebyplan sync` once; break-glass: MCP `get_checkpoints`). |
45
45
  | _(empty)_ | Read `.codebyplan/state/session/current.json` (with worktree_id from `npx codebyplan resolve-worktree`) to find the active checkpoint (fallback: MCP `get_current_task`). If no active checkpoint, scan local state for `pending` checkpoints (fallback: MCP `get_checkpoints` filtered by `pending`). |
46
46
 
47
- ### Step 1.5: Detect Entry Context (from `/cbp-task-complete` expand path)
47
+ ### Step 1.5: Detect Entry Context (from `/cbp-finalize` expand path)
48
48
 
49
- When invoked with a preamble naming `Triggered from /cbp-task-complete with intent: expand`, the user just completed the last task in the checkpoint and chose Option B "Expand checkpoint with more tasks" per `task-complete/reference/checkpoint-done-branching.md`.
49
+ When invoked with a preamble naming `Triggered from /cbp-finalize with intent: expand`, the user just completed the last task in the checkpoint and chose Option B "Expand checkpoint with more tasks" per `task-complete/reference/checkpoint-done-branching.md`.
50
50
 
51
51
  In that case, lead with explicit guidance:
52
52
 
@@ -111,4 +111,4 @@ Otherwise, no follow-up directive — the user is back in control.
111
111
 
112
112
  - **Reads**: `.codebyplan/state/session/current.json`, `checkpoints/<id>.json` (local-first; `npx codebyplan sync` if stale; break-glass: MCP `get_current_task`, `get_checkpoints`)
113
113
  - **Writes**: `codebyplan checkpoint update --id <id> [--field value ...]` (CLI write-through; break-glass: MCP `update_checkpoint`)
114
- - **Triggered by**: User directly, OR `/cbp-task-complete` Step 9c (expand path) — see `task-complete/reference/checkpoint-done-branching.md`
114
+ - **Triggered by**: User directly, OR `/cbp-finalize` Step 9c (expand path) — see `task-complete/reference/checkpoint-done-branching.md`
@@ -14,7 +14,7 @@ handoff file so a stale snapshot never misleads a future session.
14
14
  ## When Used
15
15
 
16
16
  - After running `/clear` following a `/cbp-clear-prep` capture
17
- - The user is ready to re-run the heavy skill (cbp-round-execute, cbp-task-testing,
17
+ - The user is ready to re-run the heavy skill (cbp-round-build, cbp-verify,
18
18
  cbp-standalone-task-testing, cbp-checkpoint-check, cbp-checkpoint-end) that was denied
19
19
 
20
20
  ## Instructions
@@ -62,7 +62,7 @@ so even if the skill fails the handoff is gone and the user starts fresh next ti
62
62
 
63
63
  Invoke the skill from `next_action` via the Skill tool, passing any recorded arguments.
64
64
 
65
- Example: if `next_action` is `/cbp-round-execute 217-2-1`, invoke `Skill(cbp-round-execute)`
65
+ Example: if `next_action` is `/cbp-round-build 217-2-1`, invoke `Skill(cbp-round-build)`
66
66
  with args `217-2-1`.
67
67
 
68
68
  If the context window is STILL above threshold after `/clear` (unusual — compact may help),
@@ -9,7 +9,7 @@ effort: xhigh
9
9
  # cbp-clear-prep
10
10
 
11
11
  Capture a handoff snapshot before clearing context. Invoked when the `cbp-skill-context-guard`
12
- PreToolUse hook denies a heavy skill (cbp-round-execute, cbp-task-testing,
12
+ PreToolUse hook denies a heavy skill (cbp-round-build, cbp-verify,
13
13
  cbp-standalone-task-testing, cbp-checkpoint-check, cbp-checkpoint-end) because the context
14
14
  window exceeds the configured threshold.
15
15
 
@@ -24,7 +24,7 @@ window exceeds the configured threshold.
24
24
  ### Step 1 — Identify the blocked skill
25
25
 
26
26
  Check `$ARGUMENTS` first. If empty, identify the blocked skill from the recent guard deny message
27
- in context — it will be one of: `cbp-round-execute`, `cbp-task-testing`,
27
+ in context — it will be one of: `cbp-round-build`, `cbp-verify`,
28
28
  `cbp-standalone-task-testing`, `cbp-checkpoint-check`, `cbp-checkpoint-end`.
29
29
 
30
30
  ### Step 2 — Resolve active task and round (local-first)
@@ -43,7 +43,7 @@ Capture: `checkpoint_id`, `checkpoint_number`, `task_id`, `task_number`, `round_
43
43
 
44
44
  From context, determine:
45
45
  - The exact skill the user was trying to invoke (blocked skill from Step 1)
46
- - Any arguments it was called with (e.g. `cbp-round-execute` args: `217-2-1`)
46
+ - Any arguments it was called with (e.g. `cbp-round-build` args: `217-2-1`)
47
47
  - Any relevant in-flight state (round goal, step in progress, pending decisions)
48
48
 
49
49
  ### Step 4 — Write the handoff file
@@ -1,22 +1,22 @@
1
1
  ---
2
- name: cbp-task-complete
3
- description: Complete current task
2
+ name: cbp-finalize
3
+ description: Finalize and complete the current task — commit, merge main, push, complete
4
4
  argument-hint: [chk-task]
5
5
  triggers: [cbp-task-start, cbp-checkpoint-check]
6
6
  effort: xhigh
7
7
  ---
8
8
 
9
- # Task Complete Command
9
+ # Finalize Command
10
10
 
11
- Complete the current task. Auto-triggered by `/cbp-task-testing` when all tests pass. Can also be run manually.
11
+ Finalize and complete the current task. Auto-triggered by `/cbp-verify` (scope=task) once it writes a `READY` verdict. Can also be run manually.
12
12
 
13
- This skill is gated by an `ask`-tier `Skill(cbp-task-complete)` permission rule in `settings.json`. **The permission prompt IS the user confirmation** — there is NO AskUserQuestion inside this skill. A declined permission is a clean no-op (nothing committed, merged, pushed, or completed).
13
+ This skill is gated by an `ask`-tier `Skill(cbp-finalize)` permission rule in `settings.json`. **The permission prompt IS the user confirmation** — there is NO AskUserQuestion inside this skill. A declined permission is a clean no-op (nothing committed, merged, pushed, or completed).
14
14
 
15
15
  ## Instructions
16
16
 
17
17
  ### Step 1: Parse `$ARGUMENTS`
18
18
 
19
- Parse the argument using the canonical chk-task-round notation (see `cbp-round-start` Step 0 "CHK / TASK / ROUND Identifier Notation Vocabulary"):
19
+ Parse the argument using the canonical chk-task-round notation (see `cbp-round-plan` Step 0 "CHK / TASK / ROUND Identifier Notation Vocabulary"):
20
20
 
21
21
  | Shape | Regex | Resolves to |
22
22
  |-------|-------|-------------|
@@ -27,23 +27,23 @@ Parse the argument using the canonical chk-task-round notation (see `cbp-round-s
27
27
  Anything else is malformed — surface this error and stop:
28
28
 
29
29
  ```
30
- task-complete: invalid argument `{value}`. Expected:
30
+ finalize: invalid argument `{value}`. Expected:
31
31
  108-1 → CHK-108 TASK-1 (checkpoint-bound)
32
32
  (empty) → active in-progress task
33
33
 
34
34
  For standalone tasks, use `/cbp-standalone-task-complete {N}`.
35
- For a specific round, use `/cbp-round-update 108-1-2`.
35
+ For a specific round, use `/cbp-round-plan 108-1-2`.
36
36
  ```
37
37
 
38
- Error cases: `108-1-2` (that is round-update's shape), `abc`, `108-`, `-1`, `108--1`, anything with whitespace or non-numeric characters.
38
+ Error cases: `108-1-2` (that is round-plan's shape), `abc`, `108-`, `-1`, `108--1`, anything with whitespace or non-numeric characters.
39
39
 
40
40
  #### Worked examples
41
41
 
42
- - `task-complete 108-1` → CHK-108 TASK-1
43
- - `task-complete` (no arg) → active in-progress task via `get_current_task`
44
- - `task-complete 45` → error: "Use /cbp-standalone-task-complete 45 instead — bare numbers no longer route to standalone tasks."
45
- - `task-complete 108-1-2` → error: "use `/cbp-round-update 108-1-2`"
46
- - `task-complete abc` → error: malformed
42
+ - `finalize 108-1` → CHK-108 TASK-1
43
+ - `finalize` (no arg) → active in-progress task via `get_current_task`
44
+ - `finalize 45` → error: "Use /cbp-standalone-task-complete 45 instead — bare numbers no longer route to standalone tasks."
45
+ - `finalize 108-1-2` → error: "use `/cbp-round-plan 108-1-2`"
46
+ - `finalize abc` → error: malformed
47
47
 
48
48
  ### Step 1.5: Get Current Task
49
49
 
@@ -65,28 +65,24 @@ If any round is `in_progress`:
65
65
  ```
66
66
  ## Cannot Complete Task
67
67
 
68
- TASK-[N] has an active round (Round [N]). Run `/cbp-round-update` to finish it.
68
+ TASK-[N] has an active round (Round [N]). Run `/cbp-round-complete` to finish it.
69
69
  ```
70
70
 
71
71
  Stop here.
72
72
 
73
- Verify at least one round has `testing_qa_output` in its context. If not:
73
+ Verify at least one round has a `verify_manifest` in its context (the durable record `/cbp-verify` writes — gates + execution proof). If not:
74
74
 
75
75
  ```
76
76
  ## Cannot Complete Task
77
77
 
78
- No testing-qa-agent validation found. Run `/cbp-round-start` to execute a validated round.
78
+ No /cbp-verify run found on any round. Run `/cbp-round-plan` to execute a verified round.
79
79
  ```
80
80
 
81
81
  Stop here.
82
82
 
83
- ### Step 2.5: Verify `/cbp-task-check` Has Run
83
+ ### Step 2.5: Verify `/cbp-verify` (scope=task) Has Run READY
84
84
 
85
- `task.context.check_verdict` must exist and have `verdict: 'READY'`. If not, surface "Run `/cbp-task-check` first" and stop.
86
-
87
- ### Step 2.6: Verify `/cbp-task-testing` Has Run
88
-
89
- `task.context.task_testing_output` must exist with `all_passed: true`. If not, surface "Run `/cbp-task-testing` first" and stop.
85
+ `task.context.verify_verdict` must exist and have `verdict: 'READY'` (written by `/cbp-verify` Phase 6 when it runs at task scope — whole-repo `codebyplan check --scope task`, holistic `cbp-verify-reviewer`, and the single batched human walkthrough all passed). If absent or not `READY`, surface "Run `/cbp-verify` first" and stop.
90
86
 
91
87
  ### Step 3: Verify QA and File Approval
92
88
 
@@ -95,7 +91,7 @@ Load `task.qa` and `task.files_changed`:
95
91
  1. **QA**: count items by status (pass / fail / pending / skipped) across all types.
96
92
  2. **Files**: list any file with `user_approved === false`.
97
93
 
98
- If any QA item is `fail`/`pending` or any file is unapproved, **surface the warnings in the output and continue** — record them for the Step 9 summary. There is NO confirmation AskUserQuestion here: `Skill(cbp-task-complete)` is `ask`-tier, so the harness permission prompt that gated this skill IS the user's confirmation to complete. The hard gates in Steps 2–2.6 (all rounds completed, ≥1 round has `testing_qa_output`, `check_verdict` READY, `task_testing_output.all_passed`) already block completion when prerequisites are unmet; these QA / file-approval items are warnings, not blockers.
94
+ If any QA item is `fail`/`pending` or any file is unapproved, **surface the warnings in the output and continue** — record them for the Step 9 summary. There is NO confirmation AskUserQuestion here: `Skill(cbp-finalize)` is `ask`-tier, so the harness permission prompt that gated this skill IS the user's confirmation to complete. The hard gates in Steps 2–2.5 (all rounds completed, ≥1 round has a `verify_manifest`, `verify_verdict` READY) already block completion when prerequisites are unmet; these QA / file-approval items are warnings, not blockers.
99
95
 
100
96
  ### Step 4: Aggregate Files Changed
101
97
 
@@ -113,10 +109,10 @@ Otherwise: invoke `/cbp-git-commit` to stage approved files and create the commi
113
109
 
114
110
  ### Step 5.5: Merge Production Branch (mandatory)
115
111
 
116
- Now that task work is committed, ensure the feat branch is current with the latest production (main) work. Running the merge AFTER the commit means `/cbp-merge-main` resolves conflicts against committed work on a clean tree — no dirty-tree interleave, no Step-0 dirty-tree prompt for the task files. This still prevents shipping a stale PR and surfaces conflicts at task-complete time rather than at PR review.
112
+ Now that task work is committed, ensure the feat branch is current with the latest production (main) work. Running the merge AFTER the commit means `/cbp-merge-main` resolves conflicts against committed work on a clean tree — no dirty-tree interleave, no Step-0 dirty-tree prompt for the task files. This still prevents shipping a stale PR and surfaces conflicts at finalize time rather than at PR review.
117
113
 
118
114
  1. Trigger `/cbp-merge-main`.
119
- 2. If the skill exits with failure (offline, unresolved conflicts, user-aborted): surface the failure and STOP — do NOT proceed to Step 5.7 (push) or Step 7 (complete). The task commit from Step 5 persists; the user resolves and re-invokes `/cbp-task-complete`, which re-runs the merge on the now-clean tree.
115
+ 2. If the skill exits with failure (offline, unresolved conflicts, user-aborted): surface the failure and STOP — do NOT proceed to Step 5.7 (push) or Step 7 (complete). The task commit from Step 5 persists; the user resolves and re-invokes `/cbp-finalize`, which re-runs the merge on the now-clean tree.
120
116
  3. If the skill exits with QA warnings the user chose to commit-as-is: continue to Step 5.7; surface a soft warning in the Step 9 output (`⚠ Merged with QA failures pending fix in follow-up`).
121
117
  4. On clean success: continue to Step 5.7.
122
118
 
@@ -190,9 +186,9 @@ direct you to run `/cbp-clear-prep` first; otherwise checkpoint-check starts on
190
186
 
191
187
  ## Integration
192
188
 
193
- - **Triggered by**: `/cbp-task-testing` (auto, when ALL PASS) NOT directly from `/cbp-task-check`
194
- - **Chain**: `/cbp-task-check` → `/cbp-task-testing` → `/cbp-task-complete`
195
- - **Reads**: `.codebyplan/state/checkpoints/*.json`, `checkpoints/<id>/tasks/*.json`, `checkpoints/<id>/tasks/<id>/rounds/*.json`, `todos.json` (local-first; `npx codebyplan sync` on miss; MCP `get_current_task`/`get_rounds`/`get_tasks` break-glass)
189
+ - **Triggered by**: `/cbp-verify` (auto, scope=task, when it writes `verify_verdict.verdict === 'READY'`)
190
+ - **Chain**: `/cbp-verify` (scope=task READY) → `/cbp-finalize`
191
+ - **Reads**: `.codebyplan/state/checkpoints/*.json`, `checkpoints/<id>/tasks/*.json`, `checkpoints/<id>/tasks/<id>/rounds/*.json`, `todos.json` (local-first; `npx codebyplan sync` on miss; MCP `get_current_task`/`get_rounds`/`get_tasks` break-glass) — including each round's `verify_manifest` and `task.context.verify_verdict`
196
192
  - **Writes**: `codebyplan task update` for `files_changed` (CLI write-through; MCP `update_task` break-glass); MCP `complete_task` for task completion (kept MCP — CLI cannot forward `caller_worktree_id`)
197
193
  - **Uses skills (inline, no sub-agent)**: `cleanup` (if deletions), `migration` (if exports renamed)
198
194
  - **Triggers**: Same-context transitions auto-trigger via the Skill tool (next task in checkpoint → `cbp-task-start {N}`, `allow`-tier, fires silently). Checkpoint-done → auto-triggers `cbp-checkpoint-check` via Skill tool (`ask`-tier, permission prompt IS the human gate). No-task-anywhere fallback → directive `Next: Run /clear, then /cbp-session-end.`
@@ -1,4 +1,4 @@
1
- # Checkpoint-Done Auto-Trigger in `/cbp-task-complete` Step 9
1
+ # Checkpoint-Done Auto-Trigger in `/cbp-finalize` Step 9
2
2
 
3
3
  When the just-completed task was the LAST pending task in its checkpoint (every sibling task has `status === 'completed'`), Step 9c auto-triggers `cbp-checkpoint-check` via the Skill tool — no routing menu, no manual `/clear` directive.
4
4
 
@@ -1,4 +1,4 @@
1
- # Next-Step Heuristic for `/cbp-task-complete` Step 9
1
+ # Next-Step Heuristic for `/cbp-finalize` Step 9
2
2
 
3
3
  Close-out routing splits into two cases by context-continuity.
4
4
 
@@ -133,7 +133,7 @@ If any check fails, fix before proceeding to Step 3.
133
133
 
134
134
  ## Output back to the round-executor
135
135
 
136
- After Phase 6, the executor proceeds to Step 3 with the brand commitment + stack reference + direction in working memory. Round-executor records `frontend_design_loaded: { stack, direction, tokens_path }` in `round.context` so `frontend-ui` (Step 3.8) and `cbp-improve-round` can verify the commitment was honoured.
136
+ After Phase 6, the executor proceeds to Step 3 with the brand commitment + stack reference + direction in working memory. Round-executor records `frontend_design_loaded: { stack, direction, tokens_path }` in `round.context` so `frontend-ui` (Step 3.8) and `cbp-verify-reviewer` can verify the commitment was honoured.
137
137
 
138
138
  ## Integration
139
139
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cbp-frontend-ui
3
- description: Visual quality self-review pass invoked twice per round — once by round-executor Step 3.8 (phase 'style_only', no screenshots) for token/spacing/typography/color/cohesion, once by /cbp-round-execute Step 5b (phase 'screenshot_review', with e2e screenshots) for rendered-output review and baseline regressions. Default phase 'full' runs everything for back-compat.
3
+ description: Visual quality self-review pass invoked twice per round — once by round-executor Step 3.8 (phase 'style_only', no screenshots) for token/spacing/typography/color/cohesion, once by /cbp-round-build Step 5b (phase 'screenshot_review', with e2e screenshots) for rendered-output review and baseline regressions. Default phase 'full' runs everything for back-compat.
4
4
  effort: xhigh
5
5
  ---
6
6
 
@@ -9,7 +9,7 @@ effort: xhigh
9
9
  Invoked twice per round in non-`claude_only` profiles:
10
10
 
11
11
  1. `round-executor` Step 3.8 — `phase: 'style_only'`, no e2e screenshots. Reviews token/spacing/typography/color/cohesion against the just-written code.
12
- 2. `/cbp-round-execute` Step 5b — `phase: 'screenshot_review'`, with screenshots from the `cbp-e2e-*` specialists. Reviews rendered output and detects baseline regressions.
12
+ 2. `/cbp-round-build` Step 5b — `phase: 'screenshot_review'`, with screenshots from the `cbp-e2e-*` specialists. Reviews rendered output and detects baseline regressions.
13
13
 
14
14
  Default `phase: 'full'` runs everything (back-compat for any caller not yet migrated). Inline counterpart of the up-front `frontend-design` skill — `frontend-design` decides direction before code; `frontend-ui` reviews and polishes after code.
15
15
 
@@ -35,7 +35,7 @@ input:
35
35
  context:
36
36
  checkpoint_goal: string
37
37
  round_requirements: string
38
- e2e_screenshots: # Required for phase 'screenshot_review' or 'full' (when present); empty / omitted for 'style_only'. Sourced from the aggregated round.context.e2e_outputs[*].screenshots (populated by the cbp-e2e-* specialists at /cbp-round-execute Step 5).
38
+ e2e_screenshots: # Required for phase 'screenshot_review' or 'full' (when present); empty / omitted for 'style_only'. Sourced from the aggregated round.context.e2e_outputs[*].screenshots (populated by the cbp-e2e-* specialists at /cbp-round-build Step 5).
39
39
  - test_name: string
40
40
  path: string # Repo-relative or absolute path to PNG
41
41
  page_or_screen: string
@@ -184,7 +184,7 @@ For each screenshot in `e2e_screenshots[]`:
184
184
 
185
185
  Populate `screenshot_review` totals.
186
186
 
187
- **Do not attempt to auto-fix `rendered_visual` or `baseline_regression` findings** — they surface as a blocking gate at `/cbp-round-end` Step 7 (accept-or-fix) and feed the fix loop, because the root cause is typically in app code/data, not in the SCSS.
187
+ **Do not attempt to auto-fix `rendered_visual` or `baseline_regression` findings** — they surface as a blocking gate at `/cbp-verify` (round scope, accept-or-fix) and feed the fix loop, because the root cause is typically in app code/data, not in the SCSS.
188
188
 
189
189
  ### Phase 7: Aggregate Findings
190
190
 
@@ -255,9 +255,9 @@ Go beyond fixing violations — actively improve visual quality. If spacing coul
255
255
 
256
256
  - **Loaded twice per round** (non-`claude_only` profiles):
257
257
  1. `round-executor` Step 3.8 with `phase: 'style_only'` and empty `e2e_screenshots[]` — reviews the just-written code's tokens/spacing/typography/color/cohesion (mandatory when files_changed contains UI / styling files)
258
- 2. `/cbp-round-execute` Step 5b with `phase: 'screenshot_review'` and screenshots aggregated from `round.context.e2e_outputs[*].screenshots` — runs Phase 6.5 only (rendered-output review + baseline regressions). Skipped when no e2e ran (`claude_only` / `backend`, or no eligible framework in `.codebyplan/e2e.json`).
258
+ 2. `/cbp-round-build` Step 5b with `phase: 'screenshot_review'` and screenshots aggregated from `round.context.e2e_outputs[*].screenshots` — runs Phase 6.5 only (rendered-output review + baseline regressions). Skipped when no e2e ran (`claude_only` / `backend`, or no eligible framework in `.codebyplan/e2e.json`).
259
259
  - **Also invoked by**: `/cbp-checkpoint-check` with screenshots aggregated from a whole-checkpoint e2e run
260
- - **Consumes**: `e2e_screenshots[]` aggregated from `round.context.e2e_outputs[*].screenshots` (populated by the `cbp-e2e-*` specialists at `/cbp-round-execute` Step 5)
260
+ - **Consumes**: `e2e_screenshots[]` aggregated from `round.context.e2e_outputs[*].screenshots` (populated by the `cbp-e2e-*` specialists at `/cbp-round-build` Step 5)
261
261
  - **Output written to**: `round.context.frontend_ui_review` — when invoked twice per round, the second invocation merges with the first
262
- - **Downstream gate**: this skill emits `findings[]` only. Changed-baseline-regression findings (`is_new === false`) surface as a BLOCKING gate at `/cbp-round-end` Step 7 (never auto-accepted); new-screen baselines (`is_new === true`) are auto-committed and reviewed semantically only; rendered-visual critical findings are surfaced in the Step 7 findings presentation.
262
+ - **Downstream gate**: this skill emits `findings[]` only. Changed-baseline-regression findings (`is_new === false`) surface as a BLOCKING gate at `/cbp-verify` (round scope, never auto-accepted); new-screen baselines (`is_new === true`) are auto-committed and reviewed semantically only; rendered-visual critical findings are surfaced in the `/cbp-verify` findings presentation.
263
263
  - **Paired with**: `frontend-design` (pre-implementation aesthetic decision), `frontend-ux` (interaction-quality self-review, also Step 3.8)
@@ -31,7 +31,7 @@ Create a commit using conventional commits format, then push to origin.
31
31
 
32
32
  | Flag | File Source | Use Case |
33
33
  |------|-------------|----------|
34
- | `--task` | All staged files | `/cbp-task-complete` |
34
+ | `--task` | All staged files | `/cbp-finalize` |
35
35
  | `--all` | All staged files | Explicit full commit |
36
36
  | `--scope-task` | Intersection of `task.files_changed[].path` and `git diff --cached --name-only` | Foreign-staged files exist alongside task work; user wants to commit only the task's files in this commit |
37
37
  | (none) | All staged files | Default behavior |
@@ -264,9 +264,9 @@ Stage the missing files or use --all.
264
264
  ## Integration
265
265
 
266
266
  - **Reads (--scope-task)**: Local state task file `.codebyplan/state/checkpoints/*/tasks/*.json` (in_progress); on miss `npx codebyplan sync` once; MCP `get_current_task` as documented break-glass when the state dir is absent and sync fails.
267
- - **Called by**: `/cbp-session-end`, `/cbp-task-complete`, `/cbp-checkpoint-complete`, manual
267
+ - **Called by**: `/cbp-session-end`, `/cbp-finalize`, `/cbp-checkpoint-complete`, manual
268
268
  - **Scope usage by commands**:
269
- - `/cbp-task-complete` -> `--no-push` (commit all staged)
269
+ - `/cbp-finalize` -> `--no-push` (commit all staged)
270
270
  - `/cbp-checkpoint-complete` -> no scope needed
271
271
  - `/cbp-session-end` -> `--all` or no scope (commit all staged)
272
272
  - **Rules**: `/.claude/rules/git-workflow.md`
@@ -8,12 +8,12 @@ effort: high
8
8
 
9
9
  Codifies the long-lived-branch-integration auto-memory rule (`[[feedback_long-lived-branch-integration]]`): when working on a feat branch that has diverged from main, merge main INTO the feat branch (not the reverse), resolve conflicts with the user, run a scoped QA pass, then return control to the caller — never rebase, never force-push, never push automatically.
10
10
 
11
- Triggered by `/cbp-task-start` (Step 3.6, optional stale-check), `/cbp-task-complete` (Step 5.5, mandatory pre-push — runs after the task commit on a clean tree), and `/cbp-checkpoint-end` (Step 0, mandatory pre-shipment). User can also invoke manually at any time.
11
+ Triggered by `/cbp-task-start` (Step 3.6, optional stale-check), `/cbp-finalize` (Step 5.5, mandatory pre-push — runs after the task commit on a clean tree), and `/cbp-checkpoint-end` (Step 0, mandatory pre-shipment). User can also invoke manually at any time.
12
12
 
13
13
  ## When to Use
14
14
 
15
15
  - **Auto-trigger (optional)**: `/cbp-task-start` Step 3.6 detects the feat branch is >10 commits behind `origin/{BASE}` OR the last fetch is >24h old.
16
- - **Auto-trigger (mandatory)**: `/cbp-task-complete` Step 5.5 — mandatory pre-push, after the task commit; runs on a clean tree to ensure the feat branch includes the latest main work before the single trailing push.
16
+ - **Auto-trigger (mandatory)**: `/cbp-finalize` Step 5.5 — mandatory pre-push, after the task commit; runs on a clean tree to ensure the feat branch includes the latest main work before the single trailing push.
17
17
  - **Auto-trigger (mandatory)**: `/cbp-checkpoint-end` Step 0 — always run before shipment to ensure no main drift reaches production.
18
18
  - **Manual invocation**: user runs `/cbp-merge-main` directly when they know main has advanced and want to pull it in immediately.
19
19
 
@@ -82,7 +82,7 @@ Supabase migrations are version-keyed by their numeric filename prefix. Two file
82
82
 
83
83
  - **Rename HEAD-side (Recommended when a main migration is already applied to a shared remote)** — rename the local file to a fresh, sequential timestamp that respects existing apply-order dependencies (probe `supabase migration list --db-url <preview>` if a preview branch exists, or inspect FK references in surrounding migrations). The orchestrator runs `git mv <old> <new>` itself; the rename lands in the git index and is picked up by the re-probe at step 5.
84
84
  - **Rename main-side (manual, OUT-OF-SKILL)** — only when the main file definitely has not been applied anywhere yet AND the user has write access to `{BASE}`. This skill does NOT touch the main branch: it runs on a feat branch (Step 0 enforces this) and the Key Rules below forbid any push from this skill. The user must, in a separate terminal: `git checkout {BASE} && git mv <old> <new> && git commit -m "fix(migration): rename to resolve collision with feat/..." && git push origin {BASE}`. After that push is confirmed remote-side, re-invoke `/cbp-merge-main` — Step 1 will fetch the updated main tip and Step 1.5 will re-probe with the rename in place.
85
- - **Defer to a new task in the active checkpoint** — `git merge --abort` is unnecessary because Step 2 has not started. Create a CHK-bound task per `cbp-round-end` reference `findings-presentation.md` "Infra Issue Absorption Contract — Resolve-in-Current-Scope by Default" and STOP `/cbp-merge-main`. Resume after the task completes.
85
+ - **Defer to a new task in the active checkpoint** — `git merge --abort` is unnecessary because Step 2 has not started. Create a CHK-bound task per `cbp-verify` reference `findings-presentation.md` "Infra Issue Absorption Contract — Resolve-in-Current-Scope by Default" and STOP `/cbp-merge-main`. Resume after the task completes.
86
86
  - **Abort merge** — STOP the skill. User decides later.
87
87
 
88
88
  4. After any HEAD-side rename action, re-execute Step 1.5 (collisions may chain — fixing one can expose another). The CLI probes the HEAD side via `git ls-files` (so staged renames are visible), matching the documented re-probe behavior. Main-side renames require a fresh `/cbp-merge-main` invocation (the user manually fetched and re-ran per option 2 above), not an in-skill loop.
@@ -209,7 +209,7 @@ Return control to the caller. **This skill NEVER pushes** — the caller decides
209
209
 
210
210
  - **Triggered by**:
211
211
  - `/cbp-task-start` Step 3.6 (optional stale-check: >10 commits behind OR >24h fetch age)
212
- - `/cbp-task-complete` Step 5.5 (mandatory pre-push, after task commit)
212
+ - `/cbp-finalize` Step 5.5 (mandatory pre-push, after task commit)
213
213
  - `/cbp-checkpoint-end` Step 0 (mandatory pre-shipment)
214
214
  - User-invocable manually
215
215
  - **Reads**: `.codebyplan/git.json`, local state `.codebyplan/state/checkpoints/<id>.json` + `.../tasks/<id>.json`; on miss `npx codebyplan sync` once; MCP `get_checkpoints` (active-filter multi-checkpoint scan) / MCP `get_tasks` as documented break-glass when the state dir is absent and sync fails (full cross-checkpoint scan). Git state.