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