Skip to content

Commit 41e9ad4

Browse files
committed
Release Waypoint 0.13.0
1 parent a6baa60 commit 41e9ad4

24 files changed

Lines changed: 223 additions & 254 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Changelog
22

3+
## 0.13.0
4+
5+
### Minor Changes
6+
7+
- Separate durable plan docs from long-lived project docs in the Waypoint scaffold.
8+
9+
New repos now get a dedicated `.waypoint/plans/` directory, the docs index routes both docs and plans, and the built-in guidance now points planning workflows at the new plans layer instead of mixing plans into `.waypoint/docs/`.
10+
11+
- Remove the `visual-explanations` skill and simplify Waypoint's visual guidance.
12+
13+
Visual explanation now stays in the core contract: use Mermaid directly in chat for diagrams, and show screenshots whenever browser or app inspection is part of reproduction or verification work. The public docs were also tightened so they describe Waypoint more directly and leave per-skill trigger logic inside the skills themselves.
14+
315
## 0.12.2
416

517
### Patch Changes

README.md

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ It exists to solve two problems at the same time:
99

1010
## What Waypoint is for
1111

12-
Most agent setups break down in one of two ways:
12+
Waypoint is built for repos where continuity and collaboration both matter.
1313

14-
- the repo has no memory, so the next session starts half-blind
15-
- the repo has too much process in the always-on prompt, so the agent starts sounding like a compliance layer
14+
It gives the next session real context and keeps the current session clear and useful.
1615

17-
Waypoint is meant to sit in the middle:
16+
Waypoint adds:
1817

1918
- explicit repo-local memory
2019
- strong default collaboration
@@ -57,8 +56,9 @@ Waypoint scaffolds a Codex-friendly repo around a few core pieces:
5756
- `AGENTS.md` for the startup contract
5857
- `.waypoint/MEMORY.md` for durable user/team preferences and collaboration context
5958
- `.waypoint/WORKSPACE.md` for live operational state
60-
- `.waypoint/docs/` for durable project memory
61-
- `.waypoint/DOCS_INDEX.md` for docs routing
59+
- `.waypoint/docs/` for long-lived project docs
60+
- `.waypoint/plans/` for durable plan documents
61+
- `.waypoint/DOCS_INDEX.md` for docs and plans routing
6262
- `.waypoint/context/` for generated startup context
6363
- `.waypoint/track/` for long-running work that truly needs durable progress tracking
6464
- `.agents/skills/` for optional structured workflows
@@ -70,7 +70,7 @@ The philosophy is simple:
7070
- more explicit repo-local state
7171
- stronger default collaboration
7272
- investigation before status narration
73-
- procedures as tools, not identity
73+
- structured workflows that stay in their own tools
7474

7575
## Best fit
7676

@@ -108,6 +108,7 @@ repo/
108108
├── TRACKS_INDEX.md
109109
├── WORKSPACE.md
110110
├── docs/
111+
├── plans/
111112
├── track/
112113
├── context/
113114
├── scripts/
@@ -135,12 +136,8 @@ Waypoint ships a strong default skill pack for real coding work:
135136

136137
These are repo-local, so the workflow travels with the project.
137138

138-
The important design choice is that they are tools, not default ceremony. Use them when the task calls for them:
139-
140-
- `planning` when the shape of the work needs real clarification
141-
- `adversarial-review` when you want a deliberate ship-readiness or risky-change second pass
142-
- `work-tracker` when the work will span sessions
143-
- `conversation-retrospective` when there is durable learning worth preserving
139+
The important design choice is that they stay out of the always-on voice.
140+
Each skill explains what it is for and when it should be invoked.
144141

145142
## Reviewer agents
146143

@@ -152,22 +149,16 @@ Waypoint scaffolds these reviewer agents by default:
152149

153150
They are available for deliberate second passes.
154151

155-
Use them when:
156-
157-
- the change is risky
158-
- you want extra confidence
159-
- the user explicitly asks for review or ship-readiness
160-
- a PR workflow needs an explicit review pass
161-
162152
## What makes Waypoint different
163153

164154
Waypoint is opinionated, but explicit:
165155

166156
- state lives in files you can inspect
167157
- docs routing is generated, not guessed from memory
168158
- the default contract tells the agent to investigate first
169-
- durable memory is separated into user/team memory, live workspace state, and project docs
170-
- heavy procedure lives in optional skills instead of the always-on voice
159+
- durable memory is separated into user/team memory, live workspace state, project docs, and plan docs
160+
- visual explanation stays lightweight: Mermaid in chat and screenshots from real UI inspection
161+
- heavier workflows stay in optional skills
171162

