| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
From requirement to production-grade code — planned, tested, verified.
Spec-driven plans. Enforced quality gates. Persistent knowledge.
Install • Features • Docs • Blog • Website • Changelog
curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bashmacOS · Linux · Windows (WSL2) — installs in under 2 minutes.
Claude Code and Codex CLI write code fast — but without structure, they skip tests, lose context, and produce inconsistent results. Other frameworks add complexity (dozens of agents, thousands of lines of config) without meaningfully better output.
Pilot Shell is different. Every component solves a real problem with an engineered solution:
At least one AI agent: Pilot Shell supports Claude Code (primary — full feature coverage) and Codex through Codex CLI or the ChatGPT desktop app (all workflows, fewer platform features). Install at least one before running the Pilot installer:
Terminal (Recommended): cmux works great with Pilot Shell — its vertical tab layout lets you run multiple sessions side by side. Any modern terminal works: Ghostty, iTerm2, or the built-in macOS/Linux terminal.
Works with any existing project. Pilot Shell integrates with Claude Code and Codex CLI or ChatGPT desktop, using their built-in concepts (rules, hooks, skills, subagents, MCP) to improve your experience:
curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bashInstalls globally on macOS, Linux, and Windows (WSL2). After installation, run claude or codex directly. On macOS, you can instead restart ChatGPT desktop and open the project there. Pilot Shell loads automatically in either Codex client. Run pilot update to check for updates.
DowngradeIf you encounter an issue or unfixed bug in the latest version, you can always go back to a previous version (see releases):
export VERSION=10.5.1
curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bashRemoves the Pilot binary, plugin files, managed commands/rules, settings and shell aliases:
curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/uninstall.sh | bashOver time, accumulated session logs and Pilot Shell's caches can slow things down. A periodic reset gives you a clean baseline:
# 1. If using Claude Code, log out first
/logout
# 2. Back up your current config (just in case)
# Using CLAUDE_CONFIG_DIR? Substitute it for ~/.claude, and back up
# "$CLAUDE_CONFIG_DIR/.claude.json" instead of ~/.claude.json.
mv ~/.claude.json ~/.claude.json.bak
mv ~/.claude ~/.claude.bak
mv ~/.codex ~/.codex.bak
mv ~/.pilot ~/.pilot.bak
# 3. Reinstall Pilot Shell from the official installer
curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bash
# 4. Re-activate your license, then start your agent
pilot activate <your-license-key>
claude # or: codexOnce Pilot Shell is running smoothly again, you can delete the .bak copies. Forgot your license key? Recover it in the Pilot members area.
Using a Dev ContainerPilot Shell works inside Dev Containers. Copy the .devcontainer folder from this repository into your project, adapt it to your needs (base image, extensions, dependencies), and run the installer inside the container. The installer auto-detects the container environment and skips system-level dependencies like Homebrew.
For tighter isolation when working with untrusted code, combine the dev container with Claude Code's /sandbox — bubblewrap, socat, iptables, and ipset are pre-installed in the Dockerfile so it works out of the box on Linux. See Anthropic's development containers and sandboxing docs for hardening patterns (egress allowlist, managed settings, persistent volumes).
What the installer does8-step installer with progress tracking, rollback on failure, and idempotent re-runs. Steps 3 and 4 are agent-conditional — they skip cleanly when the matching agent is not detected. The installer does not install Claude Code, Codex CLI, or ChatGPT itself; install at least one yourself per the prerequisites above.
macOS and Codex open-file limits: The Codex CLI wrapper raises a low soft limit toward 1024 for that Codex process, never exceeding the hard limit or changing the parent shell. Modern macOS does not give Pilot a reliable way to change the limit inherited by ChatGPT when it is launched normally from the Dock, so the installer does not request administrator access for this. If ChatGPT itself reports Too many open files, restart or update the app; that desktop process must set its own limit.
Run these commands once in each new project after installing Pilot Shell:
# Claude Code # Codex CLI
claude codex
> /setup-rules > $setup-rules/setup-rules reads your codebase, discovers your conventions, and generates project-specific rules and MCP server docs — this is how Pilot learns your project. Run it once to start, then again after major architectural changes.
Once your rules are in place, use /create-skill to capture any repeatable workflow as a reusable skill, and /benchmark to measure whether your rules and skills are actually improving outputs. See Additional Workflows for full details on all three.
Four commands cover the full development cycle — from vague idea to shipped work. Quality gates and TDD enforcement run automatically throughout every workflow; Claude Code additionally runs edit-time quality hooks.
/spec and /build are peers, and size does not decide between them. Pick on what the work is measured against:
| What the work is measured against | Command |
|---|---|
| A defect in behaviour that already worked | /fix |
| An ordered list of tasks, approved before any code | /spec |
| A clear goal, with the approach found while building | /build |
| Still vague who it serves or what done means | /prd, then one of the above |
/prd is the brainstorming surface for ideas that aren't specs yet — vague problem statements and fuzzy shapes. It pitches directions, pressure-tests them with you, and converges on a PRD you can hand to /spec. PRDs are saved to docs/prd/ and visible in the Console's Requirements tab.
# Claude Code # Codex CLI
claude codex
> /prd "Add real-time notifications for team updates" > $prd "Add real-time notifications for team updates"When to use /prd over /spec: /prd is for what and why; /spec is for how. Reach for /prd first when you only have a problem statement, want to riff across multiple directions, or need scope boundaries defined before someone starts building.
Flow: two modes, picked automatically from how fuzzy the idea is:
Research tiers (picked at the start):
| Tier | Behavior |
|---|---|
| Quick | Skip research |
| Standard | Light in-session web search for competitors, prior art, best practices |
| Deep | Hands off to the dedicated deep-research skill — multi-angle search, source verification, and a cited report (Codex uses an in-session multi-angle pass) |
The final PRD covers problem statement, core user flows, scope boundaries, and technical context — then offers to hand off directly to /spec for implementation.
/spec is for new features, refactoring, and architectural work. It provides a complete planning workflow with TDD, verification, and code review (on Claude Code, it replaces the built-in plan mode at Shift+Tab). Collaborative spec review shifts review left — share a single link, teammates annotate inline, feedback flows back into the Console grouped by author.
# Claude Code # Codex CLI
claude codex
> /spec "Add user authentication with OAuth and JWT" > $spec "Add user authentication with OAuth and JWT"Discuss → Plan → Approve → Implement (TDD) → Verify → Done
↑ ↓
└── Loop──┘
/spec auto-detects whether the request is a feature or a bugfix and routes to the right workflow. The three phases below apply to both — the verify step differs slightly (features get E2E scenarios; bugfixes get a Behavior Contract audit, see the /fix section below).
Plan: Explores codebase with semantic search → asks clarifying questions → writes detailed spec with scope, tasks, and definition of done → for UI features, writes E2E test scenarios (step-by-step, browser-executable) that become the verification contract → spec-review sub-agent validates completeness in Claude Code or Codex → waits for your approval. Optional Codex Companion Reviewers provide a Claude Code plugin second opinion when enabled.
Implement: Creates an isolated git worktree → implements each task with strict TDD (RED → GREEN → REFACTOR) → on Claude Code, quality hooks auto-lint, format, and type-check every edit → full test suite after each task.
Verify: Full test suite + actual program execution → changes review (a single changes-review sub-agent in Claude Code, the native changes-review agent in Codex, plus an inline plan-compliance & goal-truth audit) → for UI features, executes each E2E scenario step-by-step via browser automation (pass/fail tracked, results written to plan) → auto-fixes findings → squash merges to main on success.
Model: Model Switching has three modes (Console → Settings → Model Switching). Manual (default): you pick models yourself with /model — /spec pauses once after plan approval so you can switch to your implementation model; plan on Fable 5, implement on Sonnet 5, whatever you like. Automated: /spec runs on Claude Code's native opusplan — Opus 5 plans, Sonnet 5 executes, switched automatically (requires /model opusplan; a pre-flight check warns when your conversation is too large for the Opus plan leg). Off: no model management at all. Pilot never remaps model aliases behind the scenes, so the /model picker always means what it says.
/build builds toward a goal without writing a spec first, and without checking in. Name the end state; /build drafts a short task list and 3-6 acceptance criteria before writing a line, then works the whole list and judges it — with failing criteria becoming the next round's tasks. Tasks are expected to change as the work teaches you something; the criteria are the contract. It is the default path for "make this, and make it good" when a spec is neither required nor wanted.
It runs autonomously from the goal to the hand-back — the same idea as Claude Code's native /goal, with Pilot's quality machinery wrapped around it. The acceptance criteria are the condition, the judge pass is the evaluator, Pilot's stop guard is the hook that will not let the session end early, and a nine-layer verification pass stands between "the criteria passed" and "this is done". All the asking happens before any work starts, where a weak goal gets grilled until its criteria can actually be written — paying attention there is what buys the silence afterwards.
# Claude Code # Codex CLI
claude codex
> /build "landing page as alive as Nike's running campaign" > $build "landing page as alive as Nike's"Goal → Tasks + Criteria → Round (build every task → judge) → Verify → Hand back
↑ ↓
└── gaps become the ─┘
next round's tasks
Three things carry it: a goal named in one sentence; 3-7 tasks and 3-6 acceptance criteria drafted before any building; and a judge that rules those criteria from the finished artifact at the end of each round.
The Buildout is a real file. /build writes docs/builds/YYYY-MM-DD-<slug>.md with Type: Build — its own directory, beside /spec's docs/plans/ and /prd's docs/prd/ — and registers it with the session, so the run survives compaction, Claude Code's status line tracks tasks and rounds (Build: running-brand build ███░░ 3/5 r2), and the Buildout shows up in the Console's own Buildouts section, shareable with teammates and annotatable — and Pilot's stop guard holds the loop open. The session cannot quietly end at "good enough", on Claude Code and Codex alike. On Claude Code, you never type /goal; stopping twice within 60s is the escape hatch. Annotating the Buildout in the Console is how you steer a run in flight — /build folds annotations in at the top of every round, which is the one way a criterion legitimately changes.
Claude Code is sequential by default. One thread; no subagents for building or judging — a subagent starts blind, re-derives context the thread already holds, and bills you for the round trip. The two reviewers are the exception, and both run outside the loop: Build Review before the first round, Changes Review after the last. Parallel execution is proposed only at whole-project scale: 5+ distinct surfaces that each need their own build-judge loop, that do not block each other, where sequential would run for hours. On Claude Code that prompts for /effort ultracode; declining is a first-class answer.
/fix is the bugfix command. Investigate the bug, write the failing test, fix at the root cause, single-pass audit, done. No plan file, no approval mid-flow, no separate verify phase.
# Claude Code # Codex CLI
claude codex
> /fix "annotation persistence drops fields between save and reload" > $fix "annotation persistence drops fields"Investigate → RED → Fix → Audit → Quality Gate → Done
If investigation reveals the bug is multi-component or architectural, /fix stops cleanly and tells you to re-invoke with /spec. /fix is always quick; /spec is the full workflow.
How /fix worksFor local bugs. Single file, obvious-once-traced root cause. No plan file, no approval mid-flow, no separate verify phase. TDD still enforced — bugfixes without a failing test don't ship.
When to use /spec for bugs instead: bugs that span 3+ files, need a written plan and approval, warrant a Behavior Contract (Given / When / Currently / Expected), or have failed two fix attempts. /spec adds a revert-test proof in verify, a cap at 3 iterations, and a code review gate — use it when the complexity makes that structure worthwhile.
Run after installing Pilot Shell to configure your environment, then on demand as your project evolves.
/setup-rules explores your codebase, discovers conventions, generates modular rules and documents MCP servers. Run once initially, then anytime your project changes significantly.
# Claude Code # Codex CLI
claude codex
> /setup-rules > $setup-rules12 phases that read your codebase and produce comprehensive AI context:
For monorepos: Organizes rules in nested subdirectories by product and team, with paths frontmatter to scope rules to specific file types. Generates a README.md documenting the structure.
/create-skill builds a reusable skill from any topic — explores the codebase and creates it interactively with you. If no topic is given, evaluates the current session for extractable knowledge.
# Claude Code # Codex CLI
claude codex
> /create-skill "Automate PR Bot comment review" > $create-skill "Automate PR Bot comment review"6 phases that turn domain knowledge into a reusable skill:
Use case categories:
| Category | Best For |
|---|---|
| Document & Asset Creation | Consistent reports, designs, code with embedded style guides and templates |
| Workflow Automation | Multi-step processes with validation gates and iterative refinement |
| MCP Enhancement | Workflow guidance on top of MCP tool access, multi-MCP coordination |
Skill structure: Each skill is a folder with a SKILL.md file (case-sensitive), optional scripts/, references/, and assets/ directories. The YAML frontmatter description determines when the agent loads the skill — it must include what the skill does, when to use it, and specific trigger phrases. Progressive disclosure keeps context lean: frontmatter loads always (~100 tokens), SKILL.md loads on activation, linked files load on demand.
/benchmark runs your prompts with and without the target, grades outputs against falsifiable assertions, and shows a structured report you can absorb in 30 seconds — labeled verdict, quadrant breakdown, and only the divergent assertions in the drill-down. Finishes with a concrete improvement plan so you know exactly what to change next.
# Claude Code # Codex CLI
claude codex
> /benchmark pilot/skills/create-skill > $benchmark pilot/skills/create-skill
> /benchmark pilot/rules/testing.md > $benchmark pilot/rules/testing.mdSix phases turn a rule or skill into a before/after comparison with an actionable plan:
Intake — pick up an existing benchmarks/<target>/evals.json or author one
Target discovery — classify as skill or rules
Author evals — draft 3 falsifiable assertions; falsifiability gate ensures baseline actually fails
Execute — run both configs in isolated sandboxes; grader subagent scores every assertion
Present findings — three layers, scannable top-to-bottom:
| Layer | Content |
|---|---|
| Verdict | One labeled sentence with a recommended next step. Delta bands: 🟢 Strong (≥ +0.50) / 🟢 Moderate (+0.20) / 🟡 Weak (+0.05) / ⚪ Indistinguishable (±0.05) / 🔴 Regression (< −0.05) |
| Quadrant breakdown | Counts each assertion as Signal (✓/✗) / Baseline (✓/✓) / Unreachable (✗/✗) / Regression (✗/✓). The dominant quadrant drives the plan |
| Per-eval drill-down | Only divergent assertions get a row; matching ones fold into header counts so the report stays under one screen |
Improvement plan — ≤ 5 ranked proposals in a uniform format ([TARGET] or [EVALS] tag, location, current quote, replacement, "Lever" line). You pick: apply target edits, iterate on evals, both, or save the plan and stop. Re-runs land in a fresh runs/<ts>/ so iteration deltas stay legible.
Isolation: each run gets its own sandbox directory; a globally-installed copy of the target in ~/.claude/ (or ~/.codex/ / ~/.agents/) is auto-hidden for the duration and restored afterward (with on-disk recovery manifest covering SIGKILL / power loss / segfault). Conditional-loading frontmatter (path: / paths:) is stripped from the copy installed into the with sandbox so the target loads unconditionally for every prompt — without that, rules scoped to e.g. paths: ["**/*.py"] would stay dormant in both configs and the delta would collapse to 0.00. The source file is never modified.
Key flags: --runs N (default 1), --configs with,without, --workers N, --model, --no-isolate-global, --restore-hidden.
Local web dashboard at localhost:41777 with real-time notifications and 11 views.
Global command center with 8 clickable stat cards and 4 recent cards (Specifications, Requirements, Sessions, Memories). Active specs shown as pills in the top bar; notification bell in the top right.
Browse past sessions with search for both Claude Code and Codex. For Claude Code, copy the session ID and use /resume <session-id> to directly jump back into any session.
Browsable observations — decisions, discoveries, bugfixes — with type filters and search. Each memory shows its session — click to navigate directly to it. Team Sharing syncs them across your team through the project repo.
Product requirement documents (PRDs) generated by /prd, with view and annotate modes. Access all previous documents and share them with your team for direct feedback and annotations.
All spec plans generated by /spec with task progress, phase tracking, and iteration history. Annotate mode lets you mark up plans visually before approving, share with teammates via a single link.
Goal-and-loop runs generated by /build, in their own section: the goal, the acceptance criteria the judge rules each round, the task list as it evolved, and the round log. Same annotate and share surfaces as Specifications.
Browse, edit, compare, and share your rules, commands, skills, and agents. Connect a git remote to push/pull extensions across your team, with optional APM-compatible export format.
Git diff viewer with staged/unstaged files, branch info, and worktree context. Review mode adds inline annotations on diff lines — the agent reads them directly before marking a spec as verified.
Daily token costs, model routing breakdown, and usage trends across sessions for both Claude Code and Codex sessions. Correlates costs to commits and show savings via CLI proxy integration.
Configure spec workflow toggles, reviewer settings, and Console preferences. Toggle labels show which review agents run on Claude Code + Codex, and which Codex Companion Reviewers require the Claude Code Codex plugin.
Documentation, guides, and quick-start resources to explain the concepts in detail.
For full details on every component, see the Documentation.
See the full changelog at GitHub Releases.
Found a bug or missing a feature? Open an issue on GitHub.
See LICENSE.
How real engineers run Claude Code and Codex
| Back | FazBrowse Home | New Git URL |