Custom agent imported from GruePro/sdd-oc (
.github/agents/speckit.plan.agent.md). Copyright stays with the author.
User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Pre-Execution Checks
Check for extension hooks (before planning):
- Check if
.specify/extensions.ymlexists in the project root. - If it exists, read it and look for entries under the
hooks.before_plankey - If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
- Filter out hooks where
enabledis explicitlyfalse. Treat hooks without anenabledfield as enabled by default. - For each remaining hook, do not attempt to interpret or evaluate hook
conditionexpressions:- If the hook has no
conditionfield, or it is null/empty, treat the hook as executable - If the hook defines a non-empty
condition, skip the hook and leave condition evaluation to the HookExecutor implementation
- If the hook has no
- For each executable hook, output the following based on its
optionalflag:- Optional hook (
optional: true):## Extension Hooks **Optional Pre-Hook**: {extension} Command: `/{command}` Description: {description} Prompt: {prompt} To execute: `/{command}` - Mandatory hook (
optional: false):## Extension Hooks **Automatic Pre-Hook**: {extension} Executing: `/{command}` EXECUTE_COMMAND: {command} Wait for the result of the hook command before proceeding to the Outline.
- Optional hook (
- If no hooks are registered or
.specify/extensions.ymldoes not exist, skip silently
Outline
-
Setup: Run
.specify/scripts/powershell/setup-plan.ps1 -Jsonfrom repo root and parse JSON for FEATURE_SPEC, IMPL_PLAN, SPECS_DIR, and BOOTSTRAP_ID.BRANCHmay appear as legacy context, but the active walkthrough is determined byfeature.json. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot"). -
Load context: Read FEATURE_SPEC and
.specify/memory/constitution.md. Ifoc-bootstrap-onboarding-sdd.mdexists, load the relevantConfigure SDD to ...sections for the current scope. Load IMPL_PLAN template (already copied).
For ACP- or gateway-oriented bootstrap work, explicitly identify the operator-facing runtime surfaces the scaffold must name, including spawn, bind, steer, kill, status, and health-check commands, even when the runnable gateway config is deferred.
- Execute plan workflow: Follow the structure in IMPL_PLAN template to:
- Fill Bootstrap Context (mark unknowns as "NEEDS CLARIFICATION")
- Fill Constitution Check section from constitution
- Evaluate gates (ERROR if violations unjustified)
- Phase 0: Generate research.md (resolve all NEEDS CLARIFICATION)
- Phase 1: Generate data-model.md as an artifact map, contracts/ as optional command or interface contracts, and quickstart.md as an operator bootstrap walkthrough
- For orchestration-focused scopes, define ACP session surfaces, gateway control-plane assumptions, sub-agent depth/steering expectations, and tool-routing boundaries explicitly in contracts/
- Phase 1: Update agent context by running the agent script
- Re-evaluate Constitution Check post-design
-
Stop and report: Command ends after Phase 2 planning. Report bootstrap id, IMPL_PLAN path, and generated artifacts.
-
Check for extension hooks: After reporting, check if
.specify/extensions.ymlexists in the project root.- If it exists, read it and look for entries under the
hooks.after_plankey - If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
- Filter out hooks where
enabledis explicitlyfalse. Treat hooks without anenabledfield as enabled by default. - For each remaining hook, do not attempt to interpret or evaluate hook
conditionexpressions:- If the hook has no
conditionfield, or it is null/empty, treat the hook as executable - If the hook defines a non-empty
condition, skip the hook and leave condition evaluation to the HookExecutor implementation
- If the hook has no
- For each executable hook, output the following based on its
optionalflag:- Optional hook (
optional: true):## Extension Hooks **Optional Hook**: {extension} Command: `/{command}` Description: {description} Prompt: {prompt} To execute: `/{command}` - Mandatory hook (
optional: false):## Extension Hooks **Automatic Hook**: {extension} Executing: `/{command}` EXECUTE_COMMAND: {command}
- Optional hook (
- If no hooks are registered or
.specify/extensions.ymldoes not exist, skip silently
- If it exists, read it and look for entries under the
Phases
Phase 0: Outline & Research
-
Extract unknowns from Bootstrap Context above:
- For each NEEDS CLARIFICATION → research task
- For each dependency → best practices task
- For each integration → patterns task
-
Generate and dispatch research agents:
For each unknown in Bootstrap Context: Task: "Research {unknown} for {feature context}" For each OpenClaw capability choice: Task: "Find best practices for {capability} in {bootstrap domain}" -
Consolidate findings in
research.mdusing format:- Decision: [what was chosen]
- Rationale: [why chosen]
- Alternatives considered: [what else evaluated]
Output: research.md with all NEEDS CLARIFICATION resolved
Phase 1: Design & Contracts
Prerequisites: research.md complete
- Extract bootstrap artifacts from feature spec →
data-model.md:
- Artifact name, role, dependencies
- Validation rules from requirements
- Transition or ownership notes if applicable
- Define interface contracts (if the bootstrap exposes external or operator-facing interfaces) →
/contracts/:
- Identify command surfaces, channel bindings, gateway interfaces, ACP spawn/bind/steer expectations, or emitted config expectations
- Document the contract format appropriate for the bootstrap type
- Skip if the current wave is purely internal scaffold refactoring
- Agent context update:
- Run
.specify/scripts/powershell/update-agent-context.ps1 -AgentType copilot - These scripts detect which AI agent is in use
- Update the appropriate agent-specific context file
- Add only new technology from current plan
- Preserve manual additions between markers
- Run
Output: data-model.md, /contracts/*, quickstart.md, agent-specific file
Key rules
- Use absolute paths
- ERROR on gate failures or unresolved clarifications