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,411 @@
1
+ # wp Reference
2
+
3
+ Authoritative bootstrap lives in [SKILL.md](SKILL.md). Part of **Waypoint Skills** (repo: `waypoint.sk`).
4
+
5
+ **Framework version:** 1.3.0 (multi-instance + git worktrees)
6
+
7
+ ## Directory Layout (v1.3)
8
+
9
+ ```
10
+ .wp/
11
+ ├── registry.md
12
+ ├── agents/orchestrator.md
13
+ ├── skills/{_index.md,caveman-wire.md}
14
+ ├── hooks/{run-assertions.sh,mission-worktree-bootstrap.sh}
15
+ ├── archive/<mid>-YYYY-MM-DD-HHMM/
16
+ └── instances/
17
+ └── <mid>/
18
+ ├── instance_meta.md
19
+ ├── mission_profile.md
20
+ ├── validation_contract.md
21
+ ├── active_plan.md
22
+ ├── mission_control.md
23
+ └── handoffs/
24
+ ```
25
+
26
+ ## Phase 1 — Bootstrap Templates
27
+
28
+ ### registry.md
29
+
30
+ ```markdown
31
+ # Mission Registry
32
+
33
+ | mid | objective | phase | pause | worktree_root | updated |
34
+ |-----|-----------|-------|-------|---------------|---------|
35
+ | default | | Scope | no | [project_root] | [ISO date] |
36
+ ```
37
+
38
+ Update row on instance bootstrap, phase change, pause/resume, abort (remove row).
39
+
40
+ ### instance_meta.md
41
+
42
+ ```markdown
43
+ # Instance Meta
44
+
45
+ **mid:** [id]
46
+ **framework_version:** 1.3.0
47
+ **project_root:** [absolute path to git repo]
48
+ **worktree_root:** [absolute path — code edits happen here]
49
+ **branch:** mission/[mid] | main (default)
50
+ **worktree_parent:** [path or —]
51
+ **provisioned_at:** [ISO date]
52
+ ```
53
+
54
+ For `default` or `--no-worktree`: `worktree_root` equals `project_root`, `branch: —`.
55
+
56
+ ### mission_profile.md
57
+
58
+ ```markdown
59
+ # Mission Profile
60
+
61
+ **mid:** [id]
62
+ **Objective:**
63
+
64
+ **Success definition:**
65
+
66
+ ## In scope
67
+
68
+ -
69
+
70
+ ## Out of scope
71
+
72
+ -
73
+
74
+ ## Technical boundaries
75
+ - **Allowed paths:**
76
+ - **Forbidden paths:**
77
+
78
+ ## Constraints
79
+
80
+ - **Implementation:** ponytail full (reuse before write; YAGNI; shortest diff)
81
+ - **Inter-agent comms:** caveman wire (see `.wp/skills/caveman-wire.md`)
82
+ - **Code root:** [worktree_root from instance_meta.md]
83
+
84
+ ## Open questions
85
+
86
+ -
87
+ ```
88
+
89
+ ### validation_contract.md
90
+
91
+ ```markdown
92
+ # Validation Contract
93
+
94
+ **mid:** [id]
95
+ **Status:** draft
96
+ **Approved:** no
97
+
98
+ ## Assertions
99
+
100
+ | ID | Behavior (implementation-agnostic) | Verification method |
101
+ |----|-----------------------------------|---------------------|
102
+ | A-01 | | |
103
+
104
+ ## Approval
105
+
106
+ Set `Approved: yes` only after user confirms with `approve contract` or equivalent.
107
+ ```
108
+
109
+ ### active_plan.md
110
+
111
+ ```markdown
112
+ # Active Plan
113
+
114
+ **mid:** [id]
115
+ **Status:** current task — | blocked — no
116
+
117
+ ## Tasks
118
+
119
+ ### Task 1: [title]
120
+ - **Status:** pending
121
+ - **Assertions:** A-01
122
+ - **Dependencies:** none
123
+ - **Done when:**
124
+
125
+ ## Plan Changelog
126
+
127
+ | Date | Change | Reason |
128
+ |------|--------|--------|
129
+ ```
130
+
131
+ ### mission_control.md
132
+
133
+ ```markdown
134
+ # Mission Control
135
+
136
+ **framework_version:** 1.3.0
137
+ **mid:** [id]
138
+ **bootstrapped_at:** [ISO date]
139
+ **orchestrator_source:** ~/.cursor/agents/orchestrator.md
140
+ **Mission:** [from mission_profile.md objective]
141
+ **worktree_root:** [from instance_meta.md]
142
+ **Started:** [ISO date]
143
+ **Last updated:** [ISO date]
144
+ **Pause:** inactive
145
+
146
+ ## Dashboard
147
+
148
+ | Metric | Value |
149
+ |--------|-------|
150
+ | Tasks complete | 0 / 0 |
151
+ | Feature completion | 0% |
152
+ | Cumulative tokens (known) | 0 |
153
+ | Validation follow-up tasks | 0 |
154
+ | Current task | — |
155
+ | Blocked | no |
156
+
157
+ ## Validation Follow-ups
158
+
159
+ | Task ID | Created | Reason | Source report |
160
+ |---------|---------|--------|---------------|
161
+
162
+ ## Token / Caching Log
163
+
164
+ | Date | Agent | Session notes | Tokens | Caching notes |
165
+ |------|-------|---------------|--------|---------------|
166
+
167
+ ## Ledger
168
+
169
+ Append-only event log (newest at bottom).
170
+ ```
171
+
172
+ ### skills/_index.md
173
+
174
+ ```markdown
175
+ # Mission Skills Index
176
+
177
+ Mandatory for all mission agents:
178
+
179
+ | Skill | Path | Use |
180
+ |-------|------|-----|
181
+ | caveman-wire | .wp/skills/caveman-wire.md | Inter-agent handoffs, reports, ledger |
182
+ | caveman (full) | ~/.cursor/skills/caveman/SKILL.md | Style reference |
183
+ | ponytail (full) | ~/.cursor/skills/ponytail/SKILL.md | Worker implementation; orchestrator planning |
184
+ ```
185
+
186
+ ## Legacy Migration (v1.2 → v1.3)
187
+
188
+ Run once when flat files exist at `.wp/` root.
189
+
190
+ **Rename first:** if `.missions/` exists and `.wp/` does not, `mv .missions .wp` and update `.gitignore` (see SKILL.md §1b2).
191
+
192
+ ```bash
193
+ set -euo pipefail
194
+ MID=default
195
+ INST=".wp/instances/$MID"
196
+ LEGACY_PROFILE=".wp/mission_profile.md"
197
+
198
+ [[ -f "$LEGACY_PROFILE" && ! -d "$INST" ]] || exit 0
199
+
200
+ mkdir -p "$INST/handoffs"
201
+ for f in mission_profile validation_contract active_plan mission_control; do
202
+ [[ -f ".wp/${f}.md" ]] && mv ".wp/${f}.md" "$INST/"
203
+ done
204
+ [[ -d .wp/handoffs ]] && mv .wp/handoffs/* "$INST/handoffs/" 2>/dev/null || true
205
+ rmdir .wp/handoffs 2>/dev/null || true
206
+
207
+ # instance_meta for default (no worktree)
208
+ PROJECT_ROOT="$(pwd)"
209
+ cat >"$INST/instance_meta.md" <<EOF
210
+ # Instance Meta
211
+
212
+ **mid:** default
213
+ **framework_version:** 1.3.0
214
+ **project_root:** ${PROJECT_ROOT}
215
+ **worktree_root:** ${PROJECT_ROOT}
216
+ **branch:** —
217
+ **worktree_parent:** —
218
+ **provisioned_at:** $(date -u +%Y-%m-%dT%H:%M:%SZ)
219
+ EOF
220
+
221
+ # Bump framework version in control file
222
+ sed -i.bak 's/framework_version:.*/framework_version:** 1.3.0/' "$INST/mission_control.md" 2>/dev/null \
223
+ || sed -i '' 's/framework_version:.*/framework_version:** 1.3.0/' "$INST/mission_control.md"
224
+ rm -f "$INST/mission_control.md.bak"
225
+
226
+ echo "Migrated legacy .wp/ → instances/default/"
227
+ ```
228
+
229
+ Then seed or update `registry.md` with the `default` row.
230
+
231
+ ## Worktree Policy
232
+
233
+ | mid | Worktree | Code edits in |
234
+ |-----|----------|---------------|
235
+ | `default` | none (unless user overrides) | `project_root` |
236
+ | any other `@id` | `../<ProjectName>-missions/<mid>/` | `worktree_root` |
237
+ | `--no-worktree` | none | `project_root` |
238
+
239
+ Worktree bootstrap:
240
+
241
+ ```bash
242
+ .wp/hooks/mission-worktree-bootstrap.sh \
243
+ --project-root "$(pwd)" \
244
+ --mid "$MID" \
245
+ --meta-out ".wp/instances/$MID/instance_meta.md"
246
+ ```
247
+
248
+ The script symlinks `.wp` from project root into the worktree so instance state stays centralized.
249
+
250
+ **gitignore** (recommend on first worktree):
251
+
252
+ ```bash
253
+ PN="$(basename "$(pwd)")"
254
+ grep -qxF "${PN}-missions/" .gitignore 2>/dev/null || echo "${PN}-missions/" >> .gitignore
255
+ ```
256
+
257
+ ## gitignore Rules
258
+
259
+ ```bash
260
+ grep -qxF '.wp/' .gitignore 2>/dev/null || echo '.wp/' >> .gitignore
261
+ ```
262
+
263
+ ## Objective Extraction Examples
264
+
265
+ | User input | mid | Objective |
266
+ |------------|-----|-----------|
267
+ | `/wp add checkout emails` | default | `add checkout emails` |
268
+ | `/wp @api-payments add Stripe webhooks` | api-payments | `add Stripe webhooks` |
269
+ | `wp: --id=web-ui checkout page` | web-ui | `checkout page` |
270
+ | `wp: @api status` | api | lifecycle → status |
271
+ | `wp: list` | — | lifecycle → list |
272
+ | `wp: resume @api-payments` | api-payments | lifecycle → resume |
273
+
274
+ ## Phase Detection (full, per instance)
275
+
276
+ | Signal | Phase |
277
+ |--------|-------|
278
+ | `Pause: active` in `wp_root/mission_control.md` | Paused |
279
+ | mission_profile Objective empty | Scope |
280
+ | Profile filled; contract Approved: no | Contract |
281
+ | Approved: yes; no ### Task sections | Plan |
282
+ | One task in_progress; no handoff for it | Delegation |
283
+ | feature_[ID]_log.md or validation_[ID]_report.md for current task | Negotiation |
284
+ | All tasks complete | Complete |
285
+
286
+ ## Resume Summary Template
287
+
288
+ ```markdown
289
+ ## Mission resumed — [Phase] (@[mid])
290
+
291
+ **Objective:** [from mission_profile.md]
292
+ **Instance:** [mid]
293
+ **Worktree:** [worktree_root]
294
+ **Framework:** v[framework_version]
295
+ **Last activity:** [from ledger or active_plan changelog]
296
+ **Current task:** [N — title] ([status])
297
+ **Gate:** [CLEAR | BLOCK | pending | —]
298
+ **Next:** [single concrete action]
299
+
300
+ [Phase-appropriate content — do NOT restart Scope unless user pivoted]
301
+ ```
302
+
303
+ ## Scope Phase — First Reply Template
304
+
305
+ ```markdown
306
+ ## Scope Phase — [objective summary] (@[mid])
307
+
308
+ Framework initialized (or resumed at **[phase]**).
309
+ Worktree: [worktree_root]
310
+
311
+ To define scope before we write a validation contract:
312
+
313
+ 1. [Success definition]
314
+ 2. [Non-goals / out of scope]
315
+ 3. [Constraints — stack, timeline, forbidden approaches]
316
+
317
+ **Draft scope** (edit as needed):
318
+ - In scope: …
319
+ - Out of scope: …
320
+ - Allowed paths: …
321
+ - Forbidden paths: …
322
+ ```
323
+
324
+ ## Empty Objective Help
325
+
326
+ ```markdown
327
+ ## Mission — needs objective
328
+
329
+ Provide: `wp: [@id] [what you want built or fixed]`
330
+
331
+ **Lifecycle commands:**
332
+ - `wp: list` — all active instances
333
+ - `wp: status` — all instances (or `wp: @id status`)
334
+ - `wp: resume [@id]` — continue instance
335
+ - `wp: pause [@id]` — halt instance loop
336
+ - `wp: abort [@id]` — archive instance
337
+ - `wp: pivot: [new objective]` — change direction within instance
338
+
339
+ **Parallel missions:** use distinct `@id` per chat tab; each non-default id gets its own git worktree.
340
+ ```
341
+
342
+ ## Multi-Instance Status Dashboard
343
+
344
+ ```markdown
345
+ ## Mission Registry
346
+
347
+ | mid | phase | pause | objective | worktree |
348
+ |-----|-------|-------|-----------|----------|
349
+ | default | Delegation | no | … | [project root] |
350
+ | api-payments | Contract | no | … | …/HerbalTech-missions/api-payments |
351
+ ```
352
+
353
+ ## orchestrator.md Missing
354
+
355
+ 1. Copy from `~/.cursor/agents/orchestrator.md` if present
356
+ 2. Else Task → `orchestrator` subagent with hand-off payload from SKILL.md
357
+
358
+ ## Verification Hooks (optional)
359
+
360
+ Offer to copy from `~/.cursor/hooks/`:
361
+
362
+ - `verification-checkpoint-on-handoff.sh`
363
+ - `verification-checkpoint-on-validation-report.sh`
364
+ - `verification-checkpoint-gate-plan.sh`
365
+ - `lib/verification-checkpoint-common.sh`
366
+
367
+ Project-local runner: `.wp/hooks/run-assertions.sh`
368
+
369
+ ## Archive on abort (per instance)
370
+
371
+ ```bash
372
+ MID="api-payments"
373
+ ARCHIVE=".wp/archive/${MID}-$(date +%Y-%m-%d-%H%M)"
374
+ INST=".wp/instances/${MID}"
375
+
376
+ mkdir -p "$ARCHIVE"
377
+ mv "$INST" "$ARCHIVE/"
378
+
379
+ # Optional: remove worktree (confirm with user first)
380
+ # META worktree path from archived instance_meta.md
381
+ # git worktree remove "$WORKTREE_PATH"
382
+ # git branch -D "mission/${MID}" # only if merged/abandoned
383
+
384
+ # Remove row from registry.md
385
+ ```
386
+
387
+ Framework shell (`agents/`, `skills/`, `hooks/`, `registry.md`) stays in place.
388
+
389
+ ## Subagent Return Format (caveman wire)
390
+
391
+ ```markdown
392
+ ## Subagent Summary
393
+ role: worker|validator|explore|shell
394
+ mid: [id]
395
+ status: complete|blocked|partial
396
+ artifacts: [paths under wp_root]
397
+ gate: CLEAR|BLOCK|—
398
+ block: [none|one line]
399
+ worktree: [path if worker]
400
+ ```
401
+
402
+ ## Ponytail in Mission
403
+
404
+ | Phase | Ponytail rule |
405
+ |-------|---------------|
406
+ | Scope | Ask: feature need exist? defer speculative work |
407
+ | Plan | Fewest tasks; no scaffolding "for later" |
408
+ | Worker | Full ladder in **worktree_root** |
409
+ | Validator | Reject over-engineered tests that shape to implementation |
410
+
411
+ Worker handoff `skip:` field documents YAGNI deferrals.
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env bash
2
+ # Detect AI assistant platforms with install paths on this machine.
3
+ set -euo pipefail
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ # shellcheck source=lib/common.sh
7
+ source "${SCRIPT_DIR}/lib/common.sh"
8
+
9
+ command -v jq >/dev/null 2>&1 || die "jq required"
10
+
11
+ echo "Waypoint Skills — platform detection"
12
+ echo ""
13
+
14
+ printf "%-14s %-8s %-40s %s\n" "PLATFORM" "FOUND?" "GLOBAL" "LOCAL (cwd)"
15
+ for p in $(list_platforms); do
16
+ gb="$(platform_config "$p" global_base)"
17
+ lb="$(platform_config "$p" local_base)"
18
+ found="no"
19
+ [[ -n "$gb" && "$gb" != "null" && -d "$(expand_path "$gb")" ]] && found="yes"
20
+ [[ "$found" == "no" && -n "$lb" && "$lb" != "null" && -d "$(expand_path "$lb")" ]] && found="yes"
21
+ label="$(platform_config "$p" label)"
22
+ printf "%-14s %-8s %-40s %s\n" "$p" "$found" "${gb:-—}" "${lb:-—} ($label)"
23
+ done
24
+
25
+ echo ""
26
+ installed="$(detect_installed_platforms | tr '\n' ' ')"
27
+ if [[ -n "${installed// /}" ]]; then
28
+ echo "Detected: $installed"
29
+ echo "Install all detected: ./scripts/install.sh --platform auto --global"
30
+ else
31
+ echo "No platform config dirs found. Install a target assistant first, or use --platform <name>."
32
+ fi
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env bash
2
+ # Install Waypoint Skills into AI assistant config (Cursor, Claude, Codex, Antigravity, …)
3
+ #
4
+ # Usage:
5
+ # ./scripts/install.sh [--platform NAME|auto|all] [--global|--local] [--copy] [--from PATH|URL]
6
+ # curl -fsSL https://raw.githubusercontent.com/USER/waypoint.sk/main/scripts/install.sh | bash -s -- --platform auto --global
7
+ #
8
+ set -euo pipefail
9
+
10
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
+ # shellcheck source=lib/common.sh
12
+ source "${SCRIPT_DIR}/lib/common.sh"
13
+
14
+ SCOPE="global"
15
+ MODE="symlink"
16
+ FROM=""
17
+ PLATFORM="auto"
18
+ REPO_ROOT=""
19
+
20
+ usage() {
21
+ cat <<'EOF'
22
+ Waypoint Skills installer
23
+
24
+ Usage: install.sh [options]
25
+
26
+ Options:
27
+ --platform NAME cursor | claude | codex | antigravity | copilot | gemini_cli | auto | all
28
+ auto = install to detected platforms (default)
29
+ --global User-level config (default)
30
+ --local Project-level config in current directory
31
+ --copy Copy files instead of symlinking
32
+ --from PATH Source repo path or git URL
33
+ -h, --help Show help
34
+
35
+ Examples:
36
+ ./scripts/install.sh --platform auto --global
37
+ ./scripts/install.sh --platform claude --global
38
+ ./scripts/install.sh --platform cursor --local --copy
39
+ ./scripts/detect-platform.sh
40
+ EOF
41
+ exit "${1:-0}"
42
+ }
43
+
44
+ while [[ $# -gt 0 ]]; do
45
+ case "$1" in
46
+ --platform) PLATFORM="$2"; shift 2 ;;
47
+ --global) SCOPE="global"; shift ;;
48
+ --local) SCOPE="local"; shift ;;
49
+ --copy) MODE="copy"; shift ;;
50
+ --from) FROM="$2"; shift 2 ;;
51
+ -h|--help) usage 0 ;;
52
+ *) die "Unknown option: $1 (try --help)" ;;
53
+ esac
54
+ done
55
+
56
+ REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
57
+
58
+ if [[ -n "$FROM" ]]; then
59
+ if [[ "$FROM" =~ ^https?:// || "$FROM" =~ ^git@ ]]; then
60
+ TMPDIR="$(mktemp -d)"
61
+ trap 'rm -rf "$TMPDIR"' EXIT
62
+ log "cloning $FROM ..."
63
+ git clone --depth 1 "$FROM" "$TMPDIR/waypoint.sk"
64
+ REPO_ROOT="$TMPDIR/waypoint.sk"
65
+ WAYPOINT_REPO_ROOT="$REPO_ROOT"
66
+ elif [[ -d "$FROM" ]]; then
67
+ REPO_ROOT="$(cd "$FROM" && pwd)"
68
+ WAYPOINT_REPO_ROOT="$REPO_ROOT"
69
+ else
70
+ die "--from path not found: $FROM"
71
+ fi
72
+ fi
73
+
74
+ command -v jq >/dev/null 2>&1 || die "jq required (brew install jq / apt install jq)"
75
+
76
+ resolve_platforms() {
77
+ case "$PLATFORM" in
78
+ auto)
79
+ detect_installed_platforms
80
+ ;;
81
+ all)
82
+ list_platforms
83
+ ;;
84
+ *)
85
+ list_platforms | grep -qxF "$PLATFORM" || die "Unknown platform: $PLATFORM"
86
+ echo "$PLATFORM"
87
+ ;;
88
+ esac
89
+ }
90
+
91
+ PLATFORMS="$(resolve_platforms)"
92
+ [[ -n "${PLATFORMS// /}" ]] || die "No platforms to install. Run ./scripts/detect-platform.sh or pass --platform <name>."
93
+
94
+ INSTALLED=()
95
+ while IFS= read -r p; do
96
+ [[ -z "$p" ]] && continue
97
+ base="$(install_platform "$p" "$SCOPE" "$MODE" "$REPO_ROOT")"
98
+ INSTALLED+=("$p → $base")
99
+ done <<< "$PLATFORMS"
100
+
101
+ chmod +x "${REPO_ROOT}/scripts/waypoint" "${REPO_ROOT}/scripts/install.sh" \
102
+ "${REPO_ROOT}/scripts/uninstall.sh" "${REPO_ROOT}/scripts/detect-platform.sh" 2>/dev/null || true
103
+
104
+ cat <<EOF
105
+
106
+ ✅ Waypoint Skills installed (scope=${SCOPE}, mode=${MODE})
107
+
108
+ $(printf ' %s\n' "${INSTALLED[@]}")
109
+
110
+ Skills: wp, caveman, ponytail, waypoint, impeccable, design-taste-frontend, gpt-taste, stitch-design-taste
111
+ Trigger: /wp [objective] or wp: list | status | resume
112
+
113
+ CLI:
114
+ npx waypoint-skills install -y
115
+ npx waypoint-skills doctor
116
+ npx waypoint-skills bootstrap
117
+
118
+ Skills only:
119
+ npx skills add quenginedev/waypoint.sk -g -y
120
+
121
+ Docs: docs/PLATFORMS.md, docs/WAYPOINT-FLOW.md
122
+
123
+ EOF