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.
- package/dist/cli.js +1364 -352
- package/package.json +1 -1
- package/templates/agents/cbp-database-agent.md +1 -1
- package/templates/agents/cbp-e2e-maestro.md +1 -1
- package/templates/agents/cbp-e2e-playwright.md +24 -16
- package/templates/agents/cbp-e2e-tauri.md +1 -1
- package/templates/agents/cbp-e2e-vscode.md +1 -1
- package/templates/agents/cbp-e2e-xcuitest.md +1 -1
- package/templates/agents/cbp-improve-claude.md +2 -2
- package/templates/agents/{cbp-round-executor.md → cbp-round-builder.md} +23 -23
- package/templates/agents/{cbp-task-planner.md → cbp-round-planner.md} +26 -25
- package/templates/agents/cbp-security-agent.md +1 -1
- package/templates/agents/cbp-stripe-agent.md +2 -2
- package/templates/agents/cbp-testing-qa-agent.md +11 -11
- package/templates/agents/cbp-verify-reviewer.md +236 -0
- package/templates/context/architecture-map.md +4 -4
- package/templates/context/mcp-docs.md +57 -11
- package/templates/context/testing/e2e.md +9 -9
- package/templates/github-workflows/ci.yml +58 -0
- package/templates/hooks/cbp-skill-context-guard.sh +1 -1
- package/templates/hooks/cbp-test-hooks.sh +9 -9
- package/templates/hooks/validate-structure-lengths.sh +1 -1
- package/templates/hooks/validate-structure-patterns.sh +1 -1
- package/templates/rules/README.md +1 -2
- package/templates/rules/agent-claim-verification.md +1 -1
- package/templates/rules/context-file-loading.md +10 -10
- package/templates/rules/development-workflow.md +73 -0
- package/templates/rules/e2e-mandatory.md +8 -8
- package/templates/rules/execution-proof.md +70 -0
- package/templates/rules/model-invocation-convention.md +2 -2
- package/templates/rules/parallel-waves.md +11 -11
- package/templates/rules/spawn-failure-is-gate-failure.md +76 -0
- package/templates/rules/task-routing-recommendation.md +1 -1
- package/templates/rules/todo-backend.md +3 -3
- package/templates/rules/two-tier-ci.md +63 -0
- package/templates/settings.project.base.json +8 -10
- package/templates/skills/cbp-build-cc-mode/SKILL.md +1 -1
- package/templates/skills/cbp-build-cc-settings/reference/cbp-permission-policy.md +7 -7
- package/templates/skills/cbp-build-cc-skill/SKILL.md +1 -1
- package/templates/skills/cbp-build-cc-skill/reference/cbp-quality.md +2 -2
- package/templates/skills/cbp-build-cc-skill/reference/fork-eligibility.md +11 -14
- package/templates/skills/cbp-checkpoint-check/SKILL.md +2 -2
- package/templates/skills/cbp-checkpoint-create/SKILL.md +16 -1
- package/templates/skills/cbp-checkpoint-update/SKILL.md +3 -3
- package/templates/skills/cbp-clear-continue/SKILL.md +2 -2
- package/templates/skills/cbp-clear-prep/SKILL.md +3 -3
- package/templates/skills/{cbp-task-complete → cbp-finalize}/SKILL.md +25 -29
- package/templates/skills/{cbp-task-complete → cbp-finalize}/reference/checkpoint-done-branching.md +1 -1
- package/templates/skills/{cbp-task-complete → cbp-finalize}/reference/next-step-heuristic.md +1 -1
- package/templates/skills/cbp-frontend-design/SKILL.md +1 -1
- package/templates/skills/cbp-frontend-ui/SKILL.md +7 -7
- package/templates/skills/cbp-git-commit/SKILL.md +3 -3
- package/templates/skills/cbp-merge-main/SKILL.md +4 -4
- package/templates/skills/{cbp-round-execute → cbp-round-build}/SKILL.md +93 -75
- package/templates/skills/cbp-round-complete/SKILL.md +15 -14
- package/templates/skills/cbp-round-plan/SKILL.md +344 -0
- package/templates/skills/cbp-session-end/SKILL.md +1 -1
- package/templates/skills/cbp-ship-main/SKILL.md +3 -2
- package/templates/skills/cbp-standalone-task-check/SKILL.md +10 -9
- package/templates/skills/cbp-standalone-task-complete/SKILL.md +12 -13
- package/templates/skills/cbp-standalone-task-create/SKILL.md +16 -9
- package/templates/skills/cbp-standalone-task-start/SKILL.md +9 -5
- package/templates/skills/cbp-standalone-task-testing/SKILL.md +5 -5
- package/templates/skills/cbp-task-create/SKILL.md +6 -7
- package/templates/skills/cbp-task-start/SKILL.md +8 -8
- package/templates/skills/cbp-todo/SKILL.md +6 -8
- package/templates/skills/cbp-verify/SKILL.md +146 -0
- package/templates/skills/cbp-verify/reference/deterministic-gates.md +114 -0
- package/templates/skills/{cbp-round-end → cbp-verify}/reference/findings-presentation.md +16 -12
- package/templates/skills/cbp-verify/reference/round-scope.md +62 -0
- package/templates/skills/cbp-verify/reference/task-scope.md +71 -0
- package/templates/agents/cbp-improve-round.md +0 -283
- package/templates/agents/cbp-task-check.md +0 -217
- package/templates/skills/cbp-round-check/SKILL.md +0 -134
- package/templates/skills/cbp-round-end/SKILL.md +0 -173
- package/templates/skills/cbp-round-end/reference/inline-fallback.md +0 -35
- package/templates/skills/cbp-round-execute/reference/inline-fallback.md +0 -55
- package/templates/skills/cbp-round-input/SKILL.md +0 -197
- package/templates/skills/cbp-round-start/SKILL.md +0 -261
- package/templates/skills/cbp-round-update/SKILL.md +0 -120
- package/templates/skills/cbp-ship/templates/workflow-eas-submit.yml +0 -53
- package/templates/skills/cbp-ship/templates/workflow-vsce-publish.yml +0 -31
- package/templates/skills/cbp-task-check/SKILL.md +0 -172
- 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-
|
|
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-
|
|
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-
|
|
34
|
-
- **Plan-approval gate**: `cbp-round-
|
|
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-
|
|
57
|
-
`cbp-round-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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-
|
|
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-
|
|
34
|
-
| **spawn-then-route** | spawns one agent, then `AskUserQuestion` / auto-triggers the next skill
|
|
35
|
-
| **inline-by-design** | interactive Q&A or stepwise writes that must stay in the main context | `cbp-task-create`, `cbp-
|
|
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
|
|
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-
|
|
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-
|
|
54
|
-
| cbp-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
47
|
+
### Step 1.5: Detect Entry Context (from `/cbp-finalize` expand path)
|
|
48
48
|
|
|
49
|
-
When invoked with a preamble naming `Triggered from /cbp-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3
|
-
description:
|
|
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
|
-
#
|
|
9
|
+
# Finalize Command
|
|
10
10
|
|
|
11
|
-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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
|
-
- `
|
|
43
|
-
- `
|
|
44
|
-
- `
|
|
45
|
-
- `
|
|
46
|
-
- `
|
|
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-
|
|
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 `
|
|
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
|
|
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-
|
|
83
|
+
### Step 2.5: Verify `/cbp-verify` (scope=task) Has Run READY
|
|
84
84
|
|
|
85
|
-
`task.context.
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
194
|
-
- **Chain**: `/cbp-
|
|
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.`
|
package/templates/skills/{cbp-task-complete → cbp-finalize}/reference/checkpoint-done-branching.md
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Checkpoint-Done Auto-Trigger in `/cbp-
|
|
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
|
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
267
|
+
- **Called by**: `/cbp-session-end`, `/cbp-finalize`, `/cbp-checkpoint-complete`, manual
|
|
268
268
|
- **Scope usage by commands**:
|
|
269
|
-
- `/cbp-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|