ワンクリックで
autopilot-roadmap
Execute roadmap items iteratively with policy-aware vendor routing and learning feedback
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Execute roadmap items iteratively with policy-aware vendor routing and learning feedback
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Generate throughput and quality reports from coordinator audit data and episodic memory
Orchestrate the full plan-review-implement-validate-PR lifecycle with multi-vendor review convergence
Merge approved PR, migrate open tasks, archive OpenSpec proposal, and cleanup branches
Ingest raw session transcripts from coding-agent harnesses via vendor-specific adapters, normalize to a common event schema, triage for struggle signals, and write structured findings to episodic memory
HTTP fallback bridge for coordinator when MCP transport is unavailable
Analyze capability-gap failure patterns from episodic memory and generate improvement reports with OpenSpec proposal stubs
| name | autopilot-roadmap |
| description | Execute roadmap items iteratively with policy-aware vendor routing and learning feedback |
| category | Automation |
| tags | ["roadmap","execution","autopilot","multi-vendor"] |
| triggers | ["autopilot-roadmap","autopilot roadmap","execute roadmap"] |
Execute roadmap items iteratively with policy-aware vendor routing and adaptive reprioritization. Manages the full lifecycle of each roadmap item from planning through completion, writing learning entries and adjusting priorities based on accumulated experience.
<workspace-path> - Path to a roadmap workspace directory containing roadmap.yaml (produced by /plan-roadmap).
Optional flags:
--repo-root <path> - Repository root for schema validation (defaults to auto-detect)--dry-run - Report what would be executed without making changesroadmap.yaml (from /plan-roadmap)skills/roadmap-runtime/scripts/ (models, checkpoint, learning, context)/implement-feature invocationautopilot-roadmap writes checkpoint, roadmap status, learning entries, and may
invoke implementation/validation skills for roadmap items. In local CLI
execution, every mutating run MUST start from a managed worktree unless
--dry-run is set.
Before loading or updating the roadmap workspace, run:
CHANGE_ID="roadmap-<workspace-name>"
eval "$(python3 "<skill-base-dir>/../worktree/scripts/worktree.py" setup "$CHANGE_ID")"
cd "$WORKTREE_PATH"
skills/.venv/bin/python skills/shared/checkout_policy.py require-mutation
--dry-run remains read-only and may run from the shared checkout.
A roadmap workspace path containing:
roadmap.yaml - The roadmap with items, dependencies, policy, and statuscheckpoint.json (optional) - Existing execution state for resumelearnings/ (optional) - Previously written learning entriesfrom orchestrator import execute_roadmap
result = execute_roadmap(workspace=Path(workspace_path), repo_root=Path(repo_root))
If checkpoint.json exists, the orchestrator resumes from the saved position, skipping already-completed items. Otherwise, it creates a fresh checkpoint targeting the first ready item.
The orchestrator queries roadmap.ready_items() to find items whose dependencies are all completed and whose status is approved. Items are processed in priority order (lower number = higher priority).
For each ready item, the SKILL.md prompt layer invokes the existing skill workflow. The orchestrator provides a dispatch_fn callback interface:
result = execute_roadmap(
workspace=workspace,
repo_root=repo_root,
dispatch_fn=my_dispatch, # Called for each item needing implementation
)
The dispatch_fn receives (item_id, phase, context) and returns an outcome string. The SKILL.md layer implements this by invoking /implement-feature, /validate-feature, etc.
On item completion:
skills/roadmap-runtime/scripts/learning.pyreplanner.replan()) to adjust pending itemsOn item failure:
CheckpointManager.fail_item()When a vendor hits rate limits or budget constraints:
policy.py) evaluates the roadmap's policy configurationwait_if_budget_exceeded (wait for limit reset) and switch_if_time_saved (try alternate vendor)max_switch_attempts_per_item guardThe orchestrator continues until:
completed)blocked_all)blocked_all)The execute_roadmap() function returns a summary dict:
{
"completed_count": 3,
"failed_count": 1,
"blocked_count": 2,
"skipped_count": 0,
"status": "completed" | "blocked_all" | "partial",
"policy_decisions": [...]
}
Workspace artifacts updated:
checkpoint.json - Final execution stateroadmap.yaml - Updated item statuseslearnings/<item-id>.md - Per-item learning entrieslearning-log.md - Index of all learning entriesAll data model operations use the shared runtime at skills/roadmap-runtime/scripts/:
models.py - Roadmap, Checkpoint, LearningEntry dataclassescheckpoint.py - CheckpointManager for save/restore/advancelearning.py - Learning entry write/read/compactcontext.py - Bounded context assemblyAutopilot-roadmap must not make direct LLM API calls. All reasoning happens in one of two places:
dispatch_fn callback. orchestrator.execute_roadmap() hands (item_id, phase, context) tuples to the callback; the agent runs /implement-feature / /validate-feature / friends in response. The host agent is the LLM runtime; no external API key is required.replanner.replan() (regex text matching over learning entries), policy.evaluate_policy() (arithmetic/rule-based vendor decisions).Any future work that needs semantic reasoning must be expressed as either (a) a new callback delegated to the host agent, or (b) a new dispatch phase routed through /implement-feature. Reaching for llm_client.py or an SDK like anthropic / openai / google.generativeai inside skills/autopilot-roadmap/scripts/ is out of bounds and enforced by a guard test (skills/tests/autopilot-roadmap/test_host_assisted_invariant.py).
The same principle applies to skills/autopilot/scripts/. The invariant exists because autopilot is typically invoked from a Claude Code session that already has a paid-for model loaded; routing reasoning through a second external API would double-bill and fragment the session's context.
The one intentional exception elsewhere in the codebase is skills/parallel-infrastructure/scripts/review_dispatcher.py (used by parallel-review-plan and parallel-review-implementation), where vendor diversity is the feature — multi-vendor review requires calling different models to get independent findings. That's not host-assistable by construction.
replan_requiredThe roadmap item status enum includes replan_required, but autopilot does not act on it today — replanner.replan() only nudges priorities of existing items (regex over learning entries), and the orchestrator never re-reads the source proposal. An item that genuinely needs re-decomposition currently requires a human to re-run /plan-roadmap.
If we later want autopilot to re-decompose automatically when an item is flagged replan_required, that is the point at which a headless generation entry point in plan-roadmap earns its keep. The shape that respects this invariant:
skills/plan-roadmap/scripts/generate.py that drives the deterministic loop — fill templates/generation-prompt.md, dispatch, run decomposer.validate_roadmap(), and re-dispatch with the error list up to a bounded retry — but takes an injected runner callback rather than calling any model itself (mirror skills/autopilot/scripts/provider_dispatch.py::dispatch_phase(payload, runner=...)).dispatch_fn: the host agent (or a CLI dispatch via review_dispatcher.py) does the actual generation. No LLM SDK enters scripts/.Until that automation exists, generate.py would be solving for a caller that doesn't exist — decomposition stays interactive in /plan-roadmap, where the agent is already the control flow.
After roadmap execution completes:
/cleanup-feature <change-id>