agency-orchestrator 0.3.2 → 0.4.2

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 (73) hide show
  1. package/README.en.md +539 -0
  2. package/README.md +391 -256
  3. package/dist/cli/compose.d.ts +4 -2
  4. package/dist/cli/compose.js +35 -39
  5. package/dist/cli/demo.d.ts +8 -0
  6. package/dist/cli/demo.js +301 -0
  7. package/dist/cli.js +47 -10
  8. package/dist/connectors/claude-code.d.ts +11 -0
  9. package/dist/connectors/claude-code.js +23 -0
  10. package/dist/connectors/cli-base.d.ts +16 -0
  11. package/dist/connectors/cli-base.js +53 -0
  12. package/dist/connectors/codex-cli.d.ts +11 -0
  13. package/dist/connectors/codex-cli.js +19 -0
  14. package/dist/connectors/copilot-cli.d.ts +11 -0
  15. package/dist/connectors/copilot-cli.js +19 -0
  16. package/dist/connectors/factory.d.ts +5 -0
  17. package/dist/connectors/factory.js +42 -0
  18. package/dist/connectors/gemini-cli.d.ts +11 -0
  19. package/dist/connectors/gemini-cli.js +19 -0
  20. package/dist/connectors/ollama.js +1 -1
  21. package/dist/connectors/openclaw-cli.d.ts +15 -0
  22. package/dist/connectors/openclaw-cli.js +37 -0
  23. package/dist/core/parser.js +7 -2
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.js +8 -27
  26. package/dist/mcp/server.d.ts +1 -0
  27. package/dist/mcp/server.js +288 -0
  28. package/dist/types.d.ts +2 -2
  29. package/examples/sample-code-for-review.md +43 -0
  30. package/examples/sample-prd.md +31 -0
  31. package/examples/sample-premise.txt +1 -0
  32. package/integrations/aider/CONVENTIONS.md +50 -0
  33. package/integrations/aider/README.md +112 -0
  34. package/integrations/antigravity/AGENTS.md +1 -1
  35. package/integrations/antigravity/README.md +2 -2
  36. package/integrations/claude-code/README.md +27 -11
  37. package/integrations/codex/README.md +2 -2
  38. package/integrations/codex/instructions.md +1 -1
  39. package/integrations/copilot/README.md +111 -0
  40. package/integrations/copilot/copilot-instructions.md +50 -0
  41. package/integrations/cursor/README.md +31 -3
  42. package/integrations/cursor/workflow-runner.mdc +1 -1
  43. package/integrations/deerflow/README.md +2 -2
  44. package/integrations/deerflow/SKILL.md +1 -1
  45. package/integrations/gemini-cli/GEMINI.md +1 -1
  46. package/integrations/gemini-cli/README.md +2 -2
  47. package/integrations/kiro/README.md +1 -1
  48. package/integrations/kiro/ao-workflow-runner.md +1 -1
  49. package/integrations/openclaw/README.md +2 -2
  50. package/integrations/opencode/README.md +72 -0
  51. package/integrations/opencode/instructions.md +50 -0
  52. package/integrations/qwen/README.md +104 -0
  53. package/integrations/qwen/ao-workflow-runner.md +50 -0
  54. package/integrations/trae/README.md +1 -1
  55. package/integrations/trae/ao-workflow-runner.md +1 -1
  56. package/integrations/windsurf/.windsurfrules +50 -0
  57. package/integrations/windsurf/README.md +110 -0
  58. package/package.json +26 -4
  59. package/workflows/ai-opinion-article.yaml +122 -0
  60. package/workflows/content-pipeline.yaml +1 -1
  61. package/workflows/department-collab/ceo-org-delegation.yaml +189 -0
  62. package/workflows/dev/pr-review.yaml +20 -10
  63. package/workflows/dev/tech-design-review.yaml +115 -0
  64. package/workflows/hr/interview-questions.yaml +108 -0
  65. package/workflows/legal/contract-review.yaml +106 -0
  66. package/workflows/marketing/competitor-analysis.yaml +99 -0
  67. package/workflows/marketing/seo-content-matrix.yaml +98 -0
  68. package/workflows/marketing/xiaohongshu-content.yaml +103 -0
  69. package/workflows/ops/weekly-report.yaml +90 -0
  70. package/workflows/product-review.yaml +56 -21
  71. package/workflows/story-creation.yaml +48 -33
  72. package/workflows/strategy/business-plan.yaml +122 -0
  73. package/README.zh-CN.md +0 -471
