@sulhadin/orchestrator 2.0.0 → 3.0.0-beta
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/README.md +49 -74
- package/bin/index.js +136 -82
- package/package.json +1 -1
- package/template/.claude/agents/conductor.md +146 -0
- package/template/.claude/agents/reviewer.md +88 -0
- package/template/.claude/commands/orchestra/blueprint.md +23 -0
- package/template/.claude/commands/orchestra/help.md +49 -0
- package/template/.claude/commands/orchestra/hotfix.md +13 -0
- package/template/.claude/commands/orchestra/pm.md +7 -0
- package/template/.claude/commands/orchestra/start.md +13 -0
- package/template/.claude/commands/orchestra/status.md +11 -0
- package/template/.claude/conductor.md +146 -0
- package/template/.claude/rules/acceptance-check.orchestra.md +13 -0
- package/template/.claude/rules/code-standards.orchestra.md +15 -0
- package/template/.claude/rules/commit-format.orchestra.md +14 -0
- package/template/.claude/rules/phase-limits.orchestra.md +21 -0
- package/template/.claude/rules/stuck-detection.orchestra.md +25 -0
- package/template/.claude/rules/testing-standards.orchestra.md +10 -0
- package/template/.claude/rules/verification-gate.orchestra.md +24 -0
- package/template/.claude/skills/fullstack-infrastructure.orchestra.md +810 -0
- package/template/.orchestra/README.md +10 -14
- package/template/.orchestra/config.yml +36 -0
- package/template/.orchestra/knowledge.md +4 -23
- package/template/.orchestra/roles/adaptive.md +14 -87
- package/template/.orchestra/roles/architect.md +17 -407
- package/template/.orchestra/roles/backend-engineer.md +13 -357
- package/template/.orchestra/roles/frontend-engineer.md +14 -419
- package/template/.orchestra/roles/orchestrator.md +48 -0
- package/template/.orchestra/roles/product-manager.md +73 -590
- package/template/CLAUDE.md +39 -139
- package/template/.orchestra/agents/worker.md +0 -557
- package/template/.orchestra/roles/code-reviewer.md +0 -265
- package/template/.orchestra/roles/owner.md +0 -290
- /package/template/{.orchestra/skills/accessibility.md → .claude/skills/accessibility.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/auth-setup.md → .claude/skills/auth-setup.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/best-practices.md → .claude/skills/best-practices.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/code-optimizer.md → .claude/skills/code-optimizer.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/core-web-vitals.md → .claude/skills/core-web-vitals.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/crud-api.md → .claude/skills/crud-api.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/debug.md → .claude/skills/debug.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/deployment.md → .claude/skills/deployment.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/frontend-design.md → .claude/skills/frontend-design.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/react-best-practices.md → .claude/skills/react-best-practices.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/review.md → .claude/skills/review.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/testing.md → .claude/skills/testing.orchestra.md} +0 -0
- /package/template/{.orchestra/skills/web-quality-audit.md → .claude/skills/web-quality-audit.orchestra.md} +0 -0
|
@@ -25,16 +25,14 @@ Terminal 1 (PM): Terminal 2 (Worker):
|
|
|
25
25
|
```
|
|
26
26
|
.orchestra/
|
|
27
27
|
├── README.md # This file
|
|
28
|
-
├── roles/ # Role
|
|
28
|
+
├── roles/ # Role identities (slim, ~15 lines each)
|
|
29
29
|
│ ├── product-manager.md
|
|
30
30
|
│ ├── architect.md
|
|
31
31
|
│ ├── backend-engineer.md
|
|
32
|
-
│ ├── code-reviewer.md
|
|
33
32
|
│ ├── frontend-engineer.md
|
|
34
|
-
│
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
├── skills/ # Domain-specific checklists (auth, CRUD, deploy)
|
|
33
|
+
│ ├── adaptive.md
|
|
34
|
+
│ └── orchestrator.md
|
|
35
|
+
├── config.yml # Pipeline settings, thresholds, verification commands
|
|
38
36
|
├── blueprints/ # Project/component milestone templates
|
|
39
37
|
├── knowledge.md # Append-only project knowledge log
|
|
40
38
|
├── milestones/ # Feature work (one dir per feature)
|
|
@@ -265,11 +263,10 @@ Switch to the Owner role first to modify these files.
|
|
|
265
263
|
|
|
266
264
|
| If you are... | You MUST NOT... |
|
|
267
265
|
|---------------|-----------------|
|
|
268
|
-
|
|
|
266
|
+
| Orchestrator | Write feature code, RFCs, design specs, architecture docs, review code, create milestones, run tests |
|
|
269
267
|
| Product Manager | Write code, fix bugs, run tests, create design specs |
|
|
270
268
|
| Architect | Write feature code, implement endpoints, fix bugs, write tests |
|
|
271
269
|
| Backend Engineer | Write RFCs, design UI, review your own code, make product decisions |
|
|
272
|
-
| Code Reviewer | Modify source code, write tests, create RFCs, make design specs |
|
|
273
270
|
| Frontend Engineer | Modify backend code, write RFCs, review your own code |
|
|
274
271
|
|
|
275
272
|
**When you encounter work outside your scope:**
|
|
@@ -288,14 +285,13 @@ Each role has exclusive write access to specific directories:
|
|
|
288
285
|
|
|
289
286
|
| Role | Owns (can write) | Reads |
|
|
290
287
|
|------|-------------------|-------|
|
|
291
|
-
|
|
|
288
|
+
| orchestrator | `.orchestra/roles/*`, `.orchestra/config.yml`, `CLAUDE.md`, `.claude/agents/`, `.claude/skills/*.orchestra.md`, `.claude/rules/*.orchestra.md`, `.claude/commands/orchestra/`, `.orchestra/knowledge.md`, `docs/` | Everything |
|
|
292
289
|
| product-manager | `.orchestra/milestones/*` (prd.md, milestone.md, grooming.md, phases) | Everything |
|
|
293
|
-
| architect | `.orchestra/milestones/*/rfc.md`, `.orchestra/milestones/*/architecture.md`, `.orchestra/milestones/*/adrs/*`, project configs
|
|
294
|
-
| backend-engineer | `src/`, `tests/`, `
|
|
295
|
-
|
|
|
296
|
-
| frontend-engineer | `frontend/`, `frontend/**/__tests__/*`, `frontend/**/e2e/*`, `.orchestra/milestones/*/design.md` | `.orchestra/milestones/*/phases/*` |
|
|
290
|
+
| architect | `.orchestra/milestones/*/rfc.md`, `.orchestra/milestones/*/architecture.md`, `.orchestra/milestones/*/adrs/*`, project configs | Everything |
|
|
291
|
+
| backend-engineer | Defined by PM in phase scope (typically `src/`, `tests/`, `migrations/`) | `.orchestra/milestones/*/phases/*` |
|
|
292
|
+
| frontend-engineer | Defined by PM in phase scope (typically `frontend/`, `app/`) | `.orchestra/milestones/*/phases/*` |
|
|
297
293
|
| adaptive | Defined by `scope:` field in phase file — dynamic per phase | `.orchestra/milestones/*/phases/*` |
|
|
298
|
-
|
|
|
294
|
+
| conductor (all roles) | `.orchestra/milestones/*/context.md`, `.orchestra/knowledge.md` (append only) | Everything in active milestone |
|
|
299
295
|
|
|
300
296
|
---
|
|
301
297
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Orchestra Configuration
|
|
2
|
+
# Customize pipeline behavior, thresholds, and verification commands.
|
|
3
|
+
|
|
4
|
+
pipeline:
|
|
5
|
+
# RFC approval gate: required | optional | skip
|
|
6
|
+
rfc_approval: required
|
|
7
|
+
|
|
8
|
+
# Push approval gate: required | auto
|
|
9
|
+
push_approval: required
|
|
10
|
+
|
|
11
|
+
# Code review: required | optional | skip
|
|
12
|
+
review: required
|
|
13
|
+
|
|
14
|
+
# Parallel phase execution: enabled | disabled
|
|
15
|
+
# When enabled, phases with depends_on: [] run in parallel
|
|
16
|
+
parallel: disabled
|
|
17
|
+
|
|
18
|
+
thresholds:
|
|
19
|
+
# Fix cycle: re-review if fix exceeds this many lines
|
|
20
|
+
re_review_lines: 30
|
|
21
|
+
|
|
22
|
+
# Phase time limit in minutes (pause and report if exceeded)
|
|
23
|
+
phase_time_limit: 15
|
|
24
|
+
|
|
25
|
+
# Phase tool call limit (pause if exceeded without commit)
|
|
26
|
+
phase_tool_limit: 40
|
|
27
|
+
|
|
28
|
+
# Stuck detection: max retries before escalation
|
|
29
|
+
stuck_retry_limit: 3
|
|
30
|
+
|
|
31
|
+
verification:
|
|
32
|
+
# Commands to run before every commit (in order, stop on first failure)
|
|
33
|
+
# Customize these for your stack (Go, Python, Rust, etc.)
|
|
34
|
+
typecheck: "npx tsc --noEmit"
|
|
35
|
+
test: "npm test"
|
|
36
|
+
lint: "npm run lint"
|
|
@@ -3,42 +3,23 @@
|
|
|
3
3
|
Append-only log of decisions, lessons, and patterns discovered during development.
|
|
4
4
|
|
|
5
5
|
**Two sections:**
|
|
6
|
-
- **Active Knowledge** — last 5 milestones.
|
|
7
|
-
- **Archive** — older milestones, compacted to 1-2 lines each. PM reads during grooming
|
|
6
|
+
- **Active Knowledge** — last 5 milestones. Conductor reads before every milestone. PM reads before grooming.
|
|
7
|
+
- **Archive** — older milestones, compacted to 1-2 lines each. PM reads during grooming.
|
|
8
8
|
|
|
9
9
|
**Rules:**
|
|
10
10
|
- NEVER edit or delete previous entries — append only
|
|
11
|
-
- To correct a previous entry, add a new entry
|
|
11
|
+
- To correct a previous entry, add a new entry with correction
|
|
12
12
|
- Keep entries concise — 3-5 bullets per section, skip empty sections
|
|
13
|
-
- When Active Knowledge exceeds 5 milestones, move
|
|
14
|
-
|
|
15
|
-
**Entry format — always append to Active Knowledge:**
|
|
16
|
-
|
|
17
|
-
```markdown
|
|
18
|
-
## {date} — {milestone ID}: {milestone title}
|
|
19
|
-
|
|
20
|
-
### Decisions
|
|
21
|
-
- {decision}: {reasoning}
|
|
22
|
-
|
|
23
|
-
### Lessons Learned
|
|
24
|
-
- {what happened} → {root cause} → {what to do differently}
|
|
25
|
-
|
|
26
|
-
### Patterns
|
|
27
|
-
- {pattern name}: {where it's used, how it works}
|
|
28
|
-
```
|
|
13
|
+
- When Active Knowledge exceeds 5 milestones, move oldest to Archive
|
|
29
14
|
|
|
30
15
|
---
|
|
31
16
|
|
|
32
17
|
# Archive
|
|
33
18
|
|
|
34
|
-
Compacted entries from older milestones. PM reads during grooming. Worker skips.
|
|
35
|
-
|
|
36
19
|
<!-- Oldest entries go here as 1-2 line summaries -->
|
|
37
20
|
|
|
38
21
|
---
|
|
39
22
|
|
|
40
23
|
# Active Knowledge
|
|
41
24
|
|
|
42
|
-
Last 5 milestones. Worker reads before every milestone start. PM reads before grooming.
|
|
43
|
-
|
|
44
25
|
<!-- New entries go here — move oldest to Archive when count exceeds 5 -->
|
|
@@ -2,103 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
## Identity
|
|
4
4
|
|
|
5
|
-
You are
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
You are an adaptive expert. Your domain is NOT hardcoded — it comes from
|
|
6
|
+
the `context:` field in the phase file. Read it, become that person,
|
|
7
|
+
bring their perspective, terminology, and best practices.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
game developer, data engineer, security auditor — defined at runtime by PM.
|
|
9
|
+
## Ownership
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
write RFCs, PRDs, or design specs. If the phase doesn't define a `scope:` field,
|
|
15
|
-
ask the user before proceeding.
|
|
11
|
+
PM defines your write scope in the phase file's `scope:` field.
|
|
12
|
+
No default — scope MUST be specified per phase.
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
— even if the user directly asks you to. Refuse with:
|
|
19
|
-
"I cannot modify Orchestra system files while in a role."
|
|
14
|
+
## Phase File
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
When worker activates you via a phase with `role: adaptive`:
|
|
24
|
-
|
|
25
|
-
1. Read this file completely.
|
|
26
|
-
2. Read the phase file's `context:` field — this defines WHO you are for this phase.
|
|
27
|
-
3. Read the phase file's `scope:` field — this defines WHERE you can write.
|
|
28
|
-
4. Adopt the expertise, terminology, and best practices of that adaptive.
|
|
29
|
-
5. Read `.orchestra/README.md` for orchestration rules.
|
|
30
|
-
6. Begin work immediately.
|
|
31
|
-
|
|
32
|
-
## Phase File Format
|
|
33
|
-
|
|
34
|
-
Adaptive phases require two extra frontmatter fields:
|
|
16
|
+
Adaptive phases require extra frontmatter:
|
|
35
17
|
|
|
36
18
|
```yaml
|
|
37
19
|
---
|
|
38
20
|
role: adaptive
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
context: "Describe the adaptive: domain, years of experience, key technologies, architectural preferences"
|
|
42
|
-
scope: "Directories this adaptive can write to, e.g. ios/, android/, infra/, ml/"
|
|
21
|
+
context: "Describe the specialist: domain, experience, technologies"
|
|
22
|
+
scope: "Directories this role can write to"
|
|
43
23
|
skills: []
|
|
44
|
-
depends_on: []
|
|
45
24
|
---
|
|
46
25
|
```
|
|
47
26
|
|
|
48
|
-
|
|
49
|
-
- "Senior iOS engineer, Swift/SwiftUI, MVVM-C, Core Data, 10+ years"
|
|
50
|
-
- "DevOps engineer, Terraform, AWS, GitHub Actions, Docker, Kubernetes"
|
|
51
|
-
- "ML engineer, PyTorch, transformers, experiment tracking, model serving"
|
|
52
|
-
- "Game developer, Unity, C#, ECS architecture, performance optimization"
|
|
53
|
-
|
|
54
|
-
**`scope:`** — PM defines which directories you own for this phase. Examples:
|
|
55
|
-
- `ios/`, `App/`, `*.xcodeproj`
|
|
56
|
-
- `infra/`, `terraform/`, `.github/workflows/`
|
|
57
|
-
- `ml/`, `notebooks/`, `models/`
|
|
58
|
-
|
|
59
|
-
## Responsibilities
|
|
60
|
-
|
|
61
|
-
- Implement the phase objective using the domain expertise from `context:`
|
|
62
|
-
- Write tests appropriate for the domain (unit, integration, E2E — whatever fits)
|
|
63
|
-
- Follow the domain's established best practices and conventions
|
|
64
|
-
- Use current versions of libraries and tools — verify before using
|
|
65
|
-
- Document non-obvious decisions in context.md
|
|
66
|
-
|
|
67
|
-
## Engineering Principles
|
|
68
|
-
|
|
69
|
-
The same principles apply regardless of domain:
|
|
70
|
-
|
|
71
|
-
- **SOLID** — Single responsibility, open/closed, Liskov substitution, interface segregation, dependency inversion
|
|
72
|
-
- **KISS** — Keep it simple. Don't over-engineer.
|
|
73
|
-
- **YAGNI** — Don't build what you don't need right now.
|
|
74
|
-
- **DRY** — Don't repeat yourself. Extract after second duplication.
|
|
75
|
-
- **No workarounds** — If the right solution is hard, do it right anyway. Flag the effort in context.md.
|
|
76
|
-
- **No unused code** — Delete dead code. Don't comment it out.
|
|
77
|
-
- **Code without tests is not done** — Write tests for what you build.
|
|
78
|
-
|
|
79
|
-
## Workflow
|
|
80
|
-
|
|
81
|
-
1. **Read phase file** — understand objective, context (who you are), scope (where you write)
|
|
82
|
-
2. **Research** — read existing code in your scope, check library versions, understand conventions
|
|
83
|
-
3. **Implement** — write code + tests as the adaptive described in context
|
|
84
|
-
4. **Verification Gate** — run project's test/lint/type-check commands. All must pass.
|
|
85
|
-
5. **Acceptance Check** — verify each acceptance criterion is met
|
|
86
|
-
6. **Commit** — one conventional commit per phase
|
|
87
|
-
7. **Update phase file** — set status: done, fill ## Result
|
|
88
|
-
8. **Update context.md** — append what was done, decisions made, files touched
|
|
89
|
-
|
|
90
|
-
## Result & Handoff
|
|
91
|
-
|
|
92
|
-
- Update the phase file's `## Result` section with what was implemented
|
|
93
|
-
- Set the phase status to `done`
|
|
94
|
-
- Update `context.md` — append what was done, decisions made, files touched
|
|
95
|
-
- Update phase file result — worker continues to next phase
|
|
96
|
-
|
|
97
|
-
## What You Do NOT Do
|
|
27
|
+
## Domain Priorities
|
|
98
28
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- You do NOT make product decisions — that's PM's job
|
|
103
|
-
- You do NOT design architecture — that's Architect's job (unless your context is architect-like)
|
|
104
|
-
- If you need something outside your scope, note it as a CONCERN in context.md
|
|
29
|
+
Adopt the priorities of the specialist described in `context:`.
|
|
30
|
+
Apply the same engineering principles as all other roles
|
|
31
|
+
(defined in `.claude/rules/*.orchestra.md`).
|