codebyplan 1.13.60 → 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 (65) hide show
  1. package/dist/ci.js +518 -0
  2. package/dist/cli.js +427 -359
  3. package/package.json +12 -2
  4. package/templates/agents/cbp-e2e-maestro.md +1 -1
  5. package/templates/agents/cbp-e2e-playwright.md +1 -1
  6. package/templates/agents/cbp-e2e-tauri.md +1 -1
  7. package/templates/agents/cbp-e2e-vscode.md +1 -1
  8. package/templates/agents/cbp-e2e-xcuitest.md +1 -1
  9. package/templates/rules/effort-and-ultracode.md +70 -0
  10. package/templates/rules/model-invocation-convention.md +1 -0
  11. package/templates/rules/workflow-orchestration.md +59 -0
  12. package/templates/skills/cbp-build-cc-agent/SKILL.md +1 -0
  13. package/templates/skills/cbp-build-cc-claude-file/SKILL.md +1 -0
  14. package/templates/skills/cbp-build-cc-mode/SKILL.md +25 -17
  15. package/templates/skills/cbp-build-cc-rule/SKILL.md +1 -0
  16. package/templates/skills/cbp-build-cc-settings/SKILL.md +1 -0
  17. package/templates/skills/cbp-build-cc-settings/reference/settings-fields.md +1 -1
  18. package/templates/skills/cbp-build-cc-skill/SKILL.md +2 -1
  19. package/templates/skills/cbp-build-cc-skill/reference/frontmatter-fields.md +1 -1
  20. package/templates/skills/cbp-build-cc-skill/scripts/validate-skill.sh +12 -9
  21. package/templates/skills/cbp-checkpoint-check/SKILL.md +5 -0
  22. package/templates/skills/cbp-checkpoint-complete/SKILL.md +1 -0
  23. package/templates/skills/cbp-checkpoint-create/SKILL.md +1 -0
  24. package/templates/skills/cbp-checkpoint-end/SKILL.md +5 -0
  25. package/templates/skills/cbp-checkpoint-plan/SKILL.md +5 -0
  26. package/templates/skills/cbp-checkpoint-start/SKILL.md +1 -0
  27. package/templates/skills/cbp-checkpoint-update/SKILL.md +2 -1
  28. package/templates/skills/cbp-clear-continue/SKILL.md +2 -1
  29. package/templates/skills/cbp-clear-prep/SKILL.md +2 -1
  30. package/templates/skills/cbp-finalize/SKILL.md +1 -0
  31. package/templates/skills/cbp-frontend-design/SKILL.md +1 -0
  32. package/templates/skills/cbp-frontend-ui/SKILL.md +2 -1
  33. package/templates/skills/cbp-frontend-ux/SKILL.md +2 -1
  34. package/templates/skills/cbp-git-branch-feat-create/SKILL.md +1 -0
  35. package/templates/skills/cbp-git-commit/SKILL.md +1 -0
  36. package/templates/skills/cbp-map-architecture/SKILL.md +5 -0
  37. package/templates/skills/cbp-merge-main/SKILL.md +1 -0
  38. package/templates/skills/cbp-refresh-arch-map/SKILL.md +1 -0
  39. package/templates/skills/cbp-round-build/SKILL.md +5 -0
  40. package/templates/skills/cbp-round-complete/SKILL.md +1 -0
  41. package/templates/skills/cbp-round-plan/SKILL.md +5 -0
  42. package/templates/skills/cbp-session-end/SKILL.md +2 -1
  43. package/templates/skills/cbp-session-start/SKILL.md +1 -0
  44. package/templates/skills/cbp-setup-cd/SKILL.md +2 -1
  45. package/templates/skills/cbp-setup-ci/SKILL.md +2 -1
  46. package/templates/skills/cbp-setup-e2e/SKILL.md +2 -1
  47. package/templates/skills/cbp-setup-eslint/SKILL.md +2 -1
  48. package/templates/skills/cbp-ship/SKILL.md +5 -0
  49. package/templates/skills/cbp-ship-configure/SKILL.md +2 -1
  50. package/templates/skills/cbp-ship-main/SKILL.md +1 -0
  51. package/templates/skills/cbp-standalone-task-check/SKILL.md +1 -0
  52. package/templates/skills/cbp-standalone-task-complete/SKILL.md +1 -0
  53. package/templates/skills/cbp-standalone-task-create/SKILL.md +2 -1
  54. package/templates/skills/cbp-standalone-task-start/SKILL.md +2 -1
  55. package/templates/skills/cbp-standalone-task-testing/SKILL.md +2 -1
  56. package/templates/skills/cbp-stripe/SKILL.md +2 -1
  57. package/templates/skills/cbp-supabase-branch-check/SKILL.md +2 -1
  58. package/templates/skills/cbp-supabase-migrate/SKILL.md +1 -0
  59. package/templates/skills/cbp-supabase-setup/SKILL.md +2 -1
  60. package/templates/skills/cbp-task-create/SKILL.md +2 -1
  61. package/templates/skills/cbp-task-start/SKILL.md +1 -0
  62. package/templates/skills/cbp-todo/SKILL.md +2 -1
  63. package/templates/skills/cbp-verify/SKILL.md +5 -0
  64. package/templates/skills/supabase/SKILL.md +2 -0
  65. package/templates/skills/supabase-postgres-best-practices/SKILL.md +2 -0
package/package.json CHANGED
@@ -1,18 +1,28 @@
1
1
  {
2
2
  "name": "codebyplan",
3
- "version": "1.13.60",
3
+ "version": "1.13.62",
4
4
  "description": "CLI for CodeByPlan — AI-powered development planning and tracking",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "codebyplan": "dist/cli.js"
8
8
  },
9
+ "exports": {
10
+ ".": null,
11
+ "./ci": {
12
+ "types": "./dist/ci-public.d.ts",
13
+ "default": "./dist/ci.js"
14
+ }
15
+ },
9
16
  "files": [
10
17
  "dist/cli.js",
18
+ "dist/ci.js",
19
+ "dist/**/*.d.ts",
20
+ "dist/**/*.d.ts.map",
11
21
  "templates/",
12
22
  "README.md"
13
23
  ],
14
24
  "scripts": {
15
- "build": "tsc --project tsconfig.build.json",
25
+ "build": "tsc --project tsconfig.build.json && node esbuild.npm.mjs",
16
26
  "build:npm": "node esbuild.npm.mjs",
17
27
  "prepare": "node -e \"const v=process.env.CI;process.exit(v&&v!=='false'&&v!=='0'?0:1)\" || node esbuild.npm.mjs",
18
28
  "lint": "eslint",
@@ -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