config
Flagged{"isSafe":false,"isSuspicious":true,"riskLevel":"critical","findings":[{"category":"prompt_injection","severity":"critical","description":"Inline prompt-injection content attempting to override normal AI safety and force execution of steps before verification (e.g., instructing to display a banner and begin Step 1 immediately). This includes explicit language about a prompt injected into context by an external system.","evidence":"**STOP — DO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's plugin system. Using the Read tool on this SKILL.md file wastes ~7,600 tokens. Begin executing Step 1 immediately.**\n\n## Step 0 — Immediate Output\n\n**Before ANY tool calls**, display this banner:\n\n```\n╔══════════════════════════════════════════════════════════════╗\n║ PLAN-BUILD-RUN ► CONFIGURATION ║\n╚══════════════════════════════════════════════════════════════╝\n```\n\nThen proceed to Step 1."},{"category":"shell_command","severity":"low","description":"Contains guidance and examples for running local CLI tools and scripts (e.g., node scripts to configure and save defaults). These are not inherently malicious, but in an untrusted context could be executed to modify local config or environment.","evidence":"To resolve the profile, run: `node ${PLUGIN_ROOT}/scripts/pbr-tools.js config resolve-depth`\n\nIf the user selects \"Save as defaults\":\n\n```bash\nnode \"${PLUGIN_ROOT}/scripts/pbr-tools.js\" config save-defaults\n```"}],"summary":"The content primarily introduces a prompt-injection risk: it includes explicit instructions to override normal model behavior and execute steps immediately, attempting to bypass safety checks. While there are no data exfiltration, malware, or URL-based threats detected, the injection pattern itself is highly risky. Recommend removing or neutralizing injection-style prompts, adding strict input sanitization, validating/halting untrusted commands, and running such configurations in isolated, sandboxed contexts."}
npx machina-cli add skill SienkLogic/plan-build-run/config --openclawSTOP — DO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's plugin system. Using the Read tool on this SKILL.md file wastes ~7,600 tokens. Begin executing Step 1 immediately.
Step 0 — Immediate Output
Before ANY tool calls, display this banner:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► CONFIGURATION ║
╚══════════════════════════════════════════════════════════════╝
Then proceed to Step 1.
$pbr-config — Configure Plan-Build-Run
Overview
Reads and writes .planning/config.json. Interactive configuration with AskUserQuestion.
References
references/config-reference.md— Full config.json schema (54 fields, 16 feature toggles, validation rules)references/model-profiles.md— Model selection guide for agent spawning
Flow
1. Load Current Config
Read .planning/config.json. If it doesn't exist, display:
╔══════════════════════════════════════════════════════════════╗
║ ERROR ║
╚══════════════════════════════════════════════════════════════╝
No Plan-Build-Run project found.
**To fix:** Run `$pbr-begin` first.
2. Parse Arguments
If $ARGUMENTS is provided, handle direct setting:
depth quick|standard|comprehensive— set depth directlymodel <agent> <model>— set model for specific agent (e.g.,model executor sonnet)model-profile quality|balanced|budget|adaptive— set all models at once using a presetgate <gate-name> on|off— toggle a gatefeature <feature-name> on|off— toggle a feature (e.g.,feature auto_continue on). When the user specifies a feature name without thefeatures.prefix, automatically prependfeatures.before writing to config.git branching none|phase|milestone|disabled— set branching strategygit mode disabled— disable git integration entirelyshow— display current config (default when no args)
3. Interactive Mode (no arguments or just show)
Display current configuration in a readable format:
Plan-Build-Run Configuration
=====================
Workflow:
Depth: standard (balanced)
Research: on Plan-check: on Verify: on
Scan mappers: 4 Debug rounds: 5 Inline verify: off
Mode: interactive
Context Strategy: aggressive
Features:
✓ Structured planning ✓ Goal verification
✓ Context isolation ✓ Atomic commits
✓ Session persistence ✓ Research phase
✓ Plan checking ✗ TDD mode
✓ Status line ✗ Auto-continue
✗ Auto-advance ✗ Team discussions
Models:
Researcher: sonnet Planner: inherit Executor: inherit
Verifier: sonnet Int-Checker: sonnet Debugger: inherit
Mapper: sonnet Synthesizer: haiku
Parallelization:
Enabled: true Max concurrent: 3
Plan-level: true Task-level: false
Use Teams: false
Git:
Mode: enabled Branching: none
Commit docs: true
Commit format: {type}({phase}-{plan}): {description}
Gates:
✓ Confirm project ✓ Confirm roadmap ✓ Confirm plan
✗ Confirm execute ✓ Confirm transition ✓ Issues review
Status Line:
Sections: [phase, plan, status, context]
Brand: PLAN-BUILD-RUN
Context bar: 20 chars, green<50%, yellow<80%
Spinner Tips: (none configured — using defaults)
Then present the configuration menu using the settings-category-select pattern (see skills/shared/gate-prompts.md):
Use AskUserQuestion: question: "What would you like to configure?" header: "Configure" options: - label: "Depth" description: "quick/standard/comprehensive" - label: "Model profile" description: "quality/balanced/budget/adaptive" - label: "Features" description: "Toggle workflow features, gates, status line" - label: "Git settings" description: "branching strategy, commit mode" - label: "Save as defaults" description: "Save current config as user-level defaults for new projects" multiSelect: false
Note: The original 7 categories are condensed to 5. "Models" (per-agent) is accessible through "Model profile" with a follow-up option. "Gates", "Parallelization", and "Status Line" are grouped under "Features". "Save as defaults" exports to ~/.claude/pbr-defaults.json.
Follow-up based on selection:
If user selects "Depth": Use AskUserQuestion: question: "Select workflow depth" header: "Depth" options: - label: "Quick" description: "Budget mode: skip research/plan-check/verifier, 2 scan mappers, ~1-3 fewer spawns per phase" - label: "Standard" description: "Balanced mode: conditional research, full plan-check and verification, 4 scan mappers (default)" - label: "Comprehensive" description: "Thorough mode: always research, always verify, inline verification, 4 scan mappers" multiSelect: false
After setting depth, the profile is automatically resolved. Show the user the effective settings: "Depth set to {value}. Effective profile:" Then display the profile summary (research, plan-check, verify, scan mappers, debug rounds, inline verify).
To resolve the profile, run: node ${PLUGIN_ROOT}/scripts/pbr-tools.js config resolve-depth
If the user wants to override a specific profile setting, they can set depth_profiles.{depth}.{key} directly.
For example: to use quick mode but keep plan-checking, the user would set depth to quick and then override:
$pbr-config -> Features -> Plan checking -> Enable
This writes depth_profiles.quick.features.plan_checking: true to config.json.
If user selects "Model profile": Use the model-profile-select pattern: Use AskUserQuestion: question: "Select model profile" header: "Profile" options: - label: "Quality" description: "opus for all agents (highest cost)" - label: "Balanced" description: "sonnet/inherit mix (default)" - label: "Budget" description: "haiku for all agents (lowest cost)" - label: "Adaptive" description: "sonnet planning, haiku execution" multiSelect: false
If user asks for per-agent model selection (typed "models" or "per-agent"), present individual agent selection as plain text: list the agents and ask which one to change, then ask for the model. This is a freeform flow because agent names are dynamic.
If user selects "Features":
List all features and gates with current status, then use the toggle-confirm pattern for each change.
Feature name normalization: When toggling a feature, if the user specifies a bare name (e.g., inline_verify), normalize it to features.inline_verify before writing to config. All feature flags live under the features.* namespace in config.json.
Use AskUserQuestion:
question: "Enable {feature_name}?"
header: "Toggle"
options:
- label: "Enable" description: "Turn this feature on"
- label: "Disable" description: "Turn this feature off"
multiSelect: false
Repeat for each feature the user wants to change. Show updated status after each toggle.
If user selects "Git settings": Use AskUserQuestion: question: "Select branching strategy" header: "Branching" options: - label: "None" description: "All work on current branch" - label: "Phase" description: "New branch per phase" - label: "Milestone" description: "New branch per milestone" - label: "Disabled" description: "No git integration" multiSelect: false
If user selects "Save as defaults": Save current project config as user-level defaults for future projects:
node "${PLUGIN_ROOT}/scripts/pbr-tools.js" config save-defaults
Display: "Saved your preferences to ~/.claude/pbr-defaults.json. New projects created with $pbr-setup will use these as starting values."
If user types something else (freeform): interpret as a direct setting command and handle via Step 2 argument parsing logic.
4. Apply Changes
Update config.json with new values. Show what changed with a branded completion:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► CONFIG UPDATED ✓ ║
╚══════════════════════════════════════════════════════════════╝
Updated:
depth: standard → quick
models.executor: inherit → sonnet
╔══════════════════════════════════════════════════════════════╗
║ ▶ NEXT UP ║
╚══════════════════════════════════════════════════════════════╝
**Continue your workflow** — settings saved
`$pbr-status`
<sub>`/clear` first → fresh context window</sub>
**Also available:**
- `$pbr-continue` — execute next logical step
- `$pbr-config` — change more settings
Config Schema
See skills/begin/templates/config.json.tmpl for the full schema with defaults.
Version Migration
If config version is older than current (2), run migration:
- v1 → v2: Add missing fields with defaults, rename
model_profile→ per-agentmodelsobject
Model Profile Presets
The model-profile command sets all agent models at once:
| Profile | researcher | planner | executor | verifier | int-checker | debugger | mapper | synthesizer |
|---|---|---|---|---|---|---|---|---|
quality | opus | opus | opus | opus | sonnet | opus | sonnet | sonnet |
balanced | sonnet | inherit | inherit | sonnet | sonnet | inherit | sonnet | haiku |
budget | haiku | haiku | haiku | haiku | haiku | haiku | haiku | haiku |
adaptive | sonnet | sonnet | inherit | sonnet | haiku | inherit | haiku | haiku |
balanced is the default and matches the initial config template. adaptive front-loads intelligence in research/planning and uses lighter models for mechanical work.
Feature Reference
| Feature | Key | Default | Description |
|---|---|---|---|
| Auto-continue | features.auto_continue | false | Automatically spawn continuation agents without user prompt |
| Auto-advance | features.auto_advance | false | Chain build→review→plan automatically in autonomous mode |
| Team discussions | features.team_discussions | false | Enable team-based discussion workflows |
Team boundaries: Teams are NEVER used for execution, planning, or verification. Teams are only for discussion and brainstorming workflows. All execution, planning, and verification use single-agent Task() spawns with proper subagent types.
Validation
depthmust be one of: quick, standard, comprehensivemodels.*must be one of: sonnet, inherit, haiku, opuscontext_strategymust be one of: aggressive, balanced, minimalgit.branchingmust be one of: none, phase, milestone, disabledgit.modemust be one of: enabled, disabled. Whendisabled, no git commands are run (no commits, no branching). Useful for prototyping or non-git projects.- Boolean fields must be true/false
Source
git clone https://github.com/SienkLogic/plan-build-run/blob/main/plugins/codex-pbr/skills/config/SKILL.mdView on GitHub Overview
This skill configures Plan-Build-Run by editing the .planning/config.json. It supports direct argument-based updates for depth, model profiles, features, git settings, and gates, or an interactive mode to view and adjust settings.
How This Skill Works
Config reads the current configuration from .planning/config.json. You can pass ARGUMENTS to set fields (depth quick|standard|comprehensive; model <agent> <model>; model-profile quality|balanced|budget|adaptive; gate <name> on|off; feature <name> on|off; git branching|milestone|disabled; show). If no args are provided, it launches an interactive view and a menu to tweak values before saving.
When to Use It
- When starting a new Plan-Build-Run project and you need initial settings.
- When you want to change depth or switch model profiles for optimization.
- When toggling features or gates to enable/disable capabilities.
- When adjusting git integration or branching strategy.
- When you need to review or display the current configuration.
Quick Start
- Step 1: Load the current config or trigger interactive mode by running pbr-config with no arguments or 'show'.
- Step 2: Apply targeted settings using ARGUMENTS like depth standard, model executor sonnet, model-profile quality, gate <name> on, feature <name> on, git mode disabled.
- Step 3: Save and verify by running 'show' or entering the interactive review to confirm changes.
Best Practices
- Back up .planning/config.json before making changes.
- Use model-profile presets to update multiple models consistently.
- Validate depth against model capabilities to avoid mismatches.
- Prefer the interactive mode for complex edits and verification.
- Test changes by running show to confirm the effective config.
Example Use Cases
- Set depth to standard and apply the model-profile balanced across agents.
- Disable git integration and set gate 'Confirm execute' to off.
- Enable feature auto_continue and turn on plan checks.
- Apply model for a specific agent: model executor sonnet.
- Show the current configuration to verify all changes.