172163
## Install
173164

@@ -187,7 +178,7 @@ npx waypoint-codex@latest --help
187178

188179
- `waypoint init` — scaffold or refresh the repo and, by default, update the global CLI first
189180
- `waypoint doctor` — validate health and report drift
190-
- `waypoint sync` — rebuild the docs and tracker indexes
181+
- `waypoint sync` — rebuild the docs/plans and tracker indexes
191182
- `waypoint upgrade` — update the CLI and refresh the current repo using its saved config
192183

193184
## Learn more

docs/architecture.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Waypoint separates repo memory into three different jobs:
2828
- `.waypoint/MEMORY.md` for durable user/team preferences, collaboration context, and stable defaults
2929
- `.waypoint/WORKSPACE.md` for live operational state
3030
- `.waypoint/docs/` for durable project behavior, architecture, decisions, and debugging knowledge
31+
- `.waypoint/plans/` for durable implementation, rollout, migration, and investigation plans
3132

3233
This separation matters because many bad agent experiences come from mixing personal preferences, active task state, and project knowledge into one noisy blob.
3334

@@ -95,9 +96,7 @@ Waypoint adds rigor through explicit escalation paths:
9596

9697
## Review model
9798

98-
Review still matters.
99-
100-
Waypoint just treats it as a tool rather than the default voice of the system.
99+
Waypoint offers deliberate second-pass review for moments that benefit from extra scrutiny.
101100

102101
Use second-pass review when:
103102

@@ -106,7 +105,7 @@ Use second-pass review when:
106105
- you are preparing to ship
107106
- a PR workflow calls for it
108107

109-
`adversarial-review` is the main explicit closeout workflow for those cases.
108+
`adversarial-review` is the main repo-local workflow for that pass.
110109

111110
## Bootstrap flow
112111

docs/overview.md

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,12 @@ Its job is to make agents better in two directions at once:
77
- better continuity across sessions
88
- better default behavior inside the current session
99

10-
## The problem it is solving
10+
## What Waypoint improves
1111

12-
Agent setups usually fail in one of two ways.
12+
Waypoint helps a repo in two directions at once:
1313

14-
The first failure mode is memory:
15-
16-
- important context lives only in chat
17-
- the next session starts half-blind
18-
- the agent does not know which docs matter
19-
20-
The second failure mode is process:
21-
22-
- too much workflow lives in the always-on prompt
23-
- the agent starts narrating readiness instead of investigating
24-
- reviews, trackers, and closeout rituals start feeling like personality instead of tools
25-
26-
Waypoint is designed to solve both.
14+
- it gives the next session real context through visible memory files
15+
- it gives the current session a clear working style focused on diagnosis, progress, and verification
2716

2817
## The Waypoint stance
2918

@@ -35,6 +24,8 @@ In practice, that means:
3524
- lead with diagnosis and next action
3625
- verify before claiming success
3726
- keep the repo legible for the next agent
27+
- show screenshots when browser or app work is part of what the agent inspected or verified
28+
- use Mermaid in chat when a diagram explains the point more clearly
3829

3930
## Core pieces
4031

@@ -43,7 +34,8 @@ Waypoint combines:
4334
- a repo contract in `AGENTS.md`
4435
- durable user/team memory in `.waypoint/MEMORY.md`
4536
- live operating state in `.waypoint/WORKSPACE.md`
46-
- durable project memory in `.waypoint/docs/`
37+
- long-lived project memory in `.waypoint/docs/`
38+
- durable planning docs in `.waypoint/plans/`
4739
- generated routing and context files
4840
- repo-local skills for optional structured workflows
4941
- optional reviewer/helper agents for deliberate second passes

docs/upgrading.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ The core contract should read like a strong collaborator with clear judgment and
6161
Review loops, ship audits, trackers, and retrospectives should stay available without taking over the always-on layer.
6262

6363
3. Repo memory still has clear boundaries.
64-
`.waypoint/MEMORY.md`, `.waypoint/WORKSPACE.md`, and `.waypoint/docs/` should still have distinct jobs.
64+
`.waypoint/MEMORY.md`, `.waypoint/WORKSPACE.md`, `.waypoint/docs/`, and `.waypoint/plans/` should still have distinct jobs.
6565

6666
## If you customized a repo
6767

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "waypoint-codex",
3-
"version": "0.12.2",
3+
"version": "0.13.0",
44
"description": "Codex-native repository operating system: scaffolding, docs routing, repo-local skills, doctor, and sync.",
55
"license": "MIT",
66
"type": "module",

