codebyplan 1.13.53 → 1.13.55

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 (84) hide show
  1. package/dist/cli.js +1364 -352
  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 +1 -1
  13. package/templates/agents/cbp-stripe-agent.md +2 -2
  14. package/templates/agents/cbp-testing-qa-agent.md +11 -11
  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 +58 -0
  20. package/templates/hooks/cbp-skill-context-guard.sh +1 -1
  21. package/templates/hooks/cbp-test-hooks.sh +9 -9
  22. package/templates/hooks/validate-structure-lengths.sh +1 -1
  23. package/templates/hooks/validate-structure-patterns.sh +1 -1
  24. package/templates/rules/README.md +1 -2
  25. package/templates/rules/agent-claim-verification.md +1 -1
  26. package/templates/rules/context-file-loading.md +10 -10
  27. package/templates/rules/development-workflow.md +73 -0
  28. package/templates/rules/e2e-mandatory.md +8 -8
  29. package/templates/rules/execution-proof.md +70 -0
  30. package/templates/rules/model-invocation-convention.md +2 -2
  31. package/templates/rules/parallel-waves.md +11 -11
  32. package/templates/rules/spawn-failure-is-gate-failure.md +76 -0
  33. package/templates/rules/task-routing-recommendation.md +1 -1
  34. package/templates/rules/todo-backend.md +3 -3
  35. package/templates/rules/two-tier-ci.md +63 -0
  36. package/templates/settings.project.base.json +8 -10
  37. package/templates/skills/cbp-build-cc-mode/SKILL.md +1 -1
  38. package/templates/skills/cbp-build-cc-settings/reference/cbp-permission-policy.md +7 -7
  39. package/templates/skills/cbp-build-cc-skill/SKILL.md +1 -1
  40. package/templates/skills/cbp-build-cc-skill/reference/cbp-quality.md +2 -2
  41. package/templates/skills/cbp-build-cc-skill/reference/fork-eligibility.md +11 -14
  42. package/templates/skills/cbp-checkpoint-check/SKILL.md +2 -2
  43. package/templates/skills/cbp-checkpoint-create/SKILL.md +16 -1
  44. package/templates/skills/cbp-checkpoint-update/SKILL.md +3 -3
  45. package/templates/skills/cbp-clear-continue/SKILL.md +2 -2
  46. package/templates/skills/cbp-clear-prep/SKILL.md +3 -3
  47. package/templates/skills/{cbp-task-complete → cbp-finalize}/SKILL.md +25 -29
  48. package/templates/skills/{cbp-task-complete → cbp-finalize}/reference/checkpoint-done-branching.md +1 -1
  49. package/templates/skills/{cbp-task-complete → cbp-finalize}/reference/next-step-heuristic.md +1 -1
  50. package/templates/skills/cbp-frontend-design/SKILL.md +1 -1
  51. package/templates/skills/cbp-frontend-ui/SKILL.md +7 -7
  52. package/templates/skills/cbp-git-commit/SKILL.md +3 -3
  53. package/templates/skills/cbp-merge-main/SKILL.md +4 -4
  54. package/templates/skills/{cbp-round-execute → cbp-round-build}/SKILL.md +93 -75
  55. package/templates/skills/cbp-round-complete/SKILL.md +15 -14
  56. package/templates/skills/cbp-round-plan/SKILL.md +344 -0
  57. package/templates/skills/cbp-session-end/SKILL.md +1 -1
  58. package/templates/skills/cbp-ship-main/SKILL.md +3 -2
  59. package/templates/skills/cbp-standalone-task-check/SKILL.md +10 -9
  60. package/templates/skills/cbp-standalone-task-complete/SKILL.md +12 -13
  61. package/templates/skills/cbp-standalone-task-create/SKILL.md +16 -9
  62. package/templates/skills/cbp-standalone-task-start/SKILL.md +9 -5
  63. package/templates/skills/cbp-standalone-task-testing/SKILL.md +5 -5
  64. package/templates/skills/cbp-task-create/SKILL.md +6 -7
  65. package/templates/skills/cbp-task-start/SKILL.md +8 -8
  66. package/templates/skills/cbp-todo/SKILL.md +6 -8
  67. package/templates/skills/cbp-verify/SKILL.md +146 -0
  68. package/templates/skills/cbp-verify/reference/deterministic-gates.md +114 -0
  69. package/templates/skills/{cbp-round-end → cbp-verify}/reference/findings-presentation.md +16 -12
  70. package/templates/skills/cbp-verify/reference/round-scope.md +62 -0
  71. package/templates/skills/cbp-verify/reference/task-scope.md +71 -0
  72. package/templates/agents/cbp-improve-round.md +0 -283
  73. package/templates/agents/cbp-task-check.md +0 -217
  74. package/templates/skills/cbp-round-check/SKILL.md +0 -134
  75. package/templates/skills/cbp-round-end/SKILL.md +0 -173
  76. package/templates/skills/cbp-round-end/reference/inline-fallback.md +0 -35
  77. package/templates/skills/cbp-round-execute/reference/inline-fallback.md +0 -55
  78. package/templates/skills/cbp-round-input/SKILL.md +0 -197
  79. package/templates/skills/cbp-round-start/SKILL.md +0 -261
  80. package/templates/skills/cbp-round-update/SKILL.md +0 -120
  81. package/templates/skills/cbp-ship/templates/workflow-eas-submit.yml +0 -53
  82. package/templates/skills/cbp-ship/templates/workflow-vsce-publish.yml +0 -31
  83. package/templates/skills/cbp-task-check/SKILL.md +0 -172
  84. package/templates/skills/cbp-task-testing/SKILL.md +0 -279
