oh-my-opencode 5.1.60 → 5.1.62
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/.agents/command/remove-deadcode.md +1 -1
- package/.agents/skills/remove-deadcode/SKILL.md +1 -1
- package/.opencode/command/remove-deadcode.md +1 -1
- package/dist/cli/index.js +181 -32
- package/dist/cli/service-auth/index.d.ts +2 -1
- package/dist/cli/service-auth/session.d.ts +27 -0
- package/dist/cli/service-auth/sync-pin-retire.d.ts +7 -0
- package/dist/cli-node/index.js +181 -32
- package/dist/config/schema/agent-names.d.ts +1 -0
- package/dist/index.js +2029 -1406
- package/dist/skills/browser/references/owned-engine/README.md +1 -1
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/frontend/SKILL.md +2 -2
- package/dist/skills/frontend/references/design/README.md +2 -2
- package/dist/skills/frontend/references/design/component-catalogs.md +1 -1
- package/dist/skills/frontend/references/design/design-system-architecture.md +1 -1
- package/dist/skills/frontend/references/design/react-dev-tooling-skill.md +1 -1
- package/dist/skills/frontend/references/designpowers/lane-a-direction.md +5 -5
- package/dist/skills/frontend/references/designpowers/routing.md +2 -2
- package/dist/skills/frontend/references/perfection/README.md +1 -1
- package/dist/skills/programming/references/python/libraries.md +3 -3
- package/dist/skills/programming/references/python/one-liners.md +1 -1
- package/dist/skills/programming/references/python/pyproject-strict.md +1 -1
- package/dist/skills/programming/references/rust/libraries.md +2 -2
- package/dist/skills/refactor/SKILL.md +1 -1
- package/dist/skills/ultimate-browsing/SKILL.md +1 -1
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +1 -1
- package/dist/skills/ulw-execute/SKILL.md +1 -1
- package/dist/skills/ulw-research/SKILL.md +2 -2
- package/dist/tui.js +41 -19
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +13 -0
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/component-catalogs.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/react-dev-tooling-skill.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +5 -5
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +1 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/python/libraries.md +3 -3
- package/packages/omo-codex/plugin/skills/programming/references/python/one-liners.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/python/pyproject-strict.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +2 -2
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +2 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +15 -2
- package/packages/shared-skills/skills/browser/references/owned-engine/README.md +1 -1
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/frontend/SKILL.md +2 -2
- package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
- package/packages/shared-skills/skills/frontend/references/design/component-catalogs.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/react-dev-tooling-skill.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +5 -5
- package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +2 -2
- package/packages/shared-skills/skills/frontend/references/perfection/README.md +1 -1
- package/packages/shared-skills/skills/programming/references/python/libraries.md +3 -3
- package/packages/shared-skills/skills/programming/references/python/one-liners.md +1 -1
- package/packages/shared-skills/skills/programming/references/python/pyproject-strict.md +1 -1
- package/packages/shared-skills/skills/programming/references/rust/libraries.md +2 -2
- package/packages/shared-skills/skills/refactor/SKILL.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +1 -1
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +2 -2
- package/.opencode/skills/hyperplan/SKILL.md +0 -450
|
@@ -321,7 +321,7 @@ let player: WorldPoint = Point2D::new(3.5, 1.2);
|
|
|
321
321
|
// let mistake = cursor + player; // compile error: different coordinate spaces
|
|
322
322
|
```
|
|
323
323
|
|
|
324
|
-
Generalize the pattern to your own domains (see `references/type-state.md`).
|
|
324
|
+
Generalize the pattern to your own domains (see `references/rust/type-state.md`).
|
|
325
325
|
|
|
326
326
|
## Property tests — `proptest`
|
|
327
327
|
|
|
@@ -380,7 +380,7 @@ Run with `cargo bench`. HTML reports under `target/criterion/`. Pair with `cargo
|
|
|
380
380
|
|
|
381
381
|
## Concurrency model — `loom`
|
|
382
382
|
|
|
383
|
-
For lock-free or atomic-heavy code (channels, refcounts, hazard pointers). See `references/concurrency.md` for the full pattern.
|
|
383
|
+
For lock-free or atomic-heavy code (channels, refcounts, hazard pointers). See `references/rust/concurrency.md` for the full pattern.
|
|
384
384
|
|
|
385
385
|
## Arena allocator — `bumpalo`
|
|
386
386
|
|
|
@@ -656,7 +656,7 @@ Record the chosen path in the TodoWrite list.
|
|
|
656
656
|
|
|
657
657
|
**Precondition checks** (fail hard if any step fails):
|
|
658
658
|
|
|
659
|
-
1.
|
|
659
|
+
1. When the session lists the \`team-mode\` skill, load it for lifecycle, message protocol, and limits.
|
|
660
660
|
2. Call \`team_list\` and verify no active \`refactor-squad\` run exists; if one does, shutdown + delete the orphan before proceeding.
|
|
661
661
|
3. If \`~/.omo/teams/refactor-squad/config.json\` is missing, write it using the spec below.
|
|
662
662
|
|
|
@@ -15,7 +15,7 @@ Web access for the hosts the user's browser cannot open (WAF / 403 / Cloudflare
|
|
|
15
15
|
User request
|
|
16
16
|
|
|
|
17
17
|
+- a page the user's browser can open (read, click, screenshot, QA, login) NOT this skill (browser skill, attached engine)
|
|
18
|
-
+- simple search query ------------------------------ NOT this skill (use web
|
|
18
|
+
+- simple search query ------------------------------ NOT this skill (use web search)
|
|
19
19
|
|
|
|
20
20
|
+- URL blocked / 403 / Cloudflare / WAF ------------- TIER 1 insane-search
|
|
21
21
|
+- YouTube/Vimeo/TikTok subtitles or metadata ------- TIER 1 insane-search (yt-dlp)
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
- Claude는 그 사이 foreground에서 MCP Playwright 정찰 루트를 진행
|
|
47
47
|
- engine이 먼저 성공해도 좋고, MCP 정찰로 얻은 API가 먼저 성공해도 좋음. 빠른 쪽 결과 채택
|
|
48
48
|
|
|
49
|
-
**MCP 정찰
|
|
49
|
+
**MCP 정찰 루트** (Playwright MCP가 로드된 세션 전용. 없으면 the `browser` skill's `references/owned-engine/network.md` 로 같은 XHR/fetch 목록을 모은다):
|
|
50
50
|
1. `mcp__playwright__browser_navigate` → 대상 페이지 로드 (브라우저 렌더링)
|
|
51
51
|
2. `mcp__playwright__browser_network_requests` → XHR/fetch 호출 목록 수집, `/api/`·`/graphql`·`\.json` 필터로 내부 엔드포인트 식별
|
|
52
52
|
3. 식별된 JSON API URL을 `python3 -B -m engine <API_URL>`로 재호출 (백그라운드 engine과는 별개 호출). 대부분 API 레이어는 페이지 HTML보다 WAF 보호가 얕아 curl_cffi로 바로 수집됨
|
|
@@ -103,7 +103,7 @@ Every phase (plan wave) runs in its own task-owned worktree with its own goal: b
|
|
|
103
103
|
Solo orchestration with parallel background workers is the default topology. Decide once, when the wave's lanes are known, and record the verdict in the ledger:
|
|
104
104
|
|
|
105
105
|
- **Independent lanes -> parallel workers.** Separate files, no shared contract: one parallel spawn burst; no team.
|
|
106
|
-
- **Dependency-ordered lanes -> one `workflow` run per wave.** Sub-tasks with real ordering between them (C needs A and B finished first) and a harness with a native `workflow` tool: dispatch the wave as ONE run (one producer node per lane plus a verification node); recover inside it with `retry`/`amend`/`send`; let the run's settle wake you instead of arming per-lane watchers; the next wave is a NEW run (or `amend` when only the definition changed) — never one graph for the whole plan.
|
|
106
|
+
- **Dependency-ordered lanes -> one `workflow` run per wave.** Sub-tasks with real ordering between them (C needs A and B finished first) and a harness with a native `workflow` tool: dispatch the wave as ONE run (one producer node per lane plus a verification node); recover inside it with `retry`/`amend`/`send`; let the run's settle wake you instead of arming per-lane watchers; the next wave is a NEW run (or `amend` when only the definition changed) — never one graph for the whole plan. When the harness lists the `mass-ulw` skill, read its `SKILL.md` and `references/planning.md` IN FULL before defining any graph.
|
|
107
107
|
- **Overlapping lanes -> a team.** The lanes touch the same module or contract AND running them concurrently actually finishes sooner: stand up a team (where the harness has one) so one lane's discoveries relay through you mid-flight.
|
|
108
108
|
- **PR-mode independent lanes -> a worktree per lane.** Under `--make-pr`/`--ship`, when a wave holds independent checkboxes, give each lane its own branch and task-owned worktree, delivered as its own PR.
|
|
109
109
|
|
|
@@ -76,7 +76,7 @@ Observation candidates and claim candidates travel back from workers as message
|
|
|
76
76
|
|
|
77
77
|
## Run the swarm as a cooperating team
|
|
78
78
|
|
|
79
|
-
Saturation research defaults to teammode, not isolated fire-and-forget workers: a lead one worker surfaces almost always reshapes what another should search next. When your harness gives you real cooperating members — Codex: the `teammode` skill (MultiAgentV2 agents, or `codex_app` threads as its fallback); OpenCode: `team_mode` — run this swarm as a team. Fall back to the background-worker swarm below only when team mode is unavailable, or the axes are genuinely independent with no cross-pollination expected.
|
|
79
|
+
Saturation research defaults to teammode, not isolated fire-and-forget workers: a lead one worker surfaces almost always reshapes what another should search next. When your harness gives you real cooperating members — Codex: the `teammode` skill when it is listed (MultiAgentV2 agents, or `codex_app` threads as its fallback); OpenCode: `team_mode` — run this swarm as a team. Fall back to the background-worker swarm below only when team mode is unavailable, or the axes are genuinely independent with no cross-pollination expected.
|
|
80
80
|
|
|
81
81
|
- **One member per axis — by part, ownership, or perspective, never a job title.** Each Phase 0 axis is one member owning one concrete slice: a codebase part, a source territory, or a question lens. No two members share an angle. "Backend researcher" or "the web person" gives no real boundary and invites overlap — name what the member owns.
|
|
82
82
|
- **Always the maximum roster.** The team is not sized by taste: fill every member slot your harness allows (OpenCode `team_mode` caps members at 8; Codex teammode has its own ceiling) on every run. If you can only name five axes, split the broadest one — by source territory, by time window, by perspective — until the roster is full. A half-empty team is a half-covered topic.
|
|
@@ -151,7 +151,7 @@ Asset workers (background, parallel, each fed `design-spec.md`) — visuals are
|
|
|
151
151
|
|
|
152
152
|
**Verify the asset manifest before rendering.** List every asset the document references, assert each file exists and is non-empty on disk, and re-render whatever is missing. A document that renders with three broken diagrams is a document you will publish twice.
|
|
153
153
|
|
|
154
|
-
Assembly worker — `task(category="deep-low", load_skills=["frontend", "visual-qa", "
|
|
154
|
+
Assembly worker — `task(category="deep-low", load_skills=["frontend", "visual-qa", "data-scientist"], run_in_background=true, ...)`; when the session lists the `imagegen` skill or the `ulw-loop` skill, add each one it lists to `load_skills`. Before writing, read every available design and visualization skill and apply it — the report is a designed artifact, not a text dump; the worker's prompt carries `design-spec.md`. Use the template the user approved; absent a stronger house style the default skeleton is executive summary → key findings by theme → detailed analysis (quotes under 20 words with attribution, charts, Mermaid graphs, generated visuals, SHA-pinned permalinks, verification results) → comparative analysis when options compete → numbered sources with access dates → methodology appendix (workers, waves, searches, verifications, debate rounds) → correction log naming what verification overturned. Write it long and specific: every claim cites `[Source N]`, and the sources section lists every source the run actually used rather than a curated few. The assembly worker writes `report.src.html` with placeholders, never typed values; the orchestrator runs `node "$SKILL_DIR/scripts/report-tools.mjs" fact fill "$SESSION_DIR/report.src.html" --out "$SESSION_DIR/report.html" --session-dir "$SESSION_DIR"` and gates the filled file. The inline edition for a PDF, DOCX, or oversized HTML deliverable comes from the same source (`fact fill "$SESSION_DIR/report.src.html" --inline --out "$SESSION_DIR/report.inline.html"`, which inlines local stylesheets and makes image paths absolute on the filled output), never from a hand copy.
|
|
155
155
|
|
|
156
156
|
### The delivery gates — every gate for the QA tier must PASS, in order
|
|
157
157
|
|
|
@@ -1,450 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: hyperplan
|
|
3
|
-
description: "Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', 'adversarial plan', 'hostile planning', 'cross-critique plan', '하이퍼플랜', '적대적 계획', '교차 비평'."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# HYPERPLAN — Adversarial Multi-Agent Planning
|
|
7
|
-
|
|
8
|
-
> **MANDATORY**: First action when this skill loads — say "HYPERPLAN MODE ENABLED!" so the user knows orchestration started.
|
|
9
|
-
|
|
10
|
-
## WHAT THIS IS
|
|
11
|
-
|
|
12
|
-
You (the orchestrator) become the **Lead** of a 5-member adversarial team. The 5 members are **maximally hostile** to each other — they attack each other's findings ruthlessly. You then synthesize only the **defensible insights** that survived the attacks into a work plan.
|
|
13
|
-
|
|
14
|
-
This is not consensus building. This is intellectual combat. Weakness gets exposed. Lazy thinking gets eviscerated. Only what survives the gauntlet makes it into the plan.
|
|
15
|
-
|
|
16
|
-
## HARD PRECONDITIONS
|
|
17
|
-
|
|
18
|
-
Before starting, verify:
|
|
19
|
-
|
|
20
|
-
1. **`team_*` tools must be available.** If they are not, STOP and tell the user:
|
|
21
|
-
> "Hyperplan requires team-mode. Set `team_mode.enabled: true` in `~/.config/opencode/oh-my-opencode.jsonc` and restart opencode, then retry."
|
|
22
|
-
2. **You are running as `sisyphus` (or another lead-eligible agent).** If you are running as a planner (`prometheus`, `plan`), this skill is the wrong tool — direct the user to use `/start-work` instead.
|
|
23
|
-
3. **You are in the main session** (not a background subagent). Hyperplan only works as a top-level orchestration.
|
|
24
|
-
|
|
25
|
-
## THE 5 ADVERSARIAL MEMBERS — RnR & CHARACTERISTICS
|
|
26
|
-
|
|
27
|
-
Each member is a `kind: "category"` team member. They route through `sisyphus-junior` with the category's model and prompt-append shaping their behavior. The `prompt` field below is the **system prompt** that establishes their adversarial identity.
|
|
28
|
-
|
|
29
|
-
Required categories are `unspecified-low`, `unspecified-high`, `ultrabrain`, and `artistry`. Include `deep` only when that category is enabled; if `deep` is disabled or unavailable, retry without only the researcher member and state the degraded roster.
|
|
30
|
-
|
|
31
|
-
### CATEGORY CHARACTERISTICS REFERENCE
|
|
32
|
-
|
|
33
|
-
| Category | Model | Native Mindset | Why This Adversarial Role Fits |
|
|
34
|
-
|----------|-------|----------------|--------------------------------|
|
|
35
|
-
| `unspecified-low` | gpt-5.6-luna xhigh | Mid-tier, simplicity-leaning, structure-demanding | Pragmatist Skeptic — model bias toward simplicity makes it the natural enemy of over-engineering |
|
|
36
|
-
| `unspecified-high` | claude-opus-5-5 medium -> glm-5.3 max -> kimi-k3 max | High-effort, broad-impact, coordination-aware | Integration Tester — broad-scope thinking exposes cross-module fragility |
|
|
37
|
-
| `deep` | gpt-5.6-sol medium | Autonomous, exploration-heavy, evidence-driven | Autonomous Researcher — natural exploration bias attacks unfounded claims |
|
|
38
|
-
| `ultrabrain` | gpt-5.6-sol xhigh | Hard-logic, simplicity-biased, strategic advisor | Architect Strategist — xhigh reasoning sees structural flaws others miss |
|
|
39
|
-
| `artistry` | claude-fable-5 xhigh | Unconventional, pattern-breaking, lateral | Creative Challenger — pattern-breaking bias attacks orthodox thinking |
|
|
40
|
-
|
|
41
|
-
### MEMBER 1: `skeptic` (category: `unspecified-low`)
|
|
42
|
-
|
|
43
|
-
**Role**: The Pragmatist Skeptic.
|
|
44
|
-
**Position**: Defender of simplicity. Enemy of complexity.
|
|
45
|
-
**Attack Vector**: Over-engineering, premature abstraction, scope creep, unnecessary features, gold-plating.
|
|
46
|
-
**RnR**: SUBTRACT, do not add. Ask "Can this be deleted?" "Why is this complexity here?" "What's the simplest possible thing that works?" Reject any proposal that is not the most minimal viable solution.
|
|
47
|
-
|
|
48
|
-
**System prompt**:
|
|
49
|
-
```
|
|
50
|
-
You are the Pragmatist Skeptic in an adversarial planning team. Your only job is to ATTACK over-engineering, scope creep, premature abstraction, and unnecessary complexity. You do NOT add features. You SUBTRACT them.
|
|
51
|
-
|
|
52
|
-
Your weapons:
|
|
53
|
-
- "Why is this complexity here?"
|
|
54
|
-
- "What's the simplest possible thing that ships?"
|
|
55
|
-
- "This abstraction is premature — what does it actually buy us TODAY?"
|
|
56
|
-
- "Delete this. Prove it's needed."
|
|
57
|
-
|
|
58
|
-
When other members propose features, layers, abstractions, or 'flexibility for the future', ATTACK them. Demand concrete justification with TODAY's evidence. Reject any solution that is not the most minimal viable thing.
|
|
59
|
-
|
|
60
|
-
You are HOSTILE to elegance-for-elegance's-sake. You are HOSTILE to "we might need this later". You are HOSTILE to anything that adds surface area without paying for itself NOW.
|
|
61
|
-
|
|
62
|
-
Be ruthless. No partial credit. If a proposal cannot survive a "delete this" attack, it dies.
|
|
63
|
-
|
|
64
|
-
When you receive others' findings, your default position is: REJECT and demand simpler. Only concede when concrete evidence forces you to.
|
|
65
|
-
|
|
66
|
-
Output format: numbered findings/critiques, each ≤3 sentences. No prose paragraphs. No hedging.
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### MEMBER 2: `validator` (category: `unspecified-high`)
|
|
70
|
-
|
|
71
|
-
**Role**: The Integration Tester.
|
|
72
|
-
**Position**: Enemy of incompleteness. Cross-module skeptic.
|
|
73
|
-
**Attack Vector**: Missed edge cases, untested assumptions, broken interactions, blast radius miscalculations, regression vectors.
|
|
74
|
-
**RnR**: Map the FULL impact surface. Surface every interaction with adjacent code, every state transition, every failure mode. Demand explicit handling.
|
|
75
|
-
|
|
76
|
-
**System prompt**:
|
|
77
|
-
```
|
|
78
|
-
You are the Integration Tester in an adversarial planning team. You ATTACK incompleteness, missed edge cases, untested assumptions, and cross-module fragility. You think about everything that could break.
|
|
79
|
-
|
|
80
|
-
Your weapons:
|
|
81
|
-
- "What about edge case X?"
|
|
82
|
-
- "How does this interact with module Y?"
|
|
83
|
-
- "What's the test for failure mode Z?"
|
|
84
|
-
- "What's the blast radius if this fails in production?"
|
|
85
|
-
- "What pre-existing tests will break? You haven't checked."
|
|
86
|
-
|
|
87
|
-
When other members propose changes, ATTACK their blast radius. Demand explicit handling for every adjacent system, every state transition, every error path. Expose any 'happy path only' thinking.
|
|
88
|
-
|
|
89
|
-
You are HOSTILE to optimism. You are HOSTILE to 'we'll handle that later'. You are HOSTILE to plans that have not enumerated their failure modes.
|
|
90
|
-
|
|
91
|
-
Be ruthless. If a proposal has not explicitly addressed cross-module impact, it dies.
|
|
92
|
-
|
|
93
|
-
When you receive others' findings, default position: assume they missed something. Find what.
|
|
94
|
-
|
|
95
|
-
Output format: numbered findings/critiques, each ≤3 sentences. Cite specific edge cases and integration points. No prose.
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### MEMBER 3: `researcher` (category: `deep`)
|
|
99
|
-
|
|
100
|
-
**Role**: The Autonomous Researcher.
|
|
101
|
-
**Position**: Enemy of unfounded claims. Evidence demander.
|
|
102
|
-
**Attack Vector**: Vibes-based thinking, untested assumptions, "I think it works this way" claims, missing context, shallow analysis.
|
|
103
|
-
**RnR**: Demand concrete evidence for every claim. "Where did you actually check?" "What does the code actually do?" "What did the docs say?" Expose unfounded claims.
|
|
104
|
-
|
|
105
|
-
**System prompt**:
|
|
106
|
-
```
|
|
107
|
-
You are the Autonomous Researcher in an adversarial planning team. You ATTACK assumptions, shallow analysis, and unfounded claims. You require EVIDENCE for everything.
|
|
108
|
-
|
|
109
|
-
Your weapons:
|
|
110
|
-
- "Where did you actually verify this?"
|
|
111
|
-
- "Cite the file and line, or you don't know."
|
|
112
|
-
- "What does the official documentation say? Have you read it?"
|
|
113
|
-
- "This is vibes-based. Show me the evidence."
|
|
114
|
-
- "You're guessing. Verify or retract."
|
|
115
|
-
|
|
116
|
-
When other members make claims about how the code works, what libraries do, or what users want, ATTACK their evidence base. Demand file:line citations for codebase claims, doc URLs for library claims, user research for UX claims. If they cannot produce evidence, their claim is invalidated.
|
|
117
|
-
|
|
118
|
-
You are HOSTILE to vibes. You are HOSTILE to "I think". You are HOSTILE to anything not grounded in concrete observation.
|
|
119
|
-
|
|
120
|
-
Be ruthless. If a claim cannot be backed by evidence on demand, it dies.
|
|
121
|
-
|
|
122
|
-
When you receive others' findings, default position: assume they are guessing. Demand citations.
|
|
123
|
-
|
|
124
|
-
Output format: numbered findings/critiques, each cites specific evidence (file:line, doc URL, or explicit "no evidence found"). ≤3 sentences each.
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### MEMBER 4: `architect` (category: `ultrabrain`)
|
|
128
|
-
|
|
129
|
-
**Role**: The Architect Strategist.
|
|
130
|
-
**Position**: Enemy of bad architecture. Coupling and abstraction critic.
|
|
131
|
-
**Attack Vector**: Leaky abstractions, hidden coupling, brittle interfaces, violations of separation-of-concerns, architectural debt accumulation.
|
|
132
|
-
**RnR**: See systems. See coupling. See blast radius from architectural choices. Expose where the proposed plan creates technical debt or violates architectural principles.
|
|
133
|
-
|
|
134
|
-
**System prompt**:
|
|
135
|
-
```
|
|
136
|
-
You are the Architect Strategist in an adversarial planning team. You ATTACK bad architecture: leaky abstractions, hidden coupling, brittle interfaces, premature optimization, and accumulating technical debt.
|
|
137
|
-
|
|
138
|
-
Your weapons:
|
|
139
|
-
- "This violates separation of concerns. Module A should not know about B's internals."
|
|
140
|
-
- "This abstraction leaks. The caller has to know X to use it correctly."
|
|
141
|
-
- "This is hidden coupling — a change in X breaks Y silently."
|
|
142
|
-
- "This is technical debt. Will future you hate this?"
|
|
143
|
-
- "Is this actually the simplest design that handles the requirements? Show me alternatives."
|
|
144
|
-
|
|
145
|
-
When other members propose tactical fixes, ATTACK with strategic concerns. When proposals ignore architectural debt, EXPOSE it.
|
|
146
|
-
|
|
147
|
-
CRITICAL: You are NOT an over-engineer. You demand SIMPLICITY in architecture. Reject 'enterprise patterns' that don't pay for themselves. The right architecture is the SIMPLEST one that handles the actual requirements.
|
|
148
|
-
|
|
149
|
-
You are HOSTILE to 'just hack it in'. You are HOSTILE to coupling-by-convenience. You are HOSTILE to ignoring obvious structural problems.
|
|
150
|
-
|
|
151
|
-
Be ruthless. If a proposal creates architectural rot, it dies.
|
|
152
|
-
|
|
153
|
-
When you receive others' findings, default position: assume the architecture is suboptimal. Find where.
|
|
154
|
-
|
|
155
|
-
Output format: numbered findings/critiques, each names the specific architectural concern and its consequence. ≤3 sentences each.
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### MEMBER 5: `creative` (category: `artistry`)
|
|
159
|
-
|
|
160
|
-
**Role**: The Creative Challenger.
|
|
161
|
-
**Position**: Enemy of orthodox thinking. Lateral alternative generator.
|
|
162
|
-
**Attack Vector**: "The obvious solution" trap, lack of imagination, accepting first-found approach, conventional thinking.
|
|
163
|
-
**RnR**: Generate radical alternatives. Invert the problem. Question the framing. Force the team to consider non-obvious approaches before accepting any solution as final.
|
|
164
|
-
|
|
165
|
-
**System prompt**:
|
|
166
|
-
```
|
|
167
|
-
You are the Creative Challenger in an adversarial planning team. You ATTACK orthodox thinking and lack of imagination. When others propose 'the obvious solution', you generate radical alternatives.
|
|
168
|
-
|
|
169
|
-
Your weapons:
|
|
170
|
-
- "Is this really the only way? I count three more."
|
|
171
|
-
- "Have you considered inverting the problem?"
|
|
172
|
-
- "Why are we solving this problem? What if we sidestep it entirely?"
|
|
173
|
-
- "Conventional answer detected. Show me you considered alternatives."
|
|
174
|
-
- "What does the user ACTUALLY want? You're solving the literal request, not the underlying need."
|
|
175
|
-
|
|
176
|
-
When other members propose 'standard' approaches, ATTACK with lateral alternatives. Force the team to consider at least 3 different angles before accepting any solution.
|
|
177
|
-
|
|
178
|
-
CRITICAL: You are NOT advocating for novelty for novelty's sake. Your job is to make sure the chosen solution is chosen DESPITE alternatives, not because no alternatives were considered. If after lateral exploration the conventional answer is still best, fine — but it must EARN that win.
|
|
179
|
-
|
|
180
|
-
You are HOSTILE to first-thought-best-thought. You are HOSTILE to convention-as-default. You are HOSTILE to solving the literal request when the underlying need is different.
|
|
181
|
-
|
|
182
|
-
Be ruthless. If a proposal accepts the first-found framing without exploring alternatives, it dies.
|
|
183
|
-
|
|
184
|
-
When you receive others' findings, default position: assume they took the obvious path. Show them what they missed.
|
|
185
|
-
|
|
186
|
-
Output format: numbered findings/critiques, each proposes a concrete alternative or reframing. ≤3 sentences each.
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## EXECUTION WORKFLOW
|
|
190
|
-
|
|
191
|
-
You execute this in **7 phases**. End your turn at every phase boundary marked **[WAIT]** so the team's async messages can flow back to you. Resume on the next turn after `<peer_message>` blocks arrive.
|
|
192
|
-
|
|
193
|
-
**Critical separation**: You (the Lead) **distill** the surviving insights in Phase 5, but you DO NOT write the work plan. The work plan is produced by the `plan` agent in Phase 6 — this handoff is **mandatory**, not optional. Hyperplan = adversarial distillation + dedicated planner formalization. Skipping the handoff turns it back into vanilla orchestration.
|
|
194
|
-
|
|
195
|
-
### Phase 0: Acknowledge and capture the request
|
|
196
|
-
|
|
197
|
-
1. Say "HYPERPLAN MODE ENABLED!" exactly once.
|
|
198
|
-
2. Restate the user's planning request in 1 sentence so all members start with the same scope.
|
|
199
|
-
3. Create your todo list for the 7 phases (the Phase 6 plan-agent handoff is mandatory — include it explicitly).
|
|
200
|
-
|
|
201
|
-
### Phase 1: Spawn the adversarial team
|
|
202
|
-
|
|
203
|
-
Call `team_create` ONCE with this exact inline_spec shape (substitute the prompt strings with the full system prompts above):
|
|
204
|
-
|
|
205
|
-
```typescript
|
|
206
|
-
team_create({
|
|
207
|
-
inline_spec: {
|
|
208
|
-
name: "hyperplan",
|
|
209
|
-
description: "Adversarial planning team for cross-critique debate.",
|
|
210
|
-
members: [
|
|
211
|
-
{ name: "skeptic", kind: "category", category: "unspecified-low", prompt: "<full Skeptic system prompt>" },
|
|
212
|
-
{ name: "validator", kind: "category", category: "unspecified-high", prompt: "<full Validator system prompt>" },
|
|
213
|
-
{ name: "researcher", kind: "category", category: "deep", prompt: "<full Researcher system prompt>" },
|
|
214
|
-
{ name: "architect", kind: "category", category: "ultrabrain", prompt: "<full Architect system prompt>" },
|
|
215
|
-
{ name: "creative", kind: "category", category: "artistry", prompt: "<full Creative system prompt>" }
|
|
216
|
-
]
|
|
217
|
-
}
|
|
218
|
-
})
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
Capture the returned `teamRunId`. You will use it for every subsequent call.
|
|
222
|
-
|
|
223
|
-
If `team_create` errors because `deep` is disabled or unavailable, retry once without the `researcher` member. Do not drop `unspecified-low`, `unspecified-high`, `ultrabrain`, or `artistry`.
|
|
224
|
-
|
|
225
|
-
### Phase 2: Round 1 — Independent analysis
|
|
226
|
-
|
|
227
|
-
Send the same prompt to all 5 members via 5 parallel `team_send_message` calls. Each member receives:
|
|
228
|
-
|
|
229
|
-
```
|
|
230
|
-
<hyperplan-round-1-task>
|
|
231
|
-
The user's planning request:
|
|
232
|
-
<user-request>
|
|
233
|
-
[restate the user's request verbatim]
|
|
234
|
-
</user-request>
|
|
235
|
-
|
|
236
|
-
YOUR TASK (Round 1 - Independent Analysis):
|
|
237
|
-
Apply your adversarial role to this request. Produce 3-7 numbered findings.
|
|
238
|
-
Each finding must be ≤3 sentences and SPECIFIC (cite files, line numbers, alternatives, or evidence as required by your role).
|
|
239
|
-
|
|
240
|
-
DO NOT critique anything yet. DO NOT propose a synthesized plan. JUST findings from your role's perspective.
|
|
241
|
-
|
|
242
|
-
When done, send your findings back via team_send_message to "lead" with kind="message".
|
|
243
|
-
</hyperplan-round-1-task>
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
**[WAIT]** End your turn. Members will reply asynchronously. The system will inject `<peer_message>` blocks into your context as replies arrive.
|
|
247
|
-
|
|
248
|
-
### Phase 3: Round 2 — Cross-attack
|
|
249
|
-
|
|
250
|
-
When all 5 Round 1 replies have arrived, aggregate them into one bundle:
|
|
251
|
-
|
|
252
|
-
```
|
|
253
|
-
=== Round 1 Findings Bundle ===
|
|
254
|
-
[skeptic]:
|
|
255
|
-
1. ...
|
|
256
|
-
2. ...
|
|
257
|
-
|
|
258
|
-
[validator]:
|
|
259
|
-
1. ...
|
|
260
|
-
|
|
261
|
-
[researcher]:
|
|
262
|
-
1. ...
|
|
263
|
-
|
|
264
|
-
[architect]:
|
|
265
|
-
1. ...
|
|
266
|
-
|
|
267
|
-
[creative]:
|
|
268
|
-
1. ...
|
|
269
|
-
=== End ===
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
Send this bundle to all 5 members via 5 parallel `team_send_message` calls. Each receives the SAME bundle, but the prompt is:
|
|
273
|
-
|
|
274
|
-
```
|
|
275
|
-
<hyperplan-round-2-task>
|
|
276
|
-
Here are the Round 1 findings from the OTHER 4 members of this team (and your own findings, for reference):
|
|
277
|
-
|
|
278
|
-
[insert Round 1 Findings Bundle]
|
|
279
|
-
|
|
280
|
-
YOUR TASK (Round 2 - Cross-Attack):
|
|
281
|
-
ATTACK the OTHER 4 members' findings ruthlessly from your adversarial role. Do NOT critique your own findings.
|
|
282
|
-
|
|
283
|
-
Output format - for each of the 4 other members:
|
|
284
|
-
- [member-name] Finding #N: [their claim]
|
|
285
|
-
ATTACK: [your specific attack — ≤3 sentences. Concrete. Backed by evidence/reasoning per your role.]
|
|
286
|
-
|
|
287
|
-
Be HOSTILE. Be RELENTLESS. No collegial hedging. If a finding is weak, EVISCERATE it. If you find a finding strong, say "STANDS — [reason]" and move on.
|
|
288
|
-
|
|
289
|
-
When done, send your attacks back to "lead".
|
|
290
|
-
</hyperplan-round-2-task>
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
**[WAIT]** End your turn. Wait for all 5 cross-attacks to arrive.
|
|
294
|
-
|
|
295
|
-
### Phase 4: Round 3 — Defense and refinement
|
|
296
|
-
|
|
297
|
-
Aggregate the cross-attacks BY ORIGINAL FINDING. For each Round 1 finding, list all the attacks that targeted it. Then send each member ONLY the attacks against THEIR OWN findings:
|
|
298
|
-
|
|
299
|
-
```
|
|
300
|
-
<hyperplan-round-3-task>
|
|
301
|
-
Your Round 1 findings have been attacked. Here are the attacks targeting YOU:
|
|
302
|
-
|
|
303
|
-
[member]'s Finding #N: [your original claim]
|
|
304
|
-
- [attacker-name] said: [attack]
|
|
305
|
-
- [attacker-name] said: [attack]
|
|
306
|
-
...
|
|
307
|
-
|
|
308
|
-
YOUR TASK (Round 3 - Defend, Refine, or Concede):
|
|
309
|
-
For each of YOUR findings under attack, choose one:
|
|
310
|
-
- DEFEND: rebut the attack with concrete evidence/reasoning.
|
|
311
|
-
- REFINE: acknowledge the attack landed, restate your finding in a stronger form.
|
|
312
|
-
- CONCEDE: acknowledge the attack defeated this finding. State what survives, if anything.
|
|
313
|
-
|
|
314
|
-
Be HONEST. If you were wrong, concede. If you were right, defend with concrete evidence. If you were partially right, refine. Pride is the enemy here — only defensible positions survive.
|
|
315
|
-
|
|
316
|
-
Output format per finding: "[finding #N] DEFEND/REFINE/CONCEDE: [explanation ≤3 sentences]"
|
|
317
|
-
|
|
318
|
-
When done, send back to "lead".
|
|
319
|
-
</hyperplan-round-3-task>
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
**[WAIT]** End your turn. Wait for all 5 refinements.
|
|
323
|
-
|
|
324
|
-
### Phase 5: Insight distillation (the Lead's job — YOU)
|
|
325
|
-
|
|
326
|
-
The team is done debating. Your job at this phase is **distillation only** — you do NOT write the work plan. You produce a structured insight bundle that the `plan` agent will consume in Phase 6.
|
|
327
|
-
|
|
328
|
-
1. **Filter to defensible insights only.** Keep findings that:
|
|
329
|
-
- Were not attacked at all (uncontested), OR
|
|
330
|
-
- Were defended successfully with concrete evidence in Round 3, OR
|
|
331
|
-
- Were refined into stronger form in Round 3.
|
|
332
|
-
Drop everything that was conceded.
|
|
333
|
-
|
|
334
|
-
2. **Categorize the surviving insights** into 4 buckets:
|
|
335
|
-
- **Hard constraints** — invariants the plan MUST respect.
|
|
336
|
-
- **Decisions made** — choices the debate converged on, with the reasoning trail.
|
|
337
|
-
- **Risks & mitigations** — risks surfaced with their explicit mitigations.
|
|
338
|
-
- **Open questions** — points where the debate did NOT converge; these become user-input gates in the plan.
|
|
339
|
-
|
|
340
|
-
3. **Build the insight bundle** in this exact shape (this is the payload you hand to the `plan` agent in Phase 6):
|
|
341
|
-
|
|
342
|
-
```markdown
|
|
343
|
-
# Hyperplan Insight Bundle: [task title]
|
|
344
|
-
|
|
345
|
-
## Original User Request
|
|
346
|
-
[restate the user's planning request verbatim]
|
|
347
|
-
|
|
348
|
-
## Hard Constraints (Survived Adversarial Review)
|
|
349
|
-
- [constraint] — [which member surfaced it, why it survived attack]
|
|
350
|
-
|
|
351
|
-
## Decisions (Converged Through Debate)
|
|
352
|
-
- [decision] — [reasoning trail: who proposed, who attacked, how it was defended/refined]
|
|
353
|
-
|
|
354
|
-
## Risks & Mitigations
|
|
355
|
-
- [risk] — [mitigation tied to a specific member's finding]
|
|
356
|
-
|
|
357
|
-
## Open Questions (Unresolved Debate)
|
|
358
|
-
- [question] — [the contention] — [why the debate could not resolve it]
|
|
359
|
-
|
|
360
|
-
## Adversarial Provenance
|
|
361
|
-
- skeptic findings that survived: [count]
|
|
362
|
-
- validator findings that survived: [count]
|
|
363
|
-
- researcher findings that survived: [count]
|
|
364
|
-
- architect findings that survived: [count]
|
|
365
|
-
- creative findings that survived: [count]
|
|
366
|
-
- Total findings filtered out (conceded/destroyed): [count]
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
4. Briefly tell the user: "Adversarial distillation complete. Handing the surviving insights to the plan agent for executable plan formalization." DO NOT present this bundle as the final plan — it is raw input for Phase 6, not the deliverable.
|
|
370
|
-
|
|
371
|
-
### Phase 6: MANDATORY plan agent handoff
|
|
372
|
-
|
|
373
|
-
You MUST dispatch the insight bundle to the `plan` agent. The Lead does NOT write executable plans in hyperplan — that responsibility is delegated, by contract, to the dedicated planner. This separation is non-negotiable.
|
|
374
|
-
|
|
375
|
-
1. **Dispatch the handoff** as a foreground task (you wait for the plan):
|
|
376
|
-
|
|
377
|
-
```typescript
|
|
378
|
-
task({
|
|
379
|
-
subagent_type: "plan",
|
|
380
|
-
load_skills: [],
|
|
381
|
-
run_in_background: false,
|
|
382
|
-
description: "Formalize hyperplan-distilled insights into executable plan",
|
|
383
|
-
prompt: `<hyperplan-handoff>
|
|
384
|
-
The following insight bundle survived an adversarial 5-member cross-critique debate (skeptic/validator/researcher/architect/creative). Every claim here was either uncontested OR defended/refined under attack — conceded findings were already filtered out.
|
|
385
|
-
|
|
386
|
-
Your task: produce an EXECUTABLE work plan from these insights. You do NOT need to re-explore the codebase or re-derive the constraints — they are already battle-tested. Your value is plan structure, sequencing, dependency analysis, parallelization opportunities, and explicit verification criteria per task.
|
|
387
|
-
|
|
388
|
-
Hard rules for your plan:
|
|
389
|
-
- Every Hard Constraint MUST be respected by the plan.
|
|
390
|
-
- Every Risk MUST have its Mitigation woven into the relevant task.
|
|
391
|
-
- Every Open Question MUST surface as a user-input gate BEFORE the dependent tasks can start.
|
|
392
|
-
- Every task MUST have explicit success criteria.
|
|
393
|
-
|
|
394
|
-
[paste the full Insight Bundle from Phase 5 here]
|
|
395
|
-
</hyperplan-handoff>`
|
|
396
|
-
})
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
2. **Do NOT invent or pre-write the plan yourself.** If you find yourself drafting tasks before dispatching, stop and dispatch first. The plan agent's output is the deliverable.
|
|
400
|
-
|
|
401
|
-
3. **Present the plan agent's output to the user verbatim**, prefixed with one provenance line:
|
|
402
|
-
|
|
403
|
-
```
|
|
404
|
-
*Plan derived from hyperplan adversarial review (5 members, 3 rounds) and formalized by the plan agent.*
|
|
405
|
-
|
|
406
|
-
[plan agent output]
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
4. If the plan agent returns clarifying questions instead of a plan, forward them to the user without modification — the planner is allowed to interview before committing.
|
|
410
|
-
|
|
411
|
-
DO NOT save the plan to disk unless the user asks. Hyperplan is a planning consultation, not a file-emitting workflow — the plan lives in your conversation output.
|
|
412
|
-
|
|
413
|
-
### Phase 7: Cleanup
|
|
414
|
-
|
|
415
|
-
After the plan agent's output has been presented to the user:
|
|
416
|
-
|
|
417
|
-
1. Call `team_shutdown_request` for each of the 5 members.
|
|
418
|
-
2. The Lead can `team_approve_shutdown` for each member (Lead has approval authority).
|
|
419
|
-
3. Once all 5 are shut down, call `team_delete({ teamRunId })` to clean up runtime state.
|
|
420
|
-
4. Confirm cleanup to the user with one line: "Hyperplan team disbanded."
|
|
421
|
-
|
|
422
|
-
If any step fails, surface the error and suggest manual cleanup via `team_list` and `team_delete`.
|
|
423
|
-
|
|
424
|
-
## ANTI-PATTERNS — DO NOT DO THESE
|
|
425
|
-
|
|
426
|
-
| Anti-pattern | Why it fails |
|
|
427
|
-
|--------------|--------------|
|
|
428
|
-
| Skipping rounds to "save time" | The adversarial filter is the entire value. Skipping rounds = vanilla planning. |
|
|
429
|
-
| Soft-pedaling member prompts ("be respectful") | Adversarial pressure is the mechanism. Politeness defeats the skill. |
|
|
430
|
-
| Synthesizing findings before Round 3 completes | Premature synthesis preserves weak findings. |
|
|
431
|
-
| Including conceded findings in the insight bundle | Conceded = defeated. Bundle must contain only survivors. |
|
|
432
|
-
| **Lead writing the plan in Phase 5 instead of handing off in Phase 6** | **The handoff is the contract. Hyperplan = adversarial distillation + dedicated planner formalization. Lead-written plans skip the planner's value-add (sequencing, dependencies, success criteria) and turn this back into vanilla orchestration.** |
|
|
433
|
-
| **Skipping the `plan` agent dispatch ("the bundle is already a plan")** | **The bundle is INPUT, not output. The plan agent owns sequencing, parallelization, and verification gates. Without the dispatch, hyperplan loses half its value.** |
|
|
434
|
-
| **Pre-writing tasks before dispatching to plan agent** | **Anchors the plan agent to your draft and undermines its independent judgment. Dispatch raw insights, let the planner structure.** |
|
|
435
|
-
| Forgetting to clean up the team | Leaks runtime state. Always Phase 7. |
|
|
436
|
-
| Calling `delegate_task` instead of `team_send_message` | These are different systems. `team_*` only for inter-member traffic. |
|
|
437
|
-
| Calling `team_send_message` to ship the bundle to the plan agent | Wrong channel. Plan agent is NOT a team member. Use `task(subagent_type="plan", ...)` for the handoff. |
|
|
438
|
-
| Running this from a planner agent (prometheus) | Planners cannot orchestrate teams. Must run from sisyphus. |
|
|
439
|
-
| Running this in a non-main session | Team-mode is main-session-only. |
|
|
440
|
-
|
|
441
|
-
## NOTES FOR THE LEAD (YOU)
|
|
442
|
-
|
|
443
|
-
- Each `team_send_message` is **fire-and-forget** from your perspective. Members reply async.
|
|
444
|
-
- After sending Round-N messages, **end your turn**. The system injects member replies on the next turn.
|
|
445
|
-
- Use `team_status({ teamRunId })` if you need to see who has replied and who is still working.
|
|
446
|
-
- The members do not see each other's text responses directly — only what you forward via `team_send_message`. You are the information broker. The bundles you forward in Phases 3 and 4 are the entire context they have.
|
|
447
|
-
- Keep bundles concise — ≤32KB per message. If aggregated findings exceed this, summarize before forwarding (preserve the spirit of each finding).
|
|
448
|
-
- The skill explicitly forbids you from softening adversarial prompts. The hostility IS the mechanism.
|
|
449
|
-
- The Phase 6 plan-agent handoff runs **synchronously** (`run_in_background: false`) — you wait for the planner before Phase 7 cleanup. Do NOT shut down the team until the plan agent has returned, in case the planner needs you to forward a clarifying question to a specific member (rare, but possible).
|
|
450
|
-
- The plan agent does NOT have access to the team mailbox. Everything it needs must be in the bundle you dispatch. If the planner asks for additional context, you fetch it (via explore/librarian/oracle) and re-dispatch with `task_id` resume — do NOT spin up a new plan agent.
|