ワンクリックで
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 職業分類に基づく
Orchestrate the full plan-review-implement-validate-PR lifecycle with multi-vendor review convergence
OpenBao/Vault credential seeding and management scripts
Comprehensive project health diagnostic — collects signals from CI tools, existing reports, deferred issues, and code markers into a prioritized finding report
Generate changelog entries and suggest semantic version bumps from git history
HTTP fallback bridge for coordinator when MCP transport is unavailable
Readiness gate for sync-point operations — inspect validation, rework, and active-agent state before merge
| 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)<skill-base-dir>/../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"
python3 "<skill-base-dir>/../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:
<skill-base-dir>/../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 <skill-base-dir>/../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 <skill-base-dir>/scripts/ is out of bounds and enforced by the source-contribution-only test skills/tests/autopilot-roadmap/test_host_assisted_invariant.py.
The same principle applies to <skill-base-dir>/../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 installed payload is <skill-base-dir>/../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:
<skill-base-dir>/../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 <skill-base-dir>/../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 <skill-base-dir>/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>