@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.
Files changed (46) hide show
  1. package/README.md +49 -74
  2. package/bin/index.js +136 -82
  3. package/package.json +1 -1
  4. package/template/.claude/agents/conductor.md +146 -0
  5. package/template/.claude/agents/reviewer.md +88 -0
  6. package/template/.claude/commands/orchestra/blueprint.md +23 -0
  7. package/template/.claude/commands/orchestra/help.md +49 -0
  8. package/template/.claude/commands/orchestra/hotfix.md +13 -0
  9. package/template/.claude/commands/orchestra/pm.md +7 -0
  10. package/template/.claude/commands/orchestra/start.md +13 -0
  11. package/template/.claude/commands/orchestra/status.md +11 -0
  12. package/template/.claude/conductor.md +146 -0
  13. package/template/.claude/rules/acceptance-check.orchestra.md +13 -0
  14. package/template/.claude/rules/code-standards.orchestra.md +15 -0
  15. package/template/.claude/rules/commit-format.orchestra.md +14 -0
  16. package/template/.claude/rules/phase-limits.orchestra.md +21 -0
  17. package/template/.claude/rules/stuck-detection.orchestra.md +25 -0
  18. package/template/.claude/rules/testing-standards.orchestra.md +10 -0
  19. package/template/.claude/rules/verification-gate.orchestra.md +24 -0
  20. package/template/.claude/skills/fullstack-infrastructure.orchestra.md +810 -0
  21. package/template/.orchestra/README.md +10 -14
  22. package/template/.orchestra/config.yml +36 -0
  23. package/template/.orchestra/knowledge.md +4 -23
  24. package/template/.orchestra/roles/adaptive.md +14 -87
  25. package/template/.orchestra/roles/architect.md +17 -407
  26. package/template/.orchestra/roles/backend-engineer.md +13 -357
  27. package/template/.orchestra/roles/frontend-engineer.md +14 -419
  28. package/template/.orchestra/roles/orchestrator.md +48 -0
  29. package/template/.orchestra/roles/product-manager.md +73 -590
  30. package/template/CLAUDE.md +39 -139
  31. package/template/.orchestra/agents/worker.md +0 -557
  32. package/template/.orchestra/roles/code-reviewer.md +0 -265
  33. package/template/.orchestra/roles/owner.md +0 -290
  34. /package/template/{.orchestra/skills/accessibility.md → .claude/skills/accessibility.orchestra.md} +0 -0
  35. /package/template/{.orchestra/skills/auth-setup.md → .claude/skills/auth-setup.orchestra.md} +0 -0
  36. /package/template/{.orchestra/skills/best-practices.md → .claude/skills/best-practices.orchestra.md} +0 -0
  37. /package/template/{.orchestra/skills/code-optimizer.md → .claude/skills/code-optimizer.orchestra.md} +0 -0
  38. /package/template/{.orchestra/skills/core-web-vitals.md → .claude/skills/core-web-vitals.orchestra.md} +0 -0
  39. /package/template/{.orchestra/skills/crud-api.md → .claude/skills/crud-api.orchestra.md} +0 -0
  40. /package/template/{.orchestra/skills/debug.md → .claude/skills/debug.orchestra.md} +0 -0
  41. /package/template/{.orchestra/skills/deployment.md → .claude/skills/deployment.orchestra.md} +0 -0
  42. /package/template/{.orchestra/skills/frontend-design.md → .claude/skills/frontend-design.orchestra.md} +0 -0
  43. /package/template/{.orchestra/skills/react-best-practices.md → .claude/skills/react-best-practices.orchestra.md} +0 -0
  44. /package/template/{.orchestra/skills/review.md → .claude/skills/review.orchestra.md} +0 -0
  45. /package/template/{.orchestra/skills/testing.md → .claude/skills/testing.orchestra.md} +0 -0
  46. /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 definitions (system prompts)
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
- └── owner.md
35
- ├── agents/ # Worker agent definitions
36
- │ └── worker.md # Multi-role execution agent prompt
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
- | Owner | Write feature code, RFCs, design specs, architecture docs, review code, create milestones, run tests |
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
- | owner | `.orchestra/roles/*`, `.orchestra/README.md`, `CLAUDE.md`, `.orchestra/agents/*`, `.orchestra/skills/*`, `.orchestra/blueprints/*`, `.orchestra/knowledge.md` | Everything |
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 (initial setup) | Everything |
294
- | backend-engineer | `src/`, `tests/`, `src/**/__tests__/*`, `migrations/`, `package.json`, `tsconfig.json` | `.orchestra/milestones/*/phases/*` |
295
- | code-reviewer | Review findings only never modifies source code | `src/`, `tests/`, `frontend/` |
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
- | worker (all roles) | `.orchestra/milestones/*/context.md`, `.orchestra/knowledge.md` (append only) | Everything in active milestone |
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. Worker reads this before every milestone. PM reads before grooming.
7
- - **Archive** — older milestones, compacted to 1-2 lines each. PM reads during grooming for broader context. Worker skips.
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: "Correction: {old} → {new}, because {reason}"
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 the oldest to Archive (compact to 1-2 lines)
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 a **Adaptive** — an adaptive expert role. Your domain expertise is NOT
6
- hardcoded; it comes from the `context:` field in the phase file. Read it, become
7
- that person, and bring their perspective, terminology, and best practices.
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
- You are whatever the phase needs: iOS engineer, DevOps adaptive, ML engineer,
10
- game developer, data engineer, security auditor — defined at runtime by PM.
9
+ ## Ownership
11
10
 
12
- **⛔ BOUNDARY:** You work ONLY within the `scope:` defined in the phase file.
13
- You NEVER write outside that scope. You NEVER review your own code. You NEVER
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
- **🔒 PROTECTED FILES:** You can NEVER modify `.orchestra/roles/` or `.orchestra/README.md`
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
- ## On Activation
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
- status: pending
40
- order: 1
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
- **`context:`** PM writes a brief persona description. This shapes your thinking:
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
- - You do NOT write outside your `scope:` — even if it would be convenient
100
- - You do NOT modify Orchestra system files
101
- - You do NOT review your own code
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`).