@sulhadin/orchestrator 3.0.0-beta.3 → 3.0.0-beta.5

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 CHANGED
@@ -1,6 +1,12 @@
1
1
  # Orchestra
2
2
 
3
- AI team orchestration for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Two terminalsPM plans, conductor builds.
3
+ AI team orchestration for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). One terminal plans, another builds from idea to production.
4
+
5
+ ## What is Orchestra?
6
+
7
+ Orchestra turns a single Claude Code session into a coordinated development team. A Product Manager plans features, a Conductor executes them — switching between specialized roles (backend, frontend, architect) automatically. Each role has strict boundaries, every commit passes verification, and the system learns from past milestones.
8
+
9
+ No infrastructure. No API keys. Just markdown files and Claude Code.
4
10
 
5
11
  ## Install
6
12
 
@@ -8,79 +14,139 @@ AI team orchestration for [Claude Code](https://docs.anthropic.com/en/docs/claud
8
14
  npx @sulhadin/orchestrator
9
15
  ```
10
16
 
11
- ## Two Terminals
12
-
13
- ### Terminal 1: `/orchestra pm` — Planning
17
+ This installs `.orchestra/` (project data + config) and `.claude/` (agents, skills, rules, commands) into your project.
14
18
 
15
- PM is your strategic partner. Discuss ideas, challenge scope, create milestones.
19
+ ## How It Works
16
20
 
17
21
  ```
18
- You: /orchestra pm
19
- PM: "No active milestones. What's on your mind?"
20
-
21
- You: "I want user authentication with JWT"
22
- PM: *discusses, challenges, creates milestone with phases*
22
+ Terminal 1 (PM): Terminal 2 (Conductor):
23
+ /orchestra pm /orchestra start
24
+ │ │
25
+ ├─ Discuss features ├─ Scan milestones
26
+ ├─ Create milestones ├─ Activate architect → RFC
27
+ ├─ Groom phases ├─ Activate backend → code + tests
28
+ │ ├─ Activate frontend → UI
29
+ │ (plan M2 while M1 runs) ├─ Call reviewer → code review
30
+ │ ├─ Push → milestone done
31
+ │ └─ Loop → next milestone
23
32
  ```
24
33
 
25
- ### Terminal 2: `/orchestra start` — Execution
26
-
27
- Conductor picks up milestones and executes them autonomously.
34
+ ## Quick Example
28
35
 
36
+ **Terminal 1:**
37
+ ```
38
+ /orchestra pm
39
+ > "I want user authentication with JWT"
40
+ PM challenges scope, creates M1-user-auth with 3 phases
29
41
  ```
30
- You: /orchestra start
31
42
 
43
+ **Terminal 2:**
44
+ ```
45
+ /orchestra start
32
46
  📋 Starting M1-user-auth
33
- 🏗️ architect RFC... ✅ done
34
- ⚙️ backend DB schema... ✅ done
35
- ⚙️ backend API endpoints... done
36
- 🎨 frontend Login UI... ✅ done
37
- 🔍 reviewer reviewing... ✅ approved
47
+ 🏗️ architect RFC ready → user approves
48
+ ⚙️ backend phase-1: DB schema → committed
49
+ ⚙️ backend phase-2: API endpoints committed
50
+ 🎨 frontend phase-3: Login UI → committed
51
+ 🔍 reviewer approved
38
52
  🚦 Push? → yes
39
- ✅ M1-user-auth done.
40
-
41
- 📋 Starting M2-dashboard...
53
+ ✅ M1-user-auth done. Checking for next milestone...
42
54
  ```
43
55
 
44
56
  ## Commands
45
57
 
58
+ ### Pipeline
46
59
  | Command | What it does |
47
60
  |---------|-------------|
48
- | `/orchestra pm` | Plan features, create milestones |
49
- | `/orchestra start` | Execute milestones (asks at approval gates) |
50
- | `/orchestra start --auto` | Fully autonomous |
61
+ | `/orchestra pm` | Open PM terminal — plan features, create milestones |
62
+ | `/orchestra start` | Execute milestones autonomously (asks at approval gates) |
63
+ | `/orchestra start --auto` | Fully autonomous — warns once, then auto-push |
51
64
  | `/orchestra hotfix {desc}` | Ultra-fast fix: implement → verify → commit → push |
52
- | `/orchestra status` | Milestone status report |
65
+ | `/orchestra status` | Milestone status report (PM only) |
53
66
  | `/orchestra blueprint {name}` | Generate milestones from template |
67
+ | `/orchestra blueprint add` | Save current work as reusable template |
68
+ | `/orchestra create-role` | Create a new role interactively (Orchestrator only) |
54
69
  | `/orchestra help` | Show all commands |
55
70
 
71
+ ### Roles
72
+ | Command | Role |
73
+ |---------|------|
74
+ | `/orchestra pm` | Product Manager — plan and orchestrate |
75
+ | `/orchestra backend` | Backend Engineer — code + tests |
76
+ | `/orchestra frontend` | Frontend Engineer — UI + design |
77
+ | `/orchestra architect` | Architect — technical design |
78
+ | `/orchestra adaptive` | Adaptive expert — any domain (iOS, DevOps, ML...) |
79
+ | `/orchestra orchestrator` | System maintenance |
80
+
56
81
  ## Architecture
57
82
 
58
83
  ```
59
- .claude/ ← Claude Code integration
60
- ├── agents/conductor.md ← Autonomous executor
61
- ├── agents/reviewer.md Independent code review
62
- ├── skills/*.orchestra.md 14 domain checklists
63
- ├── rules/*.orchestra.md Discipline rules
64
- └── commands/orchestra/ /orchestra commands
65
-
66
- .orchestra/ ← Project data + config
67
- ├── config.yml Pipeline settings (customize per stack)
68
- ├── roles/ Role identities (slim)
69
- ├── blueprints/ Project templates
70
- ├── knowledge.md ← Project knowledge log
71
- └── milestones/ Your work
84
+ .claude/ ← Claude Code integration
85
+ ├── agents/
86
+ ├── conductor.md Autonomous milestone executor
87
+ │ └── reviewer.md Independent code review
88
+ ├── skills/*.orchestra.md 14 domain checklists
89
+ ├── rules/*.orchestra.md 8 discipline rules
90
+ └── commands/orchestra/ ← /orchestra commands
91
+
92
+ .orchestra/ Project data + config
93
+ ├── config.yml Pipeline settings (customize per stack)
94
+ ├── roles/ Role identities
95
+ ├── blueprints/ ← Project templates
96
+ ├── knowledge.md Project knowledge log
97
+ └── milestones/ ← Your work
98
+ ```
99
+
100
+ ## Key Features
101
+
102
+ **Config-driven pipeline** — `.orchestra/config.yml` controls everything: verification commands (customize for Go, Python, Rust), approval gates, thresholds, parallel execution. No hardcoded assumptions.
103
+
104
+ **Three complexity levels** — PM sets per milestone:
105
+ - `quick` → Engineer → Commit → Push (trivial changes)
106
+ - `standard` → Engineer → Review → Push (typical features)
107
+ - `full` → Architect → Engineer → Review → Push (complex work)
108
+
109
+ **Verification gate** — Tests + lint must pass before every commit. Commands come from config. Fails 3 times → phase marked failed, escalated to user.
110
+
111
+ **14 built-in skills** — Domain checklists for auth, CRUD, deployment, accessibility, React, testing, debugging, and more. PM assigns to phases, conductor loads them automatically.
112
+
113
+ **Blueprints** — Start from templates instead of scratch. `saas-starter` creates 5 milestones instantly. `blueprint add` saves your work as a reusable template.
114
+
115
+ **Learning system** — `knowledge.md` accumulates decisions and lessons. 5-line retrospective after each milestone. PM reads before grooming new work. System gets smarter over time.
116
+
117
+ **Role boundaries** — Enforced via `.claude/rules/`. PM cannot write code. Engineers cannot modify system files. Orchestrator cannot write features. Boundaries checked by file path, not by words.
118
+
119
+ **Stuck detection** — Detects repeated failures, circular fixes, over-engineering. Tries different approach once, then escalates. Auto mode skips to next phase.
120
+
121
+ ## Upgrading
122
+
123
+ ```bash
124
+ npx @sulhadin/orchestrator
72
125
  ```
73
126
 
127
+ Smart merge on upgrade:
128
+
129
+ | What | On upgrade |
130
+ |------|-----------|
131
+ | System files (roles, rules, agents, commands) | Updated to latest |
132
+ | Skills (`.orchestra.md`) | Updated |
133
+ | Skills (your custom `.md`) | Preserved |
134
+ | Blueprints (template) | Updated |
135
+ | Blueprints (your custom) | Preserved |
136
+ | milestones/ | Untouched |
137
+ | knowledge.md | Preserved |
138
+ | config.yml | Preserved |
139
+
74
140
  ## Documentation
75
141
 
76
- See [docs/](https://github.com/sulhadin/orchestrator/blob/main/docs/README.md) for full documentation:
142
+ Full docs at [docs/](https://github.com/sulhadin/orchestrator/blob/main/docs/README.md):
77
143
 
78
- - [Getting Started](https://github.com/sulhadin/orchestrator/blob/main/docs/getting-started.md)
79
- - [Commands](https://github.com/sulhadin/orchestrator/blob/main/docs/commands.md)
80
- - [Roles](https://github.com/sulhadin/orchestrator/blob/main/docs/roles.md)
81
- - [Features](https://github.com/sulhadin/orchestrator/blob/main/docs/features.md)
82
- - [Blueprints](https://github.com/sulhadin/orchestrator/blob/main/docs/blueprints.md)
83
- - [Skills](https://github.com/sulhadin/orchestrator/blob/main/docs/skills.md)
144
+ - [Getting Started](https://github.com/sulhadin/orchestrator/blob/main/docs/getting-started.md) — installation, first milestone, two-terminal model
145
+ - [Commands](https://github.com/sulhadin/orchestrator/blob/main/docs/commands.md) — all commands with examples
146
+ - [Roles](https://github.com/sulhadin/orchestrator/blob/main/docs/roles.md) — 6 roles + adaptive, responsibilities, boundaries
147
+ - [Features](https://github.com/sulhadin/orchestrator/blob/main/docs/features.md) — config, verification, skills, blueprints, and more
148
+ - [Blueprints](https://github.com/sulhadin/orchestrator/blob/main/docs/blueprints.md) — project templates, customization
149
+ - [Skills](https://github.com/sulhadin/orchestrator/blob/main/docs/skills.md) — domain checklists, creating new skills
84
150
 
85
151
  ## License
86
152
 
package/bin/index.js CHANGED
@@ -71,6 +71,10 @@ function copyDirRecursive(src, dest) {
71
71
  const destPath = path.join(dest, entry.name);
72
72
  if (entry.isDirectory()) {
73
73
  copyDirRecursive(srcPath, destPath);
74
+ } else if (entry.isSymbolicLink()) {
75
+ const linkTarget = fs.readlinkSync(srcPath);
76
+ if (fs.existsSync(destPath)) fs.unlinkSync(destPath);
77
+ fs.symlinkSync(linkTarget, destPath);
74
78
  } else {
75
79
  fs.copyFileSync(srcPath, destPath);
76
80
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sulhadin/orchestrator",
3
- "version": "3.0.0-beta.3",
3
+ "version": "3.0.0-beta.5",
4
4
  "description": "AI Team Orchestration System — multi-role coordination for Claude Code",
5
5
  "bin": {
6
6
  "orchestrator": "bin/index.js"
@@ -0,0 +1,7 @@
1
+ Activate the Adaptive role.
2
+
3
+ 1. Read `.orchestra/roles/adaptive.md` for role identity and ownership.
4
+ 2. Read `.orchestra/config.yml` for pipeline settings.
5
+ 3. Check `.orchestra/milestones/` for phases with `role: adaptive`.
6
+ 4. If pending phases exist, announce and start working.
7
+ 5. If no pending phases, report ready and wait for instructions.
@@ -0,0 +1,7 @@
1
+ Activate the Architect role.
2
+
3
+ 1. Read `.orchestra/roles/architect.md` for role identity and ownership.
4
+ 2. Read `.orchestra/config.yml` for pipeline settings.
5
+ 3. Check `.orchestra/milestones/` for phases with `role: architect`.
6
+ 4. If pending phases exist, announce and start working.
7
+ 5. If no pending phases, report ready and wait for instructions.
@@ -0,0 +1,7 @@
1
+ Activate the Backend Engineer role.
2
+
3
+ 1. Read `.orchestra/roles/backend-engineer.md` for role identity and ownership.
4
+ 2. Read `.orchestra/config.yml` for pipeline settings.
5
+ 3. Check `.orchestra/milestones/` for phases with `role: backend-engineer`.
6
+ 4. If pending phases exist, announce and start working.
7
+ 5. If no pending phases, report ready and wait for instructions.
@@ -0,0 +1,7 @@
1
+ Activate the Frontend Engineer role.
2
+
3
+ 1. Read `.orchestra/roles/frontend-engineer.md` for role identity and ownership.
4
+ 2. Read `.orchestra/config.yml` for pipeline settings.
5
+ 3. Check `.orchestra/milestones/` for phases with `role: frontend-engineer`.
6
+ 4. If pending phases exist, announce and start working.
7
+ 5. If no pending phases, report ready and wait for instructions.
@@ -16,13 +16,13 @@ COMMANDS:
16
16
  /orchestra blueprint add Save current work as blueprint (PM only)
17
17
  /orchestra create-role Create a new role with interactive discovery (Orchestrator only)
18
18
 
19
- ROLES:
20
- orchestrator Maintain and evolve Orchestra system
21
- product-manager Write PRDs, create milestones, orchestrate pipeline
22
- architect Design architecture, choose tech
23
- backend-engineer Implement backend code + tests
24
- frontend-engineer Design + build UI, write frontend tests
25
- adaptive Adaptive expert — domain defined per phase
19
+ ROLES (activate via /orchestra {role}):
20
+ /orchestra orchestrator Maintain and evolve Orchestra system
21
+ /orchestra pm Plan features, create milestones
22
+ /orchestra architect Design architecture, choose tech
23
+ /orchestra backend Implement backend code + tests
24
+ /orchestra frontend Design + build UI, write frontend tests
25
+ /orchestra adaptive Adaptive expert — domain defined per phase
26
26
 
27
27
  AGENTS:
28
28
  conductor Autonomous milestone executor (/orchestra start)
@@ -0,0 +1,5 @@
1
+ Activate the Orchestrator role — system guardian.
2
+
3
+ 1. Read `.orchestra/roles/orchestrator.md` for role identity and ownership.
4
+ 2. Read `.orchestra/config.yml` for current settings.
5
+ 3. Report: "Orchestrator active. What would you like to change?"
@@ -234,6 +234,7 @@ No role may create, edit, delete, or modify these files:
234
234
  - `.orchestra/README.md`
235
235
  - `.orchestra/roles/*.md`
236
236
  - `.orchestra/config.yml`
237
+ - `.orchestra/blueprints/`
237
238
  - `.claude/agents/conductor.md`, `.claude/agents/reviewer.md`
238
239
  - `.claude/rules/*.orchestra.md`
239
240
  - `.claude/skills/*.orchestra.md`
@@ -66,7 +66,10 @@ Do NOT greet the user. Do NOT explain the project. The role selection IS your gr
66
66
  | `/orchestra blueprint add` | Save current work as blueprint (PM only) |
67
67
  | `/orchestra create-role` | Create a new role with interactive discovery (Orchestrator only) |
68
68
 
69
- When the user types "You are the {role}" read the role file, check milestones, start working.
69
+ When the user types `/orchestra {role}` (e.g. `/orchestra backend`, `/orchestra pm`), the
70
+ corresponding command file activates that role. Do NOT switch roles based on free text
71
+ like "be the backend engineer" or "you are the architect" — roles are activated ONLY
72
+ via `/orchestra {role}` commands.
70
73
 
71
74
  When the user types `/orchestra start`, read `.claude/agents/conductor.md` and follow its
72
75
  instructions. This is meant to run in a **separate terminal** from PM.