codebyplan 1.13.61 → 1.13.62

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 (64) hide show
  1. package/dist/cli.js +33 -5
  2. package/package.json +1 -1
  3. package/templates/agents/cbp-e2e-maestro.md +1 -1
  4. package/templates/agents/cbp-e2e-playwright.md +1 -1
  5. package/templates/agents/cbp-e2e-tauri.md +1 -1
  6. package/templates/agents/cbp-e2e-vscode.md +1 -1
  7. package/templates/agents/cbp-e2e-xcuitest.md +1 -1
  8. package/templates/rules/effort-and-ultracode.md +70 -0
  9. package/templates/rules/model-invocation-convention.md +1 -0
  10. package/templates/rules/workflow-orchestration.md +59 -0
  11. package/templates/skills/cbp-build-cc-agent/SKILL.md +1 -0
  12. package/templates/skills/cbp-build-cc-claude-file/SKILL.md +1 -0
  13. package/templates/skills/cbp-build-cc-mode/SKILL.md +25 -17
  14. package/templates/skills/cbp-build-cc-rule/SKILL.md +1 -0
  15. package/templates/skills/cbp-build-cc-settings/SKILL.md +1 -0
  16. package/templates/skills/cbp-build-cc-settings/reference/settings-fields.md +1 -1
  17. package/templates/skills/cbp-build-cc-skill/SKILL.md +2 -1
  18. package/templates/skills/cbp-build-cc-skill/reference/frontmatter-fields.md +1 -1
  19. package/templates/skills/cbp-build-cc-skill/scripts/validate-skill.sh +12 -9
  20. package/templates/skills/cbp-checkpoint-check/SKILL.md +5 -0
  21. package/templates/skills/cbp-checkpoint-complete/SKILL.md +1 -0
  22. package/templates/skills/cbp-checkpoint-create/SKILL.md +1 -0
  23. package/templates/skills/cbp-checkpoint-end/SKILL.md +5 -0
  24. package/templates/skills/cbp-checkpoint-plan/SKILL.md +5 -0
  25. package/templates/skills/cbp-checkpoint-start/SKILL.md +1 -0
  26. package/templates/skills/cbp-checkpoint-update/SKILL.md +2 -1
  27. package/templates/skills/cbp-clear-continue/SKILL.md +2 -1
  28. package/templates/skills/cbp-clear-prep/SKILL.md +2 -1
  29. package/templates/skills/cbp-finalize/SKILL.md +1 -0
  30. package/templates/skills/cbp-frontend-design/SKILL.md +1 -0
  31. package/templates/skills/cbp-frontend-ui/SKILL.md +2 -1
  32. package/templates/skills/cbp-frontend-ux/SKILL.md +2 -1
  33. package/templates/skills/cbp-git-branch-feat-create/SKILL.md +1 -0
  34. package/templates/skills/cbp-git-commit/SKILL.md +1 -0
  35. package/templates/skills/cbp-map-architecture/SKILL.md +5 -0
  36. package/templates/skills/cbp-merge-main/SKILL.md +1 -0
  37. package/templates/skills/cbp-refresh-arch-map/SKILL.md +1 -0
  38. package/templates/skills/cbp-round-build/SKILL.md +5 -0
  39. package/templates/skills/cbp-round-complete/SKILL.md +1 -0
  40. package/templates/skills/cbp-round-plan/SKILL.md +5 -0
  41. package/templates/skills/cbp-session-end/SKILL.md +2 -1
  42. package/templates/skills/cbp-session-start/SKILL.md +1 -0
  43. package/templates/skills/cbp-setup-cd/SKILL.md +2 -1
  44. package/templates/skills/cbp-setup-ci/SKILL.md +2 -1
  45. package/templates/skills/cbp-setup-e2e/SKILL.md +2 -1
  46. package/templates/skills/cbp-setup-eslint/SKILL.md +2 -1
  47. package/templates/skills/cbp-ship/SKILL.md +5 -0
  48. package/templates/skills/cbp-ship-configure/SKILL.md +2 -1
  49. package/templates/skills/cbp-ship-main/SKILL.md +1 -0
  50. package/templates/skills/cbp-standalone-task-check/SKILL.md +1 -0
  51. package/templates/skills/cbp-standalone-task-complete/SKILL.md +1 -0
  52. package/templates/skills/cbp-standalone-task-create/SKILL.md +2 -1
  53. package/templates/skills/cbp-standalone-task-start/SKILL.md +2 -1
  54. package/templates/skills/cbp-standalone-task-testing/SKILL.md +2 -1
  55. package/templates/skills/cbp-stripe/SKILL.md +2 -1
  56. package/templates/skills/cbp-supabase-branch-check/SKILL.md +2 -1
  57. package/templates/skills/cbp-supabase-migrate/SKILL.md +1 -0
  58. package/templates/skills/cbp-supabase-setup/SKILL.md +2 -1
  59. package/templates/skills/cbp-task-create/SKILL.md +2 -1
  60. package/templates/skills/cbp-task-start/SKILL.md +1 -0
  61. package/templates/skills/cbp-todo/SKILL.md +2 -1
  62. package/templates/skills/cbp-verify/SKILL.md +5 -0
  63. package/templates/skills/supabase/SKILL.md +2 -0
  64. package/templates/skills/supabase-postgres-best-practices/SKILL.md +2 -0
package/dist/cli.js CHANGED
@@ -48,7 +48,7 @@ var VERSION, PACKAGE_NAME;
48
48
  var init_version = __esm({
49
49
  "src/lib/version.ts"() {
50
50
  "use strict";
51
- VERSION = "1.13.61";
51
+ VERSION = "1.13.62";
52
52
  PACKAGE_NAME = "codebyplan";
53
53
  }
54
54
  });
@@ -38478,6 +38478,25 @@ function emitTable(result) {
38478
38478
  lines.push("");
38479
38479
  process.stdout.write(lines.join("\n") + "\n");
38480
38480
  }
