with one click
quick
Execute an ad-hoc task with atomic commits. Skips full plan/review.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Execute an ad-hoc task with atomic commits. Skips full plan/review.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Run multiple phases hands-free. Chains discuss, plan, build, and verify automatically.
Start a new project. Deep questioning, research, requirements, and roadmap.
Execute all plans in a phase. Spawns agents to build in parallel, commits atomically.
Configure settings: depth, model profiles, features, git, and gates.
Execute the next logical step automatically. No prompts, no decisions — just do it.
Systematic debugging with hypothesis testing. Persistent across sessions.
| name | quick |
| description | Execute an ad-hoc task with atomic commits. Skips full plan/review. |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep, Task, AskUserQuestion |
| argument-hint | <description> [--discuss] [--full] |
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 0 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.
Dual-mode flow: This skill has two execution paths controlled by the features.zero_friction_quick config toggle (default: true). The zero-friction path reaches the executor in 2 tool calls. The legacy path preserves the full pre-planning ceremony.
Before ANY tool calls, display this banner:
╔══════════════════════════════════════════════════════════════╗
║ PLAN-BUILD-RUN ► QUICK TASK ║
╚══════════════════════════════════════════════════════════════╝
Then proceed to Step 1.
references/questioning.md -- Questioning philosophy and progressive depth patternsreferences/ui-brand.md -- Status symbols, banners, checkpoint boxes, progress displayReference: skills/shared/context-budget.md for the universal orchestrator rules.
Reference: skills/shared/agent-type-resolution.md for agent type fallback when spawning Task() subagents.
Additionally for this skill:
Task(subagent_type: "pbr:executor")Parse $ARGUMENTS for optional flags before extracting the task description:
--discuss: Before spawning the executor, ask 2-3 clarifying questions about the approach. Write the Q&A results to .planning/quick/{NNN}-{slug}/CONTEXT.md as a lightweight decision record. Pass this CONTEXT.md to the executor via files_to_read.--research: Spawn a Task(subagent_type: "pbr:researcher") to investigate the task domain before execution. The researcher writes findings to .planning/quick/{NNN}-{slug}/RESEARCH.md. Pass this RESEARCH.md to the executor via files_to_read.--full: Enable plan-checker validation (max 2 iterations) before executor spawn AND post-execution verification via verifier agent. Creates VERIFICATION.md in the quick task directory. Does NOT escalate to /pbr:plan -- stays in quick pipeline.Strip these flags from $ARGUMENTS before using the remainder as the task description.
Flag combinations:
--discuss alone: Quick task with discussion + CONTEXT.md--research alone: Quick task with research + RESEARCH.md--full alone: Quick task with plan-checking + verification--discuss --research: Discussion + research before execution--discuss --full: Discussion + plan-checking + verification--research --full: Research + plan-checking + verification--discuss --research --full: All quality layersNote: --full converts the zero-friction path to use a PLAN.md so plan-checker can validate it. The executor then reads the PLAN.md instead of inline instructions. This adds 1-2 tool calls but enables structured validation.
Quick 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: Run the init command to get config + state in a single call:
node plugins/pbr/scripts/pbr-tools.js init quick "{description}"
From the init output:
.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:new-project first for full project tracking.".planning/ exists but .planning/quick/ does not: create .planning/quick/ nowfeatures.zero_friction_quick from config (default: true)Route decision:
--full flag: continue with the selected path below (plan-checker and verifier steps will activate later). Do NOT escalate to Skill({ skill: "pbr:plan" }).--discuss flag: go to Step 1c (ask clarifying questions, write CONTEXT.md), then continue.--research flag: go to Step 1d (spawn researcher, write RESEARCH.md), then continue.--discuss and --research: run Step 1c first, then Step 1d.features.zero_friction_quick is true (default): go to Step 2 (zero-friction path)features.zero_friction_quick is false: go to Step 5 (legacy path)DO NOT fall back to the legacy flow when zero_friction_quick is true. The zero-friction path is the intended default experience.
If $ARGUMENTS is provided and non-empty (after stripping flags):
If $ARGUMENTS is empty:
--discuss flag is set)Ask 2-3 clarifying questions about the approach, constraints, and edge cases. Use plain text prompts (not AskUserQuestion -- these require freeform answers).
After receiving answers, write the Q&A to .planning/quick/{NNN}-{slug}/CONTEXT.md:
# Quick Task Context
**Task:** {description}
**Date:** {YYYY-MM-DD}
## Discussion
{Q&A content -- each question and answer}
## Decisions
{Key decisions derived from the discussion}
Note: The task directory .planning/quick/{NNN}-{slug}/ must be created before writing CONTEXT.md. In the zero-friction path, create it now (it will be reused in Step 3). In the legacy path, it is created in Step 5e.
Continue to Step 1d if --research is also set, otherwise continue to the selected path (Step 2 or Step 5).
--research flag is set)Spawn a Task(subagent_type: "pbr:researcher") with the following prompt:
Research the following task domain for a quick task.
Task: {description}
Write findings to: .planning/quick/{NNN}-{slug}/RESEARCH.md
Focus on: existing patterns in the codebase, potential risks, recommended approach.
Keep it concise (under 500 tokens).
Note: The task directory .planning/quick/{NNN}-{slug}/ must exist before the researcher writes to it. Create it if not already created by Step 1c.
After the researcher completes, verify .planning/quick/{NNN}-{slug}/RESEARCH.md exists. If missing, log a warning and continue without research context.
Continue to the selected path (Step 2 or Step 5).
This path executes the task in 2 tool calls: init (Step 1) + spawn executor (Step 2). No PLAN.md is written before execution. No
.active-skillis set. Artifacts are created AFTER execution completes.
Generate slug via CLI (or use blob.slug from initQuick if available):
pbr-tools slug-generate "{description}"
Parse the JSON output to get the slug field. If blob.slug is available from the initQuick response, use it directly instead of calling slug-generate.
Find next task number from .planning/quick/ listing (from init output if available, else quick ls):
.planning/quick/ directory for existing quick task directories{NNN}-{slug}/)Display to the user: > Spawning executor...
Context Assembly: Build the executor prompt's files_to_read block dynamically at spawn time. Always include STATE.md and CLAUDE.md as base files. Add CONTEXT.md line only if --discuss was used AND the file was created. Add RESEARCH.md line only if --research was used AND the file was created. Only include files that exist on disk.
Spawn a Task(subagent_type: "pbr:executor") with the following inline prompt:
Completion markers: After executor completes, check for
## PLAN COMPLETEor## PLAN FAILED. Route accordingly.
You are executor. Execute this quick task directly.
<files_to_read>
CRITICAL (no hook): Read these files BEFORE any other action:
1. .planning/STATE.md -- current project state (if exists)
2. CLAUDE.md -- project instructions
{3. .planning/quick/{NNN}-{slug}/CONTEXT.md -- task context (only if --discuss was used)}
{4. .planning/quick/{NNN}-{slug}/RESEARCH.md -- research findings (only if --research was used)}
</files_to_read>
Do NOT look for a PLAN.md file. Execute based on this description:
Task: {description}
Task ID: quick-{NNN}
Commit scope: quick-{NNN}
Instructions:
1. Understand what needs to change
2. Make the changes
3. Run appropriate verification (lint, test, typecheck)
4. Commit with format: {type}(quick-{NNN}): {description}
Do NOT write SUMMARY.md -- it will be generated post-hoc.
When done, output ## PLAN COMPLETE with a list of commits made.
This is the 2nd tool call. Code is now running.
If --full flag is set in the zero-friction path, add plan-checker validation before executor spawn:
Create PLAN.md: Write a PLAN.md to .planning/quick/{NNN}-{slug}/PLAN.md using the same format as Legacy Step 5f. This is required so the plan-checker has a structured plan to validate.
Run plan-checker loop: Same logic as Legacy Step 5g-full:
iteration = 0
max_iterations = 2
while iteration < max_iterations:
Spawn Task(subagent_type: "pbr:plan-checker") with quick-mode validation profile
(same prompt as Legacy Step 5g-full)
If CHECK PASSED: break
If CHECK FAILED: fix PLAN.md, iteration += 1
If max_iterations reached: warn user and continue.
files_to_read pointing to the PLAN.md (same as Legacy Step 5h).Note: --full converts the zero-friction path to use a PLAN.md so plan-checker can validate it. The executor then reads the PLAN.md instead of inline instructions.
If --full is NOT set, skip this step entirely -- the zero-friction path proceeds directly to Step 2 executor spawn with no overhead.
After the executor completes:
CRITICAL — DO NOT SKIP: Create task directory .planning/quick/{NNN}-{slug}/ NOW. Executor output cannot be stored without this directory.
Create task directory: .planning/quick/{NNN}-{slug}/
Generate post-hoc SUMMARY.md (if features.post_hoc_artifacts is not false):
node -e "const ph=require('./plugins/pbr/scripts/lib/post-hoc.js'); ph.generateSummary(process.argv[1], process.argv[2], {commitPattern: 'quick-{NNN}', description: '{description}'})" .planning ".planning/quick/{NNN}-{slug}"
features.post_hoc_artifacts is false: skip SUMMARY.md generationUpdate STATE.md quick tasks table (same as Legacy Step 5i)
Post-execution verification (only if --full): If --full flag is set AND executor completed successfully, run the same verifier spawn as Legacy Step 5i-full. Read VERIFICATION.md result after verifier returns.
Check pending todos (same as Step 6)
Go to Step 4
If planning.commit_docs: true in config.json:
--full was used)docs(planning): quick task {NNN} - {slug}Go to Step 8 (Report Results).
This path is used when
features.zero_friction_quickisfalse. It preserves the full pre-planning ceremony: scope validation, PLAN.md creation, then executor spawn.
CRITICAL — DO NOT SKIP: Write .active-skill NOW. 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:
Analyze the task description. If it appears to involve:
CRITICAL -- DO NOT SKIP: Present the following choice to the user via AskUserQuestion before proceeding:
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-phase for proper planning" - label: "Revise" description: "Let me rewrite the task description" multiSelect: false
If user selects "Quick task": continue to Step 5d.
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 1b to get a new task description.
If user types something else (freeform): interpret their response and proceed accordingly.
Generate slug via CLI:
pbr-tools slug-generate "{description}"
Parse the JSON output to get the slug field.
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 5g, 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 5d-5f. Do NOT proceed to spawning an executor.
If --full flag is set, run the plan-checker before spawning the executor:
iteration = 0
max_iterations = 2
while iteration < max_iterations:
Spawn Task(subagent_type: "pbr:plan-checker") with prompt:
You are plan-checker validating a QUICK TASK plan (not a full phase plan).
<files_to_read>
1. .planning/quick/{NNN}-{slug}/PLAN.md
</files_to_read>
Quick-mode validation profile -- check ONLY these dimensions:
1. Task completeness: all 5 elements present (name, files, action, verify, done)
2. Verification commands: verify commands are executable
3. Scope sanity: <= 3 tasks, <= 8 files total
SKIP these full-plan-only dimensions:
- Cross-plan data contracts
- Wave/dependency correctness
- Requirement coverage (quick tasks don't have requirement IDs)
- Context compliance (no phase CONTEXT.md for quick tasks unless --discuss)
Output: ## CHECK PASSED or ## CHECK FAILED with specific issues.
If plan-checker returns CHECK PASSED: break loop, proceed to executor
If plan-checker returns CHECK FAILED:
- Read the issues
- Fix PLAN.md inline (rewrite the plan addressing issues)
- iteration += 1
- Loop again
If max_iterations reached without passing: warn user "Plan-checker did not pass after 2 iterations. Proceeding with current plan." and continue to executor.
If --full is NOT set, skip this step entirely -- zero overhead on the default path.
Pre-spawn check -- Verify .planning/quick/{NNN}-{slug}/PLAN.md exists and contains at least one <task> block. If missing, STOP and complete Steps 5d-5f 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.
Context Assembly: Build the files_to_read block dynamically. Always include PLAN.md, STATE.md, and CLAUDE.md. Add CONTEXT.md line only if --discuss was used AND the file was created. Add RESEARCH.md line only if --research was used AND the file was created. Only include files that exist on disk.
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)
3. CLAUDE.md -- project instructions
{4. .planning/quick/{NNN}-{slug}/CONTEXT.md -- task context (only if --discuss was used)}
{5. .planning/quick/{NNN}-{slug}/RESEARCH.md -- research findings (only if --research was used)}
</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 entirelySpot-Check Executor Output:
.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 --full flag is set AND executor completed successfully (status = completed or partial):
Spawn Task(subagent_type: "pbr:verifier") with prompt:
You are verifier. Verify this quick task achieved its goals.
<files_to_read>
1. .planning/quick/{NNN}-{slug}/PLAN.md -- the task plan with acceptance criteria
2. .planning/quick/{NNN}-{slug}/SUMMARY.md -- executor's completion report
</files_to_read>
Quick-mode verification:
1. Check that files listed in PLAN.md files_modified exist on disk
2. Check that verify commands from PLAN.md pass when re-run
3. Check that commits exist matching the task scope (quick-{NNN})
Write VERIFICATION.md to: .planning/quick/{NNN}-{slug}/VERIFICATION.md
Use this frontmatter format:
---
status: passed|failed
must_haves_total: {N}
must_haves_passed: {N}
gaps: []
---
Output: ## VERIFICATION COMPLETE
After verifier returns:
.planning/quick/{NNN}-{slug}/VERIFICATION.md frontmatter/pbr:debugIf --full is NOT set, skip this step entirely -- no verifier overhead on the default path.
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:
Reference: skills/shared/commit-planning-docs.md for the standard commit pattern.
If planning.commit_docs: true in config.json:
--full was used)docs(planning): quick task {NNN} - {slug}Go to Step 6 (Check Pending Todos), then Step 7 (Clean Up Active Skill), then Step 8 (Report Results).
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 rmAuto-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.
Delete .planning/.active-skill if it exists. This must happen on all paths (success, partial, and failure) before reporting results.
Note: The zero-friction path never sets .active-skill, so this is primarily needed for the legacy path. Deleting a non-existent file is harmless.
Artifact check -- Before reporting, verify all required artifacts exist:
.planning/quick/{NNN}-{slug}/ directory exists.planning/quick/{NNN}-{slug}/SUMMARY.md exists and is non-empty (or was intentionally skipped via post_hoc_artifacts: false)--full was used: .planning/quick/{NNN}-{slug}/VERIFICATION.md existsIf SUMMARY.md is missing and was expected: the executor may have failed -- re-read executor output and report the failure. If STATE.md entry is missing: write it now (Step 5j logic).
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}
{If --full was used: "Verification: PASSED" or "Verification: FAILED -- {gap details}"}
+--------------------------------------------------------------+
| > NEXT UP |
+--------------------------------------------------------------+
**Continue your workflow** -- task complete
`/pbr:progress`
`/clear` first -- fresh context window
**Also available:**
- `/pbr:continue` -- execute next logical step
- `/pbr:check-todos` -- 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 error (if it was set)These 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.zero_friction_quick is true unless --full flag is set. The zero-friction path is the intended default experience..planning/quick/{NNN}-{slug}/ -- every quick task gets a tracking directory (created post-hoc in zero-friction, pre-execution in legacy)post_hoc_artifacts: false)git add . -- stage specific files only/pbr:plan-phase.active-skill in the zero-friction path -- it adds unnecessary ceremony