Executes ad-hoc tasks via spawned executor subagent with atomic commits and .planning/quick/ tracking. For small self-contained work, skips full plan/review.
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.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
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.
You are running the quick skill. Your job is to execute a small, self-contained task outside the normal plan/build/review cycle. Quick tasks get their own tracking, atomic commits, and state integration, but skip the overhead of full planning.
This skill spawns a single Task(subagent_type: "pbr:executor") for execution.
Before ANY tool calls, display this banner:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► QUICK TASK ║
╚══════════════════════════════════════════════════════════════╝
Then proceed to Step 1.
Reference: skills/shared/context-budget.md for the universal orchestrator rules.
Additionally for this skill:
Task(subagent_type: "pbr:executor").planning/quick/{NNN}-{slug}/ and writing PLAN.md — even trivial tasks need tracking artifactsQuick tasks are for small, well-defined work. If the user describes something that would take more than 3-5 tasks or touches multiple subsystems, suggest using the full plan/build cycle instead.
Init-first pattern: When spawning agents, pass the output of node plugins/pbr/scripts/pbr-tools.js init quick "{description}" as context rather than having the agent read multiple files separately. This reduces file reads and prevents context-loading failures.
Check if .planning/ directory exists
.planning/ and .planning/quick/ directories, then warn "No Plan-Build-Run project found. This will create a standalone quick task. Consider running /pbr:begin first for full project tracking."If .planning/ exists but .planning/quick/ does not: create .planning/quick/ now. Every quick task gets tracked in .planning/quick/ — this directory MUST exist before Step 4.
After confirming both directories exist, write .planning/.active-skill with the content quick (single word, no newline). This registers you with the workflow enforcement hook — it will block source code writes until PLAN.md exists.
Check if ROADMAP.md exists
If $ARGUMENTS is provided and non-empty:
$ARGUMENTS as the task descriptionIf $ARGUMENTS is empty:
Analyze the task description. If it appears to involve:
Then use the scope-confirm pattern (see skills/shared/gate-prompts.md):
Use AskUserQuestion: question: "This task looks complex. Quick tasks work best for bug fixes, small features, config changes, and single-module refactors. How would you like to proceed?" header: "Scope" options: - label: "Quick task" description: "Execute as lightweight task" - label: "Full plan" description: "Switch to /pbr:plan for proper planning" - label: "Revise" description: "Let me rewrite the task description" multiSelect: false
If user selects "Quick task": continue to Step 4.
If user selects "Full plan": clean up .active-skill if it exists, then chain directly: Skill({ skill: "pbr:plan", args: "" }). The user's task description carries over in conversation context — the plan skill will pick it up.
If user selects "Revise": go back to Step 2 to get a new task description.
If user types something else (freeform): interpret their response and proceed accordingly.
CRITICAL (no hook): You MUST complete Steps 4, 5, and 6 before any executor is spawned. If you skip these steps, the quick task will have no tracking artifacts and no PLAN.md for the executor to follow. This is the #1 failure mode of this skill.
Generate slug:
Find next task number:
.planning/quick/ directory for existing quick task directories{NNN}-{slug}/)STOP — Use the Write or Bash tool RIGHT NOW to create this directory. Do not skip this step.
Create: .planning/quick/{NNN}-{slug}/
Verify the directory exists with ls .planning/quick/{NNN}-{slug}/ before proceeding. If the directory doesn't exist, you have a bug — go back and create it.
Write .planning/quick/{NNN}-{slug}/PLAN.md:
Read references/plan-format.md for the plan file format. Fill in all {variable} placeholders with actual task data from the user's description and project context.
Plan generation rules:
echo "Manual verification needed" and add a noteFor multi-task quick tasks, add sequential tasks:
<task name="{task 1}" type="auto">
...
</task>
<task name="{task 2}" type="auto">
...
</task>
PLANNING GATE — verify before spawning executor:
Before proceeding to Step 7, confirm these exist on disk:
.planning/quick/{NNN}-{slug}/ directory exists.planning/quick/{NNN}-{slug}/PLAN.md exists, is non-empty, and contains at least one <task> blockIf either check fails, you have skipped steps. Go back and complete Steps 4-6. Do NOT proceed to spawning an executor.
If config.local_llm.enabled is true, run a quick scope validation before spawning:
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js llm classify PLAN ".planning/quick/{NNN}-{slug}/PLAN.md"
"stub" with confidence >= 0.7: warn "⚠ Plan looks like a stub — executor may struggle. Consider adding more detail to task descriptions."Pre-spawn check — Verify .planning/quick/{NNN}-{slug}/PLAN.md exists and contains at least one <task> block. If missing, STOP and complete Steps 4-6 first.
Display to the user: ◐ Spawning executor...
Spawn a Task(subagent_type: "pbr:executor") with the following prompt:
Completion markers: After executor completes, check for
## PLAN COMPLETEor## PLAN FAILED. Route accordingly.
You are executor. Execute the following quick task plan.
<files_to_read>
CRITICAL (no hook): Read these files BEFORE any other action:
1. .planning/quick/{NNN}-{slug}/PLAN.md — the quick task plan with task details
2. .planning/STATE.md — current project state and progress (if exists)
</files_to_read>
Plan file: .planning/quick/{NNN}-{slug}/PLAN.md
Phase: quick
Plan ID: {NNN}
Read the plan file and execute all tasks sequentially. Follow all executor protocols:
- Atomic commits per task
- Commit format: fix(quick-{NNN}): {description} (or feat/refactor/test as appropriate)
- Run verify commands
- Create SUMMARY.md at .planning/quick/{NNN}-{slug}/SUMMARY.md
Execute now.
After the executor completes:
.planning/quick/{NNN}-{slug}/SUMMARY.mdcompleted — task succeededpartial — some tasks completed, others failedfailed — task failed entirelyCRITICAL (no hook): Verify executor output before proceeding.
.planning/quick/{NNN}-{slug}/SUMMARY.md existskey_files frontmatter exist on diskgit log --oneline -5 and verify at least one commit matches the task scope## Self-Check: FAILED in SUMMARY.md — if present, warn the userIf ANY spot-check fails, present the user with options: Retry / Continue anyway / Abort
If STATE.md exists, update the Quick Tasks section.
If the section doesn't exist, create it:
### Quick Tasks
| # | Description | Status | Commit |
|---|-------------|--------|--------|
Add the new entry:
| {NNN} | {description} | {status indicator} | {commit hash or "N/A"} |
Status indicators:
Delete .planning/.active-skill if it exists. This must happen on all paths (success, partial, and failure) before reporting results.
Reference: skills/shared/commit-planning-docs.md for the standard commit pattern.
If planning.commit_docs: true in config.json:
docs(planning): quick task {NNN} - {slug}After completing work, check if any pending todos are now satisfied:
.planning/todos/pending/ exists and contains filesstatus: done, add completed: {YYYY-MM-DD}, write to .planning/todos/done/{filename}, delete from pending/ via Bash rm✓ Auto-closed todo {NNN}: {title} (satisfied by quick task {NNN})
d. If a todo is partially related but not fully satisfied: do NOT close it, but mention it:ℹ Related pending todo {NNN}: {title} — may be partially addressed
e. If a todo is unrelated: skip silentlyImportant: Only auto-close todos where the match is unambiguous. When in doubt, leave it open — false closures are worse than missed closures.
Artifact check — Before reporting, verify all required artifacts exist:
.planning/quick/{NNN}-{slug}/PLAN.md exists.planning/quick/{NNN}-{slug}/SUMMARY.md exists and is non-emptyIf SUMMARY.md is missing: the executor may have failed — re-read executor output and report the failure. If STATE.md entry is missing: write it now (Step 9 was skipped).
Display results to the user with branded output:
If completed:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► QUICK TASK COMPLETE ✓ ║
╚══════════════════════════════════════════════════════════════╝
**Quick Task {NNN}:** {description}
Commit: {hash} — {commit message}
Files: {list of files changed}
╔══════════════════════════════════════════════════════════════╗
║ ▶ NEXT UP ║
╚══════════════════════════════════════════════════════════════╝
**Continue your workflow** — task complete
`/pbr:status`
<sub>`/clear` first → fresh context window</sub>
**Also available:**
- `/pbr:continue` — execute next logical step
- `/pbr:todo list` — see pending todos
If partial:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► QUICK TASK {NNN} PARTIAL ⚠ ║
╚══════════════════════════════════════════════════════════════╝
Completed: {N} of {M} tasks
Failed task: {task name} — {failure reason}
→ Re-run with `/pbr:quick` to retry
→ `/pbr:debug` to investigate the failure
If failed:
╔══════════════════════════════════════════════════════════════╗
║ ERROR ║
╚══════════════════════════════════════════════════════════════╝
Quick Task {NNN} failed: {failure details}
**To fix:** {what to try next}
When the user describes a task, infer file paths from:
Choose verification based on context:
| Context | Verification Command |
|---|---|
| TypeScript project | npx tsc --noEmit |
| Has test files | npm test or pytest |
| Has ESLint | npx eslint {files} |
| Python project | python -c "import {module}" |
| Config change | cat {file} to verify content |
| Script | Run the script with safe args |
| Unknown | echo "Manual verification needed" |
| Task Nature | Commit Type |
|---|---|
| Bug fix | fix |
| New feature/functionality | feat |
| Code restructuring | refactor |
| Adding tests | test |
| Config/tooling changes | chore |
| Documentation | docs |
.planning/ directory.planning/quick/ directory.planning/.active-skill before reporting the errorThese are the most common failure modes. If you violate any of these, the skill has not executed correctly.
Task(subagent_type: "pbr:executor"). This is the single most important rule..planning/quick/{NNN}-{slug}/ — every quick task gets a tracking directorygit add . — stage specific files only/pbr:plan