SLOPSHOPPER

spike-image

S4 throwaway: terminal Image {file} probe

newpanecommand
A shopper browsing a rack in a slop shop
Preview · a replayed session in a sandbox
claude · ~/work/app · spike-image
│ ┃ Image probe ✕ › fix the failing auth test and add an audit log call │ ┃ You should see a 4-quadrant picture: │ ┃ red/blue top, green/yellow bottom, white ⏺ Read(src/auth.ts) │ ┃ diagonal. ⎿ Read 6 lines │ ┃ ▣ [image: 4 colour quadrants + white diagona ⏺ Update(src/auth.ts) │ ┃ file: /plugins/spike-image/assets/probe.png ⎿ Added 2 lines, removed 1 line │ ⏺ Bash(bun test) │ ⎿ 3 pass, 1 fail │ │ ● Done. refresh now rejects expired claims and logs an audit event. │ │ ✻ Worked for 42s · done 4:20 PM │ │ › /spike-image │ ⎿ spike-image: spike-image pane opened. │ │ ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › ? for shortcuts

Draws

Pane · Image probe
You should see a 4-quadrant picture: red/blue top, green/yellow bottom, white diagonal. ▣ [image: 4 colour quadrants + white diagonal] file: /plugins/spike-image/assets/probe.png
README

<table border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="middle"><img src="docs/assets/icon.svg" alt="Autopilot" height="180"></td> <td width="24"></td> <td valign="middle"><img src="docs/assets/hero.svg" alt="Autopilot — Claude Code-first lifecycle orchestration with portable paths for Codex, OpenCode, and agy" height="180"></td> </tr> </table>

<img src="https://img.shields.io/badge/Claude_Code-plugin-5A67D8?style=flat-square&logo=anthropic&logoColor=white" alt="Claude Code Plugin"> <img src="https://img.shields.io/badge/version-3.0.0--alpha.2-E8A838?style=flat-square" alt="v3.0.0-alpha.2"> <img src="https://img.shields.io/badge/skills-30-4A90D9?style=flat-square" alt="30 Skills"> <img src="https://img.shields.io/badge/agents-3-7C9E8C?style=flat-square" alt="3 Methodology Agents"> <img src="https://img.shields.io/badge/hooks-36-6B8E6B?style=flat-square" alt="36 Hooks"> <img src="https://img.shields.io/badge/dependencies-zero-A8B5A0?style=flat-square" alt="Zero Dependencies"> <img src="https://img.shields.io/badge/license-MIT-D4A5A5?style=flat-square" alt="MIT License">

<b>English</b> &nbsp;|&nbsp; <a href="README.zh-TW.md">正體中文</a>

<b>The AI project lead for your terminal.</b><br> Claude Code is the full home base. Autopilot plans, delegates, reviews with a second engine, and remembers what it learned — with portable paths for Codex, OpenCode, and agy where their harnesses support them.

<sub>Distilled from 100+ completed AI-development projects.</sub>

# autopilot's optional pre-push hook:
❯ git push
[autopilot] completeness scan …  ✗ TODO stub in auth.py:42
[autopilot] tests …              ✗ 1 skipped (payment flow)
[autopilot] review …             ⚠ unhandled error path
push blocked — fix it, or override with a reason

What Is Autopilot?

Claude Code is still the most complete host. Autopilot makes AI coding agents finish the job — the planning, checking, deciding, and remembering you'd otherwise do by hand:

  • Hand it the goal, get back a result — /l3 /l4 /l5 /l6 and ceo-agent can take a task end-to-end (sized, planned, built, reviewed, closed) and only stop to ask at the decisions that actually matter.
  • A second engine argues with your code — reviews can run on a different model family (GPT, Gemini), so more bugs get caught before your users see them instead of being rubber-stamped by the same model that wrote them.
  • Catches the "done" that isn't — a no-stub/no-TODO scan, your tests, and a real code review, run in the quality gate before you merge (and in the optional pre-push hook above).
  • Remembers, so your repo doesn't rot — captures the lessons, tracks the project, tells you what to do next, and adapts to your repo from a single markdown file in .claude/.

It ships first as a Claude Code plugin — 30 skills, 3 methodology agents, 36 hooks (23 default-on, 13 opt-in), zero dependencies — and keeps the same methodology portable where other harnesses expose compatible skill, agent, or plugin surfaces. It works fully on its own, and also plays nicely with the superpowers plugin if you have it.

This README was written by Claude and adversarially reviewed by GPT-5.5 and Gemini through Autopilot's own second-engine review flow.

New here? This page is the 5-minute tour. Everything deeper lives in Learn More.

A Day With Autopilot

dev-flow is the front door. It sizes the task and routes it — small things go straight through the gate, large things become a tracked project:

<img alt="A day with Autopilot: dev-flow sizes the task and routes it — small tasks go straight through the quality gate to commit; large tasks become a tracked project with a quality gate each phase, then finish-flow closes cleanly. Without Autopilot, the AI greps the codebase immediately — no plan, no phases, no quality gates." src="docs/assets/flow.svg" width="100%">

Without Autopilot, Claude starts grep-ing the codebase immediately — no plan, no phases, no quality gates. With it, the discipline is automatic.

Quick Start

/plugin marketplace add cookys/autopilot
/plugin install autopilot@autopilot

That's it. Now just talk to Claude — Autopilot's skills trigger on what you say:

You: "I'm starting on WebSocket compression"   → sizes it, sets up a plan + branch + quality gates
You: "quick fix for the null check in auth"    → fast path, still gated before commit
You: "what should I work on next?"             → scans your projects and ranks them
You: "搞定這個重構,你決定"                       → full autonomous CEO mode

No commands to memorize — say it in your own words and the right skill steps in.

Choose Your Path

Autopilot is Claude Code-first, but not Claude Code-only. Pick the entry point that matches the harness you actually use:

If you are...Start withWhat you get
Claude Code userThe two-command install aboveThe complete path: skills, methodology agents, hooks, /l3-/l6, and plugin-managed defaults
Codex user.agents/skills/ in this repo, or the local package under platforms/codex/pluginAutopilot skills, bundled support payload, and the one production PostCompact recovery hook; no Codex-thread-bound direct-mutation enforcement is shipped (D4=NOT_READY/NO-SHIP)
OpenCode user.agents/skills/ plus .opencode/opencode.jsonShared skills and methodology agent bodies, with an OpenCode-specific in-process plugin wrapper
Antigravity (agy) userscripts/install-antigravity.shGuarded import as a Claude Code-source plugin; no loose skills-dir scan
Contributor./scripts/dev-setup.sh --checkA read-only readiness dashboard for Claude/Codex/OpenCode/agy; mutating non-Claude setup requires --harness <name> --install

From Principle To Default

The course-sized idea is simple: teach the agent the collaboration discipline once, then stop retyping it.

PrincipleAutopilot default
Clarify the work before codingdev-flow expands goals into size, branch, plan, and gates
Ask for proof, not reassurancequality-pipeline runs tests, scans for incomplete work, and reviews the diff
Preserve context outside the modelproject-lifecycle, handoff, and finish-flow keep state readable by the next session
Don't let one brain self-approveHeterogeneous review and qc panels read artifacts, not the implementer's story
Delegate by risk/l3-/l6 scale from inline autonomy to heterogeneous implementation and verification authoring

What It Does

30 skills, grouped by what you're trying to do. Each one triggers from natural language — the Try saying lines are real triggers.

✍️ Build code

dev-flow (start here — sizes & routes the task) · quality-pipeline (test → scan → review) · finish-flow (clean closing sequence, nothing skipped).

Try saying: "let's implement X" · "quick fix for Y" · "is this ready to commit?"

🧭 Make decisions

survey (dual-agent industry research) · think-tank (6-role debate) · brainstorm (pre-code design exploration) · think-tank-dialectic (irreversible, high-stakes calls).

Try saying: "what do others use for X?" · "should we rewrite or patch?" · "要辯論一下"

🤖 Full autopilot

ceo-agent (you set the goal, it executes) · /l3 /l4 /l5 /l6 (terse front-doors that pre-fill the CEO startup so one line ships the goal). They escalate where the work runs:

Runs whereReach for it when
/l3inline, on this threadfull autonomy, but you want to watch it happen
/l4one background, worktree-isolated foremana long run you'd rather offload — your context stays clean, the authoritative quality verdict is held at depth 0
/l5/l4, but the implementer is a different engine (agy / Gemini)cost-arbitrage, or a decorrelated second engine doing the mechanical coding
/l6/l5, plus verification authoring is delegated to a different enginewhen you want implementation and verification labor offloaded, while depth 0 keeps merge authority

Ordinary strict /l5 Engine execution is fail-closed: before workflow dispatch, the CLI must match the exact implementer/reviewer/verification-author/QC roster to Autopilot's frozen provider policy and consume fresh host-owned qualification plus live-readiness evidence. Lower-level and legacy flows remain explicitly non-strict.

/l3 fix the flaky reconnect test, you decide     # inline
/l4 ship the WebSocket reconnect system          # offload to a background foreman
/l5 migrate the config loader to the new schema  # foreman + heterogeneous implementer
/l6 ship the parser rewrite                      # hetero implementer + hetero verification authoring

Try saying: "CEO mode, handle it" · "全權處理" · "/l4 ship the reconnect system"

→ Per-level behaviour, presets, override flags (--expand / -x / --solo), and full examples: docs/skills.md.

Trust Model

Autopilot delegates labor, not authority. Implementer self-report is never evidence; reviewers read the task, diff, logs, and artifacts directly. Deterministic gates stay authoritative, higher-risk work needs decorrelated review coverage, and a no_verdict review never clears a gate.

Capability-Adaptive Guidance

Autopilot remains one product for strong, weak, remote, and local models. It first admits an exact role + task scope + deployment identity, then compiles exactly one guidance payload: guided gives a bounded slice and explicit structure; autonomous removes redundant choreography for a qualified role. Neither profile changes red lines, effects, egress, assurance, or acceptance.

governance.guidance_profile is a project default (guided when omitted), and a task can override it at intake without editing the project. External benchmark data can only create provisional telemetry. Owner/reviewer qualification uses separate host-scored evals; stored JSON cannot recreate session authority. The repository's v2.33.0 cutover receipt remains hold_guided: the autonomous control source is 113 bytes smaller, but exact host-token measurements, an effectful compatibility witness, a current live owner verifier, and five complete independent dogfood receipts are not yet available. The local OpenAI-compatible adapter passed fake-contract transport tests, but no live local runtime or agentic local runner is claimed.

🔌 Add another engine (optional)

Claude alone is enough. But point autopilot at a second engine family and its review/implement pipeline gets stronger — a cross-family qc panel catches what one vendor and its same-family reviewer jointly miss, and you get a heterogeneous implementer for cost-arbitrage. Recommended order: a subscription you already pay for ≻ a metered API key — OAuth-login runners (codex / agy / grok / explicit-only qoderclicn) need no token at all; GLM / MiniMax go in one canonical mode-600 file (~/.autopilot/endpoints.env) and are wired declaratively in .claude/review-loop-config.md.

Try saying: "set up a GLM reviewer" · "use MiniMax as the /l5 implementer"

→ Credential placement, the subscription-≻-API-key ladder, and the copy-paste setup: docs/installation.md.

📈 Improve over time

learn (capture lessons) · retro (git-history retrospective) · next (what to do next) · distill (turn your repeated workflows into personal skills) · plus debug · profiling · test-strategy · audit · doc-sync.

Try saying: "record this for next time" · "回顧這週" · "what's the highest priority?"

→ Full catalog of all 30 skills, the three cognitive modes, and how they compose: docs/skills.md.

🔗 Contact a persistent peer

agent-call contacts an already-running named session. Claude↔Claude uses native ListAgents / SendMessage when the target is exact; other targets go through fleet messaging v2 (the fleet CLI, or the fleet MCP tools). An offline target fails explicitly and never turns into a worker spawn.

Try saying: "ask the running codex session for its status" · "send this to the persistent reviewer"

Install

Claude Code (primary) — the two commands above. All 30 skills are available immediately as autopilot:dev-flow, autopilot:survey, etc.

⚠️ Claude Code ≥ 2.1.233 + Claude 5-era models: the task tools (TaskCreate family) are gated off by default on Opus ≥ 4.8 / Sonnet ≥ 5 / Fable ≥ 5 — which silently disables every dev-flow forcing function. Fix: keep {"env": {"CLAUDE_CODE_ENABLE_TODO_TOOLS": "1"}} in your project's .claude/settings.json (tracked, so worktrees inherit it). autopilot:onboard scaffolds this pin automatically; dev-flow warns once if the tools are still missing.

Harness Support

HarnessHow to startSupported todayKnown limits
Claude Code/plugin marketplace add cookys/autopilot then /plugin install autopilot@autopilotFull plugin path: 30 skills, 3 methodology agents, 36 hooksPrimary host; Claude-specific hooks and slash behavior do not automatically transfer to other harnesses
Codex.agents/skills/, or codex plugin add autopilot@autopilot-local after adding platforms/codex as a marketplaceSkills, generated support payload, and one production PostCompact recovery hook (`manual\auto`)This is a Codex-native recovery boundary, not Claude hook parity; no Claude hook bundle, apps, or MCP servers are loaded. Subagent model routing via spawn_agent needs a user opt-in — see platforms/codex/README.md
OpenCodeOpen this repo with .agents/skills/; use .opencode/opencode.json for agentsShared skills, methodology agent bodies, and an OpenCode plugin wrapperOptional TypeScript deps are only needed when editing the wrapper; hook parity is platform-specific
Antigravity (agy)./scripts/install-antigravity.shGuarded agy plugin validate / install / list flow with export-then-installRuntime hook firing is still unverified; install does not imply hook behavior parity

Full per-platform instructions, Windows notes, and the contributor dev-mode workflow are in docs/installation.md. Verified capability boundaries live in references/multi-agent-portability.md.

Learn More

The deep material, moved out of this page so it stays an onboarding tour:

TopicDoc
All 30 skills + three modes + how they composedocs/skills.md
Superpowers coexistence — three scenarios, migrationdocs/coexistence.md
Per-project configuration — the .claude/ injection modeldocs/configuration.md
Installation & development — every platform, dev modedocs/installation.md
Architecture & design — philosophy, methodology agents, creditsdocs/architecture.md
Hooks — 25 runtime-enforcement hooks (tiers in the doc)hooks/README.md
ChangelogCHANGELOG.md

License

MIT — see LICENSE for details.

Source 1 files
hooks/register.tsx 28 lines
1import type { Register } from 'claude-code'
2
3const PANE = 'spike-image'
4
5export const register: Register = on => {
6  on('session.start', async ($, e, next) => {
7    await $.command.register({ name: 'spike-image', description: 'S4: show a PNG via Image {file}' })
8    return next(e)
9  })
10
11  on('command.run', { command: 'spike-image' }, async $ => {
12    await $.ui.open({ id: PANE, title: 'Image probe' })
13    return { text: 'spike-image pane opened.' }
14  })
15
16  on('ui.render', { component: 'Pane', requestId: PANE }, async ($, e) => {
17    const { Box, Text, Image } = $.ui.resolve(e) as any
18    const file = $.plugin.root + '/assets/probe.png'
19    return (
20      <Box flexDirection="column">
21        <Text>You should see a 4-quadrant picture: red/blue top, green/yellow bottom, white diagonal.</Text>
22        <Image source={{ file, format: 'png' }} columns={36} rows={12} alt="[image: 4 colour quadrants + white diagonal]" />
23        <Text dimColor>file: {file}</Text>
24      </Box>
25    )
26  })
27}
28