package/README.en.md ADDED
@@ -0,0 +1,539 @@
1
+ # Agency Orchestrator
2
+
3
+ **English** | [中文](./README.md)
4
+
5
+ > **You're already paying for AI. Why do you need another API key just to run a workflow?**
6
+
7
+ [![CI](https://github.com/jnMetaCode/agency-orchestrator/actions/workflows/ci.yml/badge.svg)](https://github.com/jnMetaCode/agency-orchestrator/actions)
8
+ [![npm version](https://img.shields.io/npm/v/agency-orchestrator)](https://www.npmjs.com/package/agency-orchestrator)
9
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)
10
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](./CONTRIBUTING.md)
11
+
12
+ **186 expert AI roles · Zero-code YAML orchestration · Use your existing subscription · No API key required**
13
+
14
+ ```
15
+ Claude Max ✓ ChatGPT Plus ✓ GitHub Copilot ✓ Google Account (free) ✓ Ollama ✓
16
+ ```
17
+
18
+ > If you find this useful, please **Star** it — helps others discover the project.
19
+
20
+ ---
21
+
22
+ ## Why Agency Orchestrator
23
+
24
+ **Sound familiar?**
25
+
26
+ - You want multiple AI agents to collaborate, but CrewAI/LangGraph require Python and defining every role from scratch
27
+ - You set up the framework, then discover you **still need to get API keys, add credits, and manage quotas**
28
+ - You're already paying $20/month for Claude Max / ChatGPT Plus / Copilot — but you can't use that subscription
29
+
30
+ **Agency Orchestrator's answer:**
31
+
32
+ Write one YAML file → 186 expert roles collaborate automatically → runs on your **existing subscription**.
33
+
34
+ > **Industry first: Every multi-agent framework out there (CrewAI, LangGraph, AutoGen, Dify, n8n, Agency Swarm, MetaGPT, Google ADK, OpenAI Agents SDK) requires API keys. Agency Orchestrator is the only one that lets you bring your subscription.**
35
+
36
+ ### 30-Second Comparison
37
+
38
+ ```python
39
+ # CrewAI: ~50 lines of Python, define every role, API key required
40
+ researcher = Agent(role="PM", goal="...", backstory="...(write it yourself)...")
41
+ task = Task(description="...", agent=researcher)
42
+ crew = Crew(agents=[researcher], tasks=[task])
43
+ crew.kickoff()
44
+ ```
45
+
46
+ ```yaml
47
+ # Agency Orchestrator: 10 lines of YAML, 186 roles ready to go, no API key
48
+ steps:
49
+ - id: analyze
50
+ role: "product/product-manager" # expert prompt already written
51
+ task: "Analyze this PRD: {{prd_content}}"
52
+ ```
53
+
54
+ | | CrewAI | LangGraph | AutoGen | **Agency Orchestrator** |
55
+ |---|--------|-----------|---------|---------------------|
56
+ | Language | Python | Python | Python | **YAML (zero code)** |
57
+ | Roles | Write your own | Write your own | Write your own | **186 ready-to-use** |
58
+ | API Key | Required | Required | Required | **6 providers need none** |
59
+ | Dependencies | pip + LiteLLM + dozens | pip + LangChain | pip + AutoGen | **npm + 2 deps** |
60
+ | Parallelism | Manager mode | Manual graph | Manual | **Auto DAG detection** |
61
+ | Branching | None | Manual | Manual | **Condition expressions** |
62
+ | Loops | None | Manual | Manual | **Declarative loop/exit** |
63
+ | Resume | None | Checkpointers | None | **Built-in `--resume`** |
64
+ | Price | Open-source + $25-99/mo | Open-source | Open-source | **Completely free** |
65
+
66
+ ## Get Started in 3 Steps
67
+
68
+ ### Step 1: Try it in 5 seconds
69
+
70
+ ```bash
71
+ npx agency-orchestrator demo
72
+ ```
73
+
74
+ 4 AI roles collaborate on a story. No install, no config, no API key.
75
+
76
+ ### Step 2: Run a real workflow with your subscription
77
+
78
+ ```bash
79
+ npm install agency-orchestrator
80
+ npx ao init # download 186 AI roles
81
+
82
+ # Use your existing Claude Max subscription (no API key!)
83
+ npx ao run workflows/story-creation.yaml --input premise="A time travel story"
84
+ ```
85
+
86
+ Just set `provider: "claude-code"` in your YAML. No Claude? Use `gemini-cli` (free with Google account), `copilot-cli`, or `codex-cli`.
87
+
88
+ ### Step 3: Use it inside your AI coding tool
89
+
90
+ ```bash
91
+ ./scripts/install.sh # one-command install for your AI tools
92
+ ```
93
+
94
+ Then tell Cursor / Claude Code / Copilot:
95
+
96
+ ```
97
+ Run workflows/story-creation.yaml with premise="A time travel story"
98
+ ```
99
+
100
+ It auto-parses YAML → loads roles → executes in DAG order → saves results.
101
+
102
+ **Works with 14 AI coding tools** ([integration guides](./integrations/)): Claude Code · GitHub Copilot · Cursor · Windsurf · Kiro · Trae · Aider · Gemini CLI · Codex CLI · OpenCode · Qwen Code · DeerFlow 2.0 · Antigravity · OpenClaw
103
+
104
+ ## Demo: 4 AI Roles Write a Complete Story in 2 Minutes
105
+
106
+ ```
107
+ $ ao run workflows/story-creation.yaml -i "premise=A programmer discovers AI replies with things it shouldn't know"
108
+
109
+ Workflow: Short Story Creation
110
+ Steps: 4 | Concurrency: 2 | Model: deepseek-chat
111
+ ──────────────────────────────────────────────────
112
+
113
+ ── [1/4] story_structure (Narratologist) ──
114
+ Done | 14.9s | 1,919 tokens
115
+
116
+ ── [2/4] character_design (Psychologist) ── ← parallel
117
+ Done | 65.5s | 4,016 tokens
118
+
119
+ ── [3/4] conflict_design (Narrative Designer) ── ← parallel
120
+ Done | 65.5s | 3,607 tokens
121
+
122
+ ── [4/4] write_story (Content Creator) ──
123
+ Done | 33.9s | 5,330 tokens
124
+
125
+ ==================================================
126
+ Completed: 4/4 steps | 114.3s | 14,872 tokens
127
+ ==================================================
128
+ ```
129
+
130
+ Steps 2 and 3 run **in parallel** (auto-detected from DAG dependencies). Four specialized AI roles collaborate to produce a complete suspense short story.
131
+
132
+ ## How It Works
133
+
134
+ ```yaml
135
+ name: "Product Requirements Review"
136
+ agents_dir: "agency-agents-zh"
137
+
138
+ llm:
139
+ provider: "deepseek" # or: claude, openai, ollama
140
+ model: "deepseek-chat"
141
+
142
+ concurrency: 2
143
+
144
+ inputs:
145
+ - name: prd_content
146
+ required: true
147
+
148
+ steps:
149
+ - id: analyze
150
+ role: "product/product-manager"
151
+ task: "Analyze this PRD and extract core requirements:\n\n{{prd_content}}"
152
+ output: requirements
153
+
154
+ - id: tech_review
155
+ role: "engineering/engineering-software-architect"
156
+ task: "Evaluate technical feasibility:\n\n{{requirements}}"
157
+ output: tech_report
158
+ depends_on: [analyze]
159
+
160
+ - id: design_review
161
+ role: "design/design-ux-researcher"
162
+ task: "Evaluate UX risks:\n\n{{requirements}}"
163
+ output: design_report
164
+ depends_on: [analyze]
165
+
166
+ - id: summary
167
+ role: "product/product-manager"
168
+ task: "Synthesize feedback:\n\n{{tech_report}}\n\n{{design_report}}"
169
+ depends_on: [tech_review, design_review]
170
+ ```
171
+
172
+ The engine automatically:
173
+ 1. Parses YAML → builds a **DAG** (directed acyclic graph)
174
+ 2. Detects parallelism — `tech_review` and `design_review` run concurrently
175
+ 3. Passes outputs between steps via `{{variables}}`
176
+ 4. Loads role definitions from [agency-agents-zh](https://github.com/jnMetaCode/agency-agents-zh) as system prompts
177
+ 5. Retries on failure (exponential backoff)
178
+ 6. Saves all outputs to `ao-output/`
179
+
180
+ ```
181
+ analyze ──→ tech_review ──→ summary
182
+ └→ design_review ──┘
183
+ (parallel)
184
+ ```
185
+
186
+ ## Features
187
+
188
+ ### AI Workflow Composer
189
+
190
+ Describe your workflow in one sentence — AI selects the right roles, designs the DAG, and generates a ready-to-run YAML:
191
+
192
+ ```bash
193
+ ao compose "PR code review covering security and performance"
194
+ ```
195
+
196
+ The AI will:
197
+ 1. Select matching roles from 186 available (e.g., Code Reviewer, Security Engineer, Performance Benchmarker)
198
+ 2. Design the DAG (3-way parallel → summary)
199
+ 3. Generate complete YAML with variable passing and task descriptions
200
+ 4. Save to `workflows/` — ready to `ao run`
201
+
202
+ Supports `--provider` and `--model` flags (default: DeepSeek).
203
+
204
+ ### Condition Branching
205
+
206
+ ```yaml
207
+ - id: tech_path
208
+ role: "engineering/engineering-sre"
209
+ task: "Technical evaluation: {{requirements}}"
210
+ depends_on: [classify]
211
+ condition: "{{job_type}} contains technical"
212
+
213
+ - id: biz_path
214
+ role: "marketing/marketing-social-media-strategist"
215
+ task: "Business evaluation: {{requirements}}"
216
+ depends_on: [classify]
217
+ condition: "{{job_type}} contains business"
218
+
219
+ - id: summary
220
+ depends_on: [tech_path, biz_path]
221
+ depends_on_mode: "any_completed" # proceeds when ANY upstream completes
222
+ ```
223
+
224
+ Supported operators: `contains`, `equals`, `not_contains`, `not_equals`.
225
+
226
+ ### Loop Iteration
227
+
228
+ ```yaml
229
+ - id: write_draft
230
+ role: "marketing/marketing-content-creator"
231
+ task: "Write article: {{topic}}"
232
+ output: draft
233
+
234
+ - id: brand_review
235
+ role: "design/design-brand-guardian"
236
+ task: "Review brand compliance: {{draft}}"
237
+ output: review_result
238
+ depends_on: [write_draft]
239
+ loop:
240
+ back_to: write_draft
241
+ max_iterations: 3
242
+ exit_condition: "{{review_result}} contains approved"
243
+ ```
244
+
245
+ When the exit condition is not met, execution loops back to `back_to`. The `{{_loop_iteration}}` variable tracks the current round.
246
+
247
+ ### Resume & Iterate
248
+
249
+ **Problem**: After `ao run` completes, all step outputs are lost. To tweak the final story, you'd have to re-run everything from scratch.
250
+
251
+ **Solution**: `--resume` reloads previous outputs. `--from` specifies where to restart.
252
+
253
+ ```bash
254
+ # Round 1: Normal run
255
+ ao run workflows/story-creation.yaml -i premise="A time travel story"
256
+
257
+ # Round 2: Characters feel flat — re-run from character_design
258
+ ao run workflows/story-creation.yaml --resume last --from character_design
259
+
260
+ # Round 3: Only rewrite the final prose
261
+ ao run workflows/story-creation.yaml --resume last --from write_story
262
+
263
+ # Round 4: Go back to a specific version
264
+ ao run workflows/story-creation.yaml --resume ao-output/<dir>/ --from write_story
265
+ ```
266
+
267
+ Each round creates a new timestamped output directory. All versions are preserved.
268
+
269
+ | Scenario | Command |
270
+ |----------|---------|
271
+ | First run | `ao run workflow.yaml -i key=value` |
272
+ | Re-run from a step | `ao run workflow.yaml --resume last --from <step-id>` |
273
+ | Re-run only failed steps | `ao run workflow.yaml --resume last` |
274
+ | Resume specific version | `ao run workflow.yaml --resume ao-output/<dir>/ --from <step-id>` |
275
+
276
+ ## 9 LLM Providers — 6 Need No API Key
277
+
278
+ **Already paying for one of these? You're ready to go:**
279
+
280
+ | You have... | Provider config | Install CLI | Cost to you |
281
+ |------------|----------------|-------------|-------------|
282
+ | Claude Max/Pro ($20/mo) | `provider: "claude-code"` | `npm i -g @anthropic-ai/claude-code` | **$0 extra** |
283
+ | Google Account | `provider: "gemini-cli"` | `npm i -g @google/gemini-cli` | **Free** (1000 req/day, Gemini 2.5 Pro) |
284
+ | GitHub Copilot ($10/mo) | `provider: "copilot-cli"` | `npm i -g @github/copilot` | **$0 extra** |
285
+ | ChatGPT Plus/Pro ($20/mo) | `provider: "codex-cli"` | `npm i -g @openai/codex` | **$0 extra** |
286
+ | OpenClaw account | `provider: "openclaw-cli"` | `npm i -g openclaw` | **$0 extra** |
287
+ | A computer | `provider: "ollama"` | [ollama.ai](https://ollama.ai) | **Free** (local models) |
288
+
289
+ **Or use traditional API keys:**
290
+
291
+ | Provider | Config | Env Variable |
292
+ |----------|--------|-------------|
293
+ | DeepSeek | `provider: "deepseek"` | `DEEPSEEK_API_KEY` |
294
+ | Claude API | `provider: "claude"` | `ANTHROPIC_API_KEY` |
295
+ | OpenAI | `provider: "openai"` | `OPENAI_API_KEY` |
296
+
297
+ All API providers support custom `base_url` and `api_key`, compatible with any OpenAI-compatible API.
298
+
299
+ ## CLI Reference
300
+
301
+ ```bash
302
+ ao demo # Zero-config multi-agent demo
303
+ ao init # Download 186 AI roles
304
+ ao init --workflow # Interactive workflow creator
305
+ ao compose "description" # AI-powered workflow generation
306
+ ao run <workflow.yaml> [options] # Execute workflow
307
+ ao validate <workflow.yaml> # Validate without running
308
+ ao plan <workflow.yaml> # Show execution plan (DAG)
309
+ ao explain <workflow.yaml> # Explain execution plan in natural language
310
+ ao roles # List all available roles
311
+ ao serve # Start MCP Server (for Claude Code / Cursor)
312
+ ```
313
+
314
+ | Option | Description |
315
+ |--------|-------------|
316
+ | `--input key=value` | Pass input variables |
317
+ | `--input key=@file` | Read variable value from file |
318
+ | `--output dir` | Output directory (default `ao-output/`) |
319
+ | `--resume <dir\|last>` | Resume from previous run |
320
+ | `--from <step-id>` | With `--resume`, restart from a specific step |
321
+ | `--watch` | Real-time terminal progress display |
322
+ | `--quiet` | Quiet mode |
323
+
324
+ ## MCP Server Mode
325
+
326
+ AI coding tools (Claude Code, Cursor, etc.) can invoke workflow operations directly via the MCP protocol:
327
+
328
+ ```bash
329
+ ao serve # Start MCP stdio server
330
+ ao serve --verbose # With debug logging
331
+ ```
332
+
333
+ Claude Code (`settings.json`):
334
+
335
+ ```json
336
+ {
337
+ "mcpServers": {
338
+ "agency-orchestrator": {
339
+ "command": "npx",
340
+ "args": ["agency-orchestrator", "serve"]
341
+ }
342
+ }
343
+ }
344
+ ```
345
+
346
+ Cursor (`.cursor/mcp.json`):
347
+
348
+ ```json
349
+ {
350
+ "mcpServers": {
351
+ "agency-orchestrator": {
352
+ "command": "npx",
353
+ "args": ["agency-orchestrator", "serve"]
354
+ }
355
+ }
356
+ }
357
+ ```
358
+
359
+ 6 tools available: `run_workflow`, `validate_workflow`, `list_workflows`, `plan_workflow`, `compose_workflow`, `list_roles`.
360
+
361
+ ## YAML Schema
362
+
363
+ ### Workflow
364
+
365
+ | Field | Type | Required | Description |
366
+ |-------|------|----------|-------------|
367
+ | `name` | string | Yes | Workflow name |
368
+ | `agents_dir` | string | Yes | Path to role definitions directory |
369
+ | `llm.provider` | string | Yes | `claude-code` / `gemini-cli` / `copilot-cli` / `codex-cli` / `openclaw-cli` / `ollama` / `claude` / `deepseek` / `openai` |
370
+ | `llm.model` | string | Yes | Model name |
371
+ | `llm.max_tokens` | number | No | Default 4096 |
372
+ | `llm.timeout` | number | No | Step timeout in ms (default 120000) |
373
+ | `llm.retry` | number | No | Retry count (default 3) |
374
+ | `concurrency` | number | No | Max parallel steps (default 2) |
375
+ | `inputs` | array | No | Input variable definitions |
376
+ | `steps` | array | Yes | Workflow steps |
377
+
378
+ ### Step
379
+
380
+ | Field | Type | Required | Description |
381
+ |-------|------|----------|-------------|
382
+ | `id` | string | Yes | Unique step identifier |
383
+ | `role` | string | Yes | Role path (e.g. `"engineering/engineering-sre"`) |
384
+ | `task` | string | Yes | Task description, supports `{{variables}}` |
385
+ | `output` | string | No | Output variable name |
386
+ | `depends_on` | string[] | No | Dependent step IDs |
387
+ | `depends_on_mode` | string | No | `"all"` (default) or `"any_completed"` |
388
+ | `condition` | string | No | Condition expression; step skipped if not met |
389
+ | `type` | string | No | `"approval"` for human approval gate |
390
+ | `prompt` | string | No | Prompt text for approval nodes |
391
+ | `loop` | object | No | Loop config |
392
+ | `loop.back_to` | string | No | Step ID to loop back to |
393
+ | `loop.max_iterations` | number | No | Max loop rounds (1-10) |
394
+ | `loop.exit_condition` | string | No | Exit condition expression |
395
+
396
+ ## Programmatic API
397
+
398
+ ```typescript
399
+ import { run } from 'agency-orchestrator';
400
+
401
+ const result = await run('workflow.yaml', {
402
+ prd_content: 'Your PRD here...',
403
+ });
404
+
405
+ console.log(result.success); // true/false
406
+ console.log(result.totalTokens); // { input: 1234, output: 5678 }
407
+ ```
408
+
409
+ ## Integrations
410
+
411
+ Works with **14 AI coding tools** — install with one command:
412
+
413
+ ```bash
414
+ ./scripts/install.sh # auto-detect installed tools
415
+ ./scripts/install.sh --tool copilot # or specify one
416
+ ```
417
+
418
+ | Tool | Config Location | Install Command | Docs |
419
+ |------|----------------|----------------|------|
420
+ | **Claude Code** | Skill mode | `npx superpowers-zh` | [Guide](./integrations/claude-code/) |
421
+ | **GitHub Copilot** | `.github/copilot-instructions.md` | `--tool copilot` | [Guide](./integrations/copilot/) |
422
+ | **Cursor** | `.cursor/rules/` | `--tool cursor` | [Guide](./integrations/cursor/) |
423
+ | **Windsurf** | `.windsurfrules` | `--tool windsurf` | [Guide](./integrations/windsurf/) |
424
+ | **Kiro** | `.kiro/steering/` | `--tool kiro` | [Guide](./integrations/kiro/) |
425
+ | **Trae** | `.trae/rules/` | `--tool trae` | [Guide](./integrations/trae/) |
426
+ | **Aider** | `CONVENTIONS.md` | `--tool aider` | [Guide](./integrations/aider/) |
427
+ | **Gemini CLI** | `GEMINI.md` | `--tool gemini-cli` | [Guide](./integrations/gemini-cli/) |
428
+ | **Codex CLI** | `.codex/instructions.md` | `--tool codex` | [Guide](./integrations/codex/) |
429
+ | **OpenCode** | `.opencode/instructions.md` | `--tool opencode` | [Guide](./integrations/opencode/) |
430
+ | **Qwen Code** | `.qwen/rules/` | `--tool qwen` | [Guide](./integrations/qwen/) |
431
+ | **DeerFlow 2.0** | `skills/custom/` | `--tool deerflow` | [Guide](./integrations/deerflow/) |
432
+ | **Antigravity** | `AGENTS.md` | `--tool antigravity` | [Guide](./integrations/antigravity/) |
433
+ | **OpenClaw** | Skill mode | `--tool openclaw` | [Guide](./integrations/openclaw/) |
434
+
435
+ ## Workflow Templates (30)
436
+
437
+ ### Dev Workflows (7)
438
+
439
+ | Template | Roles | Description |
440
+ |----------|-------|-------------|
441
+ | `dev/tech-design-review.yaml` | Architect, Backend Architect, Security Engineer, Code Reviewer | **Tech design review** (design → parallel review → verdict) |
442
+ | `dev/pr-review.yaml` | Code Reviewer, Security Engineer, Performance Benchmarker | PR review (3-way parallel → summary) |
443
+ | `dev/tech-debt-audit.yaml` | Architect, Code Reviewer, Test Analyst, Sprint Prioritizer | Tech debt audit (parallel → prioritize) |
444
+ | `dev/api-doc-gen.yaml` | Tech Writer, API Tester | API doc generation (analyze → validate → finalize) |
445
+ | `dev/readme-i18n.yaml` | Content Creator, Tech Writer | README internationalization |
446
+ | `dev/security-audit.yaml` | Security Engineer, Threat Detection Engineer | Security audit (parallel → report) |
447
+ | `dev/release-checklist.yaml` | SRE, Performance Benchmarker, Security Engineer, PM | Release Go/No-Go decision |
448
+
449
+ ### Marketing Workflows (3)
450
+
451
+ | Template | Roles | Description |
452
+ |----------|-------|-------------|
453
+ | `marketing/competitor-analysis.yaml` | Trend Researcher, Analyst, SEO Specialist, Executive Summary | **Competitor analysis** (research → parallel analysis → summary) |
454
+ | `marketing/xiaohongshu-content.yaml` | Xiaohongshu Expert, Creator, Visual Storyteller, Operator | **Xiaohongshu content** (topic → parallel creation → optimize) |
455
+ | `marketing/seo-content-matrix.yaml` | SEO Specialist, Strategist, Content Creator | **SEO content matrix** (keywords → strategy → batch generate → review) |
456
+
457
+ ### Data / Design / Ops Workflows (7)
458
+
459
+ | Template | Roles | Description |
460
+ |----------|-------|-------------|
461
+ | `data/data-pipeline-review.yaml` | Data Engineer, DB Optimizer, Data Analyst | Data pipeline review |
462
+ | `data/dashboard-design.yaml` | Data Analyst, UX Researcher, UI Designer | Dashboard design |
463
+ | `design/requirement-to-plan.yaml` | PM, Architect, Project Manager | Requirements → tech design → task breakdown |
464
+ | `design/ux-review.yaml` | UX Researcher, Accessibility Auditor, UX Architect | UX review |
465
+ | `ops/incident-postmortem.yaml` | Incident Commander, SRE, PM | Incident postmortem |
466
+ | `ops/sre-health-check.yaml` | SRE, Performance Benchmarker, Infra Ops | SRE health check (3-way parallel) |
467
+ | `ops/weekly-report.yaml` | Meeting Assistant, Content Creator, Executive Summary | **Weekly/monthly report** (organize → highlights → finalize) |
468
+
469
+ ### Strategy / Legal / HR Workflows (3)
470
+
471
+ | Template | Roles | Description |
472
+ |----------|-------|-------------|
473
+ | `strategy/business-plan.yaml` | Trend Researcher, Financial Forecaster, PM, Executive Summary | **Business plan** (market → parallel analysis → integrate) |
474
+ | `legal/contract-review.yaml` | Contract Reviewer, Legal Compliance | **Contract review** (clause analysis → compliance → opinion) |
475
+ | `hr/interview-questions.yaml` | Recruiter, Psychologist, Backend Architect | **Interview questions** (dimensions → parallel design → scorecard) |
476
+
477
+ ### General Workflows (10)
478
+
479
+ | Template | Roles | Description |
480
+ |----------|-------|-------------|
481
+ | `product-review.yaml` | PM, Architect, UX Researcher | Product requirements review |
482
+ | `content-pipeline.yaml` | Strategist, Creator, Growth Hacker | Content creation pipeline |
483
+ | `story-creation.yaml` | Narratologist, Psychologist, Narrative Designer, Creator | Collaborative fiction (4 roles) |
484
+ | `ai-opinion-article.yaml` | Trend Researcher, Narrative Designer, Psychologist, Creator | AI opinion long-form article |
485
+ | `department-collab/code-review.yaml` | Code Reviewer, Security Engineer | Code review (review loop) |
486
+ | `department-collab/hiring-pipeline.yaml` | HR, Tech Interviewer, Biz Interviewer | Hiring pipeline |
487
+ | `department-collab/content-publish.yaml` | Content Creator, Brand Guardian | Content publishing (review loop) |
488
+ | `department-collab/incident-response.yaml` | SRE, Security Engineer, Backend Architect | Incident response |
489
+ | `department-collab/marketing-campaign.yaml` | Strategist, Creator, Approver | Marketing campaign (human approval) |
490
+ | `department-collab/ceo-org-delegation.yaml` | CEO, Engineering/Marketing/Product/HR Leads | **CEO org delegation** (decide → parallel depts → summary) |
491
+
492
+ ## Output Structure
493
+
494
+ Each run saves to `ao-output/<name>-<timestamp>/`:
495
+
496
+ ```
497
+ ao-output/product-review-2026-03-22/
498
+ ├── summary.md # Final step output
499
+ ├── steps/
500
+ │ ├── 1-analyze.md
501
+ │ ├── 2-tech_review.md
502
+ │ ├── 3-design_review.md
503
+ │ └── 4-summary.md
504
+ └── metadata.json # Timing, token usage, step states
505
+ ```
506
+
507
+ ## Ecosystem
508
+
509
+ ```
510
+ Your AI subscription ──→ agency-orchestrator ──→ 186 expert roles collaborate ──→ quality output
511
+
512
+ ┌────────────────┼────────────────┐
513
+ ▼ ▼ ▼
514
+ 14 AI Coding Tools CLI Mode MCP Server
515
+ (Cursor/Claude Code (automation/ (Claude Code/
516
+ /Copilot/...) CI/CD) Cursor direct)
517
+ ```
518
+
519
+ | Project | Description |
520
+ |---------|-------------|
521
+ | [agency-agents-zh](https://github.com/jnMetaCode/agency-agents-zh) | 186 AI role definitions — the role library for this engine |
522
+ | [superpowers-zh](https://github.com/jnMetaCode/superpowers-zh) | AI coding superpowers — 20 skills for Claude Code / Cursor |
523
+ | [shellward](https://github.com/jnMetaCode/shellward) | AI agent security middleware — prompt injection detection, DLP, command safety |
524
+
525
+ ## Roadmap
526
+
527
+ - [x] **v0.1** — YAML workflows, DAG engine, 4 LLM connectors, CLI, streaming output
528
+ - [x] **v0.2** — Condition branching, loop iteration, human approval, Resume, 5 department-collab templates
529
+ - [x] **v0.3** — 9 AI tool integrations, 20+ workflow templates, `ao explain`, `ao init --workflow`, `--watch` mode
530
+ - [x] **v0.4** — MCP Server mode (`ao serve`), 14 AI tool integrations, one-command installer, 30 workflow templates, **9 LLM providers (6 need no API key: Claude Code / Gemini / Copilot / Codex / OpenClaw / Ollama)**
531
+ - [ ] **v0.5** — Web UI, visual DAG editor, English role support, workflow marketplace
532
+
533
+ ## Contributing
534
+
535
+ See [CONTRIBUTING.md](./CONTRIBUTING.md). PRs welcome!
536
+
537
+ ## License
538
+
539
+ [Apache-2.0](./LICENSE)