Skip to content
Back to skills

Config

ASecurity

Configure settings: depth, model profiles, features, git, and gates.

  • 17 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added May 27, 2026
developmentgobashgit

Works with

  • claude code

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add SienkLogic/plan-build-run --skill config --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Config?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Config
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sienklogic-config/badge)](https://www.skillsdirectory.com/skills/sienklogic-config)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: config
description: "Configure settings: depth, model profiles, features, git, and gates."
allowed-tools: Read, Write, Bash, Glob, AskUserQuestion
argument-hint: "set <key> <value> | get <key> | list"
---

**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.**

## Step 0 — Immediate Output

**Before ANY tool calls**, display this banner:

```
╔══════════════════════════════════════════════════════════════╗
║  PLAN-BUILD-RUN ► CONFIGURATION                              ║
╚══════════════════════════════════════════════════════════════╝
```

Then proceed to Step 1.

# /pbr:settings — 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
- `references/questioning.md` — Questioning philosophy for config decision guidance
- `references/ui-brand.md` — Status symbols, banners, formatting for config display output

## 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:new-project` first.
```

### 1b. Quick Start Path (no arguments, first-time configuration)

If no `$ARGUMENTS` provided and this is the first time running `/pbr:settings` interactively (no prior config changes detected), present:

Use AskUserQuestion:
  question: "How would you like to configure?"
  header: "Setup"
  options:
    - label: "Quick Start (recommended)"
      description: "Answer 4 essential questions, sensible defaults for everything else"
    - label: "Advanced (all fields)"
      description: "Full config with 54 fields for granular customization"

**If user selects "Quick Start":**

First, check for global defaults: `pbr-tools config load-defaults`
If defaults exist, use them as pre-populated values. Otherwise, use hardcoded defaults shown below.

Present 4 essential questions sequentially:

**Q1. Mode:**
Use AskUserQuestion:
  question: "How do you want to work?"
  header: "Mode"
  options:
    - label: "Interactive (default)"  description: "Pause at key gates for your approval"
    - label: "Autonomous"             description: "Auto-proceed, only stop for critical decisions"

**Q2. Depth:**
Use AskUserQuestion:
  question: "How thorough should planning be?"
  header: "Depth"
  options:
    - label: "Standard (default)"     description: "5-8 phases, includes research"
    - label: "Quick"                  description: "3-5 phases, skip research, ~50% cheaper"
    - label: "Comprehensive"          description: "8-12 phases, full deep research, ~2x cost"

**Q3. Parallel agents:**
Use AskUserQuestion:
  question: "Run agents in parallel when possible?"
  header: "Parallel"
  options:
    - label: "Yes (default)"          description: "Parallel execution of independent plans"
    - label: "No"                     description: "Sequential execution only"

**Q4. Git branching:**
Use AskUserQuestion:
  question: "Git branching strategy?"
  header: "Branching"
  options:
    - label: "Phase (default, recommended)"  description: "Branch per phase for safe undo"
    - label: "None"                          description: "All work on current branch"

After 4 answers, write config.json with all other fields set to sensible defaults.

**Quick Start defaults:** mode=interactive, depth=standard, parallel=true, git.branching=phase

After writing config, offer: "Save these as your global defaults for future projects? (y/n)"
If yes, run: `pbr-tools config save-defaults`

Display: "Config written. For full field reference, see `references/config-reference.md`."

Skip to Step 4 (Apply Changes confirmation).

**If user selects "Advanced":** proceed to Step 3 (Interactive Mode) below.

### 2. Parse Arguments

If `$ARGUMENTS` is provided, handle direct setting:
- `depth quick|standard|comprehensive` — set depth directly
- `model <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 preset
- `gate <gate-name> on|off` — toggle a gate
- `feature <feature-name> on|off` — toggle a feature (e.g., `feature auto_continue on`). When the user specifies a feature name without the `features.` prefix, automatically prepend `features.` before writing to config.
- `session_phase_limit <N>` — set the session phase limit directly (e.g., `/pbr:settings session_phase_limit 5`). Validate N is an integer between 0 and 20. Write to config.json at top level: `"session_phase_limit": N`. Display: "Session phase limit set to {N}. PBR will suggest pausing after {N} phases per session. (0 = disabled)"
- `git branching none|phase|milestone|disabled` — set branching strategy
- `git mode disabled` — disable git integration entirely
- `show` — 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
  Session Phase Limit: 3 (pause after 3 phases)
  # When session_phase_limit is 0, display: "Session Phase Limit: disabled"

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)
```

**CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
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: `pbr-tools 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:settings` -> Features -> Plan checking -> Enable
This writes `depth_profiles.quick.features.plan_checking: true` to config.json.

If user selects "Model profile":
**CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
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.
**CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
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.

For numeric settings like `session_phase_limit`, use the direct command: `/pbr:settings session_phase_limit <N>`

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:

```bash
pbr-tools" 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

**CRITICAL (no hook) -- DO NOT SKIP: Write updated config.json to disk.**

Update config.json with new values.

#### 4b. Commit Config Changes

Reference: `skills/shared/commit-planning-docs.md` for the commit pattern.

Read `.planning/config.json` and check `planning.commit_docs` (or `git.commit_docs`).
If true, commit the modified config.json:

```text
docs(config): update config — {changed_fields}
```

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:progress`

<sub>`/clear` first → fresh context window</sub>



**Also available:**
- `/pbr:continue` — execute next logical step
- `/pbr:settings` — 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-agent `models` object

## 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 |
| Session phase limit | `session_phase_limit` | `3` | Maximum phases per session before auto-pause. 0 disables. Requires `auto_continue: true`. |
| 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

- `depth` must be one of: quick, standard, comprehensive
- `models.*` must be one of: sonnet, inherit, haiku, opus
- `context_strategy` must be one of: aggressive, balanced, minimal
- `git.branching` must be one of: none, phase, milestone, disabled
- `git.mode` must be one of: enabled, disabled. When `disabled`, no git commands are run (no commits, no branching). Useful for prototyping or non-git projects.
- Boolean fields must be true/false

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.