@@ -38,7 +38,7 @@ A skill that carries a `model:` line is a **gap** — remove it unless a deliber
38
38
 
39
39
  ### Agents — `model:` + `effort:`
40
40
 
41
- Default `model: sonnet` + `effort: xhigh`. Fifteen of the 17 authoring agents take the default (`cbp-cc-executor`, `cbp-database-agent`, `cbp-improve-claude`, `cbp-improve-round`, `cbp-research`, `cbp-round-executor`, `cbp-security-agent`, `cbp-task-check`, `cbp-task-planner`, `cbp-testing-qa-agent`, `cbp-e2e-playwright`, `cbp-e2e-maestro`, `cbp-e2e-tauri`, `cbp-e2e-vscode`, `cbp-e2e-xcuitest`). The other two are exceptions:
41
+ Default `model: sonnet` + `effort: xhigh`. Fifteen of the 17 authoring agents take the default (`cbp-cc-executor`, `cbp-database-agent`, `cbp-improve-claude`, `cbp-research`, `cbp-round-builder`, `cbp-security-agent`, `cbp-stripe-agent`, `cbp-verify-reviewer`, `cbp-round-planner`, `cbp-testing-qa-agent`, `cbp-e2e-playwright`, `cbp-e2e-maestro`, `cbp-e2e-tauri`, `cbp-e2e-vscode`, `cbp-e2e-xcuitest`). The other two are exceptions:
42
42
 
43
43
  | agent | model | effort | reason |
44
44
  | -------------------- | ------ | ------ | ----------------------------------------------------------------------------------- |
