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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 quenginedev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,348 @@
1
+ # Waypoint Skills
2
+
3
+ **Multi-platform agentic skills** for AI-powered assistants — Cursor, Claude Code, Codex, Antigravity, Copilot, and others. One GitHub URL installs the **wp** framework (skills, agents, rules, hooks) into whatever assistant you use.
4
+
5
+ Repo: **waypoint.sk** · Display name: **Waypoint Skills**
6
+
7
+ ## Quick install
8
+
9
+ **Recommended — npx CLI** (detects your assistants, installs skills + agents + rules):
10
+
11
+ ```bash
12
+ npx waypoint-skills install -y
13
+ ```
14
+
15
+ **Skills only** via [skills CLI](https://skills.sh) (no agents/rules):
16
+
17
+ ```bash
18
+ npx skills add quenginedev/waypoint.sk -g -y
19
+ npx skills add quenginedev/waypoint.sk --skill wp --skill ponytail -g -y
20
+ ```
21
+
22
+ **From GitHub** (curl or clone):
23
+
24
+ ```bash
25
+ # Auto-detect installed assistants and install globally
26
+ curl -fsSL https://raw.githubusercontent.com/quenginedev/waypoint.sk/main/scripts/install.sh | bash -s -- --platform auto --global
27
+
28
+ # Or clone and install
29
+ git clone https://github.com/quenginedev/waypoint.sk.git
30
+ cd waypoint.sk
31
+ npx waypoint-skills install -y
32
+ # or: ./scripts/install.sh --platform auto --global
33
+ ```
34
+
35
+ **Single platform:**
36
+
37
+ ```bash
38
+ ./scripts/install.sh --platform claude --global
39
+ ./scripts/install.sh --platform cursor --local
40
+ ./scripts/install.sh --platform antigravity --global
41
+ ./scripts/install.sh --platform codex --global
42
+ ./scripts/install.sh --platform all --global
43
+ ```
44
+
45
+ ## Supported platforms
46
+
47
+ | Platform | Global skills | Local skills | Agents | Rules | Hooks |
48
+ |----------|---------------|--------------|--------|-------|-------|
49
+ | **Cursor** | `~/.cursor/skills/` | `.cursor/skills/` | ✓ | ✓ `.mdc` | ✓ |
50
+ | **Claude Code** | `~/.claude/skills/` | `.claude/skills/` | ✓ | — | — |
51
+ | **Codex** | `~/.codex/skills/` | `.codex/skills/` | — | — | — |
52
+ | **Antigravity** | `~/.gemini/antigravity/skills/` | `.agent/skills/` | — | ✓ | — |
53
+ | **Copilot** | — | `.github/skills/` | — | — | — |
54
+ | **Gemini CLI** | `~/.gemini/skills/` | `.gemini/skills/` | — | — | — |
55
+
56
+ See [docs/PLATFORMS.md](docs/PLATFORMS.md) for paths and notes per assistant.
57
+
58
+ ## Packages
59
+
60
+ | Skill | Trigger | Purpose |
61
+ |-------|---------|---------|
62
+ | **wp** | `/wp`, `wp:` | Bootstrap `.wp/`, route to orchestrator |
63
+ | **caveman** | `caveman mode` | Compressed inter-agent communication |
64
+ | **ponytail** | `ponytail`, `yagni` | Minimal implementation ladder |
65
+ | **waypoint** | install, doctor | Install and manage Waypoint Skills |
66
+ | **impeccable** | `/impeccable` | Production-grade frontend design & UI craft (Apache 2.0) |
67
+ | **design-taste-frontend** | `/design-taste-frontend` | Anti-slop landing pages & portfolios (contextual design dials) |
68
+ | **gpt-taste** | `/gpt-taste` | Awwwards-level GSAP motion & layout (randomized hero/bento) |
69
+ | **stitch-design-taste** | `/stitch-design-taste` | Semantic `DESIGN.md` for Google Stitch screen generation |
70
+
71
+ | Agent | Role |
72
+ |-------|------|
73
+ | **wp-router** | Bootstrap + router only |
74
+ | **orchestrator** | Scope → contract → plan → delegate loop |
75
+ | **worker** | Single-task implementation in git worktree |
76
+ | **validator** | Adversarial assertion verification |
77
+
78
+ Full reference: [docs/WAYPOINT-FLOW.md](docs/WAYPOINT-FLOW.md)
79
+
80
+ ---
81
+
82
+ ## How Waypoint Works
83
+
84
+ Waypoint Skills is a **structured agent workflow** for building software with AI assistants. You install it once (skills + agents + rules), then drive work from any git project with `/wp`. The framework handles planning, serial execution, git isolation, and adversarial validation — without replacing your assistant.
85
+
86
+ ### End-to-end flow
87
+
88
+ ```mermaid
89
+ flowchart LR
90
+ Install["1. Install Waypoint Skills"] --> Bootstrap["2. Bootstrap .wp/ in project"]
91
+ Bootstrap --> Trigger["3. /wp objective"]
92
+ Trigger --> Scope["4. Scope → user approves"]
93
+ Scope --> Contract["5. Contract → user approves"]
94
+ Contract --> Plan["6. Plan tasks"]
95
+ Plan --> Loop["7. Worker → Validator loop"]
96
+ Loop --> Done["8. Complete"]
97
+ ```
98
+
99
+ 1. **Install** — `install.sh` drops skills, agents, and rules into your assistant's native config (Cursor, Claude, Codex, Antigravity, …).
100
+ 2. **Bootstrap** — First `/wp` in a project creates `.wp/` runtime state (or run `waypoint bootstrap`).
101
+ 3. **Trigger** — `/wp [objective]` or `/wp @id [objective]` starts or resumes an instance.
102
+ 4. **Scope** — Orchestrator drafts what is in/out of scope; you reply `approve scope`.
103
+ 5. **Contract** — Behavior assertions (A-01, A-02, …) are written; you reply `approve contract`. **No app code until approved.**
104
+ 6. **Plan** — Work is split into serial tasks in `active_plan.md`.
105
+ 7. **Execute** — Worker implements one task → Validator verifies → next task (or remediation on BLOCK).
106
+ 8. **Complete** — All tasks pass validation; instance marked done.
107
+
108
+ ### Architecture
109
+
110
+ ```mermaid
111
+ flowchart TB
112
+ subgraph User["You"]
113
+ U["/wp objective"]
114
+ U2["approve scope / contract"]
115
+ end
116
+
117
+ subgraph Router["wp Router (skill)"]
118
+ R1["Parse @mid + flags"]
119
+ R2["Bootstrap .wp/"]
120
+ R3["Phase detection"]
121
+ R4["Delegate → Orchestrator"]
122
+ end
123
+
124
+ subgraph State["Per-instance state (.wp/instances/mid/)"]
125
+ MP["mission_profile.md"]
126
+ VC["validation_contract.md"]
127
+ AP["active_plan.md"]
128
+ MC["mission_control.md"]
129
+ HO["handoffs/"]
130
+ end
131
+
132
+ subgraph Agents["Subagents"]
133
+ O["Orchestrator"]
134
+ W["Worker"]
135
+ V["Validator"]
136
+ end
137
+
138
+ subgraph Git["Code isolation"]
139
+ WT["worktree_root"]
140
+ end
141
+
142
+ U --> R1 --> R2 --> R3 --> R4 --> O
143
+ U2 --> O
144
+ O <--> MP & VC & AP & MC
145
+ O --> W --> HO
146
+ O --> V --> HO
147
+ W --> WT
148
+ V --> WT
149
+ ```
150
+
151
+ The **wp router** only bootstraps and routes — it never writes application code. The **orchestrator** owns planning and delegation. The **worker** implements exactly one task. The **validator** adversarially checks assertions and emits `CLEAR` or `BLOCK`.
152
+
153
+ ### Execution pipeline
154
+
155
+ ```mermaid
156
+ stateDiagram-v2
157
+ [*] --> Scope
158
+ Scope --> Contract: approve scope
159
+ Contract --> Plan: approve contract
160
+ Plan --> Delegation: tasks ready
161
+ Delegation --> Negotiation: worker handoff
162
+ Negotiation --> Delegation: gate CLEAR
163
+ Negotiation --> Plan: gate BLOCK
164
+ Delegation --> Complete: all tasks done
165
+ ```
166
+
167
+ | Phase | Who runs it | What happens |
168
+ |-------|-------------|--------------|
169
+ | **Scope** | Orchestrator + you | Objective, in/out scope, allowed paths → `mission_profile.md` |
170
+ | **Contract** | Orchestrator + you | Implementation-agnostic assertions → `validation_contract.md` |
171
+ | **Plan** | Orchestrator | Serial tasks linked to assertions → `active_plan.md` |
172
+ | **Delegation** | Orchestrator → Worker | One task `in_progress`; worker edits `worktree_root` only |
173
+ | **Negotiation** | Orchestrator → Validator | Validator verifies contract; gate CLEAR or BLOCK |
174
+ | **Complete** | Orchestrator | All tasks validated |
175
+
176
+ ### Worker → Validator loop
177
+
178
+ ```mermaid
179
+ sequenceDiagram
180
+ participant O as Orchestrator
181
+ participant W as Worker
182
+ participant V as Validator
183
+ participant WT as worktree_root
184
+
185
+ O->>W: handoff (task, assertions, bounds)
186
+ W->>WT: implement (ponytail — minimal diff)
187
+ W->>O: feature_T1_log.md
188
+ O->>V: validate (same mid + worktree)
189
+ V->>WT: run checks, verify assertions
190
+ V->>O: validation_T1_report.md (CLEAR|BLOCK)
191
+ alt CLEAR
192
+ O->>O: next task
193
+ else BLOCK
194
+ O->>O: remediation or contract revise
195
+ end
196
+ ```
197
+
198
+ Inter-agent messages use **caveman wire** (compressed handoffs in `.wp/instances/<mid>/handoffs/`). User-facing scope and contract dialogue stays in normal prose.
199
+
200
+ ### Runtime directory (`.wp/`)
201
+
202
+ Every git project gets a local `.wp/` folder (gitignored):
203
+
204
+ ```
205
+ .wp/
206
+ ├── registry.md # all active instances
207
+ ├── agents/ # orchestrator persona
208
+ ├── skills/ # caveman-wire protocol
209
+ ├── hooks/ # worktree + assertion scripts
210
+ └── instances/<mid>/
211
+ ├── instance_meta.md # worktree_root, branch
212
+ ├── mission_profile.md # scope
213
+ ├── validation_contract.md
214
+ ├── active_plan.md # serial tasks
215
+ ├── mission_control.md # ledger, pause, metrics
216
+ └── handoffs/ # worker logs + validation reports
217
+ ```
218
+
219
+ ### Triggers and lifecycle
220
+
221
+ | Input | Example | Effect |
222
+ |-------|---------|--------|
223
+ | `/wp` | `/wp add user auth` | Start/resume `default` instance |
224
+ | `/wp @id` | `/wp @api-payments Stripe webhooks` | New instance + isolated git worktree |
225
+ | `wp: list` | — | Show all instances (read-only) |
226
+ | `wp: status` | — | Instance dashboard |
227
+ | `wp: resume @id` | — | Continue at detected phase |
228
+ | `wp: pause @id` | — | Halt orchestrator loop |
229
+ | `wp: abort @id` | — | Archive instance |
230
+
231
+ ### Multi-instance parallelism
232
+
233
+ Non-default `@id` instances get their own **git worktree** at `../<ProjectName>-missions/<mid>/`. State stays centralized in `.wp/` (symlinked into each worktree).
234
+
235
+ ```mermaid
236
+ flowchart LR
237
+ PR["project_root + .wp/"]
238
+ WT1["../Project-missions/api/"]
239
+ WT2["../Project-missions/web/"]
240
+ PR --> WT1
241
+ PR --> WT2
242
+ ```
243
+
244
+ | Rule | Policy |
245
+ |------|--------|
246
+ | Parallel OK | Different `@mid` → different worktrees |
247
+ | Serial only | One worker per worktree at a time |
248
+ | Validator | Must match worker's `mid` + `worktree_root` |
249
+ | Isolation | Validator never reads worker chat history |
250
+
251
+ ### Install → first `/wp` (platform-agnostic)
252
+
253
+ ```mermaid
254
+ flowchart TD
255
+ A["GitHub URL or clone"] --> B["install.sh --platform auto"]
256
+ B --> C{assistant}
257
+ C -->|Cursor| D["~/.cursor/skills, agents, rules"]
258
+ C -->|Claude| E["~/.claude/skills, agents"]
259
+ C -->|Codex| F["~/.codex/skills"]
260
+ C -->|Antigravity| G["~/.gemini/antigravity/skills"]
261
+ B --> H["Assistant loads wp skill"]
262
+ H --> I["/wp in any git repo"]
263
+ ```
264
+
265
+ ### Companion skills and rules
266
+
267
+ | Skill / rule | Role |
268
+ |--------------|------|
269
+ | **wp** | Router — bootstrap `.wp/`, parse triggers, delegate |
270
+ | **caveman** | Token-efficient inter-agent handoffs |
271
+ | **ponytail** | YAGNI implementation ladder for workers |
272
+ | **waypoint** | Install, doctor, bootstrap CLI |
273
+ | **adversarial-context-isolation** | Validator runs blind to worker reasoning |
274
+ | **serial-git-enforcement** | Clean git handoffs; one editor per worktree |
275
+
276
+ ### Quick start after install
277
+
278
+ ```text
279
+ cd my-git-project
280
+ /wp @feature-x build settings page
281
+ # → approve scope
282
+ # → approve contract
283
+ # → orchestrator runs worker T1, validator, T2, …
284
+ wp: status @feature-x
285
+ ```
286
+
287
+ ---
288
+
289
+ ```bash
290
+ npx waypoint-skills doctor
291
+ npx waypoint-skills install -y
292
+ npx waypoint-skills status --platform cursor --global
293
+ npx waypoint-skills bootstrap
294
+ npx waypoint-skills bootstrap --mid api-payments
295
+ npx waypoint-skills instances
296
+ npx waypoint-skills instance --mid default
297
+ npx waypoint-skills detect
298
+ ```
299
+
300
+ ## Start work (any supported assistant)
301
+
302
+ After install, open any git project:
303
+
304
+ ```
305
+ /wp implement user authentication with JWT
306
+ /wp @api-payments add Stripe webhooks
307
+ wp: list
308
+ wp: status
309
+ wp: resume @api-payments
310
+ ```
311
+
312
+ Non-default `@id` instances get an isolated git worktree at `../<ProjectName>-missions/<mid>/`.
313
+
314
+ ## Repository layout
315
+
316
+ ```
317
+ waypoint.sk/
318
+ ├── package.json # npm package (npx waypoint-skills)
319
+ ├── cli/bin/cli.js # Node CLI entry
320
+ ├── skills/ # symlinks → packages/skills (npx skills add discovery)
321
+ ├── manifest.json # platforms + package list
322
+ ├── packages/
323
+ │ ├── skills/ # wp, caveman, ponytail, waypoint, impeccable, taste skills
324
+ │ ├── agents/ # wp-router, orchestrator, worker, …
325
+ │ ├── rules/
326
+ │ └── hooks/templates/
327
+ ├── scripts/
328
+ │ ├── install.sh
329
+ │ ├── detect-platform.sh
330
+ │ └── waypoint
331
+ └── docs/
332
+ ├── PLATFORMS.md
333
+ └── WAYPOINT-FLOW.md # extended flow reference
334
+ ```
335
+
336
+ ---
337
+
338
+ ```bash
339
+ npx waypoint-skills uninstall --platform auto --global
340
+ ```
341
+
342
+ ## Framework version
343
+
344
+ **1.3.0** — multi-instance namespacing + git worktrees per `@mid`.
345
+
346
+ ## License
347
+
348
+ MIT — see individual skill frontmatter where specified.
package/README.npm.md ADDED
@@ -0,0 +1,56 @@
1
+ # waypoint-skills
2
+
3
+ Multi-platform **agentic skills** for AI assistants — Cursor, Claude Code, Codex, Antigravity, Copilot, and others. Installs the **wp** framework (skills, agents, rules, hooks).
4
+
5
+ ## Quick install
6
+
7
+ ```bash
8
+ # Full install — skills + agents + rules + hooks (recommended)
9
+ npx waypoint-skills install -y
10
+
11
+ # Or explicit platform
12
+ npx waypoint-skills install --platform cursor --global
13
+ ```
14
+
15
+ After install, in any git project:
16
+
17
+ ```
18
+ /wp implement user authentication
19
+ wp: list
20
+ ```
21
+
22
+ ## Skills-only (via [skills CLI](https://skills.sh))
23
+
24
+ Install individual skills without agents/rules:
25
+
26
+ ```bash
27
+ npx skills add quenginedev/waypoint.sk -g -y
28
+ npx skills add quenginedev/waypoint.sk --skill wp --skill ponytail -g -y
29
+ npx skills add quenginedev/waypoint.sk --list
30
+ ```
31
+
32
+ ## Commands
33
+
34
+ | Command | Description |
35
+ |---------|-------------|
36
+ | `install` | Install to detected or chosen platforms |
37
+ | `uninstall` | Remove installed symlinks/copies |
38
+ | `detect` | List detected AI assistants |
39
+ | `doctor` | Check jq, git, manifest |
40
+ | `status` | Verify installed skills/agents/rules |
41
+ | `bootstrap` | Create `.wp/` in current git repo |
42
+
43
+ ## Requirements
44
+
45
+ - **bash** — install scripts
46
+ - **jq** — platform manifest parsing (`brew install jq`)
47
+ - **git** — wp worktrees
48
+
49
+ ## Links
50
+
51
+ - Repo: [github.com/quenginedev/waypoint.sk](https://github.com/quenginedev/waypoint.sk)
52
+ - Docs: [PLATFORMS.md](https://github.com/quenginedev/waypoint.sk/blob/main/docs/PLATFORMS.md)
53
+
54
+ ## License
55
+
56
+ MIT
package/cli/bin/cli.js ADDED
@@ -0,0 +1,127 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Waypoint Skills CLI
5
+ *
6
+ * Usage:
7
+ * npx waypoint-skills install [--platform auto] [--global|--local] [-y]
8
+ * npx waypoint-skills doctor
9
+ * npx waypoint-skills detect
10
+ * npx waypoint-skills bootstrap [--mid ID]
11
+ * npx waypoint-skills status
12
+ * npx waypoint-skills uninstall
13
+ *
14
+ * Skills-only (via Vercel skills CLI):
15
+ * npx skills add quenginedev/waypoint.sk -g -y
16
+ */
17
+
18
+ import { readFileSync } from 'node:fs';
19
+ import { spawnSync } from 'node:child_process';
20
+ import { join, dirname } from 'node:path';
21
+ import { fileURLToPath } from 'node:url';
22
+ import { repoRoot, waypointScript, installScript } from './lib/paths.mjs';
23
+
24
+ const __dirname = dirname(fileURLToPath(import.meta.url));
25
+
26
+ const HELP = `Waypoint Skills CLI — multi-platform agentic skills (wp, agents, rules, hooks)
27
+
28
+ Usage:
29
+ waypoint-skills install [options] Install skills, agents, rules, hooks
30
+ waypoint-skills uninstall [options] Remove symlinks/copies
31
+ waypoint-skills detect Show detected AI assistants
32
+ waypoint-skills doctor Check prerequisites
33
+ waypoint-skills status [options] Verify installed packages
34
+ waypoint-skills bootstrap [options] Bootstrap .wp/ in current git project
35
+ waypoint-skills instances List wp instances
36
+ waypoint-skills instance --mid ID Show instance state
37
+
38
+ Install options (passed to install.sh):
39
+ --platform NAME cursor | claude | codex | antigravity | copilot | gemini_cli | auto | all
40
+ --global User-level config (default)
41
+ --local Project-level config
42
+ --copy Copy files instead of symlinking
43
+ --from PATH|URL Source repo path or git URL
44
+ -y, --yes Non-interactive (alias: --platform auto --global)
45
+
46
+ Skills-only install (no agents/rules):
47
+ npx skills add quenginedev/waypoint.sk -g -y
48
+ npx skills add quenginedev/waypoint.sk --skill wp --skill ponytail -g -y
49
+
50
+ Docs: https://github.com/quenginedev/waypoint.sk
51
+ `;
52
+
53
+ function version() {
54
+ const pkg = JSON.parse(readFileSync(join(repoRoot(), 'package.json'), 'utf8'));
55
+ console.log(pkg.version);
56
+ }
57
+
58
+ function runBash(scriptPath, args = []) {
59
+ const result = spawnSync('bash', [scriptPath, ...args], {
60
+ cwd: repoRoot(),
61
+ stdio: 'inherit',
62
+ env: process.env,
63
+ });
64
+ process.exit(result.status ?? 1);
65
+ }
66
+
67
+ function normalizeInstallArgs(args) {
68
+ const out = [...args];
69
+ if (out.includes('-y') || out.includes('--yes')) {
70
+ for (const flag of ['-y', '--yes']) {
71
+ const i = out.indexOf(flag);
72
+ if (i !== -1) out.splice(i, 1);
73
+ }
74
+ if (!out.includes('--platform')) {
75
+ out.push('--platform', 'auto');
76
+ }
77
+ if (!out.includes('--global') && !out.includes('--local')) {
78
+ out.push('--global');
79
+ }
80
+ }
81
+ return out;
82
+ }
83
+
84
+ async function main() {
85
+ const args = process.argv.slice(2);
86
+ const command = args[0];
87
+
88
+ if (!command || command === '--help' || command === '-h' || command === 'help') {
89
+ console.log(HELP);
90
+ process.exit(0);
91
+ }
92
+
93
+ if (command === '--version' || command === '-v' || command === 'version') {
94
+ version();
95
+ process.exit(0);
96
+ }
97
+
98
+ switch (command) {
99
+ case 'install':
100
+ runBash(installScript(), normalizeInstallArgs(args.slice(1)));
101
+ break;
102
+ case 'uninstall':
103
+ runBash(join(repoRoot(), 'scripts/uninstall.sh'), args.slice(1));
104
+ break;
105
+ case 'detect':
106
+ runBash(join(repoRoot(), 'scripts/detect-platform.sh'), args.slice(1));
107
+ break;
108
+ case 'doctor':
109
+ case 'status':
110
+ case 'bootstrap':
111
+ case 'instances':
112
+ case 'instance':
113
+ case 'mission-bootstrap':
114
+ case 'mission-list':
115
+ case 'mission-status':
116
+ runBash(waypointScript(), args);
117
+ break;
118
+ default:
119
+ console.error(`Unknown command: ${command}\n\nRun: npx waypoint-skills --help`);
120
+ process.exit(1);
121
+ }
122
+ }
123
+
124
+ main().catch((err) => {
125
+ console.error(err?.message || err);
126
+ process.exit(1);
127
+ });
@@ -0,0 +1,31 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ const __dirname = dirname(fileURLToPath(import.meta.url));
6
+
7
+ /** Package root (works from git clone or node_modules/waypoint-skills). */
8
+ export function repoRoot() {
9
+ // cli/bin/lib -> cli/bin -> cli -> root
10
+ const root = join(__dirname, '..', '..', '..');
11
+ if (existsSync(join(root, 'manifest.json'))) return root;
12
+
13
+ // Fallback: walk up from cwd (dev monorepo edge case)
14
+ let dir = process.cwd();
15
+ for (let i = 0; i < 8; i += 1) {
16
+ if (existsSync(join(dir, 'manifest.json'))) return dir;
17
+ const parent = dirname(dir);
18
+ if (parent === dir) break;
19
+ dir = parent;
20
+ }
21
+
22
+ return root;
23
+ }
24
+
25
+ export function waypointScript() {
26
+ return join(repoRoot(), 'scripts/waypoint');
27
+ }
28
+
29
+ export function installScript() {
30
+ return join(repoRoot(), 'scripts/install.sh');
31
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Best-effort chmod for bash scripts after npm install.
3
+ * Non-fatal — install still works via `node cli/bin/cli.js`.
4
+ */
5
+ import { chmodSync, existsSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { repoRoot } from './lib/paths.mjs';
8
+
9
+ const scripts = [
10
+ 'scripts/waypoint',
11
+ 'scripts/install.sh',
12
+ 'scripts/uninstall.sh',
13
+ 'scripts/detect-platform.sh',
14
+ ];
15
+
16
+ for (const rel of scripts) {
17
+ const path = join(repoRoot(), rel);
18
+ if (existsSync(path)) {
19
+ try {
20
+ chmodSync(path, 0o755);
21
+ } catch {
22
+ // ignore on platforms without chmod semantics
23
+ }
24
+ }
25
+ }