diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 00e74315..8257bcb0 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,13 +1,13 @@
{
- "name": "claude-pilot",
+ "name": "pilot-shell",
"build": {
"dockerfile": "Dockerfile"
},
"runArgs": [
"--name",
- "claude-pilot"
+ "pilot-shell"
],
- "workspaceFolder": "/workspaces/claude-pilot",
+ "workspaceFolder": "/workspaces/pilot-shell",
"customizations": {
"vscode": {
"extensions": [
@@ -87,7 +87,7 @@
/* https://github.com/jungaretti/features/tree/main/src/ripgrep */
"ghcr.io/jungaretti/features/ripgrep:1": {}
},
- "postCreateCommand": "curl -fsSL https://raw.githubusercontent.com/maxritter/claude-pilot/main/install.sh | bash",
+ "postCreateCommand": "curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bash",
"remoteUser": "root",
"containerUser": "root"
}
diff --git a/.gitattributes b/.gitattributes
index b6d249bb..a74ce44c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,3 +1,4 @@
launcher/** filter=git-crypt diff=git-crypt
+launcher/**/__init__.py !filter !diff
docs/site/api/** filter=git-crypt diff=git-crypt
.gitattributes !filter !diff
diff --git a/.githooks/pre-commit b/.githooks/pre-commit
index 755610e3..3f4599f8 100755
--- a/.githooks/pre-commit
+++ b/.githooks/pre-commit
@@ -8,6 +8,12 @@
set -eo pipefail
+# --- Skip in worktrees (spec workflow commits are squash-merged later) ---
+if [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] && \
+ [ "$(git rev-parse --git-dir)" != ".git" ]; then
+ exit 0
+fi
+
# --- 1. Python unit tests ---
LAUNCHER_CHANGED=$(git diff --cached --name-only -- 'launcher/' 'pilot/hooks/' | head -1)
INSTALLER_CHANGED=$(git diff --cached --name-only -- 'installer/' | head -1)
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index f63e369e..5bec0310 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -33,6 +33,6 @@ Paste any error messages or logs here
## Checklist
-- [ ] I am using the latest version of Claude Pilot
+- [ ] I am using the latest version of Pilot Shell
- [ ] I have searched existing issues to avoid duplicates
- [ ] I can reproduce this consistently with the steps above
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index cfb47d15..dcd4890f 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Feature Requests
- url: https://claude-pilot.com/#pricing
+ url: https://pilot-shell.com/#pricing
about: Feature requests are available on the Team plan. Visit our pricing page for details.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 89ac2c4b..ce5c4049 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
# Changelog
-All notable changes to Claude Pilot will be documented in this file.
+All notable changes to Pilot Shell will be documented in this file.
## [6.11.0] - 2026-02-24
@@ -434,7 +434,7 @@ All notable changes to Claude Pilot will be documented in this file.
- Rebuild console assets with latest changes
- Address code review findings
- Stale session cleanup, context hook, install docs, and CI pipeline
-- Continue reworking towards Claude Pilot Console
+- Continue reworking towards Pilot Shell Console
### Features
@@ -543,13 +543,13 @@ All notable changes to Claude Pilot will be documented in this file.
### BREAKING CHANGES
-- Major workflow changes for Claude Pilot v6.0
-- Project renamed from Claude CodePro to Claude Pilot
+- Major workflow changes for Pilot Shell v6.0
+- Project renamed from Claude CodePro to Pilot Shell
### Features
- Add multi-pass plan verification and installer auto-version
-- Renamed Project to Claude Pilot
+- Renamed Project to Pilot Shell
### Bug Fixes
diff --git a/LICENSE b/LICENSE
index 25e2079a..428072f0 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-CLAUDE PILOT SOFTWARE LICENSE AGREEMENT
+PILOT SHELL SOFTWARE LICENSE AGREEMENT
Copyright (C) 2026 Max Ritter (@maxritter). All rights reserved.
@@ -13,9 +13,9 @@ OF THIS LICENSE AGREEMENT. IF YOU DO NOT AGREE, DO NOT USE THE SOFTWARE.
1. DEFINITIONS
"Licensor" means Max Ritter (@maxritter), the sole copyright holder and
-developer of Claude Pilot.
+developer of Pilot Shell.
-"Software" means Claude Pilot in its entirety, including but not limited to all
+"Software" means Pilot Shell in its entirety, including but not limited to all
source code, object code, compiled binaries, scripts, configuration files,
rules, skills, commands, hooks, plugins, documentation, assets, user interface
components, and any updates, patches, or modifications provided by the Licensor.
@@ -31,7 +31,7 @@ to the Cython-compiled launcher binary.
this Agreement.
"Subscription" means an active, paid license purchased from the Licensor through
-the official channels at https://claude-pilot.com, or a valid trial
+the official channels at https://pilot-shell.com, or a valid trial
period that has not expired.
"Output" means any code, artifacts, configurations, files, extensions, or other
@@ -166,7 +166,7 @@ beyond those expressly stated in Section 2 of this Agreement.
(a) USE OF THE SOFTWARE BEYOND THE TRIAL PERIOD REQUIRES AN ACTIVE
SUBSCRIPTION. Subscription terms, pricing, and payment terms are as
- published at https://claude-pilot.com and may be updated by the
+ published at https://pilot-shell.com and may be updated by the
Licensor from time to time.
(b) FAILURE TO MAINTAIN an active Subscription terminates Your rights under
@@ -266,12 +266,12 @@ CLAIM.
(h) NOTICES. All notices required or permitted under this Agreement shall be
directed to the Licensor through the official channels published at
- https://claude-pilot.com.
+ https://pilot-shell.com.
================================================================================
-For licensing inquiries: https://claude-pilot.com
-For bug reports (Trial & Solo): https://github.com/maxritter/claude-pilot/issues
+For licensing inquiries: https://pilot-shell.com
+For bug reports (Trial & Solo): https://github.com/maxritter/pilot-shell/issues
For priority support & feature requests (Team): mail@maxritter.net
================================================================================
diff --git a/README.md b/README.md
index ac53b272..e0e9406b 100644
--- a/README.md
+++ b/README.md
@@ -1,31 +1,27 @@
-
+
-### Claude Code is powerful. Pilot makes it reliable.
+### Claude Code is powerful. Pilot Shell makes it reliable.
Start a task, grab a coffee, come back to production-grade code.
**Tests enforced. Context preserved. Quality automated.**
-[](https://github.com/maxritter/claude-pilot/stargazers)
-[](https://star-history.com/#maxritter/claude-pilot&Date)
-[](https://github.com/maxritter/claude-pilot/releases)
-[](https://github.com/maxritter/claude-pilot/pulls)
+[](https://github.com/maxritter/pilot-shell/stargazers)
+[](https://star-history.com/#maxritter/pilot-shell&Date)
+[](https://github.com/maxritter/pilot-shell/releases)
+[](https://github.com/maxritter/pilot-shell/pulls)
-โญ [Star this repo](https://github.com/maxritter/claude-pilot) ยท ๐ [Website](https://claude-pilot.com) ยท ๐ [Follow for updates](https://www.linkedin.com/in/rittermax/) ยท ๐ [Changelog](https://pilot.openchangelog.com/) ยท ๐ [License](LICENSE)
+โญ [Star this repo](https://github.com/maxritter/pilot-shell) ยท ๐ [Website](https://pilot-shell.com) ยท ๐ [Follow for updates](https://www.linkedin.com/in/rittermax/) ยท ๐ [Changelog](https://pilot.openchangelog.com/) ยท ๐ [License](LICENSE)
```bash
-curl -fsSL https://raw.githubusercontent.com/maxritter/claude-pilot/main/install.sh | bash
+curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bash
```
**Works on macOS, Linux, and Windows (WSL2).**
-
-
-
-
---
@@ -36,7 +32,7 @@ I'm a senior IT freelancer from Germany. My clients hire me to ship production-q
Claude Code writes code fast. But without structure, it skips tests, loses context, and produces inconsistent results โ especially on complex, established codebases where there are real conventions to follow and real regressions to catch. I tried other frameworks โ they burned tokens on bloated prompts without adding real value. Some added process without enforcement. Others were prompt templates that Claude ignored when context got tight. None made Claude reliably produce production-grade code.
-So I built Pilot. Instead of adding process on top, it bakes quality into every interaction. Linting, formatting, and type checking run as enforced hooks on every edit. TDD is mandatory, not suggested. Context is monitored and preserved across sessions. Every piece of work goes through verification before it's marked done.
+So I built Pilot Shell. Instead of adding process on top, it bakes quality into every interaction. Linting, formatting, and type checking run as enforced hooks on every edit. TDD is mandatory, not suggested. Context is monitored and preserved across sessions. Every piece of work goes through verification before it's marked done.
---
@@ -47,10 +43,10 @@ A full-stack project โ created from scratch with a single prompt, then extende
-
+
-**[Watch the full demo on YouTube](https://youtu.be/S7faAK931NU)** ยท **[Browse the demo repository](https://github.com/maxritter/claude-pilot-demo)**
+**[Watch the full demo on YouTube](https://youtu.be/S7faAK931NU)** ยท **[Browse the demo repository](https://github.com/maxritter/pilot-shell-demo)**
@@ -60,12 +56,12 @@ Each `/spec` prompt one-shotted a complete feature โ plan, TDD implementation,
## Before & After
-| Without Pilot | With Pilot |
+| Without Pilot Shell | With Pilot Shell |
| --------------------------- | --------------------------------------------------------------- |
| Writes code, skips tests | TDD enforced โ RED, GREEN, REFACTOR on every feature |
| No quality checks | Hooks auto-lint, format, type-check on every file edit |
| Context degrades mid-task | Hooks preserve and restore state across compaction cycles |
-| Every session starts fresh | Persistent memory across sessions via Pilot Console |
+| Every session starts fresh | Persistent memory across sessions via Pilot Shell Console |
| Hope it works | Verifier sub-agents perform code review before marking complete |
| No codebase knowledge | Production-tested rules loaded into every session |
| Generic suggestions | Coding standards activated conditionally by file type |
@@ -79,7 +75,7 @@ Each `/spec` prompt one-shotted a complete feature โ plan, TDD implementation,
There are other AI coding frameworks out there. I tried them. They add complexity โ dozens of agents, elaborate scaffolding, thousands of lines of instruction files โ but the output doesn't improve proportionally. More machinery burns more tokens, increases latency, and creates more failure modes. Complexity is not a feature.
-**Pilot optimizes for output quality, not system complexity.** The rules are minimal and focused. There's no big learning curve, no project scaffolding to set up, no state files to manage. You install it in any existing project โ no matter how complex โ run `pilot`, then `/sync` to learn your codebase, and the quality guardrails are just there โ hooks, TDD, type checking, formatting โ enforced automatically on every edit, in every session.
+**Pilot Shell optimizes for output quality, not system complexity.** The rules are minimal and focused. There's no big learning curve, no project scaffolding to set up, no state files to manage. You install it in any existing project โ no matter how complex โ run `pilot`, then `/sync` to learn your codebase, and the quality guardrails are just there โ hooks, TDD, type checking, formatting โ enforced automatically on every edit, in every session.
This isn't a vibe coding tool. It's built for developers who ship to production and need code that actually works. Every rule in the system comes from daily professional use: real bugs caught, real regressions prevented, real sessions where the AI cut corners and the hooks stopped it. The rules are continuously refined based on what measurably improves output.
@@ -97,10 +93,10 @@ The system stays fast because it stays simple. Quick mode is direct execution wi
### Installation
-**Works with any existing project.** Pilot doesn't scaffold or restructure your code โ it installs alongside your project and adapts to your conventions. `cd` into your project folder, then run:
+**Works with any existing project.** Pilot Shell doesn't scaffold or restructure your code โ it installs alongside your project and adapts to your conventions. `cd` into your project folder, then run:
```bash
-curl -fsSL https://raw.githubusercontent.com/maxritter/claude-pilot/main/install.sh | bash
+curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bash
```
**Choose your environment:**
@@ -108,7 +104,7 @@ curl -fsSL https://raw.githubusercontent.com/maxritter/claude-pilot/main/install
- **Local Installation** โ Install directly on your system using Homebrew. Works on macOS, Linux, and Windows (WSL2).
- **Dev Container** โ Pre-configured, isolated environment with all tools ready. No system conflicts and works on any OS.
-After installation, run `pilot` or `ccp` in your project folder to start Claude Pilot.
+After installation, run `pilot` or `ccp` in your project folder to start Pilot Shell.
What the installer does
@@ -128,19 +124,19 @@ After installation, run `pilot` or `ccp` in your project folder to start Claude
### Installing a Specific Version
-If the current version has issues, you can install a specific stable version (see [releases](https://github.com/maxritter/claude-pilot/releases)):
+If the current version has issues, you can install a specific stable version (see [releases](https://github.com/maxritter/pilot-shell/releases)):
```bash
export VERSION=6.11.0
-curl -fsSL https://raw.githubusercontent.com/maxritter/claude-pilot/main/install.sh | bash
+curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/install.sh | bash
```
### Uninstalling
-To completely remove Claude Pilot:
+To completely remove Pilot Shell:
```bash
-curl -fsSL https://raw.githubusercontent.com/maxritter/claude-pilot/main/uninstall.sh | bash
+curl -fsSL https://raw.githubusercontent.com/maxritter/pilot-shell/main/uninstall.sh | bash
```
This removes the Pilot binary, plugin files, managed commands/rules, settings and shell aliases.
@@ -151,7 +147,7 @@ This removes the Pilot binary, plugin files, managed commands/rules, settings an
### /sync โ Sync Rules & Standards
-Run `/sync` to learn your existing codebase and sync rules with it. Explores your project structure, builds a semantic search index, discovers your conventions and undocumented patterns, updates project documentation, and creates new custom skills. This is how Pilot adapts to your project โ not the other way around. Run it once initially, then anytime again:
+Run `/sync` to learn your existing codebase and sync rules with it. Explores your project structure, builds a semantic search index, discovers your conventions and undocumented patterns, updates project documentation, and creates new custom skills. This is how Pilot Shell adapts to your project โ not the other way around. Run it once initially, then anytime again:
```bash
pilot
@@ -237,7 +233,7 @@ Discuss โ Plan โ Approve โ Implement โ Verify โ Done
### Smart Model Routing
-Pilot uses the right model for each phase โ Opus where reasoning quality matters most, Sonnet where speed and cost matter:
+Pilot Shell uses the right model for each phase โ Opus where reasoning quality matters most, Sonnet where speed and cost matter:
| Phase | Default | Why |
| --------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -246,9 +242,9 @@ Pilot uses the right model for each phase โ Opus where reasoning quality matte
| **Implementation** | Sonnet | With a solid plan, writing code is straightforward. Sonnet is fast, cost-effective, and produces high-quality code when guided by a clear spec. |
| **Code Verification** | Opus | Independent code review against the plan requires the same reasoning depth as planning โ catching subtle bugs, logic errors, and spec deviations. |
-**The insight:** Implementation is the easy part when the plan is good and verification is thorough. Pilot invests reasoning power where it has the highest impact โ planning and verification โ and uses fast execution where a clear spec makes quality predictable.
+**The insight:** Implementation is the easy part when the plan is good and verification is thorough. Pilot Shell invests reasoning power where it has the highest impact โ planning and verification โ and uses fast execution where a clear spec makes quality predictable.
-**Configurable:** All model assignments are configurable per-component via the Pilot Console (`localhost:41777/#/settings`). Choose between Sonnet 4.6 and Opus 4.6 for the main session, each command, and sub-agents. A global "Extended Context (1M)" toggle enables the 1M token context window across all models simultaneously. **Note:** 1M context models require a Max (20x) or Enterprise subscription โ not available to all users.
+**Configurable:** All model assignments are configurable per-component via the Pilot Shell Console settings. Choose between Sonnet 4.6 and Opus 4.6 for the main session, each command, and sub-agents. A global "Extended Context (1M)" toggle enables the 1M token context window across all models simultaneously. **Note:** 1M context models require a Max (20x) or Enterprise subscription โ not available to all users.
### Quick Mode
@@ -284,18 +280,18 @@ pilot
### Pilot CLI
-The `pilot` binary (`~/.pilot/bin/pilot`) manages sessions, worktrees, licensing, and context. Run `pilot` or `ccp` with no arguments to start Claude with Pilot enhancements.
+The `pilot` binary (`~/.pilot/bin/pilot`) manages sessions, worktrees, licensing, and context. Run `pilot` or `ccp` with no arguments to start Claude with Pilot Shell enhancements.
Session & Context
| Command | Purpose |
| ------------------------------------- | -------------------------------------------------------------------- |
-| `pilot` | Start Claude with Pilot enhancements, auto-update, and license check |
+| `pilot` | Start Claude with Pilot Shell enhancements, auto-update, and license check |
| `pilot run [args...]` | Same as above, with optional flags (e.g., `--skip-update-check`) |
| `pilot check-context --json` | Get current context usage percentage |
| `pilot register-plan ` | Associate a plan file with the current session |
-| `pilot sessions [--json]` | Show count of active Pilot sessions |
+| `pilot sessions [--json]` | Show count of active Pilot Shell sessions |
@@ -327,7 +323,7 @@ The `pilot` binary (`~/.pilot/bin/pilot`) manages sessions, worktrees, licensing
-All commands support `--json` for structured output. Multiple Pilot sessions can run in parallel on the same project โ each session tracks its own worktree and context state independently.
+All commands support `--json` for structured output. Multiple Pilot Shell sessions can run in parallel on the same project โ each session tracks its own worktree and context state independently.
### Rules, Commands & Skills
@@ -339,7 +335,7 @@ Create your own in your project's `.claude/` folder:
| **Commands** | On demand via `/command` | Specific workflows or multi-step tasks |
| **Skills** | On demand, created via `/learn` | Reusable knowledge from past sessions |
-Claude Pilot automatically installs best-practice rules, commands, and coding standards. Standards rules use `paths` frontmatter to activate only when you're working with matching file types (e.g., Python standards load only when editing `.py` files). Custom skills are created by `/learn` when it detects non-obvious discoveries, workarounds, or reusable workflows โ and can be shared across your team via `/vault`.
+Pilot Shell automatically installs best-practice rules, commands, and coding standards. Standards rules use `paths` frontmatter to activate only when you're working with matching file types (e.g., Python standards load only when editing `.py` files). Custom skills are created by `/learn` when it detects non-obvious discoveries, workarounds, or reusable workflows โ and can be shared across your team via `/vault`.
### Custom MCP Servers
@@ -357,7 +353,7 @@ Add your own MCP servers in `.mcp.json`. Run `/sync` after adding servers to gen
| Hook | Type | What it does |
| ------------------------- | -------- | ---------------------------------------------------------------------- |
-| Memory loader | Blocking | Loads persistent context from Pilot Console memory |
+| Memory loader | Blocking | Loads persistent context from Pilot Shell Console memory |
| `post_compact_restore.py` | Blocking | After auto-compaction: re-injects active plan, task state, and context |
| Session tracker | Async | Initializes user message tracking for the session |
@@ -382,7 +378,7 @@ After **every single file edit**, these hooks fire:
| Hook | Type | What it does |
| ---------------- | -------- | -------------------------------------------------------------------------------------------------------- |
-| `pre_compact.py` | Blocking | Captures Pilot state (active plan, task list, key context) to persistent memory before compaction fires. |
+| `pre_compact.py` | Blocking | Captures Pilot Shell state (active plan, task list, key context) to persistent memory before compaction fires. |
#### Stop (when Claude tries to finish)
@@ -395,18 +391,18 @@ After **every single file edit**, these hooks fire:
| Hook | Type | What it does |
| ---------------- | -------- | -------------------------------------------------------------------------------------------------------- |
-| `session_end.py` | Blocking | Stops the worker daemon when no other Pilot sessions are active. Sends real-time dashboard notification. |
+| `session_end.py` | Blocking | Stops the worker daemon when no other Pilot Shell sessions are active. Sends real-time dashboard notification. |
### Context Preservation
-Pilot preserves context automatically across compaction boundaries:
+Pilot Shell preserves context automatically across compaction boundaries:
-- `pre_compact.py` captures Pilot state (active plan, tasks, key context) to persistent memory
-- `post_compact_restore.py` re-injects Pilot context after compaction โ agent continues seamlessly
-- Multiple Pilot sessions can run in parallel on the same project without interference
+- `pre_compact.py` captures Pilot Shell state (active plan, tasks, key context) to persistent memory
+- `post_compact_restore.py` re-injects Pilot Shell context after compaction โ agent continues seamlessly
+- Multiple Pilot Shell sessions can run in parallel on the same project without interference
- Status line shows live context usage, memory status, active plan, and license info
-**Effective context display:** Claude Code reserves ~16.5% of the context window as a compaction buffer, triggering auto-compaction at ~83.5% raw usage. Pilot rescales this to an **effective 0โ100% range** so the status bar fills naturally to 100% right before compaction fires. A `โ` buffer indicator at the end of the bar shows the reserved zone. The context monitor warns at ~80% effective (informational) and ~90%+ effective (caution) โ no confusing raw percentages.
+**Effective context display:** Claude Code reserves ~16.5% of the context window as a compaction buffer, triggering auto-compaction at ~83.5% raw usage. Pilot Shell rescales this to an **effective 0โ100% range** so the status bar fills naturally to 100% right before compaction fires. A `โ` buffer indicator at the end of the bar shows the reserved zone. The context monitor warns at ~80% effective (informational) and ~90%+ effective (caution) โ no confusing raw percentages.
### Built-in Rules & Standards
@@ -483,9 +479,9 @@ Real-time diagnostics and go-to-definition, auto-installed and configured:
All configured via `.lsp.json` with stdio transport.
-### Claude Pilot Console
+### Pilot Shell Console
-A local web dashboard at `localhost:41777` for monitoring and managing your Pilot sessions.
+A local web dashboard at `localhost:41777` for monitoring and managing your Pilot Shell sessions.
| View | What it shows |
| ------------------ | ---------------------------------------------------------------------------------------- |
@@ -507,7 +503,7 @@ A local web dashboard at `localhost:41777` for monitoring and managing your Pilo
> "I stopped reviewing every line Claude writes. The hooks catch formatting and type errors automatically, TDD catches logic errors, and the spec verifier catches everything else. I review the plan, approve it, and the output is production-grade."
-> "Other frameworks I tried added so much overhead that half my tokens went to the system itself. Pilot is lean โ quick mode has zero scaffolding, and even /spec only adds structure where it matters. More of my context goes to actual work."
+> "Other frameworks I tried added so much overhead that half my tokens went to the system itself. Pilot Shell is lean โ quick mode has zero scaffolding, and even /spec only adds structure where it matters. More of my context goes to actual work."
> "The persistent memory changed everything. I can pick up a project after a week and Claude already knows my architecture decisions, the bugs we fixed, and why we chose certain patterns. No more re-explaining the same context every session."
@@ -515,84 +511,84 @@ A local web dashboard at `localhost:41777` for monitoring and managing your Pilo
## License
-Claude Pilot is source-available under a commercial license. See the [LICENSE](LICENSE) file for full terms.
+Pilot Shell is source-available under a commercial license. See the [LICENSE](LICENSE) file for full terms.
| Tier | Seats | Includes |
| :------- | :---- | :--------------------------------------------------------------------------- |
| **Solo** | 1 | All features, continuous updates, bug reports via [GitHub Issues][gh-issues] |
| **Team** | Multi | Solo + multiple seats, priority email support, feature requests |
-[gh-issues]: https://github.com/maxritter/claude-pilot/issues
+[gh-issues]: https://github.com/maxritter/pilot-shell/issues
-Details and licensing at [claude-pilot.com](https://claude-pilot.com).
+Details and licensing at [pilot-shell.com](https://pilot-shell.com).
---
## FAQ
-Does Pilot send my code or data to external services?
+Does Pilot Shell send my code or data to external services?
-**No code, files, prompts, project data, or personal information ever leaves your machine through Pilot.** All development tools โ vector search (Vexor), persistent memory (Pilot Console), session state, and quality hooks โ run entirely locally.
+**No code, files, prompts, project data, or personal information ever leaves your machine through Pilot Shell.** All development tools โ vector search (Vexor), persistent memory (Pilot Shell Console), session state, and quality hooks โ run entirely locally.
-Pilot makes external calls **only for licensing**. Here is the complete list:
+Pilot Shell makes external calls **only for licensing**. Here is the complete list:
| When | Where | What is sent |
| --------------------------------- | ------------------ | ---------------------------------- |
| License validation (once per 24h) | `api.polar.sh` | License key, organization ID |
| License activation (once) | `api.polar.sh` | License key, machine fingerprint |
-| Trial start (once) | `claude-pilot.com` | Hashed hardware fingerprint |
+| Trial start (once) | `pilot-shell.com` | Hashed hardware fingerprint |
-That's it โ three calls total, each sent at most once (validation re-checks daily). No OS, no architecture, no Python version, no locale, no analytics, no heartbeats. The validation result is cached locally, and Pilot works fully offline for up to 7 days between checks. Beyond these licensing calls, the only external communication is between Claude Code and Anthropic's API โ using your own subscription or API key.
+That's it โ three calls total, each sent at most once (validation re-checks daily). No OS, no architecture, no Python version, no locale, no analytics, no heartbeats. The validation result is cached locally, and Pilot Shell works fully offline for up to 7 days between checks. Beyond these licensing calls, the only external communication is between Claude Code and Anthropic's API โ using your own subscription or API key.
-Is Pilot enterprise-compliant for data privacy?
+Is Pilot Shell enterprise-compliant for data privacy?
-Yes. Your source code, project files, and development context never leave your machine through Pilot. The only external calls are license validation (daily, license key only) and one-time activation/trial start (machine fingerprint only). No OS info, no version strings, no analytics, no telemetry. Enterprises using Claude Code with their own API key or Anthropic Enterprise subscription can add Pilot without changing their data compliance posture.
+Yes. Your source code, project files, and development context never leave your machine through Pilot Shell. The only external calls are license validation (daily, license key only) and one-time activation/trial start (machine fingerprint only). No OS info, no version strings, no analytics, no telemetry. Enterprises using Claude Code with their own API key or Anthropic Enterprise subscription can add Pilot Shell without changing their data compliance posture.
-What are the licenses of Pilot's dependencies?
+What are the licenses of Pilot Shell's dependencies?
-All external tools and dependencies that Pilot installs and uses are open source with permissive licenses (MIT, Apache 2.0, BSD). This includes ruff, basedpyright, Prettier, ESLint, gofmt, uv, Vexor, playwright-cli, and all MCP servers. No copyleft or restrictive-licensed dependencies are introduced into your environment.
+All external tools and dependencies that Pilot Shell installs and uses are open source with permissive licenses (MIT, Apache 2.0, BSD). This includes ruff, basedpyright, Prettier, ESLint, gofmt, uv, Vexor, playwright-cli, and all MCP servers. No copyleft or restrictive-licensed dependencies are introduced into your environment.
Do I need a separate Anthropic subscription?
-Yes. Pilot enhances Claude Code โ it doesn't replace it. You need an active Claude subscription โ [Max 5x or 20x](https://claude.com/pricing) for solo developers, or [Team Premium](https://claude.com/pricing) for teams and companies. Using the Anthropic API directly is also possible but may lead to much higher costs. Pilot adds quality automation on top of whatever Claude Code access you already have.
+Yes. Pilot Shell enhances Claude Code โ it doesn't replace it. You need an active Claude subscription โ [Max 5x or 20x](https://claude.com/pricing) for solo developers, or [Team Premium](https://claude.com/pricing) for teams and companies. Using the Anthropic API directly is also possible but may lead to much higher costs. Pilot Shell adds quality automation on top of whatever Claude Code access you already have.
-Does Pilot work with existing projects?
+Does Pilot Shell work with existing projects?
-Yes โ that's the primary use case. Pilot doesn't scaffold or restructure your code. You install it, run `/sync`, and it explores your codebase to discover your tech stack, conventions, and patterns. From there, every session has full context about your project. The more complex and established your codebase, the more value Pilot adds โ quality hooks catch regressions, persistent memory preserves decisions across sessions, and `/spec` plans features against your real architecture.
+Yes โ that's the primary use case. Pilot Shell doesn't scaffold or restructure your code. You install it, run `/sync`, and it explores your codebase to discover your tech stack, conventions, and patterns. From there, every session has full context about your project. The more complex and established your codebase, the more value Pilot Shell adds โ quality hooks catch regressions, persistent memory preserves decisions across sessions, and `/spec` plans features against your real architecture.
-Does Pilot work with any programming language?
+Does Pilot Shell work with any programming language?
-Pilot's quality hooks (auto-formatting, linting, type checking) currently support Python, TypeScript/JavaScript, and Go out of the box. TDD enforcement, spec-driven development, persistent memory, context preservation hooks, and all rules and standards work with any language that Claude Code supports. You can add custom hooks for additional languages.
+Pilot Shell's quality hooks (auto-formatting, linting, type checking) currently support Python, TypeScript/JavaScript, and Go out of the box. TDD enforcement, spec-driven development, persistent memory, context preservation hooks, and all rules and standards work with any language that Claude Code supports. You can add custom hooks for additional languages.
-Can I use Pilot on multiple projects?
+Can I use Pilot Shell on multiple projects?
-Yes. Pilot installs once and works across all your projects. Each project can have its own `.claude/` rules, custom skills, and MCP servers. Run `/sync` in each project to generate project-specific documentation and standards.
+Yes. Pilot Shell installs once and works across all your projects. Each project can have its own `.claude/` rules, custom skills, and MCP servers. Run `/sync` in each project to generate project-specific documentation and standards.
Can I add my own rules, commands, and skills?
-Yes. Create your own in your project's `.claude/` folder โ rules, commands, and skills are all plain markdown files. Your project-level assets are loaded alongside Pilot's built-in defaults and take precedence when they overlap. `/sync` auto-discovers your codebase patterns and generates project-specific rules for you. `/learn` extracts reusable knowledge from sessions into custom skills. Hooks can be extended for additional languages. Use `/vault` to share your custom assets across your team.
+Yes. Create your own in your project's `.claude/` folder โ rules, commands, and skills are all plain markdown files. Your project-level assets are loaded alongside Pilot Shell's built-in defaults and take precedence when they overlap. `/sync` auto-discovers your codebase patterns and generates project-specific rules for you. `/learn` extracts reusable knowledge from sessions into custom skills. Hooks can be extended for additional languages. Use `/vault` to share your custom assets across your team.
@@ -606,14 +602,14 @@ See the full changelog at [pilot.openchangelog.com](https://pilot.openchangelog.
## Contributing
-**Pull Requests** โ New features, improvements, and bug fixes are welcome. You can improve Pilot with Pilot โ a self-improving loop where your contributions make the tool that makes contributions better.
+**Pull Requests** โ New features, improvements, and bug fixes are welcome. You can improve Pilot Shell with Pilot Shell โ a self-improving loop where your contributions make the tool that makes contributions better.
-**Bug Reports** โ Found a bug? [Open an issue](https://github.com/maxritter/claude-pilot/issues) on GitHub.
+**Bug Reports** โ Found a bug? [Open an issue](https://github.com/maxritter/pilot-shell/issues) on GitHub.
---
-**Claude Code is powerful. Pilot makes it reliable.**
+**Claude Code is powerful. Pilot Shell makes it reliable.**
diff --git a/cliff.toml b/cliff.toml
index d6f5b367..d28d6f04 100644
--- a/cliff.toml
+++ b/cliff.toml
@@ -1,4 +1,4 @@
-# git-cliff configuration for Claude Pilot
+# git-cliff configuration for Pilot Shell
# https://git-cliff.org/docs/configuration
[changelog]
@@ -6,7 +6,7 @@
header = """
# Changelog
-All notable changes to Claude Pilot will be documented in this file.
+All notable changes to Pilot Shell will be documented in this file.
"""
# Body template - Keep a Changelog format
diff --git a/console/package.json b/console/package.json
index 7c6aba0d..3fbcb183 100644
--- a/console/package.json
+++ b/console/package.json
@@ -1,7 +1,7 @@
{
"name": "pilot-console",
"version": "6.11.0",
- "description": "Memory system for Claude Pilot - persistent context and observations",
+ "description": "Memory system for Pilot Shell - persistent context and observations",
"type": "module",
"private": true,
"engines": {
diff --git a/console/src/services/worker-service.ts b/console/src/services/worker-service.ts
index 359ab619..6fb7c083 100644
--- a/console/src/services/worker-service.ts
+++ b/console/src/services/worker-service.ts
@@ -765,7 +765,7 @@ async function main() {
logger.error("SYSTEM", "License verification failed");
exitWithStatus(
"error",
- "UNLICENSED: Using Claude Pilot without a valid license is not permitted. Subscribe at https://claude-pilot.com then run: pilot activate ",
+ "UNLICENSED: Using Pilot Shell without a valid license is not permitted. Subscribe at https://pilot-shell.com then run: pilot activate ",
);
}
diff --git a/console/src/services/worker/http/routes/utils/planFileReader.ts b/console/src/services/worker/http/routes/utils/planFileReader.ts
index dd1a8a3c..966a7fa9 100644
--- a/console/src/services/worker/http/routes/utils/planFileReader.ts
+++ b/console/src/services/worker/http/routes/utils/planFileReader.ts
@@ -165,6 +165,35 @@ function getAllPlansDirs(projectRoot: string): string[] {
return dirs;
}
+/**
+ * Deduplicate plans by name. When the same plan exists in both the main
+ * docs/plans/ dir and a .worktrees/ copy, keep the worktree version
+ * (that's where active work happens). For same-source duplicates, keep
+ * the most recently modified.
+ */
+export function deduplicatePlans(plans: PlanInfo[]): PlanInfo[] {
+ const byName = new Map();
+ for (const plan of plans) {
+ const existing = byName.get(plan.name);
+ if (!existing) {
+ byName.set(plan.name, plan);
+ continue;
+ }
+ const planIsWorktree = plan.filePath.includes("/.worktrees/");
+ const existingIsWorktree = existing.filePath.includes("/.worktrees/");
+ if (planIsWorktree && !existingIsWorktree) {
+ byName.set(plan.name, plan);
+ } else if (!planIsWorktree && existingIsWorktree) {
+ } else if (
+ new Date(plan.modifiedAt).getTime() >
+ new Date(existing.modifiedAt).getTime()
+ ) {
+ byName.set(plan.name, plan);
+ }
+ }
+ return Array.from(byName.values());
+}
+
export function getActivePlans(projectRoot: string): PlanInfo[] {
const today = new Date();
today.setHours(0, 0, 0, 0);
@@ -209,7 +238,7 @@ export function getActivePlans(projectRoot: string): PlanInfo[] {
}
}
- return activePlans;
+ return deduplicatePlans(activePlans);
}
export function getAllPlans(projectRoot: string): PlanInfo[] {
@@ -219,7 +248,7 @@ export function getAllPlans(projectRoot: string): PlanInfo[] {
allPlans.push(...scanPlansDir(plansDir));
}
- return allPlans
+ return deduplicatePlans(allPlans)
.sort(
(a, b) =>
new Date(b.modifiedAt).getTime() - new Date(a.modifiedAt).getTime(),
@@ -234,7 +263,7 @@ export function getActiveSpecs(projectRoot: string): PlanInfo[] {
allPlans.push(...scanPlansDir(plansDir));
}
- return allPlans.sort(
+ return deduplicatePlans(allPlans).sort(
(a, b) =>
new Date(b.modifiedAt).getTime() - new Date(a.modifiedAt).getTime(),
);
@@ -251,12 +280,14 @@ export function getPlanStats(projectRoot: string): {
completionTimeline: Array<{ date: string; count: number }>;
recentlyVerified: Array<{ name: string; verifiedAt: string }>;
} {
- const allPlans: PlanInfo[] = [];
+ const rawPlans: PlanInfo[] = [];
for (const plansDir of getAllPlansDirs(projectRoot)) {
- allPlans.push(...scanPlansDir(plansDir));
+ rawPlans.push(...scanPlansDir(plansDir));
}
+ const allPlans = deduplicatePlans(rawPlans);
+
if (allPlans.length === 0) {
return {
totalSpecs: 0,
diff --git a/console/src/ui/viewer/App.tsx b/console/src/ui/viewer/App.tsx
index 156c82ab..7eb4045a 100644
--- a/console/src/ui/viewer/App.tsx
+++ b/console/src/ui/viewer/App.tsx
@@ -105,7 +105,7 @@ export function App() {
@@ -117,7 +117,7 @@ export function App() {
return (