38481
+ function emitFailureDiagnostics(result) {
38482
+ for (const r of result.results) {
38483
+ if (r.status !== "fail" || !r.executed) {
38484
+ continue;
38485
+ }
38486
+ const combined = [r.stdout, r.stderr].filter(Boolean).join("\n").trimEnd();
38487
+ if (combined.length === 0) {
38488
+ continue;
38489
+ }
38490
+ process.stderr.write(
38491
+ `
38492
+ --- check: ${r.check} FAILED (captured output) ---
38493
+ `
38494
+ );
38495
+ process.stderr.write(combined + "\n");
38496
+ process.stderr.write(`--- end: ${r.check} ---
38497
+ `);
38498
+ }
38499
+ }
38481
38500
  function runCheckCommand(args) {
38482
38501
  const parsed = parseCheckArgs(args);
38483
38502
  if (parsed === null) {
@@ -38497,6 +38516,7 @@ function runCheckCommand(args) {
38497
38516
  } else {
38498
38517
  emitTable(result);
38499
38518
  }
38519
+ emitFailureDiagnostics(result);
38500
38520
  if (result.any_failed) {
38501
38521
  process.exitCode = 1;
38502
38522
  }
@@ -41095,15 +41115,17 @@ function auditSkill(filePath) {
41095
41115
  const model = fm.model ?? null;
41096
41116
  const effort = fm.effort ?? null;
41097
41117
  const gaps = [];
41098
- if (model !== null) {
41099
- gaps.push("model: must be absent for skills");
41118
+ if (model === null) {
41119
+ gaps.push("model: absent (expected 'inherit')");
41120
+ } else if (model !== "inherit") {
41121
+ gaps.push(`model: expected 'inherit', got '${model}'`);
41100
41122
  }
41101
41123
  if (!effort) {
41102
41124
  gaps.push("effort: absent (default xhigh required)");
41103
41125
  } else if (!VALID_EFFORT_VALUES.has(effort)) {
41104
41126
  gaps.push(`effort: invalid value '${effort}'`);
41105
41127
  }
41106
- const expectedStr = `effort:${effort && VALID_EFFORT_VALUES.has(effort) ? effort : "xhigh"}`;
41128
+ const expectedStr = `model:inherit/effort:${effort && VALID_EFFORT_VALUES.has(effort) ? effort : "xhigh"}`;
41107
41129
  const status = gaps.length === 0 ? "ok" : "gap";
41108
41130
  return {
41109
41131
  path: filePath,
@@ -41145,7 +41167,13 @@ var init_claude_mode_audit = __esm({
41145
41167
  "cbp-mechanical-edits": { model: "haiku", effort: "low" },
41146
41168
  // Read-only module analyzer: bounded structured-map generation, deliberately
41147
41169
  // lighter than the xhigh default. Documented in cbp-build-cc-mode's matrix.
41148
- "cbp-map-architecture": { model: "sonnet", effort: "high" }
41170
+ "cbp-map-architecture": { model: "sonnet", effort: "high" },
41171
+ // E2E specialist: bounded test-execution scope; sonnet+high calibrated in CHK-229.
41172
+ "cbp-e2e-maestro": { model: "sonnet", effort: "high" },
41173
+ "cbp-e2e-playwright": { model: "sonnet", effort: "high" },
41174
+ "cbp-e2e-tauri": { model: "sonnet", effort: "high" },
41175
+ "cbp-e2e-vscode": { model: "sonnet", effort: "high" },
41176
+ "cbp-e2e-xcuitest": { model: "sonnet", effort: "high" }
41149
41177
  };
41150
41178
  AGENT_DEFAULT = { model: "sonnet", effort: "xhigh" };
41151
41179
  VALID_EFFORT_VALUES = /* @__PURE__ */ new Set(["low", "medium", "high", "xhigh", "max"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebyplan",
3
- "version": "1.13.61",
3
+ "version": "1.13.62",
4
4
  "description": "CLI for CodeByPlan — AI-powered development planning and tracking",
5
5
  "type": "module",
6
6
  "bin": {
@@ -3,7 +3,7 @@ name: cbp-e2e-maestro
3
3
  description: Maestro E2E flow authoring + execution for Expo/React Native mobile apps (android + ios). Spawned by /cbp-round-build Step 5 and /cbp-checkpoint-check Step 5b when framework is 'maestro'.
4
4
  tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion, mcp__codebyplan__get_repos
5
5
  model: sonnet
6
- effort: xhigh
6
+ effort: high
7
7
  ---
8
8
 
9
9
  # Maestro E2E Agent
@@ -3,7 +3,7 @@ name: cbp-e2e-playwright
3
3
  description: Playwright E2E test authoring + execution for web app routes. Spawned by /cbp-round-build Step 5 and /cbp-checkpoint-check Step 5b when framework is 'playwright'.
4
4
  tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion, mcp__codebyplan__get_repos
5
5
  model: sonnet
6
- effort: xhigh
6
+ effort: high
7
7
  ---
8
8
 
9
9
  # Playwright E2E Agent
@@ -3,7 +3,7 @@ name: cbp-e2e-tauri
3
3
  description: WebDriverIO + tauri-driver E2E test authoring + execution for Tauri desktop apps. Spawned by /cbp-round-build Step 5 and /cbp-checkpoint-check Step 5b when framework is 'webdriverio'.
4
4
  tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion, mcp__codebyplan__get_repos
5
5
  model: sonnet
6
- effort: xhigh
6
+ effort: high
7
7
  ---
8
8
 
9
9
  # Tauri E2E Agent
@@ -3,7 +3,7 @@ name: cbp-e2e-vscode
3
3
  description: VS Code extension E2E test authoring + execution using @vscode/test-cli and @vscode/test-electron. Spawned by /cbp-round-build Step 5 and /cbp-checkpoint-check Step 5b when framework is 'vscode-test'.
4
4
  tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion, mcp__codebyplan__get_repos
5
5
  model: sonnet
6
- effort: xhigh
6
+ effort: high
7
7
  ---
8
8
 
9
9
  # VS Code Extension E2E Agent
@@ -3,7 +3,7 @@ name: cbp-e2e-xcuitest
3
3
  description: XCUITest native iOS E2E test authoring + execution for Expo apps targeting system dialogs, HealthKit, watchOS, or other areas Maestro cannot reach. Spawned by /cbp-round-build Step 5 and /cbp-checkpoint-check Step 5b when framework is 'xcuitest'.
4
4
  tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion, mcp__codebyplan__get_repos
5
5
  model: sonnet
6
- effort: xhigh
6
+ effort: high
7
7
  ---
8
8
 
9
9
  # XCUITest E2E Agent
@@ -0,0 +1,70 @@
1
+ ---
2
+ description: Effort ladder (low..max), per-model support, frontmatter usage, and the session-only ultracode mode.
3
+ ---
4
+
5
+ # Effort and Ultracode
6
+
7
+ On-demand reference for effort levels and the ultracode mode in Claude Code.
8
+
9
+ ## Effort Ladder
10
+
11
+ | Level | Gloss |
12
+ |-------|-------|
13
+ | `low` | Latency-sensitive, trivial tasks — minimal reasoning |
14
+ | `medium` | Standard tasks — moderate reasoning |
15
+ | `high` | Default for most models — solid reasoning budget |
16
+ | `xhigh` | Extended reasoning — slower, better for complex multi-step work |
17
+ | `max` | Deepest reasoning available — session-only, can overthink simple tasks |
18
+
19
+ ## Per-Model Support
20
+
21
+ | Model | Supported levels | Default effort |
22
+ |-------|-----------------|----------------|
23
+ | Opus 4.8, Fable 5 | `low` `medium` `high` `xhigh` `max` | `high` |
24
+ | Opus 4.7 | `low` `medium` `high` `xhigh` `max` | `xhigh` |
25
+ | Opus 4.6, Sonnet 4.6 | `low` `medium` `high` `max` (`xhigh` → falls back to `high`) | `high` |
26
+
27
+ ## Precedence (highest → lowest)
28
+
29
+ 1. `CLAUDE_CODE_EFFORT_LEVEL` env var
30
+ 2. Frontmatter `effort:` (while a skill/agent is active)
31
+ 3. `effortLevel` in `settings.json`
32
+ 4. Model default
33
+
34
+ ## Frontmatter Usage
35
+
36
+ Skills set `model: inherit` + `effort: <level>`. Subagents pin `model: <id>` + `effort: <level>`.
37
+ Both override the session level only while active.
38
+
39
+ `effort: ultracode` is **invalid** in frontmatter — `validate-skill.sh` errors on it. Use
40
+ `effort: max` for the heaviest per-skill reasoning budget; enable ultracode session-wide with
41
+ `/effort ultracode`.
42
+
43
+ ## settings.json `effortLevel`
44
+
45
+ Accepts `low | medium | high | xhigh` **only**. `max` and `ultracode` are session-only and
46
+ rejected by the settings validator.
47
+
48
+ This repo's default is `xhigh` (`.claude/settings.json`). You **cannot** default ultracode
49
+ in settings.json — enable it per-session instead.
50
+
51
+ ## Ultracode Mode
52
+
53
+ ultracode = `xhigh` reasoning + automatic Workflow orchestration for substantive tasks.
54
+ It is a **session-only** Claude Code mode, NOT a frontmatter `effort` value, NOT `effortLevel`,
55
+ NOT `--effort`, NOT `CLAUDE_CODE_EFFORT_LEVEL`.
56
+
57
+ **Enable via:**
58
+ - `/effort ultracode` (in-session slash command)
59
+ - `claude --settings '{"ultracode": true}'`
60
+ - An Agent SDK control request
61
+
62
+ Applies to the current session only — resets on a new session.
63
+
64
+ **When to enable:** heavy multi-step checkpoints where deterministic multi-agent fan-out
65
+ helps. See `rules/workflow-orchestration.md` for full orchestration guidance.
66
+
67
+ ## Related
68
+
69
+ - `rules/model-invocation-convention.md` — model pinning in skill/agent frontmatter
70
+ - `rules/workflow-orchestration.md` — Workflow tool pattern, opt-in gate, and when to use it instead of ad-hoc Task/Agent spawns
@@ -38,3 +38,4 @@ See `.claude/skills/cbp-build-cc-settings/reference/cbp-permission-policy.md` fo
38
38
 
39
39
  - `rules/scope-vocabulary.md` — scope marker conventions for managed vs user-created files
40
40
  - `cbp-build-cc-settings/reference/cbp-permission-policy.md` — allow/ask tiers
41
+ - `rules/effort-and-ultracode.md` — effort ladder, per-model support, and the session-only ultracode mode
@@ -0,0 +1,59 @@
1
+ ---
2
+ description: Workflow tool — deterministic JS multi-agent orchestration for heavy fan-out. What it is, when to reach for it, the opt-in gate, and how it relates to ad-hoc Task/Agent spawning.
3
+ ---
4
+
5
+ # Workflow Orchestration
6
+
7
+ On-demand reference for the `Workflow` tool — the structured alternative to ad-hoc `Task`/`Agent`
8
+ spawning when a step fans out across many independent units of work.
9
+
10
+ ## What It Is
11
+
12
+ `Workflow` runs a deterministic JavaScript orchestration script that spawns and coordinates
13
+ subagents. The control flow (loops, conditionals, fan-out) lives in the script, not in model
14
+ judgement. Core primitives:
15
+
16
+ - `agent(prompt, opts)` — spawn a subagent; with a `schema` it returns a validated structured
17
+ object instead of raw text.
18
+ - `parallel(thunks)` — run tasks concurrently to a **barrier** (awaits all before returning).
19
+ - `pipeline(items, ...stages)` — stream each item through stages with **no barrier** between them
20
+ (the default for multi-stage work — wall-clock is the slowest single chain, not sum-of-stages).
21
+ - `phase(title)` / `log(message)` — progress grouping and narration.
22
+
23
+ Built in: per-agent structured-output validation, a concurrency cap, a shared token budget,
24
+ loop-until-done / loop-until-dry accumulation, and resume from a prior run.
25
+
26
+ ## When To Reach For It
27
+
28
+ - **Many independent items** — a per-module sweep, a per-file migration, a per-surface deploy.
29
+ - **Parallel waves with a barrier** — wave A must fully complete before wave B starts.
30
+ - **Adversarial / multi-vote verification** — N independent reviewers vote to confirm a finding.
31
+ - **Scale beyond one context** — coverage a single conversation cannot hold.
32
+
33
+ Contrast: a single one-off subagent stays on the plain `Task`/`Agent` tool. Workflow's setup
34
+ overhead only pays off at fan-out scale.
35
+
36
+ ## Opt-In Gate
37
+
38
+ `Workflow` is **not** invoked by default. Reach for it only when one holds:
39
+
40
+ - **ultracode** mode is active in the session (`/effort ultracode`) — under ultracode Claude
41
+ auto-reaches for Workflow on substantive fan-out tasks; **or**
42
+ - the **user explicitly opts in** ("use a workflow", "fan out agents", "orchestrate this"); **or**
43
+ - a skill or command's own instructions tell you to author one.
44
+
45
+ Outside those, do NOT call `Workflow` — use the existing `Task`/`Agent` spawn, or describe what a
46
+ workflow could do and ask first. The tool can spawn dozens of agents and is token-heavy — the scale
47
+ must be requested, not inferred.
48
+
49
+ ## Relationship to Task/Agent Spawning
50
+
51
+ `Task`/`Agent` spawning is the **default** for subagent work and is unchanged everywhere it is used.
52
+ `Workflow` is the **structured alternative** for heavy fan-out — additive, not a replacement. A
53
+ common shape is **hybrid**: scout inline first to discover the work-list, then author a `Workflow`
54
+ that pipelines over it.
55
+
56
+ ## Related
57
+
58
+ - `rules/effort-and-ultracode.md` — effort ladder, per-model support, and the session-only ultracode mode that auto-enables this orchestration path
59
+ - `rules/model-invocation-convention.md` — model pinning in skill/agent frontmatter
@@ -3,6 +3,7 @@ name: cbp-build-cc-agent
3
3
  description: Build a Claude Code subagent at .claude/agents/{name}.md (flat form, per the official sub-agents spec) following the official sub-agents spec (frontmatter, tools, model, hooks, skills preload, permission modes, isolation).
4
4
  argument-hint: "[agent-name] [--scope=project|user] [--isolation=worktree]"
5
5
  allowed-tools: Read, Write, Edit, Glob, Grep, Bash(mkdir *), Bash(chmod *)
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -3,6 +3,7 @@ name: cbp-build-cc-claude-file
3
3
  description: Create or update a CLAUDE.md file at any scope (managed, project, user, local) following the official memory spec — imports (@path), nested discovery, AGENTS.md bridge, comment stripping, and claudeMdExcludes.
4
4
  argument-hint: "[action] [--scope=managed|project|user|local]"
5
5
  allowed-tools: Read, Write, Edit, Glob, Grep
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  name: cbp-build-cc-mode
3
- description: Audit + apply the CHK-109 model/effort convention across every authoring skill and agent under `packages/codebyplan-package/templates/`. Skills set `effort:` only and inherit the session model; agents pin `model:` + `effort:`. Bare invocation audits and reports frontmatter gaps; with a path argument, edits the target file's frontmatter to the convention-decided values.
3
+ description: Audit + apply the CHK-229 model/effort convention across every authoring skill and agent under `packages/codebyplan-package/templates/`. Skills set `model: inherit` + `effort:`; agents pin `model:` + `effort:`. Bare invocation audits and reports frontmatter gaps; with a path argument, edits the target file's frontmatter to the convention-decided values.
4
4
  argument-hint: "[path-to-agent-or-skill]"
5
5
  allowed-tools: Read, Write, Edit, Glob, Grep
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -12,8 +13,8 @@ Audit or apply the canonical model/effort frontmatter convention across every au
12
13
 
13
14
  The convention splits by surface:
14
15
 
15
- - **Skills do NOT pin `model:`.** A skill's inline turn runs inside the user's active session, so it must inherit the session model. Pinning a model (a) forces a model the user did not choose and (b) can carry the session's 1M `[1m]` context tier onto the skill, producing `API Error: Usage credits required for 1M context`. Skills set `effort:` only.
16
- - **Agents pin `model:` explicitly.** A spawned/forked subagent should not silently inherit the parent's model or context tier — every agent states its model so each subagent's cost/quality is auditable. Agents set both `model:` and `effort:`.
16
+ - **Skills set `model: inherit` AND `effort:`.** The `model: inherit` value signals explicitly that the skill inherits the user's active session model it is the standard value. A non-inherit model or an absent model field is a gap. A justified explicit pin (e.g. `model: sonnet`) is permitted when documented here as an exception.
17
+ - **Agents pin `model:` explicitly.** A spawned/forked subagent must not silently inherit the parent's model or context tier — every agent states its model so each subagent's cost/quality is auditable. Agents set both `model:` and `effort:`. `model: inherit` is NOT permitted for agents.
17
18
 
18
19
  ## When to Use
19
20
 
@@ -23,33 +24,40 @@ The convention splits by surface:
23
24
 
24
25
  ## Decision Matrix
25
26
 
26
- ### Skills — `effort:` only, never `model:`
27
+ ### Skills — `model: inherit` + `effort:`
27
28
 
28
- Omit `model:` entirely (inherit the session model). Set `effort:` per the skill's nature. Default `effort: xhigh`; tiers:
29
+ Set `model: inherit` (the standard value) and `effort:` per the skill's nature. Default `effort: xhigh`; tiers:
29
30
 
30
- | effort | use for | examples |
31
- | -------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
32
- | `xhigh` | deep authoring / planning / orchestration (most skills) | build-cc-*, checkpoint-check/end/plan, round-start/input/execute, task-create/start/complete/testing, standalone-task-*, frontend-*, ship, ship-configure, supabase-*, setup-e2e/eslint, session-end |
33
- | `high` | summary / orchestration, lighter than xhigh | checkpoint-create, checkpoint-start, checkpoint-update, round-end, task-check, standalone-task-check, ship-main, merge-main |
34
- | `medium` | moderate, scoped sync work | refresh-infra |
35
- | `low` | pure mechanical / dispatch / templated work | checkpoint-complete, round-check, round-complete, round-update, todo, session-start, git-commit, git-branch-feat-create |
31
+ | effort | use for | examples |
32
+ | -------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
33
+ | `xhigh` | deep authoring / planning / orchestration (most skills) | build-cc-*, checkpoint-check/end/plan, finalize, frontend-design, map-architecture, round-build/plan, ship, standalone-task-complete, supabase-migrate, task-start, verify |
34
+ | `high` | lighter orchestration, review, setup, targeted flows | checkpoint-create/start, frontend-ui/ux, merge-main, refresh-arch-map, session-end, setup-cd/ci/e2e/eslint, ship-configure/main, standalone-task-check/create/start/testing, stripe, supabase-branch-check/setup, task-create |
35
+ | `medium` | moderate, scoped sync work | checkpoint-update, clear-prep, todo |
36
+ | `low` | pure mechanical / dispatch / templated work | checkpoint-complete, clear-continue, git-commit, git-branch-feat-create, round-complete, session-start |
36
37
 
37
- A skill that carries a `model:` line is a **gap** — remove it unless a deliberate, documented exception is recorded here (currently none).
38
+ A skill with an absent `model:` field or a non-`inherit` model value is a **gap** — add `model: inherit` or document the exception here before applying a different pin.
39
+
40
+ > **Note on effort tiers**: `max` is the highest frontmatter effort tier. `ultracode` is a SESSION-ONLY runtime mode (`/effort ultracode`) — it is NOT a valid frontmatter value and `validate-skill.sh` rejects `effort: ultracode` with an explicit error.
38
41
 
39
42
  ### Agents — `model:` + `effort:`
40
43
 
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:
44
+ Default `model: sonnet` + `effort: xhigh`. Ten of the 17 authoring agents take the default (`cbp-cc-executor`, `cbp-database-agent`, `cbp-improve-claude`, `cbp-research`, `cbp-round-builder`, `cbp-round-planner`, `cbp-security-agent`, `cbp-stripe-agent`, `cbp-testing-qa-agent`, `cbp-verify-reviewer`). The other seven are exceptions:
42
45
 
43
46
  | agent | model | effort | reason |
44
47
  | -------------------- | ------ | ------ | ----------------------------------------------------------------------------------- |
45
48
  | cbp-mechanical-edits | haiku | low | Mechanical rename/substitution/frontmatter-edit subagent; no judgment, pure dispatch |
46
49
  | cbp-map-architecture | sonnet | high | Read-only module analyzer; bounded structured-map generation, lighter than xhigh |
50
+ | cbp-e2e-maestro | sonnet | high | E2E specialist: bounded test-execution scope; sonnet+high calibrated in CHK-229 |
51
+ | cbp-e2e-playwright | sonnet | high | E2E specialist: bounded test-execution scope; sonnet+high calibrated in CHK-229 |
52
+ | cbp-e2e-tauri | sonnet | high | E2E specialist: bounded test-execution scope; sonnet+high calibrated in CHK-229 |
53
+ | cbp-e2e-vscode | sonnet | high | E2E specialist: bounded test-execution scope; sonnet+high calibrated in CHK-229 |
54
+ | cbp-e2e-xcuitest | sonnet | high | E2E specialist: bounded test-execution scope; sonnet+high calibrated in CHK-229 |
47
55
 
48
56
  `model: inherit` is NOT permitted for agents — pin an explicit alias (`sonnet` / `haiku`) or a full ID.
49
57
 
50
58
  ## Precedence Rule
51
59
 
52
- A skill's `effort:` applies to the inline-running turn (the orchestrator turn that invokes the skill); the skill runs on that turn's inherited model. An agent's `model:` / `effort:` apply to the spawned/forked subagent context. For `context: fork` skills, the agent named in `agent:` governs the forked subagent (per the official Claude Code spec) — so a forked skill's model comes from that agent, not from the skill.
60
+ A skill's `effort:` applies to the inline-running turn (the orchestrator turn that invokes the skill); the skill runs on that turn's inherited model (declared via `model: inherit`). An agent's `model:` / `effort:` apply to the spawned/forked subagent context. For `context: fork` skills, the agent named in `agent:` governs the forked subagent (per the official Claude Code spec) — so a forked skill's model comes from that agent, not from the skill.
53
61
 
54
62
  ## Audit Mode
55
63
 
@@ -70,10 +78,10 @@ Invoked with a path argument (the target `SKILL.md` or agent `.md`). Procedure:
70
78
  1. Read the file. Identify the name from the `name:` frontmatter (or the path basename).
71
79
  2. Look up the target from the convention above.
72
80
  3. Use Edit to set the frontmatter to the target, preserving every other field and the entire body:
73
- - **Skill**: REMOVE any `model:` line; set/keep a valid `effort:` (default `xhigh`).
81
+ - **Skill**: SET `model: inherit` if absent (or correct a non-inherit pin); set/keep a valid `effort:` (default `xhigh`).
74
82
  - **Agent**: set `model:` and `effort:` to the table values.
75
- 4. If the name is NOT covered, surface via AskUserQuestion: current state, propose the default (skill → no `model:` + `xhigh`; agent → `sonnet` + `xhigh`), and ask whether to (a) record an exception entry here first, or (b) apply the default.
83
+ 4. If the name is NOT covered, surface via AskUserQuestion: current state, propose the default (skill → `model: inherit` + `xhigh`; agent → `sonnet` + `xhigh`), and ask whether to (a) record an exception entry here first, or (b) apply the default.
76
84
 
77
85
  ## Self-Conformance
78
86
 
79
- This skill is itself a skill: its frontmatter sets `effort: xhigh` and NO `model:`. The first audit run after editing this file MUST emit `ok` for `packages/codebyplan-package/templates/skills/cbp-build-cc-mode/SKILL.md` — if it doesn't, the convention is out of sync with reality and must be reconciled before any further apply.
87
+ This skill is itself a skill: its frontmatter declares `model: inherit` + `effort: xhigh`. The first audit run after editing this file MUST emit `ok` for `packages/codebyplan-package/templates/skills/cbp-build-cc-mode/SKILL.md` — if it doesn't, the convention is out of sync with reality and must be reconciled before any further apply.
@@ -3,6 +3,7 @@ name: cbp-build-cc-rule
3
3
  description: Build a path-scoped rule file at .claude/rules/{name}.md following the official memory/rules spec (paths globs, always-loaded vs on-demand, symlinks) plus CBP conventions (scope field for structural classification — required only on user-created rules (validate-structure-scope.sh), narrow-paths discipline; hook warns at 100 lines, blocks at 200).
4
4
  argument-hint: '[name] [--scope=project|user] [--paths="glob,glob"]'
5
5
  allowed-tools: Read, Write, Edit, Glob, Grep
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -3,6 +3,7 @@ name: cbp-build-cc-settings
3
3
  description: Create or update Claude Code settings.json / settings.local.json / managed-settings.json following the official settings spec — scopes, permissions, hooks, sandbox, attribution, plugins, env vars, JSON schema validation.
4
4
  argument-hint: "[action] [--scope=user|project|local|managed]"
5
5
  allowed-tools: Read, Write, Edit, Glob, Grep, Bash(jq *)
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -54,7 +54,7 @@ Source: official Claude Code settings spec. Grouped by category. All fields are
54
54
  | `model` | Override default model |
55
55
  | `modelOverrides` | Map model IDs (e.g. Bedrock profile ARNs) |
56
56
  | `availableModels` | Restrict which models `/model` exposes |
57
- | `effortLevel` | Persist effort across sessions |
57
+ | `effortLevel` | Persist effort across sessions. Valid values: `low \| medium \| high \| xhigh` only — `max` and `ultracode` are session-only and rejected here. See `rules/effort-and-ultracode.md`. |
58
58
  | `alwaysThinkingEnabled` | Extended thinking on by default |
59
59
  | `showThinkingSummaries` | Show thinking summaries |
60
60
 
@@ -3,6 +3,7 @@ name: cbp-build-cc-skill
3
3
  description: Build a Claude Code skill at .claude/skills/{name}/SKILL.md following the official skills spec — frontmatter, supporting files (templates, examples, reference, scripts), invocation control, argument substitution, dynamic context, fork-to-subagent, allowed-tools.
4
4
  argument-hint: "[skill-name] [--scope=project|user] [--fork] [--disable-model-invocation]"
5
5
  allowed-tools: Read, Write, Edit, Glob, Grep, Bash(mkdir *), Bash(chmod *)
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -97,7 +98,7 @@ Key fields by use case:
97
98
  | Hide from `/` menu | `user-invocable: false` |
98
99
  | Pre-approve tools | `allowed-tools: Bash(git add *) Bash(git commit *)` |
99
100
  | Accept arguments | `argument-hint: [file] [mode]`, optionally `arguments: [file mode]` for named `$file`/`$mode` |
100
- | Set effort (do NOT set model) | `effort: xhigh` default for plugin skills; lower (`high`/`low`) per [/cbp-build-cc-mode](../build-cc-mode/SKILL.md). **Omit `model:`** so the skill inherits the active session model pinning one forces a model the user didn't choose and can carry the session's 1M `[1m]` tier onto the skill (→ "usage credits required for 1M context"). Pin `model:` only as a deliberate, documented exception |
101
+ | Set model + effort | `model: inherit` (the standard value — explicitly signals session-model inheritance) and `effort: xhigh` (default for plugin skills; lower tiers `high`/`medium`/`low` per [/cbp-build-cc-mode](../build-cc-mode/SKILL.md)). A non-`inherit` model pin forces a model the user didn't choose and can carry the session's 1M `[1m]` tier onto the skill (→ "usage credits required for 1M context"), so pin only as a deliberate, documented exception |
101
102
  | Path-scoped auto-load | `paths: ["src/api/**/*.ts"]` |
102
103
  | Fork to subagent | `context: fork`, `agent: Explore` |
103
104
 
@@ -12,7 +12,7 @@ Source: official Claude Code skills spec. All fields are optional; `description`
12
12
  | `disable-model-invocation` | `true` → only user can invoke (via `/name`). Upstream skills that auto-trigger this skill MUST emit a `Next: /name` directive instead — model invocation is blocked by the runtime; see SKILL.md Step 4 "Convention: User-only / permission-gated finalizer" |
13
13
  | `user-invocable` | `false` → hidden from `/` menu, Claude-only |
14
14
  | `allowed-tools` | Pre-approve tools while the skill is active |
15
- | `model` | Override model for this skill's turn. **CBP skills normally OMIT this** so the skill inherits the active session model. Pinning a model (e.g. `sonnet`) forces that model and can carry the session's 1M `[1m]` context tier onto the skill, triggering "usage credits required for 1M context". Set it only as a deliberate, documented exception — see [/cbp-build-cc-mode](../../build-cc-mode/SKILL.md) |
15
+ | `model` | Model for this skill's turn. **CBP skills set `model: inherit`** (the standard value explicitly signals session-model inheritance). A non-`inherit` pin (e.g. `sonnet`) forces that model and can carry the session's 1M `[1m]` context tier onto the skill, triggering "usage credits required for 1M context"; use only as a deliberate, documented exception — see [/cbp-build-cc-mode](../../build-cc-mode/SKILL.md) |
16
16
  | `effort` | Override effort level (`low`/`medium`/`high`/`xhigh`/`max`). **Plugin skills authored in CBP MUST set this explicitly** (no commented-out placeholder); defaults to `xhigh`. See [/cbp-build-cc-mode](../../build-cc-mode/SKILL.md) for the matrix |
17
17
  | `context` | `fork` → run in a subagent |
18
18
  | `agent` | Subagent type when `context: fork` — built-in or custom |
@@ -57,19 +57,22 @@ if grep -qE '^scope:\s*' <<< "$fm"; then
57
57
  fi
58
58
  fi
59
59
 
60
- # Model — skills MUST NOT pin a model. A skill's inline turn runs in the user's
61
- # active session, so it inherits the session model. Pinning one forces a model the
62
- # user didn't choose and can carry the session's 1M [1m] context tier onto the skill
63
- # ("API Error: Usage credits required for 1M context"). Agents pin model explicitly
64
- # (validate-agent.sh) skills never do.
65
- if grep -qE '^model:' <<< "$fm"; then
66
- model=$(grep -E '^model:' <<< "$fm" | head -1 | sed -E 's/^model:[[:space:]]*//; s/[[:space:]]*$//')
67
- err "skills must NOT set 'model:' (found '$model') — skills inherit the session model; remove the line (see /cbp-build-cc-mode)"
60
+ # Model — skills MUST declare 'model: inherit' to signal session-model inheritance
61
+ # explicitly. Absent = warning (should be added); non-enum value = error.
62
+ # Valid values: inherit | sonnet | opus | haiku | fable | opusplan | claude-<id> | <id>[1m]
63
+ # Agents pin explicit model values (validate-agent.sh); skills use 'inherit'.
64
+ model_val=$(grep -E '^model:' <<< "$fm" | head -1 | sed -E 's/^model:[[:space:]]*//; s/[[:space:]]*$//' || true)
65
+ if [ -z "$model_val" ]; then
66
+ echo " WARN: model: absent add 'model: inherit' (skills must declare session-model inheritance)" >&2
67
+ elif ! [[ "$model_val" =~ ^(inherit|sonnet|opus|haiku|fable|opusplan|claude-[a-z0-9][a-z0-9.-]*|.*\[1m\])$ ]]; then
68
+ err "model: invalid value '$model_val' (valid values: inherit | sonnet | opus | haiku | fable | opusplan | claude-<id> | <id>[1m])"
68
69
  fi
69
70
 
70
71
  # Effort (if present)
71
72
  effort=$(grep -E '^effort:' <<< "$fm" | head -1 | sed -E 's/^effort:[[:space:]]*//; s/[[:space:]]*$//; s/^"(.*)"$/\1/' || true)
72
- if [ -n "$effort" ] && [[ ! "$effort" =~ ^(low|medium|high|xhigh|max)$ ]]; then
73
+ if [ "$effort" = "ultracode" ]; then
74
+ err "effort: ultracode is a session-only mode, not a frontmatter effort — use max + /effort ultracode"
75
+ elif [ -n "$effort" ] && [[ ! "$effort" =~ ^(low|medium|high|xhigh|max)$ ]]; then
73
76
  err "effort invalid: '$effort'"
74
77
  fi
75
78
 
@@ -3,6 +3,7 @@ scope: org-shared
3
3
  name: cbp-checkpoint-check
4
4
  description: Full re-evaluation of a checkpoint with before/after comparison
5
5
  argument-hint: [CHK-NNN]
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -133,6 +134,10 @@ Aggregate the files touched across all tasks (reusing Step 4's deduplicated tabl
133
134
 
134
135
  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
136
 
137
+ #### Orchestration (optional)
138
+
139
+ Step 5b's parallel whole-checkpoint `cbp-e2e-*` specialist dispatch MAY be authored as a `Workflow(...)` script instead of ad-hoc `Task`/`Agent` spawning — for deterministic fan-out across eligible frameworks and schema-validated aggregation. This is opt-in (ultracode session or explicit user request); the dispatch flow above stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
140
+
136
141
  ### Step 6: User Discussion
137
142
 
138
143
  Present findings and discuss with user:
@@ -2,6 +2,7 @@
2
2
  name: cbp-checkpoint-complete
3
3
  description: Complete a checkpoint after all tasks are done
4
4
  argument-hint: [checkpoint-number]
5
+ model: inherit
5
6
  effort: low
6
7
  ---
7
8
 
@@ -2,6 +2,7 @@
2
2
  name: cbp-checkpoint-create
3
3
  description: Mechanical checkpoint creation — capture the user's description, infer title + goal, dedup against existing modules, create the checkpoint row + feat branch, then hand off to /cbp-checkpoint-plan for deep planning. Creates ZERO tasks.
4
4
  argument-hint: [checkpoint description]
5
+ model: inherit
5
6
  effort: high
6
7
  ---
7
8
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: cbp-checkpoint-end
3
3
  description: Single point for all shipment — branch promotion to main via /cbp-ship-main, runtime deploy via /cbp-ship, branch cleanup, summary. Standalone tasks bypass shipment entirely.
4
+ model: inherit
4
5
  effort: xhigh
5
6
  ---
6
7
 
@@ -161,6 +162,10 @@ If `/cbp-ship` reports `aborted_at` (user aborted) or any surface failed verific
161
162
 
162
163
  If the repo has zero configured surfaces (very early-stage), `/cbp-ship` exits with `## No deployable surfaces configured` — that's a success state, continue to cleanup.
163
164
 
165
+ #### Orchestration (optional)
166
+
167
+ The multi-step shipment coordinated here (Step 5 `/cbp-ship-main` → Step 7 `/cbp-ship` → screenshot upload) MAY be expressed as a `Workflow(...)` pipeline instead of ad-hoc sequential invocation. This is opt-in (ultracode session or explicit user request); the sequential flow above stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
168
+
164
169
  ### Step 7.5: Upload E2E Screenshots to DB (best-effort)
165
170
 
166
171
  After `/cbp-ship` completes successfully, upload the checkpoint's new/changed committed E2E screenshots to the CodeByPlan DB so they can be reviewed per-checkpoint in the web UI (CHK-171). This step is **best-effort and non-blocking** — a failure here MUST NOT halt shipment or cleanup.
@@ -2,6 +2,7 @@
2
2
  name: cbp-checkpoint-plan
3
3
  description: Deep inline planning for a checkpoint — assess, gap-analyse, decide dependencies, compare alternatives, optionally e2e-probe a suspected-broken area, then create tasks as vertical slices. Runs after /cbp-checkpoint-create (mechanical) and before /cbp-checkpoint-start (activate + claim). Does NOT activate or claim.
4
4
  argument-hint: [checkpoint-number]
5
+ model: inherit
5
6
  effort: xhigh
6
7
  ---
7
8
 
@@ -49,6 +50,10 @@ Iterate ALL `ideas[]` (not just the first). For each:
49
50
 
50
51
  Write each idea's analysis into `ideas[N].assessment` (Claude-authored; never touch `description`, which is the user's words).
51
52
 
53
+ #### Orchestration (optional)
54
+
55
+ Step 2's `cbp-research` and any e2e-probe subagent spawns MAY be authored as a `Workflow(...)` script instead of ad-hoc `Task` spawning — useful when multiple ideas each warrant an independent research/assessment pass. This is opt-in (ultracode session or explicit user request); the single-spawn flow above stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
56
+
52
57
  ### Step 3: Gap Analysis
53
58
 
54
59
  Find what the raw request misses — this is the core anti-"half-ass" step. Load `reference/gap-analysis-playbook.md` and run its two passes:
@@ -2,6 +2,7 @@
2
2
  name: cbp-checkpoint-start
3
3
  description: Activate a planned checkpoint and claim it for the current user/worktree, then route into task work. Runs after /cbp-checkpoint-plan (which produces tasks but never activates). Refuses to start an unplanned checkpoint.
4
4
  argument-hint: [checkpoint-number]
5
+ model: inherit
5
6
  effort: high
6
7
  ---
7
8
 
@@ -2,7 +2,8 @@
2
2
  name: cbp-checkpoint-update
3
3
  description: Update checkpoint state (activate, update context, etc.)
4
4
  argument-hint: [checkpoint-number]
5
- effort: high
5
+ model: inherit
6
+ effort: medium
6
7
  ---
7
8
 
8
9
  # Checkpoint Update Command
@@ -2,7 +2,8 @@
2
2
  scope: org-shared
3
3
  name: cbp-clear-continue
4
4
  description: Resume work after /clear by reading .codebyplan/clear/handoff.md and re-invoking the previously-blocked heavy skill. Reports a friendly error if no handoff file exists.
5
- effort: xhigh
5
+ model: inherit
6
+ effort: low
6
7
  ---
7
8
 
8
9
  # cbp-clear-continue
@@ -3,7 +3,8 @@ scope: org-shared
3
3
  name: cbp-clear-prep
4
4
  description: Capture a clear-context handoff when the context window is too large to run a heavy skill. Reads active task/round state, writes .codebyplan/clear/handoff.md, then instructs the user to run /clear and /cbp-clear-continue to resume.
5
5
  argument-hint: "[blocked-skill]"
6
- effort: xhigh
6
+ model: inherit
7
+ effort: medium
7
8
  ---
8
9
 
9
10
  # cbp-clear-prep
@@ -3,6 +3,7 @@ name: cbp-finalize
3
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
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: cbp-frontend-design
3
3
  description: Up-front design playbook loaded BEFORE writing UI / styling code. Detects the stack, loads the matching reference file, commits to an aesthetic direction, and prevents generic AI-slop output. Modelled on Anthropic's frontend-design skill, adapted for CBP repos with existing design systems.
4
+ model: inherit
4
5
  effort: xhigh
5
6
  ---
6
7
 
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: cbp-frontend-ui
3
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
- effort: xhigh
4
+ model: inherit
5
+ effort: high
5
6
  ---
6
7
 
7
8
  # Frontend UI (Post-Implementation Visual Self-Review)
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: cbp-frontend-ux
3
3
  description: Interaction-quality self-review pass loaded by round-executor AFTER UI code is written. Catches navigation flow issues, missing feedback states, cognitive-load problems, form usability gaps, and accessibility violations. Auto-applies in-scope mechanical UX fixes within the round's files_changed. Replaces the post-implementation ux-agent spawn with an inline skill invocation.
4
- effort: xhigh
4
+ model: inherit
5
+ effort: high
5
6
  ---
6
7
 
7
8
  # Frontend UX (Post-Implementation Interaction Self-Review)
@@ -2,6 +2,7 @@
2
2
  name: cbp-git-branch-feat-create
3
3
  description: Create feature branch from the production branch (main, config-driven)
4
4
  argument-hint: "[name] e.g. add-user-auth"
5
+ model: inherit
5
6
  effort: low
6
7
  ---
7
8
 
@@ -2,6 +2,7 @@
2
2
  name: cbp-git-commit
3
3
  description: Create scoped commit with conventional format
4
4
  argument-hint: "[--task|--all] [type]: [description]"
5
+ model: inherit
5
6
  effort: low
6
7
  ---
7
8
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: cbp-map-architecture
3
+ model: inherit
3
4
  effort: xhigh
4
5
  description: Orchestrate architecture map generation for one or all modules. Spawns the cbp-map-architecture agent per module, writes per-module .md files to .claude/architecture/, regenerates INDEX.md and graph.md, and stamps each module via the CLI. Idempotent — safe to re-run.
5
6
  argument-hint: '[--module <path>] [--deep <path,...>]'
@@ -66,6 +67,10 @@ For each module in `targets[]`:
66
67
  Modules may be spawned concurrently (parallel Task calls) when there are multiple targets
67
68
  with no inter-module dependency. The agent is read-only and safe to parallelize.
68
69
 
70
+ #### Orchestration (optional)
71
+
72
+ Step B's per-module `cbp-map-architecture` fan-out MAY be authored as a `Workflow(...)` script instead of ad-hoc parallel `Task` calls — for deterministic per-module fan-out and schema-validated map outputs. This is opt-in (ultracode session or explicit user request); the parallel `Task` flow above stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
73
+
69
74
  ### Step C: Regenerate INDEX.md and graph.md
70
75
 
71
76
  After all per-module map files are written:
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: cbp-merge-main
3
3
  description: Merge main into the current feat branch with interactive per-conflict resolution and inline QA re-run
4
+ model: inherit
4
5
  effort: high
5
6
  ---
6
7
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: cbp-refresh-arch-map
3
+ model: inherit
3
4
  effort: high
4
5
  description: Drift-scoped refresh of the .claude/architecture/ map — re-runs the cbp-map-architecture agent for ONLY the modules whose stamped git SHA has changed, regenerates INDEX.md + graph.md, and re-stamps. Idempotent; no-op when no module has drifted.
5
6
  argument-hint: '[--module <path>]'
@@ -2,6 +2,7 @@
2
2
  name: cbp-round-build
3
3
  description: Execute the approved plan from /cbp-round-plan — runs per-wave builders, inline testing-qa per wave, and auto-triggers /cbp-verify
4
4
  triggers: [cbp-verify]
5
+ model: inherit
5
6
  effort: xhigh
6
7
  ---
7
8
 
@@ -197,6 +198,10 @@ Input contracts: `cbp-testing-qa-agent` receives `executor_output`, `testing_pro
197
198
 
198
199
  **Independence**: neither agent reads the other's output. Baseline-regression findings surface as a BLOCKING gate at `/cbp-verify` (an explicit accept-or-fix user decision; baselines are NEVER auto-accepted). Per-wave spawns MAY run in parallel with the next wave's builder when dependency order allows. The `cbp-e2e-*` specialists are parallel siblings of `cbp-testing-qa-agent` — they do not share state.
199
200
 
201
+ #### Orchestration (optional)
202
+
203
+ Under heavy fan-out, Step 5's per-wave builders and their parallel `cbp-testing-qa-agent` + `cbp-e2e-*` siblings MAY be authored as a `Workflow(...)` script instead of ad-hoc `Task`/`Agent` spawning — for deterministic fan-out, wave barriers, and schema-validated outputs. This is opt-in (ultracode session or explicit user request); the spawn flow above stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
204
+
200
205
  ### Step 5b: Post-E2E Screenshot Review (cbp-frontend-ui Phase 6.5)
201
206
 
202
207
  Aggregate screenshots across ALL specialists that ran: `screenshots = Object.values(round.context.e2e_outputs ?? {}).flatMap(o => o.screenshots ?? [])`. When the aggregated list is non-empty, invoke the `cbp-frontend-ui` skill with `phase: 'screenshot_review'` (input: `files_changed`, `e2e_screenshots: <aggregated screenshots>`, `context: { checkpoint_goal, round_requirements }`). Under this phase the skill runs only Phase 6.5 (Rendered-Output Visual Review) + 7 + 8 — Phases 1-6 (style) already ran inline at builder Step 3.8 with `phase: 'style_only'`.
@@ -4,6 +4,7 @@ description: Reconcile user git-add approvals and complete the round (the ask-ti
4
4
  argument-hint: [chk-task-round | task-round]
5
5
  disable-model-invocation: true
6
6
  triggers: [cbp-round-plan]
7
+ model: inherit
7
8
  effort: low
8
9
  ---
9
10
 
@@ -3,6 +3,7 @@ name: cbp-round-plan
3
3
  description: Plan a round — round-1 planning AND round-2+ deep-analysis of unapproved work, then spawn cbp-round-planner and auto-trigger /cbp-round-build
4
4
  triggers: [cbp-round-build]
5
5
  argument-hint: [chk-task-round | task-round | requirements-text] # e.g. `108-1-2`, `45-2`, or free-text
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -260,6 +261,10 @@ input:
260
261
 
261
262
  Wait for planner output. **If the spawn fails, STOP per "Planner Spawn Failure Is A Gate Failure" above** — do not self-certify a plan inline.
262
263
 
264
+ #### Orchestration (optional)
265
+
266
+ When a plan warrants independent perspectives, Step 7's `cbp-round-planner` spawn MAY be expressed as a `Workflow(...)` script — e.g. a judge-panel of independent plans, scored and synthesized — instead of a single ad-hoc spawn. This is opt-in (ultracode session or explicit user request); the single-spawn flow above stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
267
+
263
268
  ### Step 8: Present Plan
264
269
 
265
270
  Present the plan to user:
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: cbp-session-end
3
3
  description: End a development session
4
- effort: xhigh
4
+ model: inherit
5
+ effort: high
5
6
  ---
6
7
 
7
8
  # Session End Command
@@ -2,6 +2,7 @@
2
2
  name: cbp-session-start
3
3
  description: Start a development session
4
4
  triggers: [cbp-todo]
5
+ model: inherit
5
6
  effort: low
6
7
  ---
7
8
 
@@ -3,7 +3,8 @@ scope: org-shared
3
3
  name: cbp-setup-cd
4
4
  description: Detect configured CD surfaces, write/update .codebyplan/cd.json via `codebyplan cd init`, scaffold publish.yml and release-desktop.yml GitHub Actions workflows, and walk through environment/approval/OIDC setup. Interactive, idempotent.
5
5
  argument-hint: "[--force]"
6
- effort: xhigh
6
+ model: inherit
7
+ effort: high
7
8
  allowed-tools: Read, Write, Edit, Bash(cat *), Bash(jq *), Bash(test *), Bash(ls *), Bash(diff *), Bash(codebyplan cd *), Bash(npx codebyplan cd *), AskUserQuestion
8
9
  ---
9
10
 
@@ -3,7 +3,8 @@ scope: org-shared
3
3
  name: cbp-setup-ci
4
4
  description: Detect CI platforms, write/update .codebyplan/ci.json, scaffold the GitHub Actions CI workflow, and enforce the required CI status check on the main branch. Interactive, idempotent.
5
5
  argument-hint: "[--force]"
6
- effort: xhigh
6
+ model: inherit
7
+ effort: high
7
8
  allowed-tools: Read, Write, Edit, Bash(cat *), Bash(jq *), Bash(test *), Bash(ls *), Bash(codebyplan ci *), Bash(npx codebyplan ci *), Bash(gh api *), Bash(gh auth *), AskUserQuestion
8
9
  ---
9
10
 
@@ -2,7 +2,8 @@
2
2
  name: cbp-setup-e2e
3
3
  description: Detect installed E2E frameworks, ask which to enable, record credentials source (gitignored env-file path + var names only, never secrets), and write/refresh .codebyplan/e2e.json. Interactive, idempotent.
4
4
  argument-hint: "[--force]"
5
- effort: xhigh
5
+ model: inherit
6
+ effort: high
6
7
  allowed-tools: Read, Write, Edit, Bash(cat *), Bash(jq *), Bash(which *), Bash(test *), Bash(mkdir *), Bash(cp *), Bash(echo *), Bash(date *), Bash(mv *), Bash(git check-ignore *), AskUserQuestion, mcp__codebyplan__get_repos
7
8
  ---
8
9
 
@@ -2,7 +2,8 @@
2
2
  name: cbp-setup-eslint
3
3
  description: Detect each app's tech stack, resolve matching DB ESLint presets, confirm which to enable per app, run `codebyplan eslint init` to generate eslint.config.mjs, and write/refresh .codebyplan/eslint.json. Interactive, idempotent.
4
4
  argument-hint: "[--force]"
5
- effort: xhigh
5
+ model: inherit
6
+ effort: high
6
7
  allowed-tools: Read, Write, Edit, Bash(cat *), Bash(jq *), Bash(test *), Bash(ls *), Bash(mkdir *), Bash(cp *), Bash(echo *), Bash(mv *), Bash(npx codebyplan eslint *), AskUserQuestion, mcp__codebyplan__get_repos, mcp__codebyplan__get_eslint_presets
7
8
  ---
8
9
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: cbp-ship
3
3
  description: Orchestrate runtime deployment for a checkpoint — Vercel web, EAS mobile (Expo Go dev build / TestFlight preview), Tauri desktop, npm package publish, VS Code extension, Railway backend, Supabase migrations. Detects configured surfaces, walks the user through what to deploy, executes per-surface deploy steps, verifies each landed.
4
+ model: inherit
4
5
  effort: xhigh
5
6
  ---
6
7
 
@@ -202,6 +203,10 @@ If a surface fails:
202
203
 
203
204
  EXCEPTION: `supabase` migration push failure halts the rest. Schema mismatch downstream is worse than partial shipment.
204
205
 
206
+ #### Orchestration (optional)
207
+
208
+ Step 5's per-surface deploys — the independent tails after the mandatory `supabase`-first step — MAY be authored as a `Workflow(...)` script for deterministic parallel fan-out instead of ad-hoc sequencing. This is opt-in (ultracode session or explicit user request); the sequential flow above (including the `supabase`-first ordering) stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
209
+
205
210
  ### Step 6 — Verify each surface landed
206
211
 
207
212
  After each surface deploys, run its verification:
@@ -3,7 +3,8 @@ name: cbp-ship-configure
3
3
  description: Configure shipment for one or more surfaces in the current repo — Vercel link, EAS project + eas.json scaffold, Apple credentials probe, npm publish auth check (including `codebyplan` asset-publish automation via the publish-on-main workflow), Railway project link, Supabase access token verify; Supabase GitHub branching integration via /cbp-supabase-setup. Interactive step-by-step; never stores credentials in the repo.
4
4
  argument-hint: [--surface=<id>]
5
5
  allowed-tools: Read, Write, Edit, Bash(which *), Bash(vercel *), Bash(eas *), Bash(npm *), Bash(railway *), Bash(jq *), Bash(mkdir *), Bash(cp *), Bash(echo *), Skill(cbp-supabase-setup)
6
- effort: xhigh
6
+ model: inherit
7
+ effort: high
7
8
  ---
8
9
 
9
10
  # Ship Configure Command
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: cbp-ship-main
3
3
  description: Ship feat branch to production branch via PR — thin wrapper around `codebyplan ship`
4
+ model: inherit
4
5
  effort: high
5
6
  ---
6
7
 
@@ -4,6 +4,7 @@ name: cbp-standalone-task-check
4
4
  description: AI production review for the current standalone task
5
5
  argument-hint: [task] # e.g. `45` (standalone TASK-45)
6
6
  triggers: [cbp-standalone-task-testing]
7
+ model: inherit
7
8
  effort: high
8
9
  ---
9
10
 
@@ -3,6 +3,7 @@ scope: repo-only:codebyplan
3
3
  name: cbp-standalone-task-complete
4
4
  description: Complete a standalone task — ship feat branch to production via PR and mark done
5
5
  argument-hint: [task] # e.g. `45` (standalone TASK-45)
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -2,7 +2,8 @@
2
2
  scope: repo-only:codebyplan
3
3
  name: cbp-standalone-task-create
4
4
  description: Creates a standalone task (not checkpoint-bound) via create_standalone_task MCP tool
5
- effort: xhigh
5
+ model: inherit
6
+ effort: high
6
7
  ---
7
8
 
8
9
  # Standalone Task Create Command
@@ -3,7 +3,8 @@ scope: repo-only:codebyplan
3
3
  name: cbp-standalone-task-start
4
4
  description: Start a standalone task, load context from DB
5
5
  argument-hint: [task] # e.g. `45` (standalone TASK-45)
6
- effort: xhigh
6
+ model: inherit
7
+ effort: high
7
8
  ---
8
9
 
9
10
  # Standalone Task Start Command
@@ -4,7 +4,8 @@ name: cbp-standalone-task-testing
4
4
  description: Run comprehensive task-level testing after /cbp-standalone-task-check passes
5
5
  argument-hint: [task] # e.g. `45` (standalone TASK-45)
6
6
  triggers: [cbp-standalone-task-complete]
7
- effort: xhigh
7
+ model: inherit
8
+ effort: high
8
9
  ---
9
10
 
10
11
  # Standalone Task Testing Command
@@ -2,7 +2,8 @@
2
2
  scope: org-shared
3
3
  name: cbp-stripe
4
4
  description: "Stripe integration guidance — load when implementing or reviewing payments, Checkout, subscriptions/billing, webhooks, Connect, Tax, or Treasury. Encodes the API-selection routing table, the no-payment_method_types rule, restricted-key security, and Stripe SDK conventions."
5
- effort: xhigh
5
+ model: inherit
6
+ effort: high
6
7
  ---
7
8
 
8
9
  # Stripe Integration (CBP)
@@ -3,7 +3,8 @@ name: cbp-supabase-branch-check
3
3
  description: Gate skill called by /cbp-ship-main (pre-merge) to verify the Supabase preview branch health check is green before allowing a PR to be merged; skips when no DB-path changes are detected.
4
4
  argument-hint: "[--mode pre_pr_create|pre_merge] [--target integration|production]"
5
5
  allowed-tools: Bash(git *), Bash(gh *), Bash(jq *), Bash(supabase *), Bash(sleep *), Bash(echo *), Read, mcp__supabase__list_branches, mcp__supabase__get_logs
6
- effort: xhigh
6
+ model: inherit
7
+ effort: high
7
8
  ---
8
9
 
9
10
  # Supabase Branch Check
@@ -3,6 +3,7 @@ name: cbp-supabase-migrate
3
3
  description: Scaffold or adopt a Supabase migration for the current PR branch, apply to the branch's preview DB, run advisor checks, regenerate TypeScript types. Includes a fresh-branch dry-run pre-flight that uses one persistent dry-run ephemeral branch per feature branch.
4
4
  argument-hint: "[--new <name> | <path-to-sql>]"
5
5
  allowed-tools: Read, Edit, Write, Bash(codebyplan supabase *), Bash(npx codebyplan supabase *), Bash(npx codebyplan checkpoint update *), Bash(npx codebyplan task update *), Bash(git *), Bash(supabase *), Bash(jq *), Bash(date *), Bash(which *), Bash(cp *), Bash(mv *), Bash(test *), Bash(ls *), mcp__supabase__apply_migration, mcp__supabase__list_migrations, mcp__supabase__get_advisors, mcp__supabase__generate_typescript_types, mcp__supabase__reset_branch, mcp__supabase__list_branches, mcp__supabase__create_branch, mcp__supabase__get_cost, mcp__supabase__confirm_cost, mcp__codebyplan__update_checkpoint, mcp__codebyplan__update_task
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -3,7 +3,8 @@ name: cbp-supabase-setup
3
3
  description: Enable Supabase GitHub branching integration — GitHub app authorization, required-status-check enforcement on main + integration branch, persistent branch creation, and idempotency marker in .codebyplan/shipment.json.
4
4
  argument-hint: "[--force]"
5
5
  allowed-tools: Read, Edit, Bash(supabase *), Bash(jq *), Bash(mv *), Bash(date *), Bash(test *), Bash(which *)
6
- effort: xhigh
6
+ model: inherit
7
+ effort: high
7
8
  ---
8
9
 
9
10
  # Supabase Branching Setup
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: cbp-task-create
3
3
  description: Create a new task within the active checkpoint
4
- effort: xhigh
4
+ model: inherit
5
+ effort: high
5
6
  ---
6
7
 
7
8
  # Task Create Command
@@ -3,6 +3,7 @@ name: cbp-task-start
3
3
  description: Start a task, load context from DB
4
4
  triggers: [cbp-round-plan]
5
5
  argument-hint: [chk-task] # e.g. `108-1` (CHK-108 TASK-1)
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: cbp-todo
3
3
  description: Entry point - what to work on next
4
- effort: low
4
+ model: inherit
5
+ effort: medium
5
6
  ---
6
7
 
7
8
  # Todo Command
@@ -3,6 +3,7 @@ name: cbp-verify
3
3
  description: Unified verify stage — deterministic gates, real-execution proof, and a fresh-context diff review at round or task scope. Auto-triggered by cbp-round-build; escalates to task scope on the last clean round.
4
4
  argument-hint: [chk-task[-round] | task[-round]]
5
5
  triggers: [cbp-round-plan, cbp-round-complete, cbp-finalize]
6
+ model: inherit
6
7
  effort: xhigh
7
8
  ---
8
9
 
@@ -98,6 +99,10 @@ Triage the returned findings: in-scope mechanical fixes the orchestrator applies
98
99
  (`Edit`/`Write`); blocking out-of-scope findings → `/cbp-round-plan` fix round. A baseline
99
100
  regression is a **blocking user-accept gate** — never auto-accepted.
100
101
 
102
+ #### Orchestration (optional)
103
+
104
+ When a finding warrants adversarial confirmation, Phase 4's `cbp-verify-reviewer` spawn MAY be expressed as a `Workflow(...)` script — e.g. N independent multi-vote reviewers — instead of a single ad-hoc spawn. This is opt-in (ultracode session or explicit user request); the single-spawn flow above stays the DEFAULT and is unchanged. See `rules/workflow-orchestration.md`.
105
+
101
106
  ### PHASE 5 — VERDICT + ROUTE (single directive, never an A/B/C menu)
102
107
 
103
108
  Combine Phase 2 + 3 + 4. Route on one directive (`feedback-close-out-routing.md`):
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: supabase
3
3
  description: "Use when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector)."
4
+ model: inherit
5
+ effort: medium
4
6
  metadata:
5
7
  author: supabase
6
8
  version: "0.1.2"
@@ -2,6 +2,8 @@
2
2
  name: supabase-postgres-best-practices
3
3
  description: Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, or database configurations.
4
4
  license: MIT
5
+ model: inherit
6
+ effort: low
5
7
  metadata:
6
8
  author: supabase
7
9
  version: "1.1.1"