waypoint-skills 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +348 -0
  3. package/README.npm.md +56 -0
  4. package/cli/bin/cli.js +127 -0
  5. package/cli/bin/lib/paths.mjs +31 -0
  6. package/cli/bin/postinstall.mjs +25 -0
  7. package/manifest.json +107 -0
  8. package/package.json +44 -0
  9. package/packages/agents/inspiration-scout.md +105 -0
  10. package/packages/agents/orchestrator.md +186 -0
  11. package/packages/agents/scrutiny-validator.md +136 -0
  12. package/packages/agents/user-testing-validator.md +171 -0
  13. package/packages/agents/validator.md +102 -0
  14. package/packages/agents/worker.md +116 -0
  15. package/packages/agents/wp-router.md +69 -0
  16. package/packages/hooks/hooks.json.example +12 -0
  17. package/packages/hooks/templates/mission-worktree-bootstrap.sh +88 -0
  18. package/packages/hooks/templates/run-assertions.sh +48 -0
  19. package/packages/rules/adversarial-context-isolation.mdc +57 -0
  20. package/packages/rules/serial-git-enforcement.mdc +77 -0
  21. package/packages/skills/caveman/SKILL.md +78 -0
  22. package/packages/skills/design-taste-frontend/SKILL.md +1206 -0
  23. package/packages/skills/gpt-taste/SKILL.md +74 -0
  24. package/packages/skills/impeccable/SKILL.md +164 -0
  25. package/packages/skills/impeccable/reference/adapt.md +311 -0
  26. package/packages/skills/impeccable/reference/animate.md +201 -0
  27. package/packages/skills/impeccable/reference/audit.md +133 -0
  28. package/packages/skills/impeccable/reference/bolder.md +120 -0
  29. package/packages/skills/impeccable/reference/brand.md +108 -0
  30. package/packages/skills/impeccable/reference/clarify.md +288 -0
  31. package/packages/skills/impeccable/reference/codex.md +105 -0
  32. package/packages/skills/impeccable/reference/colorize.md +257 -0
  33. package/packages/skills/impeccable/reference/craft.md +123 -0
  34. package/packages/skills/impeccable/reference/critique.md +780 -0
  35. package/packages/skills/impeccable/reference/delight.md +302 -0
  36. package/packages/skills/impeccable/reference/distill.md +111 -0
  37. package/packages/skills/impeccable/reference/document.md +429 -0
  38. package/packages/skills/impeccable/reference/extract.md +69 -0
  39. package/packages/skills/impeccable/reference/harden.md +347 -0
  40. package/packages/skills/impeccable/reference/hooks.md +90 -0
  41. package/packages/skills/impeccable/reference/init.md +172 -0
  42. package/packages/skills/impeccable/reference/interaction-design.md +189 -0
  43. package/packages/skills/impeccable/reference/layout.md +161 -0
  44. package/packages/skills/impeccable/reference/live.md +718 -0
  45. package/packages/skills/impeccable/reference/onboard.md +234 -0
  46. package/packages/skills/impeccable/reference/optimize.md +258 -0
  47. package/packages/skills/impeccable/reference/overdrive.md +130 -0
  48. package/packages/skills/impeccable/reference/polish.md +241 -0
  49. package/packages/skills/impeccable/reference/product.md +60 -0
  50. package/packages/skills/impeccable/reference/quieter.md +99 -0
  51. package/packages/skills/impeccable/reference/shape.md +165 -0
  52. package/packages/skills/impeccable/reference/typeset.md +279 -0
  53. package/packages/skills/impeccable/scripts/command-metadata.json +94 -0
  54. package/packages/skills/impeccable/scripts/context-signals.mjs +225 -0
  55. package/packages/skills/impeccable/scripts/context.mjs +961 -0
  56. package/packages/skills/impeccable/scripts/critique-storage.mjs +242 -0
  57. package/packages/skills/impeccable/scripts/detect-csp.mjs +198 -0
  58. package/packages/skills/impeccable/scripts/detect.mjs +21 -0
  59. package/packages/skills/impeccable/scripts/detector/browser/injected/index.mjs +1937 -0
  60. package/packages/skills/impeccable/scripts/detector/cli/main.mjs +290 -0
  61. package/packages/skills/impeccable/scripts/detector/design-system.mjs +750 -0
  62. package/packages/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +5185 -0
  63. package/packages/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
  64. package/packages/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +277 -0
  65. package/packages/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +568 -0
  66. package/packages/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1015 -0
  67. package/packages/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +234 -0
  68. package/packages/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
  69. package/packages/skills/impeccable/scripts/detector/findings.mjs +12 -0
  70. package/packages/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
  71. package/packages/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
  72. package/packages/skills/impeccable/scripts/detector/registry/antipatterns.mjs +459 -0
  73. package/packages/skills/impeccable/scripts/detector/rules/checks.mjs +2707 -0
  74. package/packages/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
  75. package/packages/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
  76. package/packages/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
  77. package/packages/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
  78. package/packages/skills/impeccable/scripts/hook-admin.mjs +660 -0
  79. package/packages/skills/impeccable/scripts/hook-before-edit.mjs +476 -0
  80. package/packages/skills/impeccable/scripts/hook-lib.mjs +1632 -0
  81. package/packages/skills/impeccable/scripts/hook.mjs +61 -0
  82. package/packages/skills/impeccable/scripts/lib/design-parser.mjs +842 -0
  83. package/packages/skills/impeccable/scripts/lib/impeccable-config.mjs +638 -0
  84. package/packages/skills/impeccable/scripts/lib/impeccable-paths.mjs +128 -0
  85. package/packages/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
  86. package/packages/skills/impeccable/scripts/lib/target-args.mjs +42 -0
  87. package/packages/skills/impeccable/scripts/live/browser-script-parts.mjs +49 -0
  88. package/packages/skills/impeccable/scripts/live/completion.mjs +19 -0
  89. package/packages/skills/impeccable/scripts/live/event-validation.mjs +137 -0
  90. package/packages/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
  91. package/packages/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
  92. package/packages/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
  93. package/packages/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
  94. package/packages/skills/impeccable/scripts/live/session-store.mjs +289 -0
  95. package/packages/skills/impeccable/scripts/live/svelte-component.mjs +826 -0
  96. package/packages/skills/impeccable/scripts/live/sveltekit-adapter.mjs +274 -0
  97. package/packages/skills/impeccable/scripts/live/ui-core.mjs +180 -0
  98. package/packages/skills/impeccable/scripts/live/vocabulary.mjs +36 -0
  99. package/packages/skills/impeccable/scripts/live-accept.mjs +812 -0
  100. package/packages/skills/impeccable/scripts/live-browser-dom.js +146 -0
  101. package/packages/skills/impeccable/scripts/live-browser-session.js +123 -0
  102. package/packages/skills/impeccable/scripts/live-browser.js +11173 -0
  103. package/packages/skills/impeccable/scripts/live-commit-manual-edits.mjs +1241 -0
  104. package/packages/skills/impeccable/scripts/live-complete.mjs +75 -0
  105. package/packages/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
  106. package/packages/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
  107. package/packages/skills/impeccable/scripts/live-inject.mjs +583 -0
  108. package/packages/skills/impeccable/scripts/live-insert.mjs +272 -0
  109. package/packages/skills/impeccable/scripts/live-manual-edit-evidence.mjs +363 -0
  110. package/packages/skills/impeccable/scripts/live-poll.mjs +384 -0
  111. package/packages/skills/impeccable/scripts/live-resume.mjs +94 -0
  112. package/packages/skills/impeccable/scripts/live-server.mjs +1135 -0
  113. package/packages/skills/impeccable/scripts/live-status.mjs +61 -0
  114. package/packages/skills/impeccable/scripts/live-target.mjs +30 -0
  115. package/packages/skills/impeccable/scripts/live-wrap.mjs +894 -0
  116. package/packages/skills/impeccable/scripts/live.mjs +297 -0
  117. package/packages/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  118. package/packages/skills/impeccable/scripts/palette.mjs +633 -0
  119. package/packages/skills/impeccable/scripts/pin.mjs +214 -0
  120. package/packages/skills/ponytail/SKILL.md +117 -0
  121. package/packages/skills/stitch-design-taste/DESIGN.md +121 -0
  122. package/packages/skills/stitch-design-taste/SKILL.md +184 -0
  123. package/packages/skills/waypoint/SKILL.md +67 -0
  124. package/packages/skills/wp/SKILL.md +330 -0
  125. package/packages/skills/wp/caveman-wire.md +148 -0
  126. package/packages/skills/wp/reference.md +411 -0
  127. package/scripts/detect-platform.sh +32 -0
  128. package/scripts/install.sh +123 -0
  129. package/scripts/lib/common.sh +215 -0
  130. package/scripts/sync-skills.sh +21 -0
  131. package/scripts/uninstall.sh +38 -0
  132. package/scripts/waypoint +281 -0
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: waypoint
3
+ description: >-
4
+ Install and manage Waypoint Skills across AI assistants (Cursor, Claude, Codex,
5
+ Antigravity, Copilot). Use when user asks to install waypoint.sk, bootstrap wp
6
+ framework, run waypoint doctor, or verify skills installation.
7
+ ---
8
+
9
+ # Waypoint Skills (install skill)
10
+
11
+ Install [waypoint.sk](https://github.com/quenginedev/waypoint.sk) into any supported AI assistant.
12
+
13
+ ## Supported platforms
14
+
15
+ Cursor, Claude Code, Codex, Antigravity, GitHub Copilot, Gemini CLI — see `docs/PLATFORMS.md`.
16
+
17
+ ## Install (agent executes)
18
+
19
+ **Recommended — full framework (skills + agents + rules + hooks):**
20
+
21
+ ```bash
22
+ npx waypoint-skills install -y
23
+ npx waypoint-skills install --platform cursor --global
24
+ npx waypoint-skills install --platform claude --global
25
+ ```
26
+
27
+ **Skills only** via [skills CLI](https://skills.sh):
28
+
29
+ ```bash
30
+ npx skills add quenginedev/waypoint.sk -g -y
31
+ npx skills add quenginedev/waypoint.sk --skill wp --skill ponytail -g -y
32
+ npx skills add quenginedev/waypoint.sk --list
33
+ ```
34
+
35
+ **From git clone or curl:**
36
+
37
+ ```bash
38
+ git clone https://github.com/quenginedev/waypoint.sk.git
39
+ cd waypoint.sk && npx waypoint-skills install -y
40
+
41
+ curl -fsSL https://raw.githubusercontent.com/quenginedev/waypoint.sk/main/scripts/install.sh | bash -s -- --platform auto --global
42
+ ```
43
+
44
+ ## Bootstrap wp in cwd git project
45
+
46
+ ```bash
47
+ npx waypoint-skills bootstrap
48
+ npx waypoint-skills bootstrap --mid api-payments
49
+ ```
50
+
51
+ Then: `/wp [objective]` or `wp: list`
52
+
53
+ ## Verify
54
+
55
+ ```bash
56
+ npx waypoint-skills doctor
57
+ npx waypoint-skills status --platform cursor --global
58
+ npx waypoint-skills instances
59
+ ```
60
+
61
+ ## Manifest
62
+
63
+ `manifest.json` — platforms, skills (`wp`, `caveman`, `ponytail`, `waypoint`, taste skills), agents, rules.
64
+
65
+ ## Flow reference
66
+
67
+ `docs/WAYPOINT-FLOW.md`
@@ -0,0 +1,330 @@
1
+ ---
2
+ name: wp
3
+ description: >-
4
+ Intercepts /wp, wp:, and run wp: prompts; bootstraps .wp/
5
+ framework state with per-instance namespacing and git worktrees; routes to
6
+ Orchestrator subagent. Part of Waypoint Skills. Supports lifecycle commands
7
+ (list, status, pause, abort, pivot, resume) scoped by instance id.
8
+ ---
9
+
10
+ # wp (Waypoint Skills router)
11
+
12
+ ## Skill: wp
13
+
14
+ **Trigger keywords** (message starts with, case-insensitive):
15
+
16
+ | Prefix | Objective |
17
+ |--------|-----------|
18
+ | `/wp` | remainder after prefix (optional space or `:`) |
19
+ | `/wp:` | remainder after prefix |
20
+ | `wp:` | remainder after prefix |
21
+ | `wp ` | remainder after prefix |
22
+ | `run wp:` | remainder after prefix |
23
+
24
+ **Mission ID** (optional, parsed before objective):
25
+
26
+ | Syntax | Example | `mid` |
27
+ |--------|---------|-------|
28
+ | `@<id>` prefix | `/wp @api-payments add Stripe webhooks` | `api-payments` |
29
+ | `--id=<id>` flag | `wp: --id=web-checkout checkout success page` | `web-checkout` |
30
+ | omitted | `/wp add checkout emails` | `default` |
31
+
32
+ **ID rules:** lowercase `[a-z0-9][a-z0-9-]*` only. Invalid ID → ask user to fix.
33
+
34
+ **Flags** (strip from objective before routing):
35
+
36
+ | Flag | Effect |
37
+ |------|--------|
38
+ | `--foreground` | Orchestrator Task runs blocking (default for `resume`) |
39
+ | `--no-worktree` | Instance uses `project_root` instead of git worktree (only for `default` or explicit opt-out) |
40
+
41
+ **Do not activate** on incidental phrases like "the mission of this refactor is…" unless prefixed with `/wp` or `wp:`.
42
+
43
+ **Lifecycle commands** (objective exact match after ID/flag strip, case-insensitive):
44
+
45
+ | Command | Action |
46
+ |---------|--------|
47
+ | `list` | Read-only — all instances from `registry.md`; no bootstrap, no orchestrator |
48
+ | `status` | Read-only dashboard — all instances if no `@id`; one instance if `@id` present |
49
+ | `resume` | Route to Orchestrator for scoped `mid` (no re-scope) |
50
+ | `pause` | Write pause marker to instance `mission_control.md`; halt that instance's loop |
51
+ | `abort` | Archive instance to `.wp/archive/<mid>-YYYY-MM-DD-HHMM/`; confirm with user |
52
+ | `pivot: [new objective]` | Ask: resume / archive+restart / append epic **within scoped `mid`** |
53
+
54
+ If objective is empty after stripping prefix, show the lifecycle help block (table above + `wp: [@id] [objective]`).
55
+
56
+ ## Objective
57
+
58
+ Bootstrap `.wp/` framework shell when missing, bootstrap **per-instance** state under `.wp/instances/<mid>/`, provision **git worktree** for non-`default` missions, then **delegate to the Orchestrator subagent via Task** — never adopt Orchestrator persona inline. Preserve parent context for routing only.
59
+
60
+ ## Workspace Precondition
61
+
62
+ Before Phase 1:
63
+
64
+ 1. Confirm workspace is the **target project root** (not home `~` unless user explicitly confirmed).
65
+ 2. If unclear, ask the user or call `move_agent_to_root` on the project path.
66
+ 3. Never bootstrap `.wp/` in home without explicit confirmation.
67
+
68
+ ## Multi-Mission Concurrency (v1.3)
69
+
70
+ | Rule | Policy |
71
+ |------|--------|
72
+ | State isolation | One `wp_root` per `mid`; never write sibling instances |
73
+ | Orchestrator loops | One active orchestrator loop per `mid` |
74
+ | Worker git isolation | Each non-`default` `mid` gets its own git worktree; workers run in `worktree_root` |
75
+ | Parallel OK | `list`/`status`, explore subagents, scope/contract dialogue in separate chats |
76
+ | Parallel blocked | Two workers in the **same** worktree simultaneously |
77
+
78
+ **Path constants** (compute on every invocation):
79
+
80
+ ```
81
+ project_root = absolute workspace root (git repo)
82
+ mid = parsed mission id (default: default)
83
+ wp_root = .wp/instances/<mid>/
84
+ worktree_root = from instance_meta.md, or project_root for default/--no-worktree
85
+ ```
86
+
87
+ ## Phase 1: Deterministic Environment Bootstrap
88
+
89
+ Run when `.wp/` shell is missing, or when `wp_root` for this `mid` is missing. All steps **idempotent**.
90
+
91
+ ### 1a — Framework shell directories
92
+
93
+ ```
94
+ .wp/
95
+ ├── registry.md
96
+ ├── agents/
97
+ ├── skills/
98
+ ├── hooks/
99
+ └── instances/
100
+ └── <mid>/
101
+ ├── instance_meta.md
102
+ ├── mission_profile.md
103
+ ├── validation_contract.md
104
+ ├── active_plan.md
105
+ ├── mission_control.md
106
+ └── handoffs/
107
+ ```
108
+
109
+ Shared framework lives at `.wp/{agents,skills,hooks}/`. Per-mission state lives only under `.wp/instances/<mid>/`.
110
+
111
+ ### 1b — gitignore
112
+
113
+ Append `.wp/` only if not already listed. Ensure trailing newline before append.
114
+
115
+ ```bash
116
+ grep -qxF '.wp/' .gitignore 2>/dev/null || echo '.wp/' >> .gitignore
117
+ ```
118
+
119
+ If no `.gitignore` exists, create one containing exactly `.wp/`.
120
+
121
+ Recommend appending worktree parent to gitignore when first worktree created:
122
+
123
+ ```bash
124
+ # e.g. HerbalTech-missions/ sibling directory
125
+ grep -qxF '${PROJECT_NAME}-missions/' .gitignore 2>/dev/null || echo '${PROJECT_NAME}-missions/' >> .gitignore
126
+ ```
127
+
128
+ ### 1b2 — Rename legacy `.missions/` → `.wp/` (run once)
129
+
130
+ If `.missions/` exists and `.wp/` does not:
131
+
132
+ ```bash
133
+ mv .missions .wp
134
+ grep -qxF '.wp/' .gitignore 2>/dev/null || echo '.wp/' >> .gitignore
135
+ sed -i.bak '/^\.missions\//d' .gitignore 2>/dev/null || sed -i '' '/^\.missions\//d' .gitignore
136
+ rm -f .gitignore.bak
137
+ ```
138
+
139
+ ### 1c — Legacy migration (v1.2 → v1.3, run once)
140
+
141
+ If flat v1.2 files exist at `.wp/*.md` or `.wp/handoffs/` and `.wp/instances/default/` does not exist:
142
+
143
+ 1. Create `.wp/instances/default/handoffs/`
144
+ 2. Move `mission_profile.md`, `validation_contract.md`, `active_plan.md`, `mission_control.md` → `instances/default/`
145
+ 3. Move `.wp/handoffs/*` → `instances/default/handoffs/`
146
+ 4. Bump `framework_version` to `1.3.0` in migrated `mission_control.md`
147
+ 5. Register `default` in `registry.md` (see reference.md)
148
+
149
+ Do not move `agents/`, `skills/`, `hooks/`, or `archive/`.
150
+
151
+ ### 1d — Instance state files (templates in reference.md)
152
+
153
+ | File | When missing |
154
+ |------|--------------|
155
+ | `.wp/registry.md` | Seed from template |
156
+ | `.wp/instances/<mid>/instance_meta.md` | Seed with worktree metadata |
157
+ | `.wp/instances/<mid>/mission_profile.md` | Seed from template |
158
+ | `.wp/instances/<mid>/validation_contract.md` | Seed from template |
159
+ | `.wp/instances/<mid>/active_plan.md` | Seed from template |
160
+ | `.wp/instances/<mid>/mission_control.md` | Seed (`framework_version: 1.3.0`) |
161
+
162
+ ### 1e — Framework seeds (shared, idempotent)
163
+
164
+ | File | Action |
165
+ |------|--------|
166
+ | `.wp/agents/orchestrator.md` | Copy `packages/agents/orchestrator.md` |
167
+ | `.wp/hooks/run-assertions.sh` | Copy `packages/hooks/templates/run-assertions.sh` (chmod +x) |
168
+ | `.wp/hooks/mission-worktree-bootstrap.sh` | Copy `packages/hooks/templates/mission-worktree-bootstrap.sh` (chmod +x) |
169
+ | `.wp/skills/_index.md` | Seed from template |
170
+ | `.wp/skills/caveman-wire.md` | Copy `packages/skills/wp/caveman-wire.md` |
171
+
172
+ ### 1f — Git worktree provisioning
173
+
174
+ For `mid != default` and no `--no-worktree`:
175
+
176
+ ```bash
177
+ .wp/hooks/mission-worktree-bootstrap.sh \
178
+ --project-root "$project_root" \
179
+ --mid "$mid" \
180
+ --meta-out ".wp/instances/$mid/instance_meta.md"
181
+ ```
182
+
183
+ On success, record `worktree_root` in `instance_meta.md` and `registry.md`. Call `move_agent_to_root` on `worktree_root` when the current chat should continue in the worktree.
184
+
185
+ For `mid == default` or `--no-worktree`: `worktree_root = project_root`; no worktree created.
186
+
187
+ ### 1g — Registry update
188
+
189
+ After instance bootstrap, append or update row in `.wp/registry.md` (see reference.md).
190
+
191
+ ### 1h — Optional verification hooks
192
+
193
+ If the project uses Cursor hooks and user has not declined: offer verification-checkpoint hooks from `~/.cursor/hooks/verification-checkpoint-*.sh`.
194
+
195
+ ### Bootstrap confirmation
196
+
197
+ Print once when framework shell or new instance was created:
198
+
199
+ ```
200
+ 🚀 Waypoint Skills v1.3 initialized. Instance `<mid>` at `.wp/instances/<mid>/`.
201
+ Worktree: [path | project root]
202
+ ```
203
+
204
+ ## Phase 2: Orchestration Routing
205
+
206
+ **Default: Task delegation** — invoke `orchestrator` subagent via Task tool.
207
+
208
+ Do **not** adopt Orchestrator persona inline unless Task is unavailable.
209
+
210
+ ### Hand-off payload
211
+
212
+ Use **caveman wire** format (see `.wp/skills/caveman-wire.md`):
213
+
214
+ ```markdown
215
+ ## Wire Hand-off
216
+
217
+ obj: [verbatim user objective]
218
+ mid: [mission id]
219
+ boot: initialized|existing
220
+ project_root: [absolute path to git repo]
221
+ wp_root: .wp/instances/<mid>/
222
+ worktree_root: [absolute path — where workers edit code]
223
+ phase: [Scope|Contract|Plan|Delegation|Negotiation|Complete|Paused]
224
+ pause: yes|no
225
+ bg: yes|no
226
+ style: caveman wire between agents; normal prose to user
227
+ impl: ponytail full — reuse codebase before new code
228
+ instr: current phase only; multi-tool/MCP → Task subagents; compact wire returns; all paths relative to wp_root unless code edits (worktree_root)
229
+ ```
230
+
231
+ **Background policy:** `bg: yes` (Task `run_in_background: true`) for **new** instance starts. `bg: no` for `resume`, `--foreground`, or when user is in active negotiation on this `mid`.
232
+
233
+ ### Conflict handling (scoped to `mid`)
234
+
235
+ | Situation | Action |
236
+ |-----------|--------|
237
+ | Same `mid`, new objective differs from `mission_profile.md` | Ask: **Resume** \| **Archive and restart** \| **Append as new epic** |
238
+ | New `mid` | Create instance + worktree; register; do **not** touch other instances |
239
+ | No `mid`, `default` active, user sends different objective | Ask: continue `default` or start `wp: @new-id …` |
240
+
241
+ Never silently overwrite another instance's `mission_profile.md`.
242
+
243
+ ### Phase detection (per instance)
244
+
245
+ Read from `wp_root` (not framework root):
246
+
247
+ | Signal | Phase |
248
+ |--------|-------|
249
+ | `mission_control.md` has `pause: active` | Paused |
250
+ | `mission_profile.md` mostly empty / only template | Scope |
251
+ | Profile filled; contract lacks `approved: yes` | Contract |
252
+ | Contract approved; plan empty or no tasks | Plan |
253
+ | Exactly one task `in_progress`, no pending handoff review | Delegation |
254
+ | Handoff or validation report exists for current task | Negotiation |
255
+ | All tasks `complete` | Complete |
256
+
257
+ On resume, Orchestrator opens with **Resume Summary** — never restart Scope unless user pivoted/archived.
258
+
259
+ ## Execution Order
260
+
261
+ ```
262
+ 1. Parse trigger + flags + mid + objective (or lifecycle command)
263
+ 2. Workspace precondition check
264
+ 3. Lifecycle command? → handle and stop (except resume → step 7)
265
+ 4. Phase 1a–1e: framework shell bootstrap if .wp/ missing
266
+ 5. Legacy migration (1c) if needed
267
+ 6. Phase 1d–1g: instance bootstrap + worktree for this mid
268
+ 7. Ensure orchestrator.md + seeds exist (idempotent)
269
+ 8. Phase detection from wp_root state
270
+ 9. Task → orchestrator subagent with hand-off payload (background per policy)
271
+ ```
272
+
273
+ Never write application code in bootstrap/routing. Never skip gitignore isolation.
274
+
275
+ ## Mission Pipeline (Orchestrator owns after hand-off)
276
+
277
+ ```
278
+ Scope → Contract (user approves) → Plan → Worker → Validator → Bookkeeping → next task
279
+ ↑ |
280
+ └──── BLOCK / revise-contract ───────┘
281
+ ```
282
+
283
+ | After | Invoke via Task subagent |
284
+ |-------|--------------------------|
285
+ | Task assignment | `worker` (payload includes `worktree_root`, `wp_root`, `mid`) |
286
+ | Worker handoff | `validator` (same `mid` + `wp_root`) |
287
+ | Task status transition | `mission-control-bookkeeping` skill |
288
+ | Reusable insight | `encode-skill` |
289
+
290
+ ## Approval Gates
291
+
292
+ **Scope exit:** User confirms scope (`approve scope`, `scope lgtm`, or explicit edits + confirmation).
293
+
294
+ **Contract exit:** Contract is NOT approved until user replies `approve contract`, `contract lgtm`, or edits + explicit confirmation. Orchestrator sets `Approved: yes` in `wp_root/validation_contract.md` only after user approval.
295
+
296
+ ## Mandatory Mission Skills
297
+
298
+ ### 1. Caveman — inter-agent state (mandatory)
299
+
300
+ All agent-to-agent communication uses **caveman wire** per `.wp/skills/caveman-wire.md`. Handoffs live under `wp_root/handoffs/`.
301
+
302
+ ### 2. Ponytail — implementation (mandatory for worker)
303
+
304
+ Worker and plan tasks follow **ponytail full** (`~/.cursor/skills/ponytail/SKILL.md`). Workers edit code in `worktree_root` only.
305
+
306
+ ## Context Preservation (mandatory)
307
+
308
+ | Role | Delegates to | Keeps in context |
309
+ |------|--------------|------------------|
310
+ | wp skill / router | `orchestrator` via Task | objective, mid, phase, worktree_root |
311
+ | orchestrator | `worker`, `validator`, `explore`, `shell` | plan state for this `mid` only |
312
+ | worker | `explore`, `shell` for heavy Observe | single task; **worktree_root** for edits |
313
+ | validator | `shell`, scrutiny, browser subagents | gate signal; same `mid` as worker |
314
+
315
+ ## Related Artifacts
316
+
317
+ | Skill / agent | Role |
318
+ |---------------|------|
319
+ | `caveman-wire.md` / `caveman` skill | Inter-agent compressed state |
320
+ | `ponytail` skill | Minimal implementation, reuse-first |
321
+ | `wp` subagent | Isolated bootstrap + route via Task |
322
+ | `orchestrator` subagent | Planning, delegation loop per instance |
323
+ | `worker` subagent | Single-task implementation in worktree |
324
+ | `validator` subagent | Assertion verification gate |
325
+ | mission-control-bookkeeping | Ledger after task transitions |
326
+ | `mission-worktree-bootstrap.sh` | Git worktree provisioning |
327
+
328
+ ## Additional Resources
329
+
330
+ Templates, migration, worktree policy: [reference.md](reference.md)
@@ -0,0 +1,148 @@
1
+ # Caveman Wire Protocol
2
+
3
+ Inter-agent state in `.wp/instances/<mid>/` uses **caveman wire** — ultra-compressed, full technical accuracy, ~75% fewer tokens than prose handoffs.
4
+
5
+ Applies to: orchestrator ↔ worker ↔ validator ↔ bookkeeping payloads, `wp_root/handoffs/*.md`, `Subagent Summary` blocks, mission_control ledger lines.
6
+
7
+ **Not** for user-facing scope dialogue (normal prose unless user wants caveman). **Yes** for all agent-to-agent artifacts.
8
+
9
+ Read full style rules: `~/.cursor/skills/caveman/SKILL.md`. Wire default: **caveman full**. Wire only: **caveman ultra**.
10
+
11
+ ## Path Conventions (v1.3)
12
+
13
+ Every wire payload includes instance context:
14
+
15
+ ```markdown
16
+ mid: [mission id]
17
+ wp_root: .wp/instances/<mid>/
18
+ worktree_root: [absolute path — application code edits]
19
+ project_root: [absolute path — git repo anchor]
20
+ ```
21
+
22
+ - **Handoffs / validation reports / plan artifacts:** under `wp_root`
23
+ - **Application code edits:** under `worktree_root` only
24
+ - Never write sibling instance paths
25
+
26
+ ## Wire Rules
27
+
28
+ - Drop articles, filler, hedging. Fragments OK.
29
+ - Pattern: `[thing] [action] [reason]. [next].`
30
+ - Code paths, assertion IDs, exit codes, gate signals: **verbatim exact**
31
+ - No tool-call narration, no emoji, no decorative tables in wire blocks
32
+ - Errors: shortest decisive line only
33
+ - User language preserved if present in source artifact
34
+
35
+ ## Hand-off Payload (orchestrator → worker)
36
+
37
+ ```markdown
38
+ ## Wire Hand-off
39
+
40
+ mid: [id]
41
+ obj: [task N title]
42
+ assert: A-01,A-02
43
+ bound-ok: src/mail/,src/api/
44
+ bound-no: migrations/,infra/
45
+ worktree_root: [absolute path]
46
+ wp_root: .wp/instances/<mid>/
47
+ out: .wp/instances/<mid>/handoffs/feature_[ID]_log.md
48
+ impl: ponytail full — reuse before write
49
+ style: caveman wire handoff
50
+ ```
51
+
52
+ ## Router → Orchestrator Payload
53
+
54
+ ```markdown
55
+ ## Wire Hand-off
56
+
57
+ obj: [verbatim user objective]
58
+ mid: [id]
59
+ boot: initialized|existing
60
+ project_root: [abs path]
61
+ wp_root: .wp/instances/<mid>/
62
+ worktree_root: [abs path]
63
+ phase: [Scope|Contract|Plan|Delegation|Negotiation|Complete|Paused]
64
+ pause: yes|no
65
+ bg: yes|no
66
+ style: caveman wire between agents; normal prose to user
67
+ impl: ponytail full
68
+ instr: current phase only; multi-tool → Task subagents; wire returns only
69
+ ```
70
+
71
+ ## Worker Handoff (`feature_[ID]_log.md`)
72
+
73
+ ```markdown
74
+ # Wire T[N] [slug]
75
+
76
+ mid: [id]
77
+ status: complete|partial|blocked
78
+ assert: A-01,A-02
79
+ done: [files changed, behavior shipped — fragments]
80
+ skip: [deferred or none]
81
+ cmd: [cmd] → [exit]|...
82
+ git: clean|dirty [scope]
83
+ worktree: [path]
84
+ arch: [issue or none]
85
+ eval: A-01 met|A-02 partial
86
+ rec: accept|modify-plan|revise-contract
87
+ why: [one line max]
88
+ ```
89
+
90
+ ## Validator Report (`validation_[ID]_report.md`)
91
+
92
+ ```markdown
93
+ # Wire Val T[N]
94
+
95
+ mid: [id]
96
+ gate: CLEAR|BLOCK
97
+ handoff: feature_[ID]_log.md
98
+ assert: A-01 pass|A-02 fail
99
+ cmd: [cmd] → [exit]|...
100
+ worktree: [path verified]
101
+ runtime: [journey result fragment or deferred]
102
+ fail: A-02 expected X got Y → worker-fix
103
+ rec: clear|block
104
+ ```
105
+
106
+ ## Subagent Summary (return to parent)
107
+
108
+ ```markdown
109
+ ## Subagent Summary
110
+ role: worker|validator|explore|shell
111
+ mid: [id]
112
+ status: complete|blocked|partial
113
+ artifacts: [paths]
114
+ gate: CLEAR|BLOCK|—
115
+ block: [none|one line]
116
+ worktree: [path if applicable]
117
+ ```
118
+
119
+ ## Ledger Line (`mission_control.md`)
120
+
121
+ ```markdown
122
+ ### [ISO] T[N]: [title]
123
+ mid: [id]
124
+ trans: in_progress→complete
125
+ gate: CLEAR
126
+ pct: 66.7
127
+ follow: none
128
+ note: [one fragment]
129
+ ```
130
+
131
+ ## State Pointer (orchestrator resume)
132
+
133
+ ```markdown
134
+ mid: [id]
135
+ phase: Delegation
136
+ task: T2 in_progress
137
+ last: feature_1_log CLEAR
138
+ next: delegate worker T2
139
+ worktree: [path]
140
+ ```
141
+
142
+ ## Auto-Clarity Exception
143
+
144
+ Use full sentences (not wire) when:
145
+ - Security / irreversible ops need user confirm
146
+ - Ambiguous fragment would misroute next agent
147
+
148
+ Resume wire after clear.