@crafts69guy/orchestra 0.0.0-stage → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +18 -0
- package/.claude-plugin/plugin.json +19 -0
- package/.codex-plugin/plugin.json +29 -0
- package/LICENSE +21 -0
- package/README.md +82 -2
- package/agents/.markdownlint-cli2.jsonc +1 -0
- package/agents/implementer.md +22 -0
- package/agents/reviewer.md +18 -0
- package/agents/scoper.md +18 -0
- package/agents/shipper.md +17 -0
- package/bin/orch +4 -0
- package/codex/agents/implementer.toml +21 -0
- package/codex/agents/reviewer.toml +18 -0
- package/codex/agents/scoper.toml +16 -0
- package/codex/agents/shipper.toml +14 -0
- package/hooks/guard.mjs +109 -0
- package/hooks/hooks.json +39 -0
- package/hooks/session-start.mjs +77 -0
- package/hooks/subagent-stop.mjs +40 -0
- package/package.json +53 -4
- package/rules/.markdownlint-cli2.jsonc +1 -0
- package/rules/orchestrator.md +28 -0
- package/scripts/doctor.mjs +82 -0
- package/scripts/gen-codex-agents.mjs +131 -0
- package/scripts/lib/frontmatter.mjs +22 -0
- package/scripts/orch-codex.mjs +74 -0
- package/scripts/orch-wt.mjs +168 -0
- package/scripts/orch.mjs +113 -0
- package/skills/dispatch/SKILL.md +55 -0
- package/skills/dispatch/references/claude.md +9 -0
- package/skills/dispatch/references/codex.md +12 -0
- package/skills/plan/SKILL.md +56 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Dispatch on Claude Code
|
|
2
|
+
|
|
3
|
+
- Agent names carry the plugin prefix: `orch:implementer`, `orch:scoper`,
|
|
4
|
+
`orch:reviewer`, `orch:shipper`. The bare name is not found.
|
|
5
|
+
- Parallel spawn: several Agent tool calls in one assistant message.
|
|
6
|
+
- Do not set `isolation: "worktree"`; the worktree comes from `orch wt new`.
|
|
7
|
+
- Resume an agent with SendMessage to its id or name; it keeps its context.
|
|
8
|
+
- Plugin hooks see `agent_type` as `orch:<role>` and enforce: implementers
|
|
9
|
+
cannot commit or push; only the shipper pushes or opens PRs.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Dispatch on Codex
|
|
2
|
+
|
|
3
|
+
- Agent names are bare: `implementer`, `scoper`, `reviewer`, `shipper`. They
|
|
4
|
+
are loaded from the plugin's `codex/agents/*.toml` by the `orch codex`
|
|
5
|
+
launcher (`-c agents.<name>.config_file=…`). An unknown name silently falls
|
|
6
|
+
back to the default agent, so confirm the role in its first reply.
|
|
7
|
+
- Spawn each task with `spawn_agent` (`agent_type`, no forked turns), all
|
|
8
|
+
before waiting, then `wait_agent` on every id.
|
|
9
|
+
- The sandbox must allow writing `<repo>/.git` (`--add-dir <repo>/.git`) or
|
|
10
|
+
`orch wt new` and commits fail. `orch codex` adds it.
|
|
11
|
+
- Hooks only run when the user trusted them, so restate "do not commit or
|
|
12
|
+
push" in every brief.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan
|
|
3
|
+
description: "orch workflow: write .scratch/<feature>/plan.md, a task list with file ownership and dependencies that the dispatch skill can run in parallel waves. Use when work has 2+ separable parts."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Plan
|
|
7
|
+
|
|
8
|
+
Write `.scratch/<feature>/plan.md` in the repo root. Keep `.scratch/` out of git
|
|
9
|
+
(`.git/info/exclude`) unless the repo already tracks it.
|
|
10
|
+
|
|
11
|
+
## Before writing
|
|
12
|
+
|
|
13
|
+
1. Read the scoper brief if there is one; do not rescope.
|
|
14
|
+
2. Decide every cross-cutting choice now (interfaces, names, libraries, error
|
|
15
|
+
handling). Workers run in parallel and cannot ask each other.
|
|
16
|
+
|
|
17
|
+
## Format
|
|
18
|
+
|
|
19
|
+
````markdown
|
|
20
|
+
# <feature>
|
|
21
|
+
|
|
22
|
+
Base branch: <F> # the branch the tasks merge into
|
|
23
|
+
|
|
24
|
+
## Decisions
|
|
25
|
+
|
|
26
|
+
- <decision that every task must follow>
|
|
27
|
+
|
|
28
|
+
## Tasks
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
- id: T1
|
|
32
|
+
goal: <one sentence, observable outcome>
|
|
33
|
+
files: [<paths this task owns>]
|
|
34
|
+
depends_on: []
|
|
35
|
+
validate: <command that proves this task works>
|
|
36
|
+
decisions: [<task-specific choices>]
|
|
37
|
+
```
|
|
38
|
+
````
|
|
39
|
+
|
|
40
|
+
## Rules
|
|
41
|
+
|
|
42
|
+
- `files` is ownership. Two tasks with no dependency path between them must not
|
|
43
|
+
share a file. If they must, add a `depends_on` edge or merge the tasks.
|
|
44
|
+
- Shared files that everyone touches (lockfiles, barrel exports, registries) go
|
|
45
|
+
to one task that the others depend on.
|
|
46
|
+
- Each task is 1 implementer-sized unit: one edit-and-test loop, not a project.
|
|
47
|
+
- `validate` runs inside the task's own worktree and must not need other
|
|
48
|
+
unmerged tasks.
|
|
49
|
+
- Don't split one feature into many tiny tasks. Separate features stay separate
|
|
50
|
+
tasks, even when each one is small.
|
|
51
|
+
|
|
52
|
+
## After writing
|
|
53
|
+
|
|
54
|
+
Show the user the task table (id, goal, depends_on) in a few lines. If 2+ tasks
|
|
55
|
+
are independent, continue with the `dispatch` skill; otherwise run implementers
|
|
56
|
+
one at a time.
|