Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ repository, use a path starting with `./`... paths resolve relative to the marke
- `.claude/.claude-plugin/marketplace.json` — for the local-clone install method (`/plugin marketplace add
<path-to-clone>/.claude`), where the plugin root IS the marketplace root (`"source": "./"`).
- `.claude-plugin/marketplace.json` (this file) — for the GitHub-source install method
(`extraKnownMarketplaces` with `"source": "github", "repo": "robercano/ai-project-orchestrator"`), where the
(`extraKnownMarketplaces` with `"source": "github", "repo": "robercano/reCode"`), where the
marketplace root is the repo root and the plugin lives one level down (`"source": "./.claude"`).

Deliberately omits `version`/`author` (present on the other manifest) — a `version` here would *pin* the
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "ai-project-orchestrator",
"name": "recode",
"owner": {
"name": "Roberto Cano"
},
"plugins": [
{
"name": "orchestrator",
"source": "./.claude",
"description": "Multi-agent orchestration harness: fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers."
"description": "reCode: multi-agent orchestration harness fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers."
}
]
}
10 changes: 5 additions & 5 deletions .claude/.claude-plugin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,21 @@ its own `.claude/settings.json`:
```json
{
"extraKnownMarketplaces": {
"ai-project-orchestrator": {
"recode": {
"source": {
"source": "github",
"repo": "robercano/ai-project-orchestrator"
"repo": "robercano/reCode"
}
}
},
"enabledPlugins": {
"orchestrator@ai-project-orchestrator": true
"orchestrator@recode": true
}
}
```

`extraKnownMarketplaces` registers `robercano/ai-project-orchestrator` (a GitHub repo) as a
marketplace named `ai-project-orchestrator`; `enabledPlugins` then enables the `orchestrator`
`extraKnownMarketplaces` registers `robercano/reCode` (a GitHub repo) as a
marketplace named `recode`; `enabledPlugins` then enables the `orchestrator`
plugin from it, addressed as `<plugin-name>@<marketplace-name>`.

**Resolved via a repo-root alias:** Claude Code's `"source": "github"` marketplace source resolves
Expand Down
6 changes: 3 additions & 3 deletions .claude/.claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"name": "ai-project-orchestrator",
"name": "recode",
"owner": {
"name": "Roberto Cano"
},
"description": "Multi-agent orchestration harness: fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers.",
"description": "reCode: multi-agent orchestration harness fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers.",
"version": "0.1.4",
"plugins": [
{
"name": "orchestrator",
"source": "./",
"description": "Multi-agent orchestration harness: fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers.",
"description": "reCode: multi-agent orchestration harness fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers.",
"version": "0.1.4",
"author": {
"name": "Roberto Cano"
Expand Down
2 changes: 1 addition & 1 deletion .claude/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "orchestrator",
"version": "0.1.4",
"description": "Multi-agent orchestration harness: fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers.",
"description": "reCode: multi-agent orchestration harness fan out sub-tasks to isolated worktree implementers, gate them, and route results through reviewers.",
"author": { "name": "Roberto Cano" },
"commands": [
"./commands/harden.md",
Expand Down
2 changes: 1 addition & 1 deletion .claude/scripts/cockpit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ const html = `<!doctype html>
<html lang="en" data-theme="dark">
<head>
<meta charset="utf-8">
<title>Cockpit — ai-project-orchestrator</title>
<title>Cockpit — reCode</title>
<script>(function(){try{var t=localStorage.getItem("cockpit-theme");if(t==="light"||t==="dark"){document.documentElement.setAttribute("data-theme",t);}}catch(e){}})();</script>
<style>
:root {
Expand Down
2 changes: 1 addition & 1 deletion .claude/self/gates.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"_README": "SELF-ADAPTER (issue #11). Lets this template dogfood itself WITHOUT polluting the shipped placeholder .claude/gates.json (which stays pristine for downstream adopters). The loop uses THIS file only when pointed at it via GATES_FILE=.claude/self/gates.json (see .claude/self/README.md). Gate commands are node/bash-only so they run with no extra tooling installed.",

"project": { "name": "ai-project-orchestrator", "language": "shell+markdown+js", "packageManager": "none" },
"project": { "name": "recode", "language": "shell+markdown+js", "packageManager": "none" },

"modules": [
{ "name": "docs", "path": "docs", "description": "User-facing docs: GETTING_STARTED, USAGE, HARDENING, PROMPTS, ARCHITECTURE, TOKEN_BUDGET." },
Expand Down
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Multi-Agent Orchestrator Template
# reCode

A **GitHub template** for running an orchestrated "army" of Claude Code agents on a codebase: a lead
**orchestrator** scopes a task and delegates to worktree-isolated **implementers**, whose work is gated by
adversarial **reviewers** — looping until tests, coverage, and review all pass.
A **GitHub template** (formerly the ai-project-orchestrator template) for running an orchestrated "army" of
Claude Code agents on a codebase: a lead **orchestrator** scopes a task and delegates to worktree-isolated
**implementers**, whose work is gated by adversarial **reviewers** — looping until tests, coverage, and
review all pass.

The design is **two-tier**: a *generic harness* (portable across any stack) plus a thin *project adapter*
(`.claude/gates.json` + `CLAUDE.md`) that you fill in per project. Onboarding a new repo is a ~20-line
Expand Down
12 changes: 6 additions & 6 deletions docs/GETTING_STARTED.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ This template ships as a Claude Code plugin named `orchestrator` (plugin root `.
```json
{
"extraKnownMarketplaces": {
"ai-project-orchestrator": {
"source": { "source": "github", "repo": "robercano/ai-project-orchestrator" }
"recode": {
"source": { "source": "github", "repo": "robercano/reCode" }
}
},
"enabledPlugins": { "orchestrator@ai-project-orchestrator": true }
"enabledPlugins": { "orchestrator@recode": true }
}
```
This works because a thin `.claude-plugin/marketplace.json` at the repo **root** (where Claude Code's
Expand All @@ -38,12 +38,12 @@ files in this repo.
**Local clone (alternative, e.g. if you want a pinned/offline copy).** Claude Code's `/plugin marketplace add`
also accepts a plain filesystem path, using `.claude/` directly as the marketplace root:
```bash
git clone https://github.com/robercano/ai-project-orchestrator.git ../ai-project-orchestrator
git clone https://github.com/robercano/reCode.git ../reCode
```
Then, in Claude Code, inside **your own project**:
```
/plugin marketplace add ../ai-project-orchestrator/.claude
/plugin install orchestrator@ai-project-orchestrator
/plugin marketplace add ../reCode/.claude
/plugin install orchestrator@recode
```
(`/plugin` alone opens an interactive picker if you'd rather browse marketplaces/plugins than type the
commands above.)
Expand Down
22 changes: 20 additions & 2 deletions docs/MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,24 @@ own git history.
If you haven't installed the plugin yet, do that first — see [`GETTING_STARTED.md` → Step 1 — Install the
`orchestrator` plugin](GETTING_STARTED.md#step-1--install-the-orchestrator-plugin).

## Rebrand: `ai-project-orchestrator` → reCode (#86)
The project was renamed **reCode**. What this means for an existing install:
- **Repo renamed.** The GitHub repo moved from `robercano/ai-project-orchestrator` to `robercano/reCode`. Old
URLs redirect automatically, so a `"source": "github"` marketplace install (see `GETTING_STARTED.md`) keeps
working as-is — update the `repo:` value to `robercano/reCode` at your convenience.
- **Marketplace name/id changed.** `ai-project-orchestrator` → `recode`. If you added the marketplace, update
your `extraKnownMarketplaces` alias key to `recode` and your `enabledPlugins` value to
`orchestrator@recode`. The alias is consumer-chosen, so this is a rename for consistency, not a hard break —
your existing install keeps functioning under the old alias until you change it.
- **Command namespace unchanged.** The plugin's `name` field stays `orchestrator`, so every `/orchestrator:*`
command (`/orchestrator:setup`, `/orchestrator:sync`, `/orchestrator:pr-loop`, etc.) is unaffected — nothing
to re-learn.
- **Sync markers unchanged.** The `@orchestrator-managed vN` version markers `/orchestrator:sync` uses are
unaffected, so running it after this rebrand re-stamps managed files with zero churn.
- **Net action required: none.** The GitHub redirect and the unchanged plugin/command namespace mean an
existing downstream install keeps working untouched; renaming the marketplace alias to `recode` is optional
tidiness, not a requirement.

## What to delete
Remove the copied harness that the plugin now carries — it's generic, not project-specific, and staying on a
frozen copy means you never get fixes/improvements:
Expand Down Expand Up @@ -35,7 +53,7 @@ Before deleting each file, diff it against the plugin's shipped copy (`${CLAUDE_
once the plugin is enabled, or the sibling clone's `.claude/<same-relpath>` if you're using the local-clone
install method) rather than assuming they match. For anything that diverges:
- **It's a generic improvement** (would help any consumer, not just this repo) — upstream it: open a PR
against `ai-project-orchestrator` with the fix, then delete your local copy once it's merged and the plugin
against `reCode` (formerly `ai-project-orchestrator`) with the fix, then delete your local copy once it's merged and the plugin
picks it up. No consumer-side sync step is needed for scripts/agents/commands (see "Enabling in a consuming
project" above) — once the fix lands upstream, everyone with the plugin enabled gets it immediately.
- **It's genuinely project-specific** (tied to something only your repo has — a different bot account's token
Expand All @@ -57,7 +75,7 @@ install method:

## How to enable the plugin
Follow [`GETTING_STARTED.md` → Step 1](GETTING_STARTED.md#step-1--install-the-orchestrator-plugin): add the
`ai-project-orchestrator` marketplace (local clone today; the GitHub-source snippet is the target flow, with
`recode` marketplace (local clone today; the GitHub-source snippet is the target flow, with
a documented resolution gap — see that section) and enable the `orchestrator` plugin. Do this **before**
deleting the copied files above, so you're never without a working `/agents` list or hooks mid-migration.

Expand Down
4 changes: 2 additions & 2 deletions docs/USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ checklist](GETTING_STARTED.md#new-project-configuration-checklist)**.
When a new version of the `orchestrator` plugin ships (new agents, commands, gate fixes, etc.), refresh the
marketplace listing and let Claude Code update the installed plugin:
```
/plugin marketplace update ai-project-orchestrator
/plugin marketplace update recode
```
Then re-stamp the files `/orchestrator:setup` scaffolded into **your** repo (`gates.json`, `CLAUDE.md`, the
fan-out workflow, the CI gate workflow) so they pick up any changes shipped in the update:
Expand All @@ -219,7 +219,7 @@ and left alone on every re-run).
> re-fetches plugin content when the plugin's version string actually changes (`.claude/.claude-plugin/plugin.json`
> and, for the local-clone method, `.claude/.claude-plugin/marketplace.json`'s matching entry). Merging a fix to
> `main` without bumping that version means every existing installer's cached copy — at
> `~/.claude/plugins/cache/ai-project-orchestrator/orchestrator/<version>/` — silently never updates, even
> `~/.claude/plugins/cache/recode/orchestrator/<version>/` — silently never updates, even
> after `/plugin marketplace update`. Caught 2026-07-06: a `hooks/hooks.json` schema fix merged to `main` but
> didn't reach an already-installed consumer until the version string was bumped too.

Expand Down
Loading