@@ -22,7 +22,7 @@ Precedence is `deny > ask > allow`; arrays union across scopes (managed/user/pro
22
22
 
23
23
  ### `allow` — the autonomous workflow surface
24
24
 
25
- - **Non-lifecycle, non-shipment `/cbp-*` skills** — authoring (`cbp-build-cc-*`), frontend (`cbp-frontend-*`), git (`cbp-git-*`, `cbp-merge-main`, `cbp-refresh-infra`), round work (`cbp-round-check`/`-end`/`-input`/`-start`/`-update` — `cbp-round-update` is autonomous triage that only reads round state and routes to `cbp-round-complete` or `cbp-round-input`, so it runs without a prompt), setup/configure (`cbp-setup-*`, `cbp-ship-configure`, `cbp-supabase-*`), task prep (`cbp-task-check`/`-create`/`-start`/`-testing`, `cbp-standalone-task-check`/`-testing`), planning (`cbp-checkpoint-plan`/`-update`), plus `cbp-session-start` and `cbp-todo`. Invoking a skill is the intended mode of operation; the gated side effects happen inside via the Bash/MCP tools the skill calls, which carry their own tiering. The lifecycle/state-transition and plan-approval skills are the exception — they live in `ask` (next section).
25
+ - **Non-lifecycle, non-shipment `/cbp-*` skills** — authoring (`cbp-build-cc-*`), frontend (`cbp-frontend-*`), git (`cbp-git-*`, `cbp-merge-main`, `cbp-refresh-infra`), round work (`cbp-round-plan`, `cbp-verify` — `cbp-verify` is the autonomous verify stage that runs deterministic gates, proves execution, spawns the fresh-context reviewer, and routes to `cbp-round-complete` or `cbp-round-plan`, so it runs without a prompt), setup/configure (`cbp-setup-*`, `cbp-ship-configure`, `cbp-supabase-*`), task prep (`cbp-task-create`/`-start`, `cbp-standalone-task-check`/`-testing`), planning (`cbp-checkpoint-plan`/`-update`), plus `cbp-session-start` and `cbp-todo`. Invoking a skill is the intended mode of operation; the gated side effects happen inside via the Bash/MCP tools the skill calls, which carry their own tiering. The lifecycle/state-transition and plan-approval skills are the exception — they live in `ask` (next section).
26
26
  - **All `mcp__codebyplan__*` reads** (`get_*`, `list_*`, `search_*`, `health_check`, `lookup_symbol`, `resolve_library_id`, `get_chunk`).
27
27
  - **Routine workflow-write MCP tools** the pipeline calls many times per task: create/update/complete checkpoint, task, and round; session log + session-state writes; `create_worktree`, `add_library`, `flag_stale_chunk`, `update_server_config`, `update_eslint_repo_config`, `update_task_template`. Gating these with `ask` would make the autonomous workflow unusable.
28
28
  - **Read/safe CLI commands** (both `codebyplan X` and `npx codebyplan X`): `whoami`, `resolve-worktree`, `statusline`, `ports`, `tech-stack`, `eslint`, `round`, `help`, `--version`.
@@ -30,8 +30,8 @@ Precedence is `deny > ask > allow`; arrays union across scopes (managed/user/pro
30
30
  ### `ask` — the deliberate confirm-gate
31
31
 
32
32
  - **Production-shipment skills**: `cbp-ship`, `cbp-ship-main`, `cbp-checkpoint-end` — these promote/deploy to production, so they prompt even in an otherwise auto-allowed setup.
33
- - **Lifecycle / state-transition skills**: `cbp-checkpoint-start`, `cbp-checkpoint-create`, `cbp-checkpoint-check`, `cbp-checkpoint-complete`, `cbp-round-complete`, `cbp-session-end`, `cbp-task-complete`, `cbp-standalone-task-create`, `cbp-standalone-task-start`, `cbp-standalone-task-complete` — these open or close checkpoints, tasks, rounds, and sessions (advancing workflow state in the database), so they stop for explicit confirmation rather than running autonomously. `cbp-round-complete` is the permission-gated round finalizer (reconciles the user's `git add`s, completes the round, routes onward); its `ask` prompt replaces the in-skill confirmation that used to live in `cbp-round-update` — which is now an autonomous, `allow`-tier triage step.
34
- - **Plan-approval gate**: `cbp-round-execute` — the round plan is approved by confirming this `ask` prompt rather than via an in-skill AskUserQuestion. `cbp-round-start` runs its planning Q&A, then hands off to `cbp-round-execute`; the permission prompt is the user's go/no-go on the plan.
33
+ - **Lifecycle / state-transition skills**: `cbp-checkpoint-start`, `cbp-checkpoint-create`, `cbp-checkpoint-check`, `cbp-checkpoint-complete`, `cbp-round-complete`, `cbp-session-end`, `cbp-finalize`, `cbp-standalone-task-create`, `cbp-standalone-task-start`, `cbp-standalone-task-complete` — these open or close checkpoints, tasks, rounds, and sessions (advancing workflow state in the database), so they stop for explicit confirmation rather than running autonomously. `cbp-round-complete` is the permission-gated round finalizer (reconciles the user's `git add`s, completes the round, routes onward); its `ask` prompt is the human gate downstream of `cbp-verify` — the autonomous, `allow`-tier verify stage whose triage routes here.
34
+ - **Plan-approval gate**: `cbp-round-build` — the round plan is approved by confirming this `ask` prompt rather than via an in-skill AskUserQuestion. `cbp-round-plan` runs its planning Q&A, then hands off to `cbp-round-build`; the permission prompt is the user's go/no-go on the plan.
35
35
  - **Destructive / admin MCP tools**: `delete_session_log`, `delete_worktree`, `create_repo`, `release_assignment`. (The launch and member-admin tools were dropped from the MCP surface in CHK-180 — those concerns are web-app only now.)
36
36
  - **Mutating / external / clobber-risk CLI commands** (both prefixes): `setup`, `login`, `logout`, `upgrade-auth`, `config` (can overwrite committed `.codebyplan/` files), `branch` (rewrites branch config), `ship`, `claude` (`install`/`update`/`uninstall` overwrite `.claude/`).
37
37
 
@@ -53,11 +53,11 @@ A skill invokes the next skill via the Skill tool at the appropriate routing bra
53
53
  ### How the human gate works
54
54
 
55
55
  - **`allow`-tier** skill: the harness auto-fires it silently when the triggering skill invokes it.
56
- No permission prompt. Use for safe, routine-flow skills (e.g. `cbp-task-testing`,
57
- `cbp-round-input`) where the trigger condition already encodes the human intent.
56
+ No permission prompt. Use for safe, routine-flow skills (e.g. `cbp-verify`,
57
+ `cbp-round-plan`) where the trigger condition already encodes the human intent.
58
58
  - **`ask`-tier** skill: the harness pauses and shows a permission prompt before the skill runs.
59
59
  **That prompt IS the human gate** — it replaces the old "Next: /cbp-X, run it yourself"
60
- manual directive. Use for lifecycle/state-transition skills (e.g. `cbp-task-complete`,
60
+ manual directive. Use for lifecycle/state-transition skills (e.g. `cbp-finalize`,
61
61
  `cbp-checkpoint-check`) where a deliberate confirmation is still desirable.
62
62
 
63
63
  This means:
@@ -70,7 +70,7 @@ This means:
70
70
 
71
71
  The `cbp-skill-context-guard.sh` PreToolUse hook denies heavy close-out skills when the
72
72
  context window exceeds `CBP_CONTEXT_WARN_TOKENS` (default 200 000 tokens). The heavy allowlist
73
- is: `cbp-round-execute`, `cbp-task-testing`, `cbp-standalone-task-testing`,
73
+ is: `cbp-round-build`, `cbp-verify`, `cbp-standalone-task-testing`,
74
74
  `cbp-checkpoint-check`, `cbp-checkpoint-end`.
75
75
 
76
76
  When the guard fires, it directs the model to run `/cbp-clear-prep` instead. The flow is:
@@ -81,7 +81,7 @@ A Task-pattern skill that must only run on explicit user confirmation is a **per
81
81
 
82
82
  - MUST carry `disable-model-invocation: true` — the model cannot invoke it; only the user can (via `/skill-name`).
83
83
  - Any upstream skill that auto-triggers it MUST instead emit a `Next: /skill-name` directive and STOP — model invocation of a `disable-model-invocation` skill is blocked at the runtime level.
84
- - Canonical example: `/cbp-round-complete` (the round finalizer). `/cbp-round-update` routes a clean triage via a `Next: /cbp-round-complete` directive and stops — it cannot invoke round-complete directly.
84
+ - Canonical example: `/cbp-round-complete` (the round finalizer). `/cbp-verify` routes a clean round via a `Next: /cbp-round-complete` directive and stops — it cannot invoke round-complete directly.
85
85
 
86
86
  ### Step 5 — Fill the frontmatter
87
87
 
@@ -79,14 +79,14 @@ A skill should do one thing in the pipeline. If a skill both plans AND executes,
79
79
 
80
80
  | Wrong | Right |
81
81
  | --------------------------------------- | ------------------------------------------------------------ |
82
- | `/cbp-round` (plans + executes + tests) | `/cbp-round-start` → `/cbp-round-execute` → `/cbp-round-end` |
82
+ | `/cbp-round` (plans + executes + tests) | `/cbp-round-plan` → `/cbp-round-build` → `/cbp-verify` |
83
83
 
84
84
  ### Pipeline Clarity
85
85
 
86
86
  If the skill is part of a chain, show it:
87
87
 
88
88
  ```
89
- /cbp-round-start (planning) → /cbp-round-execute (ask-tier permission = plan approval)
89
+ /cbp-round-plan (planning) → /cbp-round-build (ask-tier permission = plan approval)
90
90
  ```
91
91
 
92
92
  ### Approval Gates
@@ -4,7 +4,7 @@
4
4
  parent conversation and, per the runtime, **runs in the background by default**. It is
5
5
  isolation for a *whole skill*, not a way to delegate one sub-step. A forked body therefore
6
6
  cannot drive the main pipeline: it can't `AskUserQuestion`, can't auto-trigger another
7
- skill, and can't run an inline-fallback that the orchestrator depends on.
7
+ skill, and can't run the deterministic fallback path the orchestrator depends on.
8
8
 
9
9
  So forking only helps a narrow shape of skill. The canonical eligible example is
10
10
  [examples/fork-skill.md](../examples/fork-skill.md): a single self-contained analytical task
@@ -19,20 +19,20 @@ A skill is **fork-eligible** only when ALL hold:
19
19
  3. It does **not route** — no auto-trigger of another skill, no close-out directive that must
20
20
  fire in the main context.
21
21
  4. It does **not fan out** — it does not spawn multiple subagents and coordinate them.
22
- 5. It has **no inline-fallback** contract the orchestrator relies on.
22
+ 5. It has **no deterministic fallback** path the orchestrator relies on.
23
23
 
24
24
  Fail any one → the skill stays **inline** (main context). Inline skills still get clean
25
25
  context isolation the right way: by delegating their heavy step to a dedicated **agent**
26
- (e.g. `cbp-task-check`, `cbp-improve-round`, `cbp-round-executor`). The agent is the
26
+ (e.g. `cbp-verify-reviewer`, `cbp-round-builder`). The agent is the
27
27
  isolation boundary; the skill stays in the main thread to orchestrate, route, and interact.
28
28
 
29
29
  ## When NOT to use `context: fork` (the disqualifying patterns)
30
30
 
31
31
  | Pattern | Why it can't fork | Example skills |
32
32
  |---------|-------------------|----------------|
33
- | **fan-out** | spawns multiple agents in parallel and coordinates them | `cbp-round-execute`, `cbp-checkpoint-check`, `cbp-map-architecture`, `cbp-refresh-arch-map` |
34
- | **spawn-then-route** | spawns one agent, then `AskUserQuestion` / auto-triggers the next skill / runs inline-fallback | `cbp-task-check`, `cbp-standalone-task-check`, `cbp-round-start`, `cbp-round-end`, `cbp-checkpoint-plan` |
35
- | **inline-by-design** | interactive Q&A or stepwise writes that must stay in the main context | `cbp-task-create`, `cbp-task-complete`, `cbp-round-update`, `cbp-merge-main` |
33
+ | **fan-out** | spawns multiple agents in parallel and coordinates them | `cbp-round-build`, `cbp-checkpoint-check`, `cbp-map-architecture`, `cbp-refresh-arch-map` |
34
+ | **spawn-then-route** | spawns one agent, then `AskUserQuestion` / auto-triggers the next skill | `cbp-verify`, `cbp-standalone-task-check`, `cbp-round-plan`, `cbp-checkpoint-plan` |
35
+ | **inline-by-design** | interactive Q&A or stepwise writes that must stay in the main context | `cbp-task-create`, `cbp-finalize`, `cbp-merge-main` |
36
36
  | **consumed-inline** | invoked *by* an agent (e.g. round-executor) and applies fixes synchronously into that context | `cbp-frontend-design`, `cbp-frontend-ui`, `cbp-frontend-ux` |
37
37
  | **doc-ref-only** | mentions subagents/fork only as documentation; runs inline authoring | the `cbp-build-cc-*` authoring skills, `cbp-supabase-migrate` |
38
38
 
@@ -40,28 +40,25 @@ isolation boundary; the skill stays in the main thread to orchestrate, route, an
40
40
 
41
41
  Every skill whose `SKILL.md` touches the subagent/fork boundary — by spawning a subagent, by
42
42
  being invoked inline by an agent, or by documenting the feature — was classified against the
43
- eligibility test. **Result: 0 of 25 are fork-eligible** — none were migrated, because every
43
+ eligibility test. **Result: 0 of 22 are fork-eligible** — none were migrated, because every
44
44
  one either already isolates heavy work in a dedicated agent (the correct boundary) or depends
45
45
  on inline orchestration/interaction that a background fork would break.
46
46
 
47
47
  | Skill | Pattern | Fork-eligible |
48
48
  |-------|---------|:---:|
49
- | cbp-round-execute | fan-out | no |
49
+ | cbp-round-build | fan-out | no |
50
50
  | cbp-checkpoint-check | fan-out | no |
51
51
  | cbp-map-architecture | fan-out | no |
52
52
  | cbp-refresh-arch-map | fan-out | no |
53
- | cbp-round-start | spawn-then-route | no |
54
- | cbp-round-end | spawn-then-route | no |
55
- | cbp-task-check | spawn-then-route | no |
53
+ | cbp-round-plan | spawn-then-route | no |
54
+ | cbp-verify | spawn-then-route | no |
56
55
  | cbp-standalone-task-check | spawn-then-route | no |
57
56
  | cbp-checkpoint-plan | spawn-then-route | no |
58
- | cbp-round-update | inline-by-design | no |
59
57
  | cbp-task-create | inline-by-design | no |
60
58
  | cbp-standalone-task-create | inline-by-design | no |
61
- | cbp-task-complete | inline-by-design | no |
59
+ | cbp-finalize | inline-by-design | no |
62
60
  | cbp-standalone-task-complete | inline-by-design | no |
63
61
  | cbp-merge-main | inline-by-design | no |
64
- | cbp-task-testing | inline-by-design | no |
65
62
  | cbp-standalone-task-testing | inline-by-design | no |
66
63
  | cbp-frontend-design | consumed-inline | no |
67
64
  | cbp-frontend-ui | consumed-inline | no |
@@ -127,11 +127,11 @@ Aggregate the files touched across all tasks (reusing Step 4's deduplicated tabl
127
127
  Continue to Step 6.
128
128
 
129
129
  5. **On fail** (any framework `f`: `e2e_outputs[f].status === 'failed'` OR `e2e_outputs[f].test_results.failed > 0`): build a failure summary from `e2e_outputs[*].test_results.failures[]` aggregated and grouped by `category`. Surface via `AskUserQuestion`:
130
- - **(a) Create fix-task in CHK-{NNN} (recommended)** — run `codebyplan task create` (CLI write-through; break-glass: MCP `create_task`) with `checkpoint_id=current_checkpoint_id`, `title="Fix checkpoint-level e2e failures (CHK-{NNN})"`, `requirements` containing the detailed failure breakdown (category counts, files involved, pages broken, screenshot paths from `e2e_outputs[*].screenshots[]`), AND `context: { source_checkpoint_id, e2e_failure_summary: { category_counts, pages_broken, screenshot_paths }, fix_type: "checkpoint_e2e" }` so downstream `cbp-task-planner` can verify failure premises. Per `cbp-round-end` reference `findings-presentation.md` "Infra Issue Absorption Contract — Resolve-in-Current-Scope by Default", checkpoint-level e2e failures absorb into the active checkpoint — not standalone.
130
+ - **(a) Create fix-task in CHK-{NNN} (recommended)** — run `codebyplan task create` (CLI write-through; break-glass: MCP `create_task`) with `checkpoint_id=current_checkpoint_id`, `title="Fix checkpoint-level e2e failures (CHK-{NNN})"`, `requirements` containing the detailed failure breakdown (category counts, files involved, pages broken, screenshot paths from `e2e_outputs[*].screenshots[]`), AND `context: { source_checkpoint_id, e2e_failure_summary: { category_counts, pages_broken, screenshot_paths }, fix_type: "checkpoint_e2e" }` so downstream `cbp-round-planner` can verify failure premises. Per `cbp-verify` reference `findings-presentation.md` "Infra Issue Absorption Contract — Resolve-in-Current-Scope by Default", checkpoint-level e2e failures absorb into the active checkpoint — not standalone.
131
131
  - **(b) Surface as warning only — proceed to checkpoint-end** — append `| Checkpoint E2E | warning | N failures (deferred) |` to Step 5 QA Summary; continue to Step 6.
132
132
  - **(c) Halt — review manually** — STOP and wait for the user.
133
133
 
134
- See `cbp-round-end` reference `findings-presentation.md` "Infra Issue Absorption Contract — Infra-Class Issue Catalog" row "Checkpoint-level e2e failure" for the routing rationale.
134
+ See `cbp-verify` reference `findings-presentation.md` "Infra Issue Absorption Contract — Infra-Class Issue Catalog" row "Checkpoint-level e2e failure" for the routing rationale.
135
135
 
136
136
  ### Step 6: User Discussion
137
137
 
@@ -87,7 +87,22 @@ This is the first identity-stamping point — when claiming, passing `worktree_i
87
87
 
88
88
  Read `.codebyplan/git.json` `branch_config.production` (default `"main"`) as `BASE`. codebyplan repos are main-only — never create or branch from a `development`/integration branch.
89
89
 
90
- Compute the slug deterministically:
90
+ **8.1 — Reuse the cloud-created branch when present.** When the repo is GitHub-connected, the CHK-207 `create-feat-branch` Edge Function fires on the Step 7 row INSERT, creates `feat/CHK-{NNN}-<slug>` on origin, and writes `branch_name` back to the checkpoint row. Creating a second, differently-slugged branch here orphans the cloud one — so re-read the row first:
91
+
92
+ ```bash
93
+ sleep 5 # give the INSERT webhook a moment to write branch_name back
94
+ npx codebyplan sync 2>/dev/null || true
95
+ BRANCH=$(jq -r '.branch_name // empty' ".codebyplan/state/checkpoints/{checkpoint-id}.json" 2>/dev/null)
96
+ ```
97
+
98
+ (Break-glass: MCP `get_checkpoints` and read the row's `branch_name`.) If `BRANCH` is non-empty, check out the existing remote branch and skip 8.2 entirely — do NOT push (it already exists on origin) and do NOT persist `--branch-name` (the Edge Function already recorded it):
99
+
100
+ ```bash
101
+ git fetch origin "$BRANCH"
102
+ git checkout -b "$BRANCH" --track "origin/$BRANCH"
103
+ ```
104
+
105
+ **8.2 — Fallback: create the branch locally.** Only when `BRANCH` is empty (repo not GitHub-connected, or the webhook hasn't landed). Compute the slug deterministically:
91
106
 
92
107
  ```bash
93
108
  SLUG=$(codebyplan slug "{checkpoint title}")
@@ -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.