بنقرة واحدة
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>