waypoint-codex 0.19.2 → 1.0.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/README.md +18 -37
- package/dist/src/cli.js +1 -1
- package/dist/src/core.js +33 -116
- package/dist/src/docs-index.js +1 -1
- package/dist/src/templates.js +0 -10
- package/package.json +1 -1
- package/templates/.agents/skills/agi-help/SKILL.md +1 -1
- package/templates/.agents/skills/code-guide-audit/SKILL.md +1 -5
- package/templates/.agents/skills/planning/SKILL.md +12 -10
- package/templates/.agents/skills/pr-review/SKILL.md +0 -1
- package/templates/.codex/agents/code-health-reviewer.toml +6 -5
- package/templates/.codex/agents/code-reviewer.toml +6 -5
- package/templates/.codex/agents/plan-reviewer.toml +6 -5
- package/templates/.waypoint/ACTIVE_PLANS.md +7 -7
- package/templates/.waypoint/README.md +5 -8
- package/templates/.waypoint/config.toml +0 -5
- package/templates/.waypoint/docs/README.md +1 -3
- package/templates/.waypoint/scripts/build-docs-index.mjs +25 -11
- package/templates/.waypoint/scripts/prepare-context.mjs +120 -205
- package/templates/WORKSPACE.md +2 -6
- package/templates/managed-agents-block.md +22 -111
- package/dist/src/track-index.js +0 -107
- package/templates/.agents/skills/break-it-qa/SKILL.md +0 -184
- package/templates/.agents/skills/break-it-qa/agents/openai.yaml +0 -4
- package/templates/.agents/skills/conversation-retrospective/SKILL.md +0 -147
- package/templates/.agents/skills/conversation-retrospective/agents/openai.yaml +0 -4
- package/templates/.agents/skills/docs-sync/SKILL.md +0 -78
- package/templates/.agents/skills/docs-sync/agents/openai.yaml +0 -4
- package/templates/.agents/skills/merge-ready-owner/SKILL.md +0 -196
- package/templates/.agents/skills/merge-ready-owner/agents/openai.yaml +0 -4
- package/templates/.agents/skills/pre-pr-hygiene/SKILL.md +0 -83
- package/templates/.agents/skills/pre-pr-hygiene/agents/openai.yaml +0 -4
- package/templates/.agents/skills/work-tracker/SKILL.md +0 -139
- package/templates/.agents/skills/work-tracker/agents/openai.yaml +0 -4
- package/templates/.agents/skills/workspace-compress/SKILL.md +0 -113
- package/templates/.agents/skills/workspace-compress/agents/openai.yaml +0 -4
- package/templates/.waypoint/SOUL.md +0 -71
- package/templates/.waypoint/agent-operating-manual.md +0 -178
- package/templates/.waypoint/scripts/build-track-index.mjs +0 -169
- package/templates/.waypoint/track/README.md +0 -38
- package/templates/.waypoint/track/_template.md +0 -48
package/README.md
CHANGED
|
@@ -73,7 +73,7 @@ better default.
|
|
|
73
73
|
### 1. Better default behavior
|
|
74
74
|
|
|
75
75
|
Waypoint gives Codex stronger repo guidance through the generated contract,
|
|
76
|
-
|
|
76
|
+
workspace files, and repo-local instructions.
|
|
77
77
|
|
|
78
78
|
That means the agent is pushed to:
|
|
79
79
|
|
|
@@ -120,9 +120,7 @@ Waypoint also helps Codex follow through on bigger tasks.
|
|
|
120
120
|
|
|
121
121
|
It includes workflows for:
|
|
122
122
|
|
|
123
|
-
- long-running task tracking
|
|
124
123
|
- ship-readiness audits
|
|
125
|
-
- merge-ready ownership
|
|
126
124
|
- deliberate review passes before PR or merge
|
|
127
125
|
|
|
128
126
|
This helps the agent keep moving until the work is actually ready, not just
|
|
@@ -141,8 +139,6 @@ That includes:
|
|
|
141
139
|
- user-scoped guidance for true cross-project standing rules
|
|
142
140
|
- project-scoped guidance for durable repo-wide context and always-on rules
|
|
143
141
|
- repo-local skills for workflow-specific or method-specific guidance
|
|
144
|
-
- retrospectives that turn friction from the current conversation into lasting
|
|
145
|
-
improvements
|
|
146
142
|
|
|
147
143
|
### 6. Better continuity
|
|
148
144
|
|
|
@@ -163,23 +159,20 @@ Waypoint scaffolds a Codex-friendly repo around a few core pieces:
|
|
|
163
159
|
|
|
164
160
|
- `AGENTS.md` for the project-scoped startup contract and durable repo guidance
|
|
165
161
|
- `.waypoint/WORKSPACE.md` for live operational state
|
|
166
|
-
- `.waypoint/ACTIVE_PLANS.md` for the
|
|
162
|
+
- `.waypoint/ACTIVE_PLANS.md` for the current active plan, checklist, blockers, and verification state
|
|
167
163
|
- `.waypoint/docs/` for long-lived project docs
|
|
168
164
|
- `.waypoint/plans/` for durable plan documents
|
|
169
|
-
- `.waypoint/DOCS_INDEX.md` for docs
|
|
170
|
-
|
|
171
|
-
- `.waypoint/context
|
|
165
|
+
- `.waypoint/DOCS_INDEX.md` for docs routing, so the agent knows what to read and when
|
|
166
|
+
- `.waypoint/context/` for generated volatile context
|
|
167
|
+
- `.waypoint/context/SNAPSHOT.md` for repo state and PR context
|
|
172
168
|
- `.waypoint/context/RECENT_THREAD.md` for compact continuity from the previous
|
|
173
169
|
conversation
|
|
174
|
-
- `.waypoint/track/` for long-running work that truly needs durable progress
|
|
175
|
-
tracking
|
|
176
170
|
- `.agents/skills/` for optional structured workflows
|
|
177
171
|
- `.codex/` for optional reviewer and helper agents
|
|
178
172
|
|
|
179
|
-
By default, Waypoint routes docs from `.waypoint/docs
|
|
180
|
-
`.waypoint/plans/`.
|
|
173
|
+
By default, Waypoint routes docs from `.waypoint/docs/`.
|
|
181
174
|
If your repo keeps routable docs elsewhere, you can add more explicit roots in
|
|
182
|
-
`.waypoint/config.toml` with `docs_dirs
|
|
175
|
+
`.waypoint/config.toml` with `docs_dirs`.
|
|
183
176
|
Waypoint scans each configured root recursively and only includes Markdown files
|
|
184
177
|
with valid Waypoint frontmatter.
|
|
185
178
|
|
|
@@ -237,12 +230,10 @@ repo/
|
|
|
237
230
|
│ └── skills/
|
|
238
231
|
└── .waypoint/
|
|
239
232
|
├── DOCS_INDEX.md
|
|
240
|
-
├── TRACKS_INDEX.md
|
|
241
233
|
├── WORKSPACE.md
|
|
242
234
|
├── ACTIVE_PLANS.md
|
|
243
235
|
├── docs/
|
|
244
236
|
├── plans/
|
|
245
|
-
├── track/
|
|
246
237
|
├── context/
|
|
247
238
|
├── scripts/
|
|
248
239
|
└── ...
|
|
@@ -257,11 +248,6 @@ docs_dirs = [
|
|
|
257
248
|
".waypoint/docs",
|
|
258
249
|
"services/app/docs",
|
|
259
250
|
]
|
|
260
|
-
|
|
261
|
-
plans_dirs = [
|
|
262
|
-
".waypoint/plans",
|
|
263
|
-
"services/app/plans",
|
|
264
|
-
]
|
|
265
251
|
```
|
|
266
252
|
|
|
267
253
|
## Built-in skills
|
|
@@ -269,18 +255,13 @@ plans_dirs = [
|
|
|
269
255
|
Waypoint ships a strong default skill pack for real coding work:
|
|
270
256
|
|
|
271
257
|
- `planning`
|
|
272
|
-
- `work-tracker`
|
|
273
|
-
- `docs-sync`
|
|
274
258
|
- `code-guide-audit`
|
|
275
259
|
- `adversarial-review`
|
|
276
|
-
- `break-it-qa`
|
|
277
|
-
- `conversation-retrospective`
|
|
278
260
|
- `frontend-ship-audit`
|
|
279
261
|
- `backend-ship-audit`
|
|
280
|
-
- `merge-ready-owner`
|
|
281
|
-
- `workspace-compress`
|
|
282
|
-
- `pre-pr-hygiene`
|
|
283
262
|
- `pr-review`
|
|
263
|
+
- `frontend-context-interview`
|
|
264
|
+
- `backend-context-interview`
|
|
284
265
|
- `agi-help`
|
|
285
266
|
|
|
286
267
|
These are repo-local, so the workflow travels with the project.
|
|
@@ -305,18 +286,18 @@ The most important ones are:
|
|
|
305
286
|
pass
|
|
306
287
|
- `frontend-ship-audit` when frontend work needs a deeper product, UX, and ship
|
|
307
288
|
readiness pass
|
|
308
|
-
- `
|
|
309
|
-
|
|
310
|
-
- `
|
|
311
|
-
|
|
312
|
-
- `
|
|
313
|
-
|
|
289
|
+
- `frontend-context-interview` / `backend-context-interview` when durable
|
|
290
|
+
project context is missing and would materially change implementation choices
|
|
291
|
+
- `pr-review` when an open PR already has active review comments or automated
|
|
292
|
+
review in flight
|
|
293
|
+
- `agi-help` when you want a high-quality external handoff package for
|
|
294
|
+
GPT-5.4-Pro
|
|
314
295
|
|
|
315
296
|
The practical rule is:
|
|
316
297
|
|
|
317
298
|
- install Waypoint for better defaults
|
|
318
299
|
- invoke the higher-rigor skills when you want a stronger planning, audit,
|
|
319
|
-
review,
|
|
300
|
+
review, or closeout pass
|
|
320
301
|
|
|
321
302
|
## Reviewer agents
|
|
322
303
|
|
|
@@ -326,7 +307,7 @@ Waypoint scaffolds these reviewer agents by default:
|
|
|
326
307
|
- `code-reviewer`
|
|
327
308
|
- `plan-reviewer`
|
|
328
309
|
|
|
329
|
-
They are available for deliberate second passes
|
|
310
|
+
They are available for deliberate second passes.
|
|
330
311
|
|
|
331
312
|
## What makes Waypoint different
|
|
332
313
|
|
|
@@ -346,7 +327,7 @@ Waypoint is opinionated, but explicit:
|
|
|
346
327
|
|
|
347
328
|
- `waypoint init` — scaffold or refresh the repo and, by default, update the global CLI first
|
|
348
329
|
- `waypoint doctor` — validate health and report drift
|
|
349
|
-
- `waypoint sync` — rebuild the docs
|
|
330
|
+
- `waypoint sync` — rebuild the docs index
|
|
350
331
|
- `waypoint upgrade` — update the CLI and refresh the current repo using its saved config
|
|
351
332
|
|
|
352
333
|
## Learn more
|
package/dist/src/cli.js
CHANGED
|
@@ -29,7 +29,7 @@ function printHelp() {
|
|
|
29
29
|
Commands:
|
|
30
30
|
init Initialize a repository with Waypoint scaffolding (auto-updates CLI unless skipped)
|
|
31
31
|
doctor Validate repository health and report drift
|
|
32
|
-
sync Rebuild docs
|
|
32
|
+
sync Rebuild the docs index
|
|
33
33
|
upgrade Update the global Waypoint CLI and refresh this repo using existing config
|
|
34
34
|
`);
|
|
35
35
|
}
|
package/dist/src/core.js
CHANGED
|
@@ -2,14 +2,11 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, rmSync,
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import * as TOML from "@iarna/toml";
|
|
4
4
|
import { renderDocsIndex } from "./docs-index.js";
|
|
5
|
-
import { renderTracksIndex } from "./track-index.js";
|
|
6
5
|
import { defaultWaypointConfig, readTemplate, renderWaypointConfig, MANAGED_BLOCK_END, MANAGED_BLOCK_START, templatePath, } from "./templates.js";
|
|
7
6
|
const DEFAULT_CONFIG_PATH = ".waypoint/config.toml";
|
|
8
7
|
const DEFAULT_DOCS_DIR = ".waypoint/docs";
|
|
9
8
|
const DEFAULT_DOCS_INDEX = ".waypoint/DOCS_INDEX.md";
|
|
10
9
|
const DEFAULT_PLANS_DIR = ".waypoint/plans";
|
|
11
|
-
const DEFAULT_TRACK_DIR = ".waypoint/track";
|
|
12
|
-
const DEFAULT_TRACKS_INDEX = ".waypoint/TRACKS_INDEX.md";
|
|
13
10
|
const DEFAULT_WORKSPACE = ".waypoint/WORKSPACE.md";
|
|
14
11
|
const DEFAULT_ACTIVE_PLANS = ".waypoint/ACTIVE_PLANS.md";
|
|
15
12
|
const GITIGNORE_WAYPOINT_START = "# Waypoint state";
|
|
@@ -25,34 +22,24 @@ const LEGACY_WAYPOINT_GITIGNORE_RULES = new Set([
|
|
|
25
22
|
".agents/",
|
|
26
23
|
".agents/skills/",
|
|
27
24
|
".agents/skills/planning/",
|
|
28
|
-
".agents/skills/work-tracker/",
|
|
29
|
-
".agents/skills/docs-sync/",
|
|
30
25
|
".agents/skills/code-guide-audit/",
|
|
31
26
|
".agents/skills/adversarial-review/",
|
|
32
27
|
".agents/skills/visual-explanations/",
|
|
33
|
-
".agents/skills/break-it-qa/",
|
|
34
28
|
".agents/skills/frontend-context-interview/",
|
|
35
29
|
".agents/skills/backend-context-interview/",
|
|
36
30
|
".agents/skills/frontend-ship-audit/",
|
|
37
31
|
".agents/skills/backend-ship-audit/",
|
|
38
|
-
".agents/skills/conversation-retrospective/",
|
|
39
|
-
".agents/skills/merge-ready-owner/",
|
|
40
|
-
".agents/skills/workspace-compress/",
|
|
41
|
-
".agents/skills/pre-pr-hygiene/",
|
|
42
32
|
".agents/skills/pr-review/",
|
|
33
|
+
".agents/skills/agi-help/",
|
|
43
34
|
".waypoint/config.toml",
|
|
44
35
|
".waypoint/README.md",
|
|
45
|
-
".waypoint/SOUL.md",
|
|
46
36
|
".waypoint/WORKSPACE.md",
|
|
47
37
|
".waypoint/ACTIVE_PLANS.md",
|
|
48
|
-
".waypoint/agent-operating-manual.md",
|
|
49
38
|
".waypoint/",
|
|
50
39
|
".waypoint/DOCS_INDEX.md",
|
|
51
|
-
".waypoint/TRACKS_INDEX.md",
|
|
52
40
|
".waypoint/state/",
|
|
53
41
|
".waypoint/context/",
|
|
54
42
|
".waypoint/scripts/",
|
|
55
|
-
".waypoint/track/",
|
|
56
43
|
".waypoint/plans/",
|
|
57
44
|
".waypoint/*",
|
|
58
45
|
"!.waypoint/docs/",
|
|
@@ -62,16 +49,10 @@ const LEGACY_WAYPOINT_GITIGNORE_RULES = new Set([
|
|
|
62
49
|
]);
|
|
63
50
|
const SHIPPED_SKILL_NAMES = [
|
|
64
51
|
"planning",
|
|
65
|
-
"work-tracker",
|
|
66
|
-
"docs-sync",
|
|
67
52
|
"code-guide-audit",
|
|
68
53
|
"adversarial-review",
|
|
69
|
-
"break-it-qa",
|
|
70
|
-
"conversation-retrospective",
|
|
71
|
-
"merge-ready-owner",
|
|
72
|
-
"workspace-compress",
|
|
73
|
-
"pre-pr-hygiene",
|
|
74
54
|
"pr-review",
|
|
55
|
+
"agi-help",
|
|
75
56
|
"frontend-context-interview",
|
|
76
57
|
"backend-context-interview",
|
|
77
58
|
"frontend-ship-audit",
|
|
@@ -79,7 +60,6 @@ const SHIPPED_SKILL_NAMES = [
|
|
|
79
60
|
];
|
|
80
61
|
const TIMESTAMPED_WORKSPACE_SECTIONS = new Set([
|
|
81
62
|
"## Active Plans",
|
|
82
|
-
"## Active Trackers",
|
|
83
63
|
"## Current State",
|
|
84
64
|
"## In Progress",
|
|
85
65
|
"## Next",
|
|
@@ -121,25 +101,16 @@ function configuredRootDirs(projectRoot, roots, legacyRoot, fallbackRoot) {
|
|
|
121
101
|
function docsRootDirs(projectRoot, config) {
|
|
122
102
|
return configuredRootDirs(projectRoot, config?.docs_dirs, config?.docs_dir, DEFAULT_DOCS_DIR);
|
|
123
103
|
}
|
|
124
|
-
function plansRootDirs(projectRoot, config) {
|
|
125
|
-
return configuredRootDirs(projectRoot, config?.plans_dirs, config?.plans_dir, DEFAULT_PLANS_DIR);
|
|
126
|
-
}
|
|
127
104
|
function docsSectionHeading(projectRoot, dir) {
|
|
128
105
|
const relativePath = path.relative(projectRoot, dir).split(path.sep).join("/");
|
|
129
106
|
const normalizedPath = relativePath.length === 0 ? "." : relativePath;
|
|
130
107
|
return normalizedPath.endsWith("/") ? normalizedPath : `${normalizedPath}/`;
|
|
131
108
|
}
|
|
132
109
|
function docsIndexSections(projectRoot, config) {
|
|
133
|
-
return
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
})),
|
|
138
|
-
...plansRootDirs(projectRoot, config).map((dir) => ({
|
|
139
|
-
heading: docsSectionHeading(projectRoot, dir),
|
|
140
|
-
dir,
|
|
141
|
-
})),
|
|
142
|
-
];
|
|
110
|
+
return docsRootDirs(projectRoot, config).map((dir) => ({
|
|
111
|
+
heading: docsSectionHeading(projectRoot, dir),
|
|
112
|
+
dir,
|
|
113
|
+
}));
|
|
143
114
|
}
|
|
144
115
|
function buildWaypointConfig(projectRoot, existingConfig, options) {
|
|
145
116
|
const defaults = defaultWaypointConfig({ profile: options.profile });
|
|
@@ -149,12 +120,7 @@ function buildWaypointConfig(projectRoot, existingConfig, options) {
|
|
|
149
120
|
coding_agent: existingConfig?.coding_agent ?? defaults.coding_agent,
|
|
150
121
|
workspace_file: existingConfig?.workspace_file ?? defaults.workspace_file,
|
|
151
122
|
docs_dirs: configuredRootDirs(projectRoot, existingConfig?.docs_dirs, existingConfig?.docs_dir, DEFAULT_DOCS_DIR).map((dir) => path.relative(projectRoot, dir).split(path.sep).join("/")),
|
|
152
|
-
plans_dirs: configuredRootDirs(projectRoot, existingConfig?.plans_dirs, existingConfig?.plans_dir, DEFAULT_PLANS_DIR).map((dir) => path.relative(projectRoot, dir).split(path.sep).join("/")),
|
|
153
123
|
docs_index_file: existingConfig?.docs_index_file ?? defaults.docs_index_file,
|
|
154
|
-
features: {
|
|
155
|
-
repo_skills: existingConfig?.features?.repo_skills ?? defaults.features?.repo_skills,
|
|
156
|
-
docs_index: existingConfig?.features?.docs_index ?? defaults.features?.docs_index,
|
|
157
|
-
},
|
|
158
124
|
};
|
|
159
125
|
}
|
|
160
126
|
function ensureDir(dirPath) {
|
|
@@ -336,7 +302,6 @@ function scaffoldSkills(projectRoot) {
|
|
|
336
302
|
}
|
|
337
303
|
function scaffoldWaypointOptionalTemplates(projectRoot) {
|
|
338
304
|
copyTemplateTree(templatePath(".waypoint/scripts"), path.join(projectRoot, ".waypoint/scripts"));
|
|
339
|
-
copyTemplateTree(templatePath(".waypoint/track"), path.join(projectRoot, ".waypoint/track"));
|
|
340
305
|
}
|
|
341
306
|
function scaffoldOptionalCodex(projectRoot) {
|
|
342
307
|
copyTemplateTree(templatePath(".codex"), path.join(projectRoot, ".codex"));
|
|
@@ -367,6 +332,13 @@ export function initRepository(projectRoot, options) {
|
|
|
367
332
|
".agents/skills/waypoint-explore",
|
|
368
333
|
".agents/skills/waypoint-research",
|
|
369
334
|
".agents/skills/visual-explanations",
|
|
335
|
+
".agents/skills/work-tracker",
|
|
336
|
+
".agents/skills/docs-sync",
|
|
337
|
+
".agents/skills/break-it-qa",
|
|
338
|
+
".agents/skills/conversation-retrospective",
|
|
339
|
+
".agents/skills/merge-ready-owner",
|
|
340
|
+
".agents/skills/workspace-compress",
|
|
341
|
+
".agents/skills/pre-pr-hygiene",
|
|
370
342
|
".codex/agents/explorer.toml",
|
|
371
343
|
".codex/agents/reviewer.toml",
|
|
372
344
|
".codex/agents/architect.toml",
|
|
@@ -376,19 +348,27 @@ export function initRepository(projectRoot, options) {
|
|
|
376
348
|
".waypoint/MEMORY.md",
|
|
377
349
|
".waypoint/rules",
|
|
378
350
|
".waypoint/state",
|
|
351
|
+
".waypoint/SOUL.md",
|
|
352
|
+
".waypoint/agent-operating-manual.md",
|
|
353
|
+
".waypoint/TRACKS_INDEX.md",
|
|
354
|
+
".waypoint/track",
|
|
355
|
+
".waypoint/context/MANIFEST.md",
|
|
356
|
+
".waypoint/context/ACTIVE_PLANS.md",
|
|
357
|
+
".waypoint/context/ACTIVE_TRACKERS.md",
|
|
358
|
+
".waypoint/context/PULL_REQUESTS.md",
|
|
359
|
+
".waypoint/context/RECENT_COMMITS.md",
|
|
360
|
+
".waypoint/context/UNCOMMITTED_CHANGES.md",
|
|
361
|
+
".waypoint/scripts/build-track-index.mjs",
|
|
379
362
|
]) {
|
|
380
363
|
removePathIfExists(path.join(projectRoot, deprecatedPath));
|
|
381
364
|
}
|
|
382
365
|
writeText(path.join(projectRoot, ".waypoint/README.md"), readTemplate(".waypoint/README.md"));
|
|
383
|
-
writeText(path.join(projectRoot, ".waypoint/SOUL.md"), readTemplate(".waypoint/SOUL.md"));
|
|
384
|
-
writeText(path.join(projectRoot, ".waypoint/agent-operating-manual.md"), readTemplate(".waypoint/agent-operating-manual.md"));
|
|
385
366
|
scaffoldWaypointOptionalTemplates(projectRoot);
|
|
386
367
|
writeText(path.join(projectRoot, DEFAULT_CONFIG_PATH), renderWaypointConfig(config));
|
|
387
368
|
writeIfMissing(path.join(projectRoot, DEFAULT_WORKSPACE), readTemplate("WORKSPACE.md"));
|
|
388
369
|
writeIfMissing(path.join(projectRoot, DEFAULT_ACTIVE_PLANS), readTemplate(".waypoint/ACTIVE_PLANS.md"));
|
|
389
370
|
ensureDir(path.join(projectRoot, DEFAULT_DOCS_DIR));
|
|
390
371
|
ensureDir(path.join(projectRoot, DEFAULT_PLANS_DIR));
|
|
391
|
-
ensureDir(path.join(projectRoot, DEFAULT_TRACK_DIR));
|
|
392
372
|
writeIfMissing(path.join(projectRoot, ".waypoint/docs/README.md"), readTemplate(".waypoint/docs/README.md"));
|
|
393
373
|
writeIfMissing(path.join(projectRoot, ".waypoint/docs/code-guide.md"), readTemplate(".waypoint/docs/code-guide.md"));
|
|
394
374
|
writeIfMissing(path.join(projectRoot, ".waypoint/plans/README.md"), readTemplate(".waypoint/plans/README.md"));
|
|
@@ -398,16 +378,14 @@ export function initRepository(projectRoot, options) {
|
|
|
398
378
|
appendGitignoreSnippet(projectRoot);
|
|
399
379
|
const docsIndexPath = path.join(projectRoot, config.docs_index_file ?? DEFAULT_DOCS_INDEX);
|
|
400
380
|
const docsIndex = renderDocsIndex(projectRoot, docsIndexSections(projectRoot, config));
|
|
401
|
-
const tracksIndex = renderTracksIndex(projectRoot, path.join(projectRoot, DEFAULT_TRACK_DIR));
|
|
402
381
|
writeText(docsIndexPath, `${docsIndex.content}\n`);
|
|
403
|
-
writeText(path.join(projectRoot, DEFAULT_TRACKS_INDEX), `${tracksIndex.content}\n`);
|
|
404
382
|
return [
|
|
405
383
|
"Initialized Waypoint scaffold",
|
|
406
384
|
"Installed managed AGENTS block",
|
|
407
|
-
"Created .waypoint/WORKSPACE.md, .waypoint/ACTIVE_PLANS.md, .waypoint/docs/,
|
|
385
|
+
"Created .waypoint/WORKSPACE.md, .waypoint/ACTIVE_PLANS.md, .waypoint/docs/, and .waypoint/plans/ scaffold",
|
|
408
386
|
"Installed repo-local Waypoint skills",
|
|
409
387
|
"Installed coding/reviewer agents and project Codex config",
|
|
410
|
-
"Generated .waypoint/DOCS_INDEX.md
|
|
388
|
+
"Generated .waypoint/DOCS_INDEX.md",
|
|
411
389
|
];
|
|
412
390
|
}
|
|
413
391
|
export function loadWaypointConfig(projectRoot) {
|
|
@@ -488,7 +466,6 @@ export function doctorRepository(projectRoot) {
|
|
|
488
466
|
for (const section of [
|
|
489
467
|
"## Active Goal",
|
|
490
468
|
"## Active Plans",
|
|
491
|
-
"## Active Trackers",
|
|
492
469
|
"## Current State",
|
|
493
470
|
"## In Progress",
|
|
494
471
|
"## Next",
|
|
@@ -517,11 +494,8 @@ export function doctorRepository(projectRoot) {
|
|
|
517
494
|
}
|
|
518
495
|
}
|
|
519
496
|
for (const requiredFile of [
|
|
520
|
-
path.join(projectRoot, ".waypoint", "SOUL.md"),
|
|
521
|
-
path.join(projectRoot, ".waypoint", "agent-operating-manual.md"),
|
|
522
497
|
path.join(projectRoot, ".waypoint", "scripts", "prepare-context.mjs"),
|
|
523
498
|
path.join(projectRoot, ".waypoint", "scripts", "build-docs-index.mjs"),
|
|
524
|
-
path.join(projectRoot, ".waypoint", "scripts", "build-track-index.mjs"),
|
|
525
499
|
]) {
|
|
526
500
|
if (!existsSync(requiredFile)) {
|
|
527
501
|
findings.push({
|
|
@@ -535,11 +509,7 @@ export function doctorRepository(projectRoot) {
|
|
|
535
509
|
}
|
|
536
510
|
const docsIndexPath = path.join(projectRoot, config.docs_index_file ?? DEFAULT_DOCS_INDEX);
|
|
537
511
|
const configuredDocsDirs = docsRootDirs(projectRoot, config);
|
|
538
|
-
const configuredPlansDirs = plansRootDirs(projectRoot, config);
|
|
539
512
|
const docsIndex = renderDocsIndex(projectRoot, docsIndexSections(projectRoot, config));
|
|
540
|
-
const trackDir = path.join(projectRoot, DEFAULT_TRACK_DIR);
|
|
541
|
-
const tracksIndexPath = path.join(projectRoot, DEFAULT_TRACKS_INDEX);
|
|
542
|
-
const tracksIndex = renderTracksIndex(projectRoot, trackDir);
|
|
543
513
|
for (const docsDir of configuredDocsDirs) {
|
|
544
514
|
if (existsSync(docsDir)) {
|
|
545
515
|
continue;
|
|
@@ -552,15 +522,13 @@ export function doctorRepository(projectRoot) {
|
|
|
552
522
|
paths: [docsDir],
|
|
553
523
|
});
|
|
554
524
|
}
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
continue;
|
|
558
|
-
}
|
|
525
|
+
const plansDir = path.join(projectRoot, DEFAULT_PLANS_DIR);
|
|
526
|
+
if (!existsSync(plansDir)) {
|
|
559
527
|
findings.push({
|
|
560
528
|
severity: "error",
|
|
561
529
|
category: "docs",
|
|
562
|
-
message:
|
|
563
|
-
remediation: "
|
|
530
|
+
message: ".waypoint/plans/ directory is missing.",
|
|
531
|
+
remediation: "Run `waypoint init` to restore the plans directory.",
|
|
564
532
|
paths: [plansDir],
|
|
565
533
|
});
|
|
566
534
|
}
|
|
@@ -578,7 +546,7 @@ export function doctorRepository(projectRoot) {
|
|
|
578
546
|
severity: "warn",
|
|
579
547
|
category: "docs",
|
|
580
548
|
message: ".waypoint/DOCS_INDEX.md is missing.",
|
|
581
|
-
remediation: "Run `waypoint sync` to generate the docs
|
|
549
|
+
remediation: "Run `waypoint sync` to generate the docs index.",
|
|
582
550
|
paths: [docsIndexPath],
|
|
583
551
|
});
|
|
584
552
|
}
|
|
@@ -587,46 +555,10 @@ export function doctorRepository(projectRoot) {
|
|
|
587
555
|
severity: "warn",
|
|
588
556
|
category: "docs",
|
|
589
557
|
message: ".waypoint/DOCS_INDEX.md is stale.",
|
|
590
|
-
remediation: "Run `waypoint sync` to rebuild the docs
|
|
558
|
+
remediation: "Run `waypoint sync` to rebuild the docs index.",
|
|
591
559
|
paths: [docsIndexPath],
|
|
592
560
|
});
|
|
593
561
|
}
|
|
594
|
-
if (!existsSync(trackDir)) {
|
|
595
|
-
findings.push({
|
|
596
|
-
severity: "error",
|
|
597
|
-
category: "track",
|
|
598
|
-
message: ".waypoint/track/ directory is missing.",
|
|
599
|
-
remediation: "Run `waypoint init` to scaffold track files.",
|
|
600
|
-
paths: [trackDir],
|
|
601
|
-
});
|
|
602
|
-
}
|
|
603
|
-
for (const relPath of tracksIndex.invalidTracks) {
|
|
604
|
-
findings.push({
|
|
605
|
-
severity: "warn",
|
|
606
|
-
category: "track",
|
|
607
|
-
message: `Tracker is missing valid frontmatter or status: ${relPath}`,
|
|
608
|
-
remediation: "Add `summary`, `last_updated`, `status`, and `read_when` frontmatter using the track template.",
|
|
609
|
-
paths: [path.join(projectRoot, relPath)],
|
|
610
|
-
});
|
|
611
|
-
}
|
|
612
|
-
if (!existsSync(tracksIndexPath)) {
|
|
613
|
-
findings.push({
|
|
614
|
-
severity: "warn",
|
|
615
|
-
category: "track",
|
|
616
|
-
message: ".waypoint/TRACKS_INDEX.md is missing.",
|
|
617
|
-
remediation: "Run `waypoint sync` to generate the tracks index.",
|
|
618
|
-
paths: [tracksIndexPath],
|
|
619
|
-
});
|
|
620
|
-
}
|
|
621
|
-
else if (readFileSync(tracksIndexPath, "utf8").trimEnd() !== tracksIndex.content.trimEnd()) {
|
|
622
|
-
findings.push({
|
|
623
|
-
severity: "warn",
|
|
624
|
-
category: "track",
|
|
625
|
-
message: ".waypoint/TRACKS_INDEX.md is stale.",
|
|
626
|
-
remediation: "Run `waypoint sync` to rebuild the tracks index.",
|
|
627
|
-
paths: [tracksIndexPath],
|
|
628
|
-
});
|
|
629
|
-
}
|
|
630
562
|
const activePlansPath = path.join(projectRoot, DEFAULT_ACTIVE_PLANS);
|
|
631
563
|
if (!existsSync(activePlansPath)) {
|
|
632
564
|
findings.push({
|
|
@@ -646,17 +578,6 @@ export function doctorRepository(projectRoot) {
|
|
|
646
578
|
paths: [workspacePath, activePlansPath],
|
|
647
579
|
});
|
|
648
580
|
}
|
|
649
|
-
if (existsSync(workspacePath) &&
|
|
650
|
-
tracksIndex.activeTrackPaths.length > 0 &&
|
|
651
|
-
!tracksIndex.activeTrackPaths.some((trackPath) => readFileSync(workspacePath, "utf8").includes(trackPath))) {
|
|
652
|
-
findings.push({
|
|
653
|
-
severity: "warn",
|
|
654
|
-
category: "track",
|
|
655
|
-
message: "Workspace does not reference any active tracker file.",
|
|
656
|
-
remediation: "Add the active `.waypoint/track/*.md` file paths under `## Active Trackers` in `.waypoint/WORKSPACE.md`.",
|
|
657
|
-
paths: [workspacePath, ...tracksIndex.activeTrackPaths.map((trackPath) => path.join(projectRoot, trackPath))],
|
|
658
|
-
});
|
|
659
|
-
}
|
|
660
581
|
for (const skillName of SHIPPED_SKILL_NAMES) {
|
|
661
582
|
const skillPath = path.join(projectRoot, ".agents/skills", skillName, "SKILL.md");
|
|
662
583
|
if (!existsSync(skillPath)) {
|
|
@@ -696,10 +617,6 @@ export function syncRepository(projectRoot) {
|
|
|
696
617
|
const config = loadWaypointConfig(projectRoot);
|
|
697
618
|
const docsIndexPath = path.join(projectRoot, config.docs_index_file ?? DEFAULT_DOCS_INDEX);
|
|
698
619
|
const docsIndex = renderDocsIndex(projectRoot, docsIndexSections(projectRoot, config));
|
|
699
|
-
const trackDir = path.join(projectRoot, DEFAULT_TRACK_DIR);
|
|
700
|
-
const tracksIndexPath = path.join(projectRoot, DEFAULT_TRACKS_INDEX);
|
|
701
|
-
const tracksIndex = renderTracksIndex(projectRoot, trackDir);
|
|
702
620
|
writeText(docsIndexPath, `${docsIndex.content}\n`);
|
|
703
|
-
|
|
704
|
-
return ["Rebuilt .waypoint/DOCS_INDEX.md", "Rebuilt .waypoint/TRACKS_INDEX.md"];
|
|
621
|
+
return ["Rebuilt .waypoint/DOCS_INDEX.md"];
|
|
705
622
|
}
|
package/dist/src/docs-index.js
CHANGED
|
@@ -95,7 +95,7 @@ export function renderDocsIndex(projectRoot, sections) {
|
|
|
95
95
|
const lines = [
|
|
96
96
|
"# Docs Index",
|
|
97
97
|
"",
|
|
98
|
-
"Auto-generated by `waypoint sync` / `waypoint doctor`. Read matching docs
|
|
98
|
+
"Auto-generated by `waypoint sync` / `waypoint doctor`. Read matching docs before working on a task.",
|
|
99
99
|
"",
|
|
100
100
|
];
|
|
101
101
|
const invalidDocs = [];
|
package/dist/src/templates.js
CHANGED
|
@@ -33,12 +33,7 @@ export function defaultWaypointConfig(options) {
|
|
|
33
33
|
coding_agent: "codex",
|
|
34
34
|
workspace_file: ".waypoint/WORKSPACE.md",
|
|
35
35
|
docs_dirs: [".waypoint/docs"],
|
|
36
|
-
plans_dirs: [".waypoint/plans"],
|
|
37
36
|
docs_index_file: ".waypoint/DOCS_INDEX.md",
|
|
38
|
-
features: {
|
|
39
|
-
repo_skills: true,
|
|
40
|
-
docs_index: true,
|
|
41
|
-
},
|
|
42
37
|
};
|
|
43
38
|
}
|
|
44
39
|
export function renderWaypointConfig(config) {
|
|
@@ -48,12 +43,7 @@ export function renderWaypointConfig(config) {
|
|
|
48
43
|
coding_agent: config.coding_agent,
|
|
49
44
|
workspace_file: config.workspace_file,
|
|
50
45
|
docs_dirs: config.docs_dirs,
|
|
51
|
-
plans_dirs: config.plans_dirs,
|
|
52
46
|
docs_index_file: config.docs_index_file,
|
|
53
|
-
features: config.features ? {
|
|
54
|
-
repo_skills: config.features.repo_skills,
|
|
55
|
-
docs_index: config.features.docs_index,
|
|
56
|
-
} : undefined,
|
|
57
47
|
};
|
|
58
48
|
return TOML.stringify(renderedConfig);
|
|
59
49
|
}
|
package/package.json
CHANGED
|
@@ -144,7 +144,7 @@ Examples of relevant files:
|
|
|
144
144
|
- core implementation files
|
|
145
145
|
- architecture docs
|
|
146
146
|
- plans
|
|
147
|
-
-
|
|
147
|
+
- active plan or workspace files
|
|
148
148
|
- config files
|
|
149
149
|
- failing or partial implementations
|
|
150
150
|
- screenshots or exported artifacts when available through the current tool surface
|
|
@@ -11,7 +11,7 @@ This skill owns one job: inspect the specific code the user points at, map it ag
|
|
|
11
11
|
|
|
12
12
|
## When Not To Use This Skill
|
|
13
13
|
|
|
14
|
-
- Skip it for broad ship-readiness review; use
|
|
14
|
+
- Skip it for broad ship-readiness review; use a ship-audit workflow for that.
|
|
15
15
|
- Skip it for generic bug finding or regression review that is not specifically about the coding guide.
|
|
16
16
|
- Skip it for active PR comment triage; use `pr-review` for that loop.
|
|
17
17
|
- Skip it for repo-wide cleanup unless the user explicitly asked for a repo-wide coding-guide audit.
|
|
@@ -52,10 +52,6 @@ Skip rules that genuinely do not apply, but say that you skipped them.
|
|
|
52
52
|
- Do not drift into generic architecture advice, repo-wide cleanup, docs sync, or PR readiness unless the finding is directly required by the guide.
|
|
53
53
|
- If you notice issues outside scope, mention them only if they are severe enough that ignoring them would mislead the user about this audit.
|
|
54
54
|
|
|
55
|
-
This skill is narrower than `pre-pr-hygiene`. Use that other skill for broader ship-readiness.
|
|
56
|
-
|
|
57
|
-
If this audit produces a large remediation campaign, create or update a tracker under `.waypoint/track/` before switching into implementation so the fix list does not live only in chat.
|
|
58
|
-
|
|
59
55
|
## Step 4: Verify Evidence
|
|
60
56
|
|
|
61
57
|
Ground each finding in the actual code.
|
|
@@ -25,13 +25,12 @@ Good plans prove you understand the problem. Size matches complexity — a renam
|
|
|
25
25
|
|
|
26
26
|
Before planning:
|
|
27
27
|
|
|
28
|
-
1. Read
|
|
29
|
-
2. Read `.waypoint/
|
|
30
|
-
3. Read `.waypoint/
|
|
31
|
-
4. Read `.waypoint/
|
|
32
|
-
5. Read `.waypoint/context/
|
|
33
|
-
6. Read
|
|
34
|
-
7. Read the routed docs relevant to the task
|
|
28
|
+
1. Read `AGENTS.md`
|
|
29
|
+
2. Read `.waypoint/WORKSPACE.md`
|
|
30
|
+
3. Read `.waypoint/ACTIVE_PLANS.md`
|
|
31
|
+
4. Read `.waypoint/DOCS_INDEX.md`
|
|
32
|
+
5. Read `.waypoint/context/SNAPSHOT.md`
|
|
33
|
+
6. Read the routed docs relevant to the task
|
|
35
34
|
|
|
36
35
|
## Output Location
|
|
37
36
|
|
|
@@ -40,12 +39,9 @@ The plan belongs in the repo, not only in chat.
|
|
|
40
39
|
- Write or update a durable plan doc under `.waypoint/plans/`.
|
|
41
40
|
- Choose the smallest routed location that matches the work, such as a project plan, implementation plan, or focused design note.
|
|
42
41
|
- If a relevant plan doc already exists, update it instead of creating a competing one.
|
|
43
|
-
- Make sure the doc remains discoverable through the routed docs layer.
|
|
44
42
|
- Update `.waypoint/ACTIVE_PLANS.md` when this plan becomes the approved active plan or when its current phase changes.
|
|
45
43
|
- In chat, return only a concise summary plus the path to the plan doc.
|
|
46
44
|
|
|
47
|
-
If the planned implementation will be large, multi-step, or likely to span multiple sessions, also create or update a tracker under `.waypoint/track/` and link it from `WORKSPACE.md` before implementation begins.
|
|
48
|
-
|
|
49
45
|
## The Core Loop
|
|
50
46
|
|
|
51
47
|
```
|
|
@@ -102,6 +98,7 @@ Do not plan from abstractions alone. Ground major decisions in actual files.
|
|
|
102
98
|
Plans document your understanding. Include what matters for this task:
|
|
103
99
|
|
|
104
100
|
- **Current State**: What exists today — relevant files, data flows, constraints, existing patterns
|
|
101
|
+
- **Legacy seam inventory**: Every read path, write path, sync or worker path, route contract, frontend consumer, event payload, fixture, and test surface that still depends on the legacy shape
|
|
105
102
|
- **Changes**: Every file to create/modify/delete, how changes connect
|
|
106
103
|
- **Removals**: What obsolete code, compatibility logic, unused files, debug logs, dead props, or stale branches will be deleted as part of the change
|
|
107
104
|
- **Decisions**: Why this approach, tradeoffs, assumptions
|
|
@@ -109,6 +106,7 @@ Plans document your understanding. Include what matters for this task:
|
|
|
109
106
|
- **Scope checklist**: Concrete implementation items that can be marked done or not done
|
|
110
107
|
- **Acceptance criteria**: What must be true when each phase is "done"
|
|
111
108
|
- **Phase checkpoints**: What verification, reviewer passes, tests, typechecks, builds, or manual QA must pass before moving to the next phase
|
|
109
|
+
- **Grep gates**: Exact searches that must return clean before a phase is review-ready or complete
|
|
112
110
|
- **Cleanup expectations**: What legacy or replaced paths must be removed before the work can be called complete
|
|
113
111
|
- **Test cases**: For behavioral changes, include input -> expected output examples
|
|
114
112
|
- **Non-Goals**: Explicitly out of scope to prevent implementation drift
|
|
@@ -134,6 +132,8 @@ Before presenting the plan, verify against real code:
|
|
|
134
132
|
- No pretending you verified something you didn't
|
|
135
133
|
- Approved scope must be explicit enough to act as an execution contract after user approval
|
|
136
134
|
- The plan must be explicit enough to support phase-by-phase execution and checkpoints without rediscovering the intended order in chat
|
|
135
|
+
- Migration and refactor plans should include a legacy seam inventory before implementation starts
|
|
136
|
+
- Migration and refactor phases should include exact grep gates for the legacy symbols being removed
|
|
137
137
|
- Refactor and replacement plans should explicitly call out what legacy or obsolete code will be removed instead of preserving it by default
|
|
138
138
|
- If the user approves the plan, do not silently defer or drop checklist items later; discuss any proposed scope change first
|
|
139
139
|
|
|
@@ -179,6 +179,8 @@ If the plan would make the implementer ask "where does this hook in?" or "what e
|
|
|
179
179
|
- Do not stop exploring just because you have a plausible plan. The usual failure mode is shallow repo understanding.
|
|
180
180
|
- Do not leave unresolved architecture or product decisions hidden behind "we can figure that out during implementation."
|
|
181
181
|
- Do not plan a refactor as a rewrite-plus-compatibility-preservation bundle unless compatibility is explicitly required. Call out what should be deleted.
|
|
182
|
+
- Do not skip the legacy seam inventory for migrations or refactors and then rediscover dependencies one tiny edit at a time during implementation.
|
|
183
|
+
- Do not leave grep gates implicit. Name the exact legacy symbols or shapes that must be gone before the phase can move forward.
|
|
182
184
|
- Do not dump a transcript into the plan doc. Distill the decisions and requirements into a clean implementation handoff.
|
|
183
185
|
- Do not treat a reviewed plan as a stopping point. Once the user approves it, the workflow expects execution to continue.
|
|
184
186
|
|
|
@@ -10,7 +10,6 @@ Use this skill to drive the PR through review instead of treating review as a on
|
|
|
10
10
|
## When Not To Use This Skill
|
|
11
11
|
|
|
12
12
|
- Skip it before a PR has active review or automated review in flight.
|
|
13
|
-
- Skip it for local pre-push hygiene; use `pre-pr-hygiene` for that workflow.
|
|
14
13
|
- Skip it for the repo-internal closeout loop on an unpushed slice; use the normal review workflows instead.
|
|
15
14
|
|
|
16
15
|
## Step 1: Wait For Review To Settle
|
|
@@ -3,11 +3,12 @@ model_reasoning_effort = "high"
|
|
|
3
3
|
sandbox_mode = "read-only"
|
|
4
4
|
developer_instructions = """
|
|
5
5
|
Read these files in order before doing anything else:
|
|
6
|
-
1. .
|
|
7
|
-
2. .waypoint/
|
|
8
|
-
3. .waypoint/
|
|
9
|
-
4. .waypoint/
|
|
10
|
-
5.
|
|
6
|
+
1. AGENTS.md
|
|
7
|
+
2. .waypoint/WORKSPACE.md
|
|
8
|
+
3. .waypoint/ACTIVE_PLANS.md
|
|
9
|
+
4. .waypoint/DOCS_INDEX.md
|
|
10
|
+
5. .waypoint/context/SNAPSHOT.md
|
|
11
|
+
6. .waypoint/context/RECENT_THREAD.md
|
|
11
12
|
|
|
12
13
|
After reading them, follow these operating instructions:
|
|
13
14
|
|