Manages model profiles for PLAN-BUILD-RUN agents: switches presets (quality, balanced, budget, adaptive) or customs, shows current assignments from config.json.
From pbrnpx claudepluginhub sienklogic/plan-build-run --plugin pbrThis skill is limited to using the following tools:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
STOP — DO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's plugin system. Begin executing Step 0 immediately.
You are running the profile skill. Your job is to show the current model profile or switch to a new one by writing model assignments to .planning/config.json.
Before ANY tool calls, display this banner:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► MODEL PROFILE ║
╚══════════════════════════════════════════════════════════════╝
Then proceed to Step 1.
Read .planning/config.json.
If the file does not exist, output:
Error: .planning/config.json not found. Run /pbr:begin first.
Stop immediately.
Extract the first word from $ARGUMENTS as the profile name. Trim whitespace.
$ARGUMENTS is empty or blank → show-mode (go to Step 3).Display the current profile status and available options.
config.json key model_profile. If absent, treat as "balanced".config.json key models (object). If absent, use empty object.config.json key model_profiles (object, optional custom profiles). If absent, use empty object.Output the following (fill in actual values):
Active profile: <model_profile value>
Current model assignments:
researcher : <models.researcher or "not set">
planner : <models.planner or "not set">
executor : <models.executor or "not set">
verifier : <models.verifier or "not set">
integration_checker : <models.integration_checker or "not set">
debugger : <models.debugger or "not set">
mapper : <models.mapper or "not set">
synthesizer : <models.synthesizer or "not set">
Available presets:
quality — all agents use opus (maximum capability)
balanced — mix of sonnet/inherit/haiku (default)
budget — all agents use haiku (minimum cost)
adaptive — sonnet for planning/verification, inherit/haiku for execution
If model_profiles has any keys, also display:
Custom profiles:
<profile-name> — <key count> model overrides
Output: "Run /pbr:profile <name> to switch profiles."
Stop. Do not write anything.
Built-in preset names: quality, balanced, budget, adaptive.
Custom profile names: keys in config.json model_profiles (if any).
If the provided name does not match any of the above:
Error: Unknown profile "<name>".
Valid presets: quality, balanced, budget, adaptive
<list any custom profile names from config.json model_profiles, if any>
Run `/pbr:profile` to see the current status.
Stop immediately.
Use the preset table to resolve model values:
| Agent | quality | balanced | budget | adaptive |
|---|---|---|---|---|
| researcher | opus | sonnet | haiku | sonnet |
| planner | opus | inherit | haiku | sonnet |
| executor | opus | inherit | haiku | inherit |
| verifier | opus | sonnet | haiku | sonnet |
| integration_checker | sonnet | sonnet | haiku | haiku |
| debugger | opus | inherit | haiku | inherit |
| mapper | sonnet | sonnet | haiku | haiku |
| synthesizer | sonnet | haiku | haiku | haiku |
For a custom profile (name found in config.json model_profiles):
balanced defaults from the table above.config.json model_profiles[<name>].Update config.json using the Bash tool with node -e inline script:
node -e "
const fs = require('fs');
const cfg = JSON.parse(fs.readFileSync('.planning/config.json', 'utf8'));
cfg.model_profile = '<name>';
cfg.models = cfg.models || {};
cfg.models.researcher = '<value>';
cfg.models.planner = '<value>';
cfg.models.executor = '<value>';
cfg.models.verifier = '<value>';
cfg.models.integration_checker = '<value>';
cfg.models.debugger = '<value>';
cfg.models.mapper = '<value>';
cfg.models.synthesizer = '<value>';
fs.writeFileSync('.planning/config.json', JSON.stringify(cfg, null, 2));
console.log('OK');
"
Replace each <value> with the resolved model string for that agent. Replace <name> with the profile name.
Output:
Active profile set to: <name>
Model assignments updated:
researcher : <value>
planner : <value>
executor : <value>
verifier : <value>
integration_checker : <value>
debugger : <value>
mapper : <value>
synthesizer : <value>
Config written to .planning/config.json.
Run /pbr:profile to verify.
Stop. Done.