@pi-unipi/unipi 3.0.0-alpha.2 → 3.0.0-alpha.21
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/CHANGELOG.md +292 -0
- package/README.md +8 -11
- package/docs/prefix-cache-architecture.md +14 -0
- package/package.json +22 -24
- package/packages/ask-user/README.md +55 -107
- package/packages/ask-user/ask-ui.ts +306 -732
- package/packages/ask-user/clipboard.ts +50 -0
- package/packages/ask-user/config.ts +74 -78
- package/packages/ask-user/package.json +2 -2
- package/packages/ask-user/questions.ts +151 -0
- package/packages/ask-user/skills/ask-user/SKILL.md +59 -133
- package/packages/ask-user/tools.ts +198 -432
- package/packages/autocomplete/package.json +1 -1
- package/packages/autocomplete/src/constants.ts +38 -43
- package/packages/autocomplete/src/sorting.ts +8 -0
- package/packages/background-tasks/package.json +2 -2
- package/packages/background-tasks/src/config.ts +0 -73
- package/packages/background-tasks/src/index.ts +20 -16
- package/packages/background-tasks/src/registry.ts +1 -171
- package/packages/background-tasks/src/types.ts +0 -32
- package/packages/btw/README.md +13 -56
- package/packages/btw/extensions/btw.ts +403 -1796
- package/packages/btw/package.json +5 -2
- package/packages/btw/skills/btw/SKILL.md +7 -143
- package/packages/compactor/README.md +56 -287
- package/packages/compactor/package.json +5 -9
- package/packages/compactor/skills/compactor/SKILL.md +13 -20
- package/packages/compactor/src/card.ts +90 -0
- package/packages/compactor/src/commands/index.ts +73 -130
- package/packages/compactor/src/compaction/compact-args.ts +5 -3
- package/packages/compactor/src/compaction/filter-noise.ts +1 -1
- package/packages/compactor/src/compaction/hooks.ts +487 -311
- package/packages/compactor/src/compaction/source.ts +178 -0
- package/packages/compactor/src/compaction/summarize.ts +586 -52
- package/packages/compactor/src/config/manager.ts +130 -127
- package/packages/compactor/src/config/schema.ts +32 -48
- package/packages/compactor/src/index.ts +40 -431
- package/packages/compactor/src/info-screen.ts +44 -190
- package/packages/compactor/src/session/recall-blocks.ts +1 -1
- package/packages/compactor/src/stats.ts +76 -0
- package/packages/compactor/src/tools/context-budget.ts +17 -34
- package/packages/compactor/src/tools/ctx-doctor.ts +45 -36
- package/packages/compactor/src/tools/register.ts +29 -269
- package/packages/compactor/src/types.ts +47 -186
- package/packages/core/README.md +25 -0
- package/packages/core/child-agent.ts +1 -0
- package/packages/core/command-echo.ts +63 -0
- package/packages/core/compaction-context.ts +41 -0
- package/packages/core/constants.ts +8 -38
- package/packages/core/events.ts +0 -53
- package/packages/core/fusion-status.ts +4 -0
- package/packages/core/global.d.ts +10 -0
- package/packages/core/harness-messages.ts +392 -0
- package/packages/core/index.ts +14 -0
- package/packages/core/kanboard-status.ts +49 -0
- package/packages/core/long-horizon-owner-status.ts +46 -0
- package/packages/core/model-cache.ts +81 -7
- package/packages/core/package.json +6 -3
- package/packages/core/src/attach/detect.ts +163 -0
- package/packages/core/src/child-agent/child-args.ts +31 -0
- package/packages/core/src/child-agent/delivery.ts +41 -0
- package/packages/core/src/child-agent/index.ts +5 -0
- package/packages/core/src/child-agent/readers.ts +203 -0
- package/packages/core/src/child-agent/runtime.ts +584 -0
- package/packages/core/src/evidence.ts +78 -0
- package/packages/core/src/hints/browser.ts +278 -0
- package/packages/core/src/hints/crab-data.ts +19 -0
- package/packages/core/src/hints/index.ts +865 -0
- package/packages/core/src/hints/lines.ts +607 -0
- package/packages/core/src/hints/store.ts +120 -0
- package/packages/core/src/jev/chatter.ts +24 -0
- package/packages/core/src/jev/settings.ts +177 -14
- package/packages/core/src/package-colors.ts +2 -0
- package/packages/core/src/settings/catalog.ts +39 -15
- package/packages/core/src/settings/engine.ts +48 -2
- package/packages/core/src/settings/hub.ts +83 -20
- package/packages/core/src/settings/open.ts +49 -0
- package/packages/core/src/settings/schema.ts +27 -7
- package/packages/core/src/tui/hub-kit.ts +18 -5
- package/packages/core/src/tui/kit.ts +198 -0
- package/packages/core/src/tui/progress.ts +73 -0
- package/packages/core/src/turn/arbiter.ts +290 -0
- package/packages/footer/README.md +4 -6
- package/packages/footer/package.json +3 -3
- package/packages/footer/src/glance-editor.ts +19 -11
- package/packages/footer/src/help.ts +1 -1
- package/packages/footer/src/index.ts +36 -3
- package/packages/footer/src/presets.ts +3 -4
- package/packages/footer/src/rendering/icons.ts +0 -20
- package/packages/footer/src/segments/compactor.ts +52 -142
- package/packages/footer/src/segments/status-ext.ts +0 -1
- package/packages/fusion/README.md +14 -4
- package/packages/fusion/package.json +4 -3
- package/packages/fusion/src/child-args.ts +1 -0
- package/packages/fusion/src/index.ts +161 -8
- package/packages/fusion/src/pi-settings.ts +57 -0
- package/packages/fusion/src/picker.ts +186 -51
- package/packages/fusion/src/preset.ts +56 -2
- package/packages/fusion/src/prompts.ts +1 -1
- package/packages/fusion/src/sidekick-runtime.ts +1 -420
- package/packages/fusion/src/tools.ts +107 -128
- package/packages/fusion/src/transcript.ts +27 -85
- package/packages/info-screen/package.json +2 -2
- package/packages/input-shortcuts/README.md +18 -30
- package/packages/input-shortcuts/package.json +2 -2
- package/packages/input-shortcuts/src/burst.ts +88 -0
- package/packages/input-shortcuts/src/chord-overlay.ts +20 -70
- package/packages/input-shortcuts/src/cleared-input.ts +97 -0
- package/packages/input-shortcuts/src/index.ts +99 -193
- package/packages/input-shortcuts/src/last-response.ts +40 -0
- package/packages/input-shortcuts/src/registers.ts +8 -23
- package/packages/input-shortcuts/src/types.ts +4 -16
- package/packages/input-shortcuts/src/undo-redo.ts +59 -47
- package/packages/kanboard/README.md +51 -47
- package/packages/kanboard/index.ts +293 -55
- package/packages/kanboard/package.json +8 -8
- package/packages/kanboard/skills/kanboard/SKILL.md +61 -27
- package/packages/kanboard/src/badges.ts +93 -0
- package/packages/kanboard/src/bin.ts +4 -2
- package/packages/kanboard/src/commands.ts +218 -84
- package/packages/kanboard/src/debug.ts +20 -0
- package/packages/kanboard/src/guard.ts +267 -109
- package/packages/kanboard/src/monitor.ts +330 -0
- package/packages/kanboard/src/notice-buffer.ts +74 -0
- package/packages/kanboard/src/progress.ts +27 -0
- package/packages/kanboard/src/reminders.ts +234 -0
- package/packages/kanboard/src/settings.ts +69 -15
- package/packages/kanboard/src/shapes.ts +5 -0
- package/packages/long-horizon/index.ts +190 -13
- package/packages/long-horizon/package.json +3 -3
- package/packages/long-horizon/src/commands.ts +103 -7
- package/packages/long-horizon/src/compaction-brief.ts +35 -0
- package/packages/long-horizon/src/engine/continuation.ts +84 -15
- package/packages/long-horizon/src/engine/goal-state.ts +64 -13
- package/packages/long-horizon/src/engine/nudge-stash.ts +71 -0
- package/packages/long-horizon/src/engine/ralph.ts +3 -2
- package/packages/long-horizon/src/engine/runaway.ts +68 -11
- package/packages/long-horizon/src/engine/verifier.ts +19 -0
- package/packages/long-horizon/src/gate.ts +37 -12
- package/packages/long-horizon/src/judge/resolve.ts +1 -0
- package/packages/long-horizon/src/owner.ts +35 -2
- package/packages/long-horizon/src/progress.ts +87 -0
- package/packages/long-horizon/src/prompts/goal.ts +1 -1
- package/packages/long-horizon/src/runtime.ts +172 -18
- package/packages/long-horizon/src/settings.ts +54 -39
- package/packages/long-horizon/src/tools/goal.ts +6 -0
- package/packages/long-horizon/src/tools/graph.ts +1 -1
- package/packages/long-horizon/src/tools/swarm.ts +3 -3
- package/packages/mcp/package.json +2 -2
- package/packages/memory/commands.ts +7 -2
- package/packages/memory/index.ts +210 -32
- package/packages/memory/package.json +3 -3
- package/packages/memory/save-session.ts +264 -0
- package/packages/memory/settings.ts +17 -0
- package/packages/memory/tools.ts +253 -203
- package/packages/notify/package.json +2 -2
- package/packages/skill-registry/README.md +53 -16
- package/packages/skill-registry/index.ts +230 -0
- package/packages/skill-registry/package.json +19 -8
- package/packages/skill-registry/src/editor.ts +206 -0
- package/packages/skill-registry/src/judge.ts +289 -0
- package/packages/skill-registry/src/registry.ts +87 -0
- package/packages/skill-registry/src/settings.ts +259 -0
- package/packages/skill-registry/src/vault.ts +80 -0
- package/packages/subagents/README.md +39 -119
- package/packages/subagents/package.json +6 -13
- package/packages/subagents/skills/subagents/SKILL.md +18 -42
- package/packages/subagents/src/agents.ts +213 -0
- package/packages/subagents/src/cards.ts +182 -0
- package/packages/subagents/src/index.ts +609 -1084
- package/packages/subagents/src/manager.ts +429 -0
- package/packages/subagents/src/profiles.ts +130 -0
- package/packages/subagents/src/transcript.ts +154 -0
- package/packages/subagents/src/ui.ts +389 -0
- package/packages/unipi/bundled.js +39756 -45569
- package/packages/unipi/index.ts +55 -10
- package/packages/updater/package.json +2 -2
- package/packages/utility/README.md +76 -69
- package/packages/utility/package.json +2 -2
- package/packages/utility/skills/image/SKILL.md +37 -0
- package/packages/utility/skills/utility/SKILL.md +17 -60
- package/packages/utility/src/answer/extract.ts +128 -0
- package/packages/utility/src/answer/index.ts +213 -0
- package/packages/utility/src/answer/reply.ts +133 -0
- package/packages/utility/src/answer/web.ts +167 -0
- package/packages/utility/src/attach/index.ts +205 -0
- package/packages/utility/src/commands.ts +38 -142
- package/packages/utility/src/diagnostics/engine.ts +50 -5
- package/packages/utility/src/image/index.ts +33 -0
- package/packages/utility/src/image/models.ts +221 -0
- package/packages/{image/src → utility/src/image}/recognize.ts +2 -2
- package/packages/utility/src/image/settings.ts +178 -0
- package/packages/{image/src/image-source.ts → utility/src/image/source.ts} +1 -1
- package/packages/utility/src/image/tools.ts +168 -0
- package/packages/utility/src/image/transports.ts +186 -0
- package/packages/utility/src/index.ts +68 -389
- package/packages/utility/src/lifecycle/cleanup.ts +116 -311
- package/packages/utility/src/rename/gate.ts +102 -0
- package/packages/utility/src/rename/index.ts +191 -0
- package/packages/utility/src/rename/session.ts +170 -0
- package/packages/utility/src/render/delegated.ts +285 -0
- package/packages/utility/src/render/harness.ts +683 -0
- package/packages/utility/src/render/parse.ts +156 -0
- package/packages/utility/src/render/pi-settings.ts +38 -0
- package/packages/utility/src/render/reply-bg.ts +307 -0
- package/packages/utility/src/render/simple.ts +724 -0
- package/packages/utility/src/render/spacing.ts +235 -0
- package/packages/utility/src/render/styled.ts +251 -0
- package/packages/utility/src/render/tools.ts +353 -0
- package/packages/utility/src/settings.ts +166 -233
- package/packages/utility/src/types.ts +1 -222
- package/packages/watchdog/index.ts +17 -6
- package/packages/watchdog/package.json +3 -3
- package/packages/watchdog/src/config.ts +3 -2
- package/packages/web-api/package.json +2 -2
- package/packages/workflow/README.md +3 -0
- package/packages/workflow/index.ts +0 -2
- package/packages/workflow/package.json +2 -2
- package/packages/workflow/src/permission/decide.ts +6 -4
- package/packages/workflow/src/permission/index.ts +17 -7
- package/packages/workflow/src/permission/settings.ts +39 -4
- package/packages/workflow/src/plan/index.ts +19 -4
- package/packages/background-tasks/extensions/delegate-child.ts +0 -1
- package/packages/background-tasks/src/context-parent-snapshot.ts +0 -142
- package/packages/background-tasks/src/context-token-budget.ts +0 -903
- package/packages/background-tasks/src/context-visible-conversation-v2.ts +0 -551
- package/packages/background-tasks/src/delegate/artifacts.ts +0 -487
- package/packages/background-tasks/src/delegate/budget.ts +0 -415
- package/packages/background-tasks/src/delegate/hook-contract-evidence.json +0 -18
- package/packages/background-tasks/src/delegate/hook-contract.ts +0 -154
- package/packages/background-tasks/src/delegate/launch.ts +0 -484
- package/packages/background-tasks/src/delegate/result-package.ts +0 -459
- package/packages/background-tasks/src/delegate/runner.ts +0 -430
- package/packages/background-tasks/src/delegate/seed.ts +0 -423
- package/packages/background-tasks/src/delegate/types.ts +0 -323
- package/packages/background-tasks/src/delegate-child-extension.ts +0 -978
- package/packages/background-tasks/src/delegate-extension.ts +0 -654
- package/packages/background-tasks/src/fixtures/delegate-context-incident.json +0 -17
- package/packages/compactor/skills/compactor-detail/SKILL.md +0 -116
- package/packages/compactor/skills/compactor-doctor/SKILL.md +0 -71
- package/packages/compactor/skills/compactor-stats/SKILL.md +0 -51
- package/packages/compactor/src/compaction/build-sections.ts +0 -76
- package/packages/compactor/src/compaction/extract/goals.ts +0 -36
- package/packages/compactor/src/compaction/extract/preferences.ts +0 -40
- package/packages/compactor/src/compaction/format.ts +0 -53
- package/packages/compactor/src/compaction/merge.ts +0 -143
- package/packages/compactor/src/config/presets.ts +0 -160
- package/packages/compactor/src/executor/executor.ts +0 -233
- package/packages/compactor/src/executor/runtime.ts +0 -115
- package/packages/compactor/src/security/evaluator.ts +0 -89
- package/packages/compactor/src/security/policy.ts +0 -96
- package/packages/compactor/src/security/scanner.ts +0 -65
- package/packages/compactor/src/session/auto-inject.ts +0 -60
- package/packages/compactor/src/session/db.ts +0 -325
- package/packages/compactor/src/session/extract.ts +0 -144
- package/packages/compactor/src/session/resume-inject.ts +0 -64
- package/packages/compactor/src/session/snapshot.ts +0 -327
- package/packages/compactor/src/tools/ctx-batch-execute.ts +0 -41
- package/packages/compactor/src/tools/ctx-execute-file.ts +0 -23
- package/packages/compactor/src/tools/ctx-execute.ts +0 -23
- package/packages/compactor/src/tools/ctx-stats.ts +0 -96
- package/packages/image/README.md +0 -99
- package/packages/image/package.json +0 -61
- package/packages/image/skills/image/SKILL.md +0 -76
- package/packages/image/src/generate.ts +0 -256
- package/packages/image/src/index.ts +0 -135
- package/packages/image/src/models.ts +0 -519
- package/packages/image/src/openai-images-api.ts +0 -282
- package/packages/image/src/register-providers.ts +0 -209
- package/packages/image/src/settings.ts +0 -173
- package/packages/image/src/tools.ts +0 -326
- package/packages/input-shortcuts/src/clipboard.ts +0 -119
- package/packages/kanboard/src/runner.ts +0 -817
- package/packages/skill-registry/skills/auto/SKILL.md +0 -465
- package/packages/skill-registry/skills/brainstorm/SKILL.md +0 -219
- package/packages/skill-registry/skills/chore-create/SKILL.md +0 -315
- package/packages/skill-registry/skills/chore-execute/SKILL.md +0 -314
- package/packages/skill-registry/skills/consolidate/SKILL.md +0 -142
- package/packages/skill-registry/skills/consultant/SKILL.md +0 -97
- package/packages/skill-registry/skills/debug/SKILL.md +0 -228
- package/packages/skill-registry/skills/document/SKILL.md +0 -120
- package/packages/skill-registry/skills/fix/SKILL.md +0 -212
- package/packages/skill-registry/skills/gather-context/SKILL.md +0 -145
- package/packages/skill-registry/skills/plan/SKILL.md +0 -231
- package/packages/skill-registry/skills/quick-fix/SKILL.md +0 -135
- package/packages/skill-registry/skills/quick-work/SKILL.md +0 -110
- package/packages/skill-registry/skills/research/SKILL.md +0 -251
- package/packages/skill-registry/skills/review-work/SKILL.md +0 -187
- package/packages/skill-registry/skills/scan-issues/SKILL.md +0 -195
- package/packages/skill-registry/skills/work/SKILL.md +0 -218
- package/packages/skill-registry/skills/worktree-create/SKILL.md +0 -69
- package/packages/skill-registry/skills/worktree-list/SKILL.md +0 -78
- package/packages/skill-registry/skills/worktree-merge/SKILL.md +0 -89
- package/packages/subagents/agents/delegate.md +0 -14
- package/packages/subagents/agents/oracle.md +0 -78
- package/packages/subagents/agents/researcher.md +0 -52
- package/packages/subagents/agents/reviewer.md +0 -80
- package/packages/subagents/agents/scout.md +0 -50
- package/packages/subagents/agents/worker.md +0 -59
- package/packages/subagents/prompts/council.md +0 -48
- package/packages/subagents/prompts/gather-context-and-clarify.md +0 -13
- package/packages/subagents/prompts/parallel-cleanup.md +0 -59
- package/packages/subagents/prompts/parallel-research.md +0 -50
- package/packages/subagents/prompts/parallel-review.md +0 -54
- package/packages/subagents/prompts/review-loop.md +0 -43
- package/packages/subagents/skills/council-mode/SKILL.md +0 -230
- package/packages/subagents/skills/subagents/references/constraints-and-recipes.md +0 -259
- package/packages/subagents/skills/subagents/references/execution-controls.md +0 -454
- package/packages/subagents/skills/subagents/references/management-authoring-rpc.md +0 -161
- package/packages/subagents/skills/subagents/references/multi-lane-orchestration.md +0 -39
- package/packages/subagents/skills/subagents/references/prompting-and-roles.md +0 -267
- package/packages/subagents/src/acceptance.ts +0 -331
- package/packages/subagents/src/agent-manager.ts +0 -405
- package/packages/subagents/src/agent-memory.ts +0 -300
- package/packages/subagents/src/agent-overrides.ts +0 -183
- package/packages/subagents/src/agent-runner.ts +0 -271
- package/packages/subagents/src/async-runner.ts +0 -422
- package/packages/subagents/src/authority-policy.ts +0 -47
- package/packages/subagents/src/budgets.ts +0 -285
- package/packages/subagents/src/child-safety.ts +0 -140
- package/packages/subagents/src/config.ts +0 -249
- package/packages/subagents/src/conversation-viewer.ts +0 -281
- package/packages/subagents/src/core-compat.ts +0 -94
- package/packages/subagents/src/custom-agents.ts +0 -343
- package/packages/subagents/src/file-system-retry.ts +0 -50
- package/packages/subagents/src/fleet-data.ts +0 -105
- package/packages/subagents/src/fleet-view.ts +0 -322
- package/packages/subagents/src/foreground-detach.ts +0 -59
- package/packages/subagents/src/fork-context.ts +0 -285
- package/packages/subagents/src/global.d.ts +0 -7
- package/packages/subagents/src/guide.ts +0 -129
- package/packages/subagents/src/mission-state.ts +0 -133
- package/packages/subagents/src/mission-store.ts +0 -436
- package/packages/subagents/src/output-limits.ts +0 -142
- package/packages/subagents/src/parity-types.ts +0 -315
- package/packages/subagents/src/pi-args.ts +0 -167
- package/packages/subagents/src/result-files.ts +0 -232
- package/packages/subagents/src/result-watcher.ts +0 -221
- package/packages/subagents/src/retained-children.ts +0 -176
- package/packages/subagents/src/run-fanout-budget.ts +0 -356
- package/packages/subagents/src/scheduled-runs.ts +0 -349
- package/packages/subagents/src/schemas.ts +0 -263
- package/packages/subagents/src/slash-commands.ts +0 -80
- package/packages/subagents/src/supervisor-channel.ts +0 -249
- package/packages/subagents/src/tool-handler.ts +0 -1144
- package/packages/subagents/src/types.ts +0 -238
- package/packages/subagents/src/widget.ts +0 -457
- package/packages/subagents/src/workflow-script.ts +0 -737
- package/packages/subagents/src/workflow-worker.ts +0 -384
- package/packages/subagents/src/worktree.ts +0 -614
- package/packages/utility/src/analytics/collector.ts +0 -293
- package/packages/utility/src/info-screen.ts +0 -80
- package/packages/utility/src/lifecycle/process.ts +0 -162
- package/packages/utility/src/prefix-cache.ts +0 -263
- package/packages/utility/src/skill-discovery.ts +0 -542
- package/packages/utility/src/tools/env.ts +0 -113
- package/packages/utility/src/tui/name-badge-state.ts +0 -315
- package/packages/utility/src/tui/name-badge.ts +0 -109
- /package/packages/{subagents/src → core/src/child-agent}/pi-spawn.ts +0 -0
|
@@ -1,465 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: auto
|
|
3
|
-
description: "Full pipeline — brainstorm → plan → work → review → merge. One command, end to end."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Auto Pipeline
|
|
7
|
-
|
|
8
|
-
Run the complete development pipeline from idea to merged code. This skill is self-contained — it includes all the logic needed to execute each phase without loading other skills.
|
|
9
|
-
|
|
10
|
-
## Command Format
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
the full pipeline <string(greedy)>(optional) plan:<path>(optional) specs:<path>(optional)
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
- `string(greedy)` — what to build (triggers full pipeline from brainstorm)
|
|
17
|
-
- `plan:<path>` — existing plan to execute (skips brainstorm + plan, starts at work)
|
|
18
|
-
- `specs:<path>` — existing spec to plan from (skips brainstorm, starts at plan)
|
|
19
|
-
- No args → ask user what to do
|
|
20
|
-
|
|
21
|
-
## Pipeline Stages
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
brainstorm → plan → work → review → merge
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Each phase must complete before the next begins. User can intervene at any gate.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Phase 1: Determine Entry Point
|
|
32
|
-
|
|
33
|
-
Based on args:
|
|
34
|
-
|
|
35
|
-
**If `string(greedy)` provided (no plan/specs):**
|
|
36
|
-
→ Start at Phase 2 (Brainstorm). Full pipeline.
|
|
37
|
-
|
|
38
|
-
**If `specs:<path>` provided (no plan):**
|
|
39
|
-
→ Start at Phase 3 (Plan). Skip brainstorm.
|
|
40
|
-
|
|
41
|
-
**If `plan:<path>` provided:**
|
|
42
|
-
→ Start at Phase 4 (Work). Skip brainstorm + plan.
|
|
43
|
-
|
|
44
|
-
**If no args:**
|
|
45
|
-
→ Ask user:
|
|
46
|
-
1. "What do you want to build?" → brainstorm
|
|
47
|
-
2. "I have a spec, plan from it" → provide spec path
|
|
48
|
-
3. "I have a plan, execute it" → provide plan path
|
|
49
|
-
4. "I have a plan, just review + merge" → provide plan path
|
|
50
|
-
|
|
51
|
-
**Exit:** Entry point determined. Pipeline scope clear.
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## Phase 2: Brainstorm
|
|
56
|
-
|
|
57
|
-
### 2.1: Explore Context
|
|
58
|
-
|
|
59
|
-
1. Run read-only commands to understand current state:
|
|
60
|
-
```
|
|
61
|
-
find . -type f -name "*.ts" | head -20
|
|
62
|
-
ls -la src/
|
|
63
|
-
cat package.json
|
|
64
|
-
git log --oneline -10
|
|
65
|
-
```
|
|
66
|
-
2. Identify relevant files and patterns
|
|
67
|
-
3. Note existing conventions
|
|
68
|
-
|
|
69
|
-
### 2.2: Ask Clarifying Questions
|
|
70
|
-
|
|
71
|
-
Ask **one question at a time**:
|
|
72
|
-
1. "What problem are we actually solving?"
|
|
73
|
-
2. "Who has this problem and when?"
|
|
74
|
-
3. "What does success look like?"
|
|
75
|
-
|
|
76
|
-
Prefer multiple choice when natural options exist.
|
|
77
|
-
|
|
78
|
-
### 2.3: Propose Approaches
|
|
79
|
-
|
|
80
|
-
Propose 2-3 approaches with trade-offs:
|
|
81
|
-
- What each optimizes for (speed, flexibility, simplicity)
|
|
82
|
-
- What each costs (complexity, maintenance, time)
|
|
83
|
-
- Recommendation with reasoning
|
|
84
|
-
|
|
85
|
-
Present conversationally. Ask user to choose.
|
|
86
|
-
|
|
87
|
-
### 2.4: Design
|
|
88
|
-
|
|
89
|
-
Once approach chosen, present design in sections:
|
|
90
|
-
- Architecture / components
|
|
91
|
-
- Data flow
|
|
92
|
-
- Error handling
|
|
93
|
-
- Testing approach
|
|
94
|
-
|
|
95
|
-
Ask after each section if it looks right.
|
|
96
|
-
|
|
97
|
-
### 2.5: Write Spec
|
|
98
|
-
|
|
99
|
-
Create `docs/specs/YYYY-MM-DD-<topic>-design.md` (Create the folder if it does not exist — it is an ordinary project folder, not a unipi store.):
|
|
100
|
-
|
|
101
|
-
```markdown
|
|
102
|
-
---
|
|
103
|
-
title: "{Topic}"
|
|
104
|
-
type: brainstorm
|
|
105
|
-
date: YYYY-MM-DD
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
# {Topic}
|
|
109
|
-
|
|
110
|
-
## Problem Statement
|
|
111
|
-
{The actual problem, reframed}
|
|
112
|
-
|
|
113
|
-
## Context
|
|
114
|
-
{Key findings from exploration}
|
|
115
|
-
|
|
116
|
-
## Chosen Approach
|
|
117
|
-
{High-level description}
|
|
118
|
-
|
|
119
|
-
## Why This Approach
|
|
120
|
-
{Decision rationale, alternatives rejected}
|
|
121
|
-
|
|
122
|
-
## Design
|
|
123
|
-
{Architecture, components, data flow}
|
|
124
|
-
|
|
125
|
-
## Implementation Checklist
|
|
126
|
-
- [ ] Task 1 — description
|
|
127
|
-
- [ ] Task 2 — description
|
|
128
|
-
- [ ] Task 3 — description
|
|
129
|
-
|
|
130
|
-
## Open Questions
|
|
131
|
-
{Questions for planning phase}
|
|
132
|
-
|
|
133
|
-
## Out of Scope
|
|
134
|
-
{Explicitly excluded}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### 2.6: Self-Review
|
|
138
|
-
|
|
139
|
-
Before presenting:
|
|
140
|
-
1. Any "TBD", "TODO", incomplete sections? Fix them.
|
|
141
|
-
2. Do sections contradict each other?
|
|
142
|
-
3. Could any requirement be interpreted two ways? Pick one.
|
|
143
|
-
|
|
144
|
-
### 2.7: Design Gate
|
|
145
|
-
|
|
146
|
-
> "Spec written to `docs/specs/YYYY-MM-DD-<topic>-design.md`. Please review and let me know if you want changes before we plan."
|
|
147
|
-
|
|
148
|
-
**WAIT for user approval.** If changes requested, make them and re-review.
|
|
149
|
-
|
|
150
|
-
**Exit:** User approves design. Proceed to Phase 3.
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Phase 3: Plan
|
|
155
|
-
|
|
156
|
-
### 3.1: Load Spec
|
|
157
|
-
|
|
158
|
-
1. Read the spec file (from Phase 2 or from `specs:` arg)
|
|
159
|
-
2. Understand: problem, approach, design, checklist
|
|
160
|
-
|
|
161
|
-
### 3.2: Ask Clarifying Questions
|
|
162
|
-
|
|
163
|
-
1. Review spec critically — identify concerns or gaps
|
|
164
|
-
2. If concerns: raise with user before proceeding
|
|
165
|
-
3. Ask about work branch:
|
|
166
|
-
|
|
167
|
-
> "Where should this work happen?"
|
|
168
|
-
> 1. **Main branch** — work directly on main (small/medium tasks, low risk)
|
|
169
|
-
> 2. **New branch** — isolated worktree (larger tasks, risky changes)
|
|
170
|
-
|
|
171
|
-
Record the decision for plan frontmatter.
|
|
172
|
-
|
|
173
|
-
### 3.3: Create Implementation Plan
|
|
174
|
-
|
|
175
|
-
Create `docs/plans/YYYY-MM-DD-<topic>-plan.md`:
|
|
176
|
-
|
|
177
|
-
```markdown
|
|
178
|
-
---
|
|
179
|
-
title: "{Topic} — Implementation Plan"
|
|
180
|
-
type: plan
|
|
181
|
-
date: YYYY-MM-DD
|
|
182
|
-
workbranch: {branch-name} # empty string = work on main branch
|
|
183
|
-
specs:
|
|
184
|
-
- path/to/spec.md
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
# {Topic} — Implementation Plan
|
|
188
|
-
|
|
189
|
-
## Overview
|
|
190
|
-
{Brief summary of what this plan covers}
|
|
191
|
-
|
|
192
|
-
## Tasks
|
|
193
|
-
|
|
194
|
-
- unstarted: Task 1 — {Task Name}
|
|
195
|
-
- Description: {What needs to be done}
|
|
196
|
-
- Dependencies: {None, or list of tasks}
|
|
197
|
-
- Acceptance Criteria: {How to verify done}
|
|
198
|
-
- Steps:
|
|
199
|
-
1. {Concrete step}
|
|
200
|
-
2. {Concrete step}
|
|
201
|
-
|
|
202
|
-
- unstarted: Task 2 — {Task Name}
|
|
203
|
-
- Description: ...
|
|
204
|
-
- Dependencies: ...
|
|
205
|
-
- Acceptance Criteria: ...
|
|
206
|
-
- Steps: ...
|
|
207
|
-
|
|
208
|
-
## Sequencing
|
|
209
|
-
{Order of execution, dependency graph if complex}
|
|
210
|
-
|
|
211
|
-
## Risks
|
|
212
|
-
{Potential blockers or concerns}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
**Task Status Lifecycle:**
|
|
216
|
-
| Status | Meaning |
|
|
217
|
-
|--------|----------|
|
|
218
|
-
| `unstarted:` | Not started |
|
|
219
|
-
| `in-progress:` | Being worked on |
|
|
220
|
-
| `completed:` | Done and verified |
|
|
221
|
-
| `failed:` | Attempted but failed |
|
|
222
|
-
| `awaiting_user:` | Needs user action |
|
|
223
|
-
| `blocked:` | Waiting on dependency |
|
|
224
|
-
| `skipped:` | Intentionally not doing |
|
|
225
|
-
|
|
226
|
-
### 3.4: Update Spec Checkboxes
|
|
227
|
-
|
|
228
|
-
After plan is complete:
|
|
229
|
-
1. Read the source spec
|
|
230
|
-
2. For each checklist item covered by this plan, mark `[x]`
|
|
231
|
-
3. Leave items not covered as `[ ]`
|
|
232
|
-
4. Write updated spec back
|
|
233
|
-
|
|
234
|
-
**Semantics:** Spec `[x]` means "planned" (covered by a plan). It does NOT mean "done".
|
|
235
|
-
|
|
236
|
-
### 3.5: Self-Review
|
|
237
|
-
|
|
238
|
-
- [ ] Every task has clear acceptance criteria
|
|
239
|
-
- [ ] Dependencies are correct (no circular, no missing)
|
|
240
|
-
- [ ] Steps are bite-sized (agent can follow without guessing)
|
|
241
|
-
- [ ] Plan is focused enough for single work session
|
|
242
|
-
|
|
243
|
-
### 3.6: Plan Gate
|
|
244
|
-
|
|
245
|
-
Present plan summary to user.
|
|
246
|
-
|
|
247
|
-
**WAIT for user approval.** If changes requested, make them.
|
|
248
|
-
|
|
249
|
-
**Exit:** User approves plan. Proceed to Phase 4.
|
|
250
|
-
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
## Phase 4: Work
|
|
254
|
-
|
|
255
|
-
### 4.1: Setup
|
|
256
|
-
|
|
257
|
-
1. Read `workbranch` from plan frontmatter
|
|
258
|
-
2. If `workbranch` non-empty:
|
|
259
|
-
- Create worktree: `git worktree add .unipi/worktrees/{branch} -b {branch}`
|
|
260
|
-
- Work within worktree directory
|
|
261
|
-
3. If `workbranch` empty:
|
|
262
|
-
- Work directly on current branch (main)
|
|
263
|
-
|
|
264
|
-
### 4.2: Execute Tasks
|
|
265
|
-
|
|
266
|
-
For each task in order, skip `completed:`, `skipped:`, and `awaiting_user:` tasks:
|
|
267
|
-
|
|
268
|
-
**If `unstarted:`:**
|
|
269
|
-
1. Change `unstarted:` to `in-progress:` in plan
|
|
270
|
-
2. Follow each step exactly (plan has bite-sized steps)
|
|
271
|
-
3. Run verifications as specified in acceptance criteria
|
|
272
|
-
4. Change `in-progress:` to `completed:` when complete
|
|
273
|
-
5. Update plan file with progress
|
|
274
|
-
|
|
275
|
-
**If `in-progress:`:**
|
|
276
|
-
1. Continue from where it left off
|
|
277
|
-
2. Follow remaining steps
|
|
278
|
-
3. Change to `completed:` when done
|
|
279
|
-
|
|
280
|
-
**If `failed:`:**
|
|
281
|
-
1. Read failure notes
|
|
282
|
-
2. Investigate root cause
|
|
283
|
-
3. Fix and re-verify
|
|
284
|
-
4. Change to `completed:` when fixed, or keep `failed:` if still broken
|
|
285
|
-
|
|
286
|
-
**If `awaiting_user:`:**
|
|
287
|
-
1. Remind user what's needed
|
|
288
|
-
2. Wait for user response
|
|
289
|
-
3. Resume when user provides input
|
|
290
|
-
|
|
291
|
-
**If `blocked:`:**
|
|
292
|
-
1. Check if blocker is resolved
|
|
293
|
-
2. If resolved → change to `unstarted:` and continue
|
|
294
|
-
3. If still blocked → skip and move to next task
|
|
295
|
-
|
|
296
|
-
### 4.3: When to Stop and Ask
|
|
297
|
-
|
|
298
|
-
**STOP immediately when:**
|
|
299
|
-
- Hit blocker (missing dependency, test fails, instruction unclear)
|
|
300
|
-
- Plan has critical gaps
|
|
301
|
-
- You don't understand an instruction
|
|
302
|
-
- Verification fails repeatedly
|
|
303
|
-
|
|
304
|
-
Ask for clarification rather than guessing.
|
|
305
|
-
|
|
306
|
-
### 4.4: Commit Progress
|
|
307
|
-
|
|
308
|
-
After each task or group of tasks:
|
|
309
|
-
1. Stage changes
|
|
310
|
-
2. Commit with descriptive message referencing task name
|
|
311
|
-
3. Continue to next task
|
|
312
|
-
|
|
313
|
-
Don't wait until end to commit — incremental commits are safer.
|
|
314
|
-
|
|
315
|
-
### 4.5: Work Complete
|
|
316
|
-
|
|
317
|
-
When all tasks are `completed:`:
|
|
318
|
-
1. Run final verification (tests, lint, build)
|
|
319
|
-
2. Commit all remaining changes
|
|
320
|
-
|
|
321
|
-
**Exit:** All tasks complete. Proceed to Phase 5.
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## Phase 5: Review
|
|
326
|
-
|
|
327
|
-
### 5.1: Setup
|
|
328
|
-
|
|
329
|
-
1. Read `workbranch` from plan frontmatter
|
|
330
|
-
2. If `workbranch` exists and not empty → switch to that branch/worktree
|
|
331
|
-
3. If `workbranch` missing or empty → review on current branch (main)
|
|
332
|
-
|
|
333
|
-
### 5.2: Check Task Completion
|
|
334
|
-
|
|
335
|
-
For each task in plan:
|
|
336
|
-
1. Read acceptance criteria
|
|
337
|
-
2. Verify against actual implementation
|
|
338
|
-
3. Determine status:
|
|
339
|
-
- **Done** — all criteria met → `completed:`
|
|
340
|
-
- **Partially Done X/Y** — some steps complete, others not
|
|
341
|
-
- **Unstarted** — nothing done
|
|
342
|
-
- **Failed** — attempted but broken
|
|
343
|
-
|
|
344
|
-
### 5.3: Run Codebase Checks
|
|
345
|
-
|
|
346
|
-
Run project's verification suite:
|
|
347
|
-
1. **Lint** — `npm run lint` or equivalent
|
|
348
|
-
2. **Type check** — `tsc --noEmit` or equivalent
|
|
349
|
-
3. **Tests** — `npm test` or equivalent
|
|
350
|
-
4. **Build** — `npm run build` or equivalent
|
|
351
|
-
5. **Docker** — `docker build .` if Dockerfile exists
|
|
352
|
-
|
|
353
|
-
Report results. If any fail:
|
|
354
|
-
- Note which checks failed
|
|
355
|
-
- Identify which tasks are affected
|
|
356
|
-
|
|
357
|
-
### 5.4: Write Reviewer Remarks
|
|
358
|
-
|
|
359
|
-
Add `REVIEWER-REMARK` at the **end of the plan document**, behind a divider:
|
|
360
|
-
|
|
361
|
-
```markdown
|
|
362
|
-
---
|
|
363
|
-
|
|
364
|
-
## Reviewer Remarks
|
|
365
|
-
|
|
366
|
-
REVIEWER-REMARK: Done
|
|
367
|
-
- All tasks complete, verified against acceptance criteria
|
|
368
|
-
|
|
369
|
-
Codebase Checks:
|
|
370
|
-
- ✓ Lint passed
|
|
371
|
-
- ✓ Type check passed
|
|
372
|
-
- ✓ Tests passed
|
|
373
|
-
- ✓ Build passed
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
### 5.5: Review Gate
|
|
377
|
-
|
|
378
|
-
**If all tasks done and checks pass:**
|
|
379
|
-
→ Proceed to Phase 6
|
|
380
|
-
|
|
381
|
-
**If tasks incomplete or checks fail:**
|
|
382
|
-
> "Tasks remaining and/or checks failing. Continuing back to work phase."
|
|
383
|
-
→ Go back to Phase 4 with failure context
|
|
384
|
-
|
|
385
|
-
**Exit:** All checks pass. Reviewer remarks say Done. Proceed to Phase 6.
|
|
386
|
-
|
|
387
|
-
---
|
|
388
|
-
|
|
389
|
-
## Phase 6: Merge (if worktree)
|
|
390
|
-
|
|
391
|
-
### 6.1: Check Branch Strategy
|
|
392
|
-
|
|
393
|
-
If `workbranch` was set (worktree):
|
|
394
|
-
1. Load worktree-merge logic
|
|
395
|
-
2. Merge worktree branch back to main
|
|
396
|
-
3. Clean up worktree and branch
|
|
397
|
-
4. Run final verification on main
|
|
398
|
-
|
|
399
|
-
If `workbranch` was empty (main branch):
|
|
400
|
-
→ Skip merge — changes already on main.
|
|
401
|
-
|
|
402
|
-
**Exit:** Code on main. Worktree cleaned (if applicable).
|
|
403
|
-
|
|
404
|
-
---
|
|
405
|
-
|
|
406
|
-
## Phase 7: Summary
|
|
407
|
-
|
|
408
|
-
Report pipeline results:
|
|
409
|
-
|
|
410
|
-
```
|
|
411
|
-
Pipeline Complete: {topic}
|
|
412
|
-
|
|
413
|
-
✓ Brainstorm — docs/specs/{spec}
|
|
414
|
-
✓ Plan — docs/plans/{plan}
|
|
415
|
-
✓ Work — {N} tasks completed on {branch or "main"}
|
|
416
|
-
✓ Review — all checks passed
|
|
417
|
-
✓ Merge — {merged to main, worktree cleaned or "already on main"}
|
|
418
|
-
|
|
419
|
-
Artifacts:
|
|
420
|
-
- Spec: docs/specs/{spec}
|
|
421
|
-
- Plan: docs/plans/{plan}
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
Suggest next steps:
|
|
425
|
-
- `the consolidate step` — save learnings
|
|
426
|
-
- `the issue scan` — deeper code review
|
|
427
|
-
- `the document step` — generate docs
|
|
428
|
-
|
|
429
|
-
---
|
|
430
|
-
|
|
431
|
-
## Interruption Handling
|
|
432
|
-
|
|
433
|
-
If any phase fails or user interrupts:
|
|
434
|
-
|
|
435
|
-
1. Record current phase and progress
|
|
436
|
-
2. Suggest resuming from the failed phase
|
|
437
|
-
3. Don't lose context — spec/plan/progress preserved
|
|
438
|
-
|
|
439
|
-
Example:
|
|
440
|
-
> "Pipeline paused at review phase. 3/5 tasks complete, tests failing.
|
|
441
|
-
> Resume with: `the full pipeline plan:<plan-path>`"
|
|
442
|
-
|
|
443
|
-
---
|
|
444
|
-
|
|
445
|
-
## Coexist Triggers
|
|
446
|
-
|
|
447
|
-
When packages are present, auto pipeline enhances:
|
|
448
|
-
|
|
449
|
-
| Package | Enhancement |
|
|
450
|
-
|---------|-------------|
|
|
451
|
-
| `@unipi/ask-user` | Use `ask_user` for decision gates |
|
|
452
|
-
| `@unipi/subagents` | Parallel task execution in work phase |
|
|
453
|
-
| `@unipi/mcp` | MCP tools available throughout |
|
|
454
|
-
| `@unipi/web-api` | Web research in brainstorm phase |
|
|
455
|
-
| `@unipi/ralph` | Ralph loop for 3+ tasks in work phase |
|
|
456
|
-
|
|
457
|
-
---
|
|
458
|
-
|
|
459
|
-
## Notes
|
|
460
|
-
|
|
461
|
-
- This skill is self-contained — no need to load other skills
|
|
462
|
-
- Gates between phases ensure user oversight
|
|
463
|
-
- Pipeline is resumable — can restart from any phase
|
|
464
|
-
- Worktree isolation protects main branch (skipped for small tasks)
|
|
465
|
-
- Auto command has `full` sandbox — all tools available
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: brainstorm
|
|
3
|
-
description: "Collaborative discovery — explore problem space, evaluate approaches, write design spec. Use before any creative work."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Brainstorming Ideas Into Designs
|
|
7
|
-
|
|
8
|
-
Turn ideas into fully formed designs through collaborative dialogue.
|
|
9
|
-
|
|
10
|
-
## Boundaries
|
|
11
|
-
|
|
12
|
-
**This skill MAY:** research (read-only), discuss, ask questions, write the brainstorm document.
|
|
13
|
-
**This skill MAY NOT:** edit code, create files beyond the brainstorm document, run tests, deploy, implement anything.
|
|
14
|
-
|
|
15
|
-
**NEVER write code during this skill. This is a discussion, not implementation.**
|
|
16
|
-
|
|
17
|
-
## Command Format
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
the brainstorm skill <string(greedy)>
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
- `string(greedy)` — the topic or problem to brainstorm about
|
|
24
|
-
- No worktree args — brainstorm runs in current session on current branch
|
|
25
|
-
- No visual companion — text-only brainstorming
|
|
26
|
-
|
|
27
|
-
## Hard Gate
|
|
28
|
-
|
|
29
|
-
Do NOT write any code, scaffold any project, or take any implementation action until design is presented and user approved. This applies to EVERY project regardless of perceived simplicity.
|
|
30
|
-
|
|
31
|
-
## Anti-Pattern: "Too Simple For Design"
|
|
32
|
-
|
|
33
|
-
Every project goes through this process. A todo list, a utility, a config change — all of them. "Simple" projects are where unexamined assumptions cause wasted work. Design can be short, but MUST present and get approval.
|
|
34
|
-
|
|
35
|
-
## Output Path
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
docs/specs/YYYY-MM-DD-<topic>-design.md
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Create the `docs/specs/` folder if it does not exist yet — it is an ordinary project folder, not a unipi store.
|
|
42
|
-
|
|
43
|
-
Committed to current branch. Accessible across worktrees via git.
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Phase 1: Explore Project Context
|
|
48
|
-
|
|
49
|
-
1. Check files, docs, recent commits to understand current state
|
|
50
|
-
2. Assess scope: if request describes multiple independent subsystems, flag immediately
|
|
51
|
-
3. If too large for single spec, help decompose into sub-projects
|
|
52
|
-
|
|
53
|
-
**Exit:** Context gathered. Ready to ask questions.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Phase 2: Ask Clarifying Questions
|
|
58
|
-
|
|
59
|
-
Ask **one question at a time**. Don't dump a questionnaire.
|
|
60
|
-
|
|
61
|
-
Start with:
|
|
62
|
-
1. "What problem are we actually solving?" — strip assumptions, get root need
|
|
63
|
-
2. "Who has this problem and when?" — context changes solutions
|
|
64
|
-
3. "What does success look like?" — outcomes, not features
|
|
65
|
-
|
|
66
|
-
Use `ask_user` for structured decisions (approach selection, scope tradeoffs) when the tool is available. If `ask_user` is not available, use conversational text with clearly numbered options (e.g., "1. Option A — ... 2. Option B — ... Please pick one."). Use conversational text for open-ended exploration. Prefer multiple choice when natural options exist. Validate assumptions explicitly.
|
|
67
|
-
|
|
68
|
-
**Exit:** Problem statement clear and reframed. Both agree on what solving.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Phase 3: Propose Approaches
|
|
73
|
-
|
|
74
|
-
Propose 2-3 different approaches with trade-offs:
|
|
75
|
-
- What each optimizes for (speed, flexibility, simplicity)
|
|
76
|
-
- What each costs (complexity, maintenance, time, risk)
|
|
77
|
-
- Prior art in codebase or industry
|
|
78
|
-
|
|
79
|
-
Present conversationally with recommendation and reasoning.
|
|
80
|
-
|
|
81
|
-
**If open questions emerge:** MUST ask user about each one. Don't assume. Use `ask_user` with clearly labeled options and descriptions for each approach when available; otherwise present numbered options conversationally.
|
|
82
|
-
|
|
83
|
-
**Exit:** Approach chosen. User signals decision.
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Phase 4: Present Design
|
|
88
|
-
|
|
89
|
-
Once approach chosen, present design in sections:
|
|
90
|
-
- Scale each section to complexity (few sentences if straightforward, 200-300 words if nuanced)
|
|
91
|
-
- Ask after each section whether it looks right (use `ask_user` for "approve / needs changes / go back" checkpoints if available; otherwise ask conversationally and wait for response)
|
|
92
|
-
- Cover: architecture, components, data flow, error handling, testing
|
|
93
|
-
- Be ready to go back and clarify
|
|
94
|
-
|
|
95
|
-
**Design for isolation and clarity:**
|
|
96
|
-
- Break into smaller units with one clear purpose
|
|
97
|
-
- Each unit communicates through well-defined interfaces
|
|
98
|
-
- Can someone understand unit without reading internals?
|
|
99
|
-
|
|
100
|
-
**Exit:** Design approved by user.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Phase 5: Write Design Document
|
|
105
|
-
|
|
106
|
-
Write to `docs/specs/YYYY-MM-DD-<topic>-design.md`:
|
|
107
|
-
|
|
108
|
-
```markdown
|
|
109
|
-
---
|
|
110
|
-
title: "{Topic}"
|
|
111
|
-
type: brainstorm
|
|
112
|
-
date: YYYY-MM-DD
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
# {Topic}
|
|
116
|
-
|
|
117
|
-
## Problem Statement
|
|
118
|
-
{The actual problem, reframed}
|
|
119
|
-
|
|
120
|
-
## Context
|
|
121
|
-
{Key findings — what exists, what's been tried}
|
|
122
|
-
|
|
123
|
-
## Chosen Approach
|
|
124
|
-
{High-level description}
|
|
125
|
-
|
|
126
|
-
## Why This Approach
|
|
127
|
-
{Decision rationale, alternatives rejected}
|
|
128
|
-
|
|
129
|
-
## Design
|
|
130
|
-
{Architecture, components, data flow}
|
|
131
|
-
|
|
132
|
-
## Implementation Checklist
|
|
133
|
-
- [ ] Task 1 — description
|
|
134
|
-
- [ ] Task 2 — description
|
|
135
|
-
- [ ] Task 3 — description
|
|
136
|
-
|
|
137
|
-
## Open Questions
|
|
138
|
-
{Questions for planning phase}
|
|
139
|
-
|
|
140
|
-
## Out of Scope
|
|
141
|
-
{Explicitly excluded}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Checklist Items
|
|
145
|
-
|
|
146
|
-
The `## Implementation Checklist` section uses `- [ ]` markdown checkboxes. These are critical:
|
|
147
|
-
|
|
148
|
-
- **`[ ]` = unplanned** — not yet covered by a plan
|
|
149
|
-
- **`[x]` = planned** — marked when plan mode (`/unipi:plan`) covers this item
|
|
150
|
-
- **`[x]` does NOT mean done** — implementation progress is tracked in the plan file (`unstarted:` / `in-progress:` / `completed:`)
|
|
151
|
-
- Agent MUST fill in checklist items based on the design
|
|
152
|
-
- Each item should be a discrete, implementable task
|
|
153
|
-
- Items should be ordered by dependency (earlier items don't depend on later ones)
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Phase 6: Spec Self-Review
|
|
158
|
-
|
|
159
|
-
After writing, review with fresh eyes:
|
|
160
|
-
|
|
161
|
-
1. **Placeholder scan:** Any "TBD", "TODO", incomplete sections? Fix them.
|
|
162
|
-
2. **Internal consistency:** Do sections contradict each other?
|
|
163
|
-
3. **Scope check:** Focused enough for single implementation plan?
|
|
164
|
-
4. **Ambiguity check:** Could any requirement be interpreted two ways? Pick one.
|
|
165
|
-
|
|
166
|
-
Fix issues inline. No need to re-review — fix and move on.
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## Phase 7: User Review Gate
|
|
171
|
-
|
|
172
|
-
After self-review passes:
|
|
173
|
-
|
|
174
|
-
> "Spec written and committed to `docs/specs/YYYY-MM-DD-<topic>-design.md`. Please review and let me know if you want changes before we plan."
|
|
175
|
-
|
|
176
|
-
Wait for user response. If changes requested, make them and re-run self-review.
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Phase 8: Handoff
|
|
181
|
-
|
|
182
|
-
Ask user what to do next. If `ask_user` is available, prefer structured options so the plan handoff can run automatically:
|
|
183
|
-
|
|
184
|
-
```ts
|
|
185
|
-
ask_user({
|
|
186
|
-
question: "What would you like to do next?",
|
|
187
|
-
options: [
|
|
188
|
-
{
|
|
189
|
-
label: "Proceed to plan mode",
|
|
190
|
-
description: "Turn decisions into an implementation plan",
|
|
191
|
-
value: "plan",
|
|
192
|
-
action: "new_session",
|
|
193
|
-
prefill: "/unipi:plan",
|
|
194
|
-
},
|
|
195
|
-
{ label: "Keep exploring", description: "Refine questions or decisions", value: "explore" },
|
|
196
|
-
{ label: "Done for now", description: "Return later", value: "done", action: "end_turn" },
|
|
197
|
-
],
|
|
198
|
-
allowFreeform: false,
|
|
199
|
-
})
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
If `ask_user` is unavailable, ask conversationally with the same options. Keep this copyable fallback command visible:
|
|
203
|
-
```
|
|
204
|
-
/unipi:plan
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## Validate
|
|
210
|
-
|
|
211
|
-
Before delivering, verify:
|
|
212
|
-
|
|
213
|
-
- [ ] Problem was reframed — not accepted at face value
|
|
214
|
-
- [ ] At least 2 approaches explored with tradeoffs
|
|
215
|
-
- [ ] Every decision has rationale and rejected alternatives documented
|
|
216
|
-
- [ ] Implementation checklist has concrete, discrete tasks with `[ ]` markers
|
|
217
|
-
- [ ] Open questions listed — nothing swept under rug
|
|
218
|
-
- [ ] No code was written — only brainstorm document created
|
|
219
|
-
- [ ] plan mode can start from this document without asking "what did you decide about X?"
|