src/cli.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function printHelp(): void {
3939
Commands:
4040
init Initialize a repository with Waypoint scaffolding (auto-updates CLI unless skipped)
4141
doctor Validate repository health and report drift
42-
sync Rebuild docs and tracker indexes
42+
sync Rebuild docs/plans and tracker indexes
4343
upgrade Update the global Waypoint CLI and refresh this repo using existing config
4444
`);
4545
}

src/core.ts

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const DEFAULT_CONFIG_PATH = ".waypoint/config.toml";
2020
const DEFAULT_DOCS_DIR = ".waypoint/docs";
2121
const DEFAULT_DOCS_INDEX = ".waypoint/DOCS_INDEX.md";
2222
const DEFAULT_MEMORY = ".waypoint/MEMORY.md";
23+
const DEFAULT_PLANS_DIR = ".waypoint/plans";
2324
const DEFAULT_TRACK_DIR = ".waypoint/track";
2425
const DEFAULT_TRACKS_INDEX = ".waypoint/TRACKS_INDEX.md";
2526
const DEFAULT_WORKSPACE = ".waypoint/WORKSPACE.md";
@@ -40,7 +41,6 @@ const LEGACY_WAYPOINT_GITIGNORE_RULES = new Set([
4041
".agents/skills/docs-sync/",
4142
".agents/skills/code-guide-audit/",
4243
".agents/skills/adversarial-review/",
43-
".agents/skills/visual-explanations/",
4444
".agents/skills/break-it-qa/",
4545
".agents/skills/frontend-context-interview/",
4646
".agents/skills/backend-context-interview/",
@@ -75,7 +75,6 @@ const SHIPPED_SKILL_NAMES = [
7575
"docs-sync",
7676
"code-guide-audit",
7777
"adversarial-review",
78-
"visual-explanations",
7978
"break-it-qa",
8079
"conversation-retrospective",
8180
"workspace-compress",
@@ -96,6 +95,19 @@ const TIMESTAMPED_WORKSPACE_SECTIONS = new Set([
9695
]);
9796
const TIMESTAMPED_ENTRY_PATTERN = /^(?:[-*]|\d+\.)\s+\[\d{4}-\d{2}-\d{2} \d{2}:\d{2} [A-Z]{2,5}\]/;
9897

98+
function docsIndexSections(projectRoot: string, config?: WaypointConfig): { heading: string; dir: string }[] {
99+
return [
100+
{
101+
heading: ".waypoint/docs/",
102+
dir: path.join(projectRoot, config?.docs_dir ?? DEFAULT_DOCS_DIR),
103+
},
104+
{
105+
heading: ".waypoint/plans/",
106+
dir: path.join(projectRoot, config?.plans_dir ?? DEFAULT_PLANS_DIR),
107+
},
108+
];
109+
}
110+
99111
function ensureDir(dirPath: string): void {
100112
mkdirSync(dirPath, { recursive: true });
101113
}
@@ -363,22 +375,24 @@ export function initRepository(
363375
);
364376
writeIfMissing(path.join(projectRoot, DEFAULT_WORKSPACE), readTemplate("WORKSPACE.md"));
365377
ensureDir(path.join(projectRoot, DEFAULT_DOCS_DIR));
378+
ensureDir(path.join(projectRoot, DEFAULT_PLANS_DIR));
366379
ensureDir(path.join(projectRoot, DEFAULT_TRACK_DIR));
367380
writeIfMissing(path.join(projectRoot, ".waypoint/docs/README.md"), readTemplate(".waypoint/docs/README.md"));
368381
writeIfMissing(path.join(projectRoot, ".waypoint/docs/code-guide.md"), readTemplate(".waypoint/docs/code-guide.md"));
382+
writeIfMissing(path.join(projectRoot, ".waypoint/plans/README.md"), readTemplate(".waypoint/plans/README.md"));
369383
upsertManagedBlock(path.join(projectRoot, "AGENTS.md"), readTemplate("managed-agents-block.md"));
370384
scaffoldSkills(projectRoot);
371385
scaffoldOptionalCodex(projectRoot);
372386
appendGitignoreSnippet(projectRoot);
373-
const docsIndex = renderDocsIndex(projectRoot, path.join(projectRoot, DEFAULT_DOCS_DIR));
387+
const docsIndex = renderDocsIndex(projectRoot, docsIndexSections(projectRoot));
374388
const tracksIndex = renderTracksIndex(projectRoot, path.join(projectRoot, DEFAULT_TRACK_DIR));
375389
writeText(path.join(projectRoot, DEFAULT_DOCS_INDEX), `${docsIndex.content}\n`);
376390
writeText(path.join(projectRoot, DEFAULT_TRACKS_INDEX), `${tracksIndex.content}\n`);
377391

378392
return [
379393
"Initialized Waypoint scaffold",
380394
"Installed managed AGENTS block",
381-
"Created .waypoint/MEMORY.md, .waypoint/WORKSPACE.md, .waypoint/docs/, and .waypoint/track/ scaffold",
395+
"Created .waypoint/MEMORY.md, .waypoint/WORKSPACE.md, .waypoint/docs/, .waypoint/plans/, and .waypoint/track/ scaffold",
382396
"Installed repo-local Waypoint skills",
383397
"Installed coding/reviewer agents and project Codex config",
384398
"Generated .waypoint/DOCS_INDEX.md and .waypoint/TRACKS_INDEX.md",
@@ -514,9 +528,10 @@ export function doctorRepository(projectRoot: string): Finding[] {
514528
}
515529
}
516530

517-
const docsDir = path.join(projectRoot, config.docs_dir ?? DEFAULT_DOCS_DIR);
518531
const docsIndexPath = path.join(projectRoot, config.docs_index_file ?? DEFAULT_DOCS_INDEX);
519-
const docsIndex = renderDocsIndex(projectRoot, docsDir);
532+
const docsDir = path.join(projectRoot, config.docs_dir ?? DEFAULT_DOCS_DIR);
533+
const plansDir = path.join(projectRoot, config.plans_dir ?? DEFAULT_PLANS_DIR);
534+
const docsIndex = renderDocsIndex(projectRoot, docsIndexSections(projectRoot, config));
520535
const trackDir = path.join(projectRoot, DEFAULT_TRACK_DIR);
521536
const tracksIndexPath = path.join(projectRoot, DEFAULT_TRACKS_INDEX);
522537
const tracksIndex = renderTracksIndex(projectRoot, trackDir);
@@ -529,6 +544,15 @@ export function doctorRepository(projectRoot: string): Finding[] {
529544
paths: [docsDir],
530545
});
531546
}
547+
if (!existsSync(plansDir)) {
548+
findings.push({
549+
severity: "error",
550+
category: "docs",
551+
message: ".waypoint/plans/ directory is missing.",
552+
remediation: "Run `waypoint init` to scaffold plans.",
553+
paths: [plansDir],
554+
});
555+
}
532556
for (const relPath of docsIndex.invalidDocs) {
533557
findings.push({
534558
severity: "warn",
@@ -543,15 +567,15 @@ export function doctorRepository(projectRoot: string): Finding[] {
543567
severity: "warn",
544568
category: "docs",
545569
message: ".waypoint/DOCS_INDEX.md is missing.",
546-
remediation: "Run `waypoint sync` to generate the docs index.",
570+
remediation: "Run `waypoint sync` to generate the docs/plans index.",
547571
paths: [docsIndexPath],
548572
});
549573
} else if (readFileSync(docsIndexPath, "utf8").trimEnd() !== docsIndex.content.trimEnd()) {
550574
findings.push({
551575
severity: "warn",
552576
category: "docs",
553577
message: ".waypoint/DOCS_INDEX.md is stale.",
554-
remediation: "Run `waypoint sync` to rebuild the docs index.",
578+
remediation: "Run `waypoint sync` to rebuild the docs/plans index.",
555579
paths: [docsIndexPath],
556580
});
557581
}
@@ -644,9 +668,8 @@ export function doctorRepository(projectRoot: string): Finding[] {
644668

645669
export function syncRepository(projectRoot: string): string[] {
646670
const config = loadWaypointConfig(projectRoot);
647-
const docsDir = path.join(projectRoot, config.docs_dir ?? DEFAULT_DOCS_DIR);
648671
const docsIndexPath = path.join(projectRoot, config.docs_index_file ?? DEFAULT_DOCS_INDEX);
649-
const docsIndex = renderDocsIndex(projectRoot, docsDir);
672+
const docsIndex = renderDocsIndex(projectRoot, docsIndexSections(projectRoot, config));
650673
const trackDir = path.join(projectRoot, DEFAULT_TRACK_DIR);
651674
const tracksIndexPath = path.join(projectRoot, DEFAULT_TRACKS_INDEX);
652675
const tracksIndex = renderTracksIndex(projectRoot, trackDir);

0 commit comments

Comments
 (0)