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.
- package/LICENSE +21 -0
- package/README.md +348 -0
- package/README.npm.md +56 -0
- package/cli/bin/cli.js +127 -0
- package/cli/bin/lib/paths.mjs +31 -0
- package/cli/bin/postinstall.mjs +25 -0
- package/manifest.json +107 -0
- package/package.json +44 -0
- package/packages/agents/inspiration-scout.md +105 -0
- package/packages/agents/orchestrator.md +186 -0
- package/packages/agents/scrutiny-validator.md +136 -0
- package/packages/agents/user-testing-validator.md +171 -0
- package/packages/agents/validator.md +102 -0
- package/packages/agents/worker.md +116 -0
- package/packages/agents/wp-router.md +69 -0
- package/packages/hooks/hooks.json.example +12 -0
- package/packages/hooks/templates/mission-worktree-bootstrap.sh +88 -0
- package/packages/hooks/templates/run-assertions.sh +48 -0
- package/packages/rules/adversarial-context-isolation.mdc +57 -0
- package/packages/rules/serial-git-enforcement.mdc +77 -0
- package/packages/skills/caveman/SKILL.md +78 -0
- package/packages/skills/design-taste-frontend/SKILL.md +1206 -0
- package/packages/skills/gpt-taste/SKILL.md +74 -0
- package/packages/skills/impeccable/SKILL.md +164 -0
- package/packages/skills/impeccable/reference/adapt.md +311 -0
- package/packages/skills/impeccable/reference/animate.md +201 -0
- package/packages/skills/impeccable/reference/audit.md +133 -0
- package/packages/skills/impeccable/reference/bolder.md +120 -0
- package/packages/skills/impeccable/reference/brand.md +108 -0
- package/packages/skills/impeccable/reference/clarify.md +288 -0
- package/packages/skills/impeccable/reference/codex.md +105 -0
- package/packages/skills/impeccable/reference/colorize.md +257 -0
- package/packages/skills/impeccable/reference/craft.md +123 -0
- package/packages/skills/impeccable/reference/critique.md +780 -0
- package/packages/skills/impeccable/reference/delight.md +302 -0
- package/packages/skills/impeccable/reference/distill.md +111 -0
- package/packages/skills/impeccable/reference/document.md +429 -0
- package/packages/skills/impeccable/reference/extract.md +69 -0
- package/packages/skills/impeccable/reference/harden.md +347 -0
- package/packages/skills/impeccable/reference/hooks.md +90 -0
- package/packages/skills/impeccable/reference/init.md +172 -0
- package/packages/skills/impeccable/reference/interaction-design.md +189 -0
- package/packages/skills/impeccable/reference/layout.md +161 -0
- package/packages/skills/impeccable/reference/live.md +718 -0
- package/packages/skills/impeccable/reference/onboard.md +234 -0
- package/packages/skills/impeccable/reference/optimize.md +258 -0
- package/packages/skills/impeccable/reference/overdrive.md +130 -0
- package/packages/skills/impeccable/reference/polish.md +241 -0
- package/packages/skills/impeccable/reference/product.md +60 -0
- package/packages/skills/impeccable/reference/quieter.md +99 -0
- package/packages/skills/impeccable/reference/shape.md +165 -0
- package/packages/skills/impeccable/reference/typeset.md +279 -0
- package/packages/skills/impeccable/scripts/command-metadata.json +94 -0
- package/packages/skills/impeccable/scripts/context-signals.mjs +225 -0
- package/packages/skills/impeccable/scripts/context.mjs +961 -0
- package/packages/skills/impeccable/scripts/critique-storage.mjs +242 -0
- package/packages/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/packages/skills/impeccable/scripts/detect.mjs +21 -0
- package/packages/skills/impeccable/scripts/detector/browser/injected/index.mjs +1937 -0
- package/packages/skills/impeccable/scripts/detector/cli/main.mjs +290 -0
- package/packages/skills/impeccable/scripts/detector/design-system.mjs +750 -0
- package/packages/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +5185 -0
- package/packages/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/packages/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +277 -0
- package/packages/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +568 -0
- package/packages/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1015 -0
- package/packages/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +234 -0
- package/packages/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/packages/skills/impeccable/scripts/detector/findings.mjs +12 -0
- package/packages/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
- package/packages/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/packages/skills/impeccable/scripts/detector/registry/antipatterns.mjs +459 -0
- package/packages/skills/impeccable/scripts/detector/rules/checks.mjs +2707 -0
- package/packages/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/packages/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
- package/packages/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/packages/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/packages/skills/impeccable/scripts/hook-admin.mjs +660 -0
- package/packages/skills/impeccable/scripts/hook-before-edit.mjs +476 -0
- package/packages/skills/impeccable/scripts/hook-lib.mjs +1632 -0
- package/packages/skills/impeccable/scripts/hook.mjs +61 -0
- package/packages/skills/impeccable/scripts/lib/design-parser.mjs +842 -0
- package/packages/skills/impeccable/scripts/lib/impeccable-config.mjs +638 -0
- package/packages/skills/impeccable/scripts/lib/impeccable-paths.mjs +128 -0
- package/packages/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/packages/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/packages/skills/impeccable/scripts/live/browser-script-parts.mjs +49 -0
- package/packages/skills/impeccable/scripts/live/completion.mjs +19 -0
- package/packages/skills/impeccable/scripts/live/event-validation.mjs +137 -0
- package/packages/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/packages/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/packages/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/packages/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/packages/skills/impeccable/scripts/live/session-store.mjs +289 -0
- package/packages/skills/impeccable/scripts/live/svelte-component.mjs +826 -0
- package/packages/skills/impeccable/scripts/live/sveltekit-adapter.mjs +274 -0
- package/packages/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/packages/skills/impeccable/scripts/live/vocabulary.mjs +36 -0
- package/packages/skills/impeccable/scripts/live-accept.mjs +812 -0
- package/packages/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/packages/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/packages/skills/impeccable/scripts/live-browser.js +11173 -0
- package/packages/skills/impeccable/scripts/live-commit-manual-edits.mjs +1241 -0
- package/packages/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/packages/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/packages/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/packages/skills/impeccable/scripts/live-inject.mjs +583 -0
- package/packages/skills/impeccable/scripts/live-insert.mjs +272 -0
- package/packages/skills/impeccable/scripts/live-manual-edit-evidence.mjs +363 -0
- package/packages/skills/impeccable/scripts/live-poll.mjs +384 -0
- package/packages/skills/impeccable/scripts/live-resume.mjs +94 -0
- package/packages/skills/impeccable/scripts/live-server.mjs +1135 -0
- package/packages/skills/impeccable/scripts/live-status.mjs +61 -0
- package/packages/skills/impeccable/scripts/live-target.mjs +30 -0
- package/packages/skills/impeccable/scripts/live-wrap.mjs +894 -0
- package/packages/skills/impeccable/scripts/live.mjs +297 -0
- package/packages/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/packages/skills/impeccable/scripts/palette.mjs +633 -0
- package/packages/skills/impeccable/scripts/pin.mjs +214 -0
- package/packages/skills/ponytail/SKILL.md +117 -0
- package/packages/skills/stitch-design-taste/DESIGN.md +121 -0
- package/packages/skills/stitch-design-taste/SKILL.md +184 -0
- package/packages/skills/waypoint/SKILL.md +67 -0
- package/packages/skills/wp/SKILL.md +330 -0
- package/packages/skills/wp/caveman-wire.md +148 -0
- package/packages/skills/wp/reference.md +411 -0
- package/scripts/detect-platform.sh +32 -0
- package/scripts/install.sh +123 -0
- package/scripts/lib/common.sh +215 -0
- package/scripts/sync-skills.sh +21 -0
- package/scripts/uninstall.sh +38 -0
- 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
|
+
}
|