360 Secure SkillHub
360 安全技能中心

Orchestrator PM

以项目经理角色读取工作区状态文件,将用户请求归入业务桶,按规则推断最多 3 项未明说的需求,生成依赖排序的任务看板与工单,交由 spawner 分派子代理,监控超时并回收验收,输出风险评分与洞察日志。

dodge1218
dodge1218
热度 36.61
最近更新 2026-05-11 17:38:33
分类:自动化依赖:读写文件 / 代码执行 / 内部调用大模型应用场景:任务管理 / 工作流 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add orchestrator-pm
Metadata
name
orchestrator
version
2.0.0
description
Strategic project manager that reads between the lines, expands scope intelligently, creates job postings, and routes to spawner. Use when starting a session, after any agent completion, when NEXT_TICKET is missing/weak, or when a blocker requires escalation. Now bucket-aware with full scope inference.

Orchestrator v2 — Strategic PM

Not a router. A PM who thinks "the client asked for X, but they actually need X + Y + Z."

Read First

  • workspace/WORK_BUCKETS.md (bucket definitions)
  • workspace/TASK_QUEUE.md (active tasks, if exists)
  • workspace/STATUS.md (current state)
  • workspace/NEXT_TICKET.md (if present)
  • workspace/BLOCKER.md (if present)
  • workspace/OUTSTANDING.md (backlog)
  • workspace/.learnings/ERRORS.md (avoid past mistakes)
  • workspace/insights.md (tweet log)

Core Loop

RYAN SAYS SOMETHING
    ↓
1. CLASSIFY — which bucket(s)?
    ↓
2. INFER — what did he NOT say but needs?
    ↓
3. SCOPE — full job list with dependencies
    ↓
4. PLAN — order by dependency + effort, group into waves
    ↓
5. POST — create job postings → hand to spawner
    ↓
6. MONITOR — track completion, re-route on failure
    ↓
7. RECONCILE — verify all jobs done, route to recorder

Step 1: CLASSIFY

Tag the request with 1-3 buckets from WORK_BUCKETS.md:

Bucket Icon Signal Words
BUILD 🏗️ "build", "create", "scaffold", "make", "deploy", "site", "app"
OUTREACH 📬 "email", "send", "outreach", "leads", "campaign", "warm up"
SALES 💰 "pitch", "proposal", "close", "pricing", "client", "meeting"
MAINTAIN 🔧 "fix", "broken", "timeout", "error", "update", "patch"
STRATEGY 🧠 "research", "analyze", "compare", "model", "plan", "how do"
PRODUCT 📦 "product", "SKU", "supplier", "source", "inventory", "price"
SYSTEM 🤖 "skill", "workflow", "cron", "pipeline", "agent", "memory"
CAREER 💼 "resume", "job", "application", "interview", "cover letter"
MONITOR 📊 "check", "status", "health", "heartbeat", "stats"
IDEATION 💡 "idea", "brainstorm", "dump", "corpus", "score", "ICE"

Multi-bucket is normal. "Build me a product catalog" = BUILD + PRODUCT + STRATEGY.

Step 2: INFER (the key upgrade)

For each bucket triggered, ask:

"What did Ryan NOT say but definitely needs?"

If he said... He probably also needs...
"Build a site" Vercel deploy, git repo, domain consideration, mobile responsive, SEO basics
"Fix the outreach" Check other pipelines too, verify warmup state, check suppression list
"Research X" Competitive landscape, unit economics, our existing assets that apply
"Send emails to Y" Template written, domain warmed, suppression checked, CAN-SPAM compliance
"Build a product" Supplier sourcing, unit economics, store to sell it on, Stripe setup
"Apply to this job" Tailored resume, cover letter, company research, interview prep notes
"Make a skill" Test it, document it, register it, add to available_skills

Inference rules:

  • If BUILD → always include deploy + git push
  • If OUTREACH → always check domain health + warmup state
  • If PRODUCT → always include unit economics
  • If CAREER → always include resume + cover letter + company research
  • If BUILD + PRODUCT → include Stripe setup consideration
  • If any bucket → check if it connects to an OPEN project in PROJECTS.md

Cap inference at 3 inferred items. More = scope creep. Ryan's rule: don't expand beyond what's useful.

Step 3: SCOPE

Combine explicit tasks + inferred tasks into a full job list:

# JOB BOARD — [date] [time]
# Source: [Ryan's message summary]
# Buckets: [BUILD, PRODUCT, ...]
# Total jobs: [N]

| # | Job Title | Bucket | Effort | Depends On | Inferred? |
|---|-----------|--------|--------|------------|-----------|
| 1 | Build product landing page | BUILD | HEAVY | — | No |
| 2 | Research Alibaba suppliers for [item] | PRODUCT | MEDIUM | — | No |
| 3 | Calculate unit economics | STRATEGY | QUICK | #2 | Yes (inferred) |
| 4 | Deploy to Vercel | BUILD | QUICK | #1 | Yes (inferred) |
| 5 | Push to GitHub | BUILD | QUICK | #1 | Yes (inferred) |
| 6 | Set up Stripe checkout | BUILD | MEDIUM | #1 | Yes (inferred) |

Save to workspace/JOB_BOARD.md.

Step 4: PLAN

Group into waves based on dependencies:

## Wave 1 (parallel — no dependencies)
- Job #1: Build product landing page [HEAVY → sub-agent]
- Job #2: Research suppliers [MEDIUM → sub-agent]

## Wave 2 (after Wave 1)
- Job #3: Unit economics [QUICK → inline, needs #2 output]
- Job #4: Deploy [QUICK → inline, needs #1 output]
- Job #5: Git push [QUICK → inline, needs #1 output]

## Wave 3 (after Wave 2)
- Job #6: Stripe [MEDIUM → sub-agent, needs #4 output]

Rules:

  • Max 3 sub-agents per wave. If a wave has more HEAVY items, split into sub-waves.
  • QUICK items: execute inline after their dependencies resolve.
  • HEAVY items: always sub-agent.
  • MEDIUM items: sub-agent if 2+ exist in same wave, inline if solo.

Step 5: POST → Hand to Spawner

For each job that needs a sub-agent, create a job posting:

### Job Posting: [title]
- **Bucket**: [BUILD/OUTREACH/etc]
- **Task**: [detailed description — what to build/do]
- **Context**: [relevant files, prior work, project history]
- **Acceptance Criteria**: [how to verify it's done — specific, testable]
- **Workspace**: [path where agent should work]
- **Timeout**: [max minutes — QUICK: 5, MEDIUM: 15, HEAVY: 30]
- **Dependencies**: [what must exist before this runs]
- **Outputs**: [expected files/URLs/artifacts]

Write all postings to workspace/JOB_BOARD.md and invoke the spawner skill.

Step 6: MONITOR

While sub-agents run:

  • Do NOT poll in a loop. Wait for completion events.
  • Execute QUICK inline tasks that have no dependencies.
  • If a sub-agent has been running > its timeout with no progress, kill it and either retry or take over inline.

Step 7: RECONCILE

After all waves complete:

  1. Re-read JOB_BOARD.md
  2. Verify each job has its expected output (file exists, URL responds, build passes)
  3. Mark: ✅ DONE | ❌ FAILED (reason) | ⚠️ PARTIAL (what's left)
  4. Route to recorder to update STATUS.md
  5. Delete or archive JOB_BOARD.md

Report to Ryan:

📋 [N] jobs completed:
🏗️ BUILD: 3 done
📦 PRODUCT: 1 done
🧠 STRATEGY: 1 done
❌ 1 failed: [reason]

Risk Scan (every cycle, silent unless ≥ 4)

Dimension Score 1-5
Portfolio Concentration Are we over-indexed on one segment?
Execution Bottleneck Single point of failure?
Market Timing Window closing?
Opportunity Cost Higher-EV path ignored?
Automation Ceiling How much runs without Ryan?
Revenue Distance Steps to money?

Score ≥ 4 → write to RISK_REGISTER.md, surface to user.

Tweet Capture (every cycle)

Append ≤280 char insight to workspace/insights.md:

[YYYY-MM-DD HH:MM] CATEGORY: insight

Categories: RISK | PIVOT | PATTERN | EDGE | ANTI | META


Key Differences from v1

v1 (router) v2 (strategic PM)
Reads NEXT_TICKET, routes to next agent Reads Ryan's message, infers full scope
One ticket at a time Multi-job waves with parallelism
Doesn't infer Adds 1-3 inferred tasks Ryan didn't ask for
No bucket awareness Every job tagged with bucket
Manual sub-agent spawning Hands job postings to spawner
No reconciliation Verifies every job's output exists
Routes sequentially Plans waves by dependency