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
34 changes: 33 additions & 1 deletion .agents/skills/council/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,39 @@ python3 ~/.codex/skills/council/council.py config set planner_b codex:gpt-5.5

Override flags: `--intensity`, `--rounds`, `--planner-a`, `--planner-b`,
`--consolidator`, `--worker`, `--verifier`, `--codex-effort`, `--max-workers`.
Precedence: preset < council.toml < CLI flag. Workers must be `claude:<model>`.
Precedence: preset < council.toml < CLI flag. Every role, workers included, can
be `codex:<model>` or `claude:<model>`, so a run can mix engines.

## Fleet — ad-hoc, engine-agnostic worker pool

`fleet` runs an existing task DAG against a declared pool of agents on either
CLI, with no plan phase. Point it at any `tasks.json` and a pool; tasks are
round-robined across the pool, then verified and reconciled like `fanout`.

```bash
python3 ~/.codex/skills/council/council.py fleet \
--tasks tasks.json --agents 'codex:gpt-5.5*3,claude:haiku*2'
python3 ~/.codex/skills/council/council.py fleet \
--tasks tasks.json --agents 'codex:gpt-5.5*4' --estimate
```

The `--agents` spec is comma-separated `cli:model[*count]` entries (count
defaults to 1) — a mixed Codex+Claude fleet over an already-decomposed batch.

## split — extract a subtree into a new repo

`split` carves a path out of the current repo into a new GitHub repo with that
path's history preserved (`git subtree split`), on a throwaway
`council/split/<name>` branch; the working branch is untouched.

```bash
python3 ~/.codex/skills/council/council.py split \
--path services/foo --dest myorg/foo --dry-run
python3 ~/.codex/skills/council/council.py split --path services/foo --dest myorg/foo
```

`--no-push` stops at the local branch; `--visibility public` for a public repo.
The GitHub App must be installed on the destination owner for the push.

Notes:

Expand Down
43 changes: 41 additions & 2 deletions .claude/skills/council/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,47 @@ python3 ~/.claude/skills/council/council.py config unset worker

Per-role override flags: `--intensity`, `--rounds`, `--planner-a`, `--planner-b`,
`--consolidator`, `--worker`, `--verifier`, `--codex-effort`, `--max-workers`.
Precedence: intensity preset < `council.toml` < CLI flag. Workers must be
`claude:<model>` (codex workers aren't supported yet).
Precedence: intensity preset < `council.toml` < CLI flag. Every role — workers
included — can be `claude:<model>` or `codex:<model>`, so a run can mix engines.

## Fleet — ad-hoc, engine-agnostic worker pool

`fleet` runs an existing task DAG against a declared pool of agents on either
CLI, skipping the plan phase. Point it at any `tasks.json`, give it a pool, and
tasks are round-robined across the pool, then verified and reconciled exactly
like `fanout` (isolated worktrees, integration branch, your branch untouched).

```bash
python3 ~/.claude/skills/council/council.py fleet \
--tasks tasks.json --agents 'codex:gpt-5.5*3,claude:haiku*2'
python3 ~/.claude/skills/council/council.py fleet \
--tasks tasks.json --agents 'claude:haiku*4' --estimate
```

The `--agents` spec is comma-separated `cli:model[*count]` entries (count
defaults to 1). Use it to drive a mixed Claude+Codex fleet over a big,
already-decomposed batch — e.g. cross-agent cleanups managed from either CLI.

## split — extract a subtree into a new repo

`split` carves a path out of the current repo into a brand-new GitHub repo with
that path's history preserved (`git subtree split`). It works on a throwaway
`council/split/<name>` branch and never touches your working branch.

```bash
# preview the exact commands, touch nothing:
python3 ~/.claude/skills/council/council.py split \
--path services/foo --dest myorg/foo --dry-run
# extract, create the (private) remote, push:
python3 ~/.claude/skills/council/council.py split --path services/foo --dest myorg/foo
# extract to a local branch only; push it yourself later:
python3 ~/.claude/skills/council/council.py split --path services/foo --dest myorg/foo --no-push
```

`--visibility public` makes the new repo public. After extracting, it prints how
to optionally replace the in-repo copy with a submodule in a separate change.
The GitHub App must be installed on the destination owner for the push to
authenticate.

## Notes

Expand Down
27 changes: 27 additions & 0 deletions platform/agents/council/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,33 @@ conflicts are left out and reported. **Nothing is merged into your branch** —
`fanout` prints the integration branch name for review. See `report.md` in the
run dir.

```bash
# ad-hoc, engine-agnostic worker pool over any tasks.json (no plan phase)
python3 platform/agents/council/council.py fleet \
--tasks tasks.json --agents 'codex:gpt-5.5*3,claude:haiku*2'
```

`fleet` round-robins the tasks across the declared pool — workers may be Claude
or Codex — and runs them through the same worktree/verify/reconcile path as
`fanout`. Use it to drive a mixed fleet over an already-decomposed batch.

## split — extract a subtree into a new repo

```bash
# preview only:
python3 platform/agents/council/council.py split \
--path services/foo --dest myorg/foo --dry-run
# extract (history preserved), create the remote, push:
python3 platform/agents/council/council.py split --path services/foo --dest myorg/foo
```

`split` runs `git subtree split` on a throwaway `council/split/<name>` branch so
the path's history is preserved, creates the destination repo with `gh` (skipped
if it already exists), and pushes. The working branch is untouched. `--no-push`
stops at the local branch; `--visibility public` makes the new repo public. The
GitHub App must be installed on the destination owner for the push to
authenticate.

## Models & intensity

Driven by an intensity preset plus optional per-role overrides in `council.toml`.
Expand Down
Loading
Loading