waypoint-codex 0.14.0 → 0.16.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 CHANGED
@@ -1,89 +1,199 @@
1
1
  # Waypoint
2
2
 
3
- Waypoint is a collaborator-first repository operating system for Codex.
3
+ Waypoint makes Codex better by default for real software work.
4
4
 
5
- It exists to solve two problems at the same time:
5
+ Codex is already powerful. The problem is that most users still have to teach it
6
+ the same things over and over:
6
7
 
7
- - the next agent should be able to pick up the repo with real context
8
- - the current agent should still feel smart, direct, and useful
8
+ - ask better questions before coding
9
+ - plan thoroughly instead of making hidden assumptions
10
+ - follow stronger coding standards
11
+ - review the result seriously before merge
12
+ - verify the work instead of guessing
13
+ - learn from corrections instead of repeating the same mistakes
9
14
 
10
- ## What Waypoint is for
15
+ Waypoint installs those defaults into a repo so you can spend less time
16
+ prompting and more time building.
11
17
 
12
- Waypoint is built for repos where continuity and collaboration both matter.
18
+ ## Install and upgrade
13
19
 
14
- It gives the next session real context and keeps the current session clear and useful.
20
+ Waypoint requires Node 20+.
21
+
22
+ Install globally:
23
+
24
+ ```bash
25
+ npm install -g waypoint-codex
26
+ ```
27
+
28
+ Or try it without a global install:
29
+
30
+ ```bash
31
+ npx waypoint-codex@latest --help
32
+ ```
33
+
34
+ Keep an existing repo up to date:
35
+
36
+ ```bash
37
+ waypoint upgrade
38
+ ```
39
+
40
+ ## What gets better
41
+
42
+ With Waypoint, Codex should become better at:
43
+
44
+ - understanding the product and technical context before it starts
45
+ - planning work in enough detail to avoid avoidable mistakes
46
+ - writing code that matches the codebase and holds up in production
47
+ - staying on track during larger or longer-running tasks
48
+ - reviewing and verifying its own work before calling it done
49
+ - improving its own guidance when the user corrects it
50
+
51
+ ## Why Waypoint exists
52
+
53
+ Waypoint is for people using Codex on real apps and real codebases, not just
54
+ tiny one-off edits.
55
+
56
+ It exists because most Codex users should not have to manually remember every
57
+ best practice, every guardrail, every planning question, and every review step
58
+ for every task.
59
+
60
+ Waypoint packages that expertise into the repo so Codex starts from a much
61
+ better default.
62
+
63
+ ## What Waypoint adds
64
+
65
+ ### 1. Better default behavior
66
+
67
+ Waypoint gives Codex stronger repo guidance through the generated contract,
68
+ operating manual, core behavior files, and repo-local instructions.
69
+
70
+ That means the agent is pushed to:
71
+
72
+ - investigate before narrating status
73
+ - ask better questions about the product, architecture, and constraints
74
+ - explain what it found in a clear way
75
+ - verify what it changed
76
+ - leave the repo clearer than it found it
77
+
78
+ ### 2. Better planning
79
+
80
+ Waypoint ships a thorough planning workflow for work that should not start from
81
+ guesswork.
82
+
83
+ That workflow pushes the agent to:
15
84
 
16
- Waypoint adds:
85
+ - interview the user until the real requirements are clear
86
+ - produce a detailed plan before implementation
87
+ - challenge that plan with a reviewer agent
88
+ - tighten the plan before coding starts
17
89
 
18
- - explicit repo-local memory
19
- - strong default collaboration
20
- - optional structured workflows when the task actually needs them
90
+ The goal is simple: fewer assumptions, fewer surprises, and a much better shot
91
+ at one-shot execution.
21
92
 
22
- The default mode centers a simple loop:
93
+ ### 3. Better code quality
23
94
 
24
- - investigate the issue
25
- - explain what is happening
26
- - fix what you can
27
- - verify it
28
- - leave the repo clearer than you found it
95
+ Waypoint does not assume Codex will naturally write production-quality code by
96
+ default.
29
97
 
30
- ## Core idea
98
+ It adds guardrails that push the agent toward:
31
99
 
32
- Waypoint keeps the good parts of a repo operating system:
100
+ - stronger coding standards
101
+ - better fit with the existing codebase
102
+ - fewer lazy shortcuts
103
+ - fewer architecture mistakes
104
+ - fewer duplicated or premature abstractions
33
105
 
34
- - durable context in files
35
- - explicit startup and routing
106
+ Reviewer agents and audit workflows add another pass before merge when the work
107
+ needs it.
108
+
109
+ ### 4. Better end-to-end execution
110
+
111
+ Waypoint also helps Codex follow through on bigger tasks.
112
+
113
+ It includes workflows for:
114
+
115
+ - long-running task tracking
116
+ - ship-readiness audits
117
+ - merge-ready ownership
118
+ - deliberate review passes before PR or merge
119
+
120
+ This helps the agent keep moving until the work is actually ready, not just
121
+ "probably done."
122
+
123
+ ### 5. Self-improvement
124
+
125
+ Waypoint treats user corrections as product input, not just conversation noise.
126
+
127
+ When the user corrects behavior, rules, or workflow, the agent is pushed to
128
+ update the right durable files so the same issue is less likely to happen
129
+ again.
130
+
131
+ That includes:
132
+
133
+ - user-scoped guidance
134
+ - project-scoped guidance
36
135
  - repo-local skills
37
- - reusable reviewer agents
38
- - generated context for continuity
136
+ - retrospectives that turn friction from the current conversation into lasting
137
+ improvements
39
138
 
40
- Those systems work best when they stay explicit and well-scoped.
139
+ ### 6. Better continuity
41
140
 
42
- Structured workflows belong in tools:
141
+ Waypoint gives Codex explicit continuity artifacts so the next session does not
142
+ start half-blind.
43
143
 
44
- - review loops
45
- - ship-readiness passes
46
- - trackers
47
- - retrospectives
48
- - pre-PR hygiene
144
+ That includes:
49
145
 
50
- That keeps the default conversation focused on diagnosis, progress, and verification.
146
+ - a generated docs index that tells the agent which docs exist and when to read
147
+ them
148
+ - a live workspace file that records what is going on right now
149
+ - a generated recent thread file that carries the most important prior
150
+ conversation context forward
51
151
 
52
152
  ## What Waypoint sets up
53
153
 
54
154
  Waypoint scaffolds a Codex-friendly repo around a few core pieces:
55
155
 
56
- - `AGENTS.md` for the startup contract
57
- - `.waypoint/MEMORY.md` for durable user/team preferences and collaboration context
156
+ - `AGENTS.md` for the project-scoped startup contract and durable repo guidance
58
157
  - `.waypoint/WORKSPACE.md` for live operational state
59
158
  - `.waypoint/docs/` for long-lived project docs
60
159
  - `.waypoint/plans/` for durable plan documents
61
- - `.waypoint/DOCS_INDEX.md` for docs and plans routing
160
+ - `.waypoint/DOCS_INDEX.md` for docs and plans routing, so the agent knows what
161
+ to read and when
62
162
  - `.waypoint/context/` for generated startup context
63
- - `.waypoint/track/` for long-running work that truly needs durable progress tracking
163
+ - `.waypoint/context/RECENT_THREAD.md` for compact continuity from the previous
164
+ conversation
165
+ - `.waypoint/track/` for long-running work that truly needs durable progress
166
+ tracking
64
167
  - `.agents/skills/` for optional structured workflows
65
168
  - `.codex/` for optional reviewer and helper agents
66
169
 
67
- The philosophy is simple:
170
+ By default, Waypoint routes docs from `.waypoint/docs/` and plans from
171
+ `.waypoint/plans/`.
172
+ If your repo keeps routable docs elsewhere, you can add more explicit roots in
173
+ `.waypoint/config.toml` with `docs_dirs` and `plans_dirs`.
174
+ Waypoint scans each configured root recursively and only includes Markdown files
175
+ with valid Waypoint frontmatter.
68
176
 
69
- - less hidden runtime magic
70
- - more explicit repo-local state
71
- - stronger default collaboration
72
- - investigation before status narration
73
- - structured workflows that stay in their own tools
177
+ The continuity story matters:
74
178
 
75
- By default, Waypoint routes docs from `.waypoint/docs/` and plans from `.waypoint/plans/`.
76
- If your repo keeps routable docs elsewhere, you can add more explicit roots in `.waypoint/config.toml` with `docs_dirs` and `plans_dirs`.
77
- Waypoint scans each configured root recursively and only includes Markdown files with valid Waypoint frontmatter.
179
+ - `.waypoint/DOCS_INDEX.md` helps the agent find the right docs before work
180
+ - `.waypoint/WORKSPACE.md` helps the next session understand what is in flight
181
+ - `.waypoint/context/RECENT_THREAD.md` helps the agent retain the important
182
+ parts of the previous conversation
78
183
 
79
184
  ## Best fit
80
185
 
81
186
  Waypoint is most useful when you want:
82
187
 
83
- - multi-session continuity in a real repo
84
- - a durable memory structure for agents
85
- - a cleaner default collaboration style
86
- - optional planning, review, QA, and release workflows that travel with the project
188
+ - a better default Codex workflow in a real repo
189
+ - stronger planning before implementation starts
190
+ - stronger coding standards and review guardrails
191
+ - better follow-through on long tasks
192
+ - a personal workflow that can live in almost any repo without becoming a team
193
+ rollout
194
+
195
+ Waypoint is primarily an individual tool.
196
+ Most of its repo-local state is meant to stay personal and local by default.
87
197
 
88
198
  If you only use Codex for tiny one-off edits, Waypoint is probably unnecessary.
89
199
 
@@ -108,7 +218,6 @@ repo/
108
218
  │ └── skills/
109
219
  └── .waypoint/
110
220
  ├── DOCS_INDEX.md
111
- ├── MEMORY.md
112
221
  ├── TRACKS_INDEX.md
113
222
  ├── WORKSPACE.md
114
223
  ├── docs/
@@ -148,6 +257,7 @@ Waypoint ships a strong default skill pack for real coding work:
148
257
  - `conversation-retrospective`
149
258
  - `frontend-ship-audit`
150
259
  - `backend-ship-audit`
260
+ - `merge-ready-owner`
151
261
  - `workspace-compress`
152
262
  - `pre-pr-hygiene`
153
263
  - `pr-review`
@@ -155,7 +265,37 @@ Waypoint ships a strong default skill pack for real coding work:
155
265
  These are repo-local, so the workflow travels with the project.
156
266
 
157
267
  The important design choice is that they stay out of the always-on voice.
158
- Each skill explains what it is for and when it should be invoked.
268
+ Each skill exists to improve the result when the task needs more rigor, without
269
+ turning every normal interaction into a heavy process.
270
+
271
+ ## How to get full value
272
+
273
+ Installing Waypoint improves Codex's defaults right away, but the full workflow
274
+ is not completely automatic.
275
+
276
+ Some of Waypoint's biggest advantages come from user-invoked skills that should
277
+ be used deliberately when the moment calls for them.
278
+
279
+ The most important ones are:
280
+
281
+ - `code-guide-audit` when you want a code quality pass against your repo's
282
+ standards and working rules
283
+ - `backend-ship-audit` when backend work needs a deeper production-readiness
284
+ pass
285
+ - `frontend-ship-audit` when frontend work needs a deeper product, UX, and ship
286
+ readiness pass
287
+ - `docs-sync` when the implementation changed and the repo docs should be
288
+ brought back in sync
289
+ - `conversation-retrospective` when the conversation exposed friction,
290
+ corrections, or workflow problems that should become durable improvements
291
+ - `merge-ready-owner` when you want the agent to own the task all the way to a
292
+ merge-ready result with stronger autonomy
293
+
294
+ The practical rule is:
295
+
296
+ - install Waypoint for better defaults
297
+ - invoke the higher-rigor skills when you want a stronger planning, audit,
298
+ review, docs, or closeout pass
159
299
 
160
300
  ## Reviewer agents
161
301
 
@@ -165,7 +305,7 @@ Waypoint scaffolds these reviewer agents by default:
165
305
  - `code-reviewer`
166
306
  - `plan-reviewer`
167
307
 
168
- They are available for deliberate second passes.
308
+ They are available for deliberate second passes and for ownership workflows like `merge-ready-owner`.
169
309
 
170
310
  ## What makes Waypoint different
171
311
 
@@ -173,24 +313,13 @@ Waypoint is opinionated, but explicit:
173
313
 
174
314
  - state lives in files you can inspect
175
315
  - docs routing is generated, not guessed from memory
176
- - the default contract tells the agent to investigate first
177
- - durable memory is separated into user/team memory, live workspace state, project docs, and plan docs
316
+ - the default contract tells the agent to ask better questions and investigate
317
+ first
318
+ - durable guidance is separated into user-scoped AGENTS, project-scoped AGENTS, live workspace state, project docs, and plan docs
178
319
  - visual explanation stays lightweight: Mermaid in chat and screenshots from real UI inspection
179
320
  - heavier workflows stay in optional skills
180
-
181
- ## Install
182
-
183
- Waypoint requires Node 20+.
184
-
185
- ```bash
186
- npm install -g waypoint-codex
187
- ```
188
-
189
- Or run it without a global install:
190
-
191
- ```bash
192
- npx waypoint-codex@latest --help
193
- ```
321
+ - user corrections are supposed to improve the system instead of disappearing
322
+ into chat history
194
323
 
195
324
  ## Main commands
196
325
 
package/dist/src/core.js CHANGED
@@ -7,7 +7,6 @@ import { defaultWaypointConfig, readTemplate, renderWaypointConfig, MANAGED_BLOC
7
7
  const DEFAULT_CONFIG_PATH = ".waypoint/config.toml";
8
8
  const DEFAULT_DOCS_DIR = ".waypoint/docs";
9
9
  const DEFAULT_DOCS_INDEX = ".waypoint/DOCS_INDEX.md";
10
- const DEFAULT_MEMORY = ".waypoint/MEMORY.md";
11
10
  const DEFAULT_PLANS_DIR = ".waypoint/plans";
12
11
  const DEFAULT_TRACK_DIR = ".waypoint/track";
13
12
  const DEFAULT_TRACKS_INDEX = ".waypoint/TRACKS_INDEX.md";
@@ -36,11 +35,11 @@ const LEGACY_WAYPOINT_GITIGNORE_RULES = new Set([
36
35
  ".agents/skills/frontend-ship-audit/",
37
36
  ".agents/skills/backend-ship-audit/",
38
37
  ".agents/skills/conversation-retrospective/",
38
+ ".agents/skills/merge-ready-owner/",
39
39
  ".agents/skills/workspace-compress/",
40
40
  ".agents/skills/pre-pr-hygiene/",
41
41
  ".agents/skills/pr-review/",
42
42
  ".waypoint/config.toml",
43
- ".waypoint/MEMORY.md",
44
43
  ".waypoint/README.md",
45
44
  ".waypoint/SOUL.md",
46
45
  ".waypoint/WORKSPACE.md",
@@ -67,6 +66,7 @@ const SHIPPED_SKILL_NAMES = [
67
66
  "adversarial-review",
68
67
  "break-it-qa",
69
68
  "conversation-retrospective",
69
+ "merge-ready-owner",
70
70
  "workspace-compress",
71
71
  "pre-pr-hygiene",
72
72
  "pr-review",
@@ -177,13 +177,8 @@ function migrateLegacyRootFiles(projectRoot) {
177
177
  if (existsSync(legacyWorkspace) && !existsSync(newWorkspace)) {
178
178
  writeText(newWorkspace, readFileSync(legacyWorkspace, "utf8"));
179
179
  }
180
- const legacyMemory = path.join(projectRoot, "MEMORY.md");
181
- const newMemory = path.join(projectRoot, DEFAULT_MEMORY);
182
- if (existsSync(legacyMemory) && !existsSync(newMemory)) {
183
- writeText(newMemory, readFileSync(legacyMemory, "utf8"));
184
- }
185
180
  removePathIfExists(legacyWorkspace);
186
- removePathIfExists(legacyMemory);
181
+ removePathIfExists(path.join(projectRoot, "MEMORY.md"));
187
182
  removePathIfExists(path.join(projectRoot, "DOCS_INDEX.md"));
188
183
  }
189
184
  function appendGitignoreSnippet(projectRoot) {
@@ -373,6 +368,7 @@ export function initRepository(projectRoot, options) {
373
368
  ".codex/agents/implementer.toml",
374
369
  ".waypoint/agents",
375
370
  ".waypoint/automations",
371
+ ".waypoint/MEMORY.md",
376
372
  ".waypoint/rules",
377
373
  ".waypoint/state",
378
374
  ]) {
@@ -381,7 +377,6 @@ export function initRepository(projectRoot, options) {
381
377
  writeText(path.join(projectRoot, ".waypoint/README.md"), readTemplate(".waypoint/README.md"));
382
378
  writeText(path.join(projectRoot, ".waypoint/SOUL.md"), readTemplate(".waypoint/SOUL.md"));
383
379
  writeText(path.join(projectRoot, ".waypoint/agent-operating-manual.md"), readTemplate(".waypoint/agent-operating-manual.md"));
384
- writeIfMissing(path.join(projectRoot, DEFAULT_MEMORY), readTemplate(".waypoint/MEMORY.md"));
385
380
  scaffoldWaypointOptionalTemplates(projectRoot);
386
381
  writeText(path.join(projectRoot, DEFAULT_CONFIG_PATH), renderWaypointConfig(config));
387
382
  writeIfMissing(path.join(projectRoot, DEFAULT_WORKSPACE), readTemplate("WORKSPACE.md"));
@@ -403,7 +398,7 @@ export function initRepository(projectRoot, options) {
403
398
  return [
404
399
  "Initialized Waypoint scaffold",
405
400
  "Installed managed AGENTS block",
406
- "Created .waypoint/MEMORY.md, .waypoint/WORKSPACE.md, .waypoint/docs/, .waypoint/plans/, and .waypoint/track/ scaffold",
401
+ "Created .waypoint/WORKSPACE.md, .waypoint/docs/, .waypoint/plans/, and .waypoint/track/ scaffold",
407
402
  "Installed repo-local Waypoint skills",
408
403
  "Installed coding/reviewer agents and project Codex config",
409
404
  "Generated .waypoint/DOCS_INDEX.md and .waypoint/TRACKS_INDEX.md",
@@ -515,7 +510,6 @@ export function doctorRepository(projectRoot) {
515
510
  }
516
511
  }
517
512
  for (const requiredFile of [
518
- path.join(projectRoot, DEFAULT_MEMORY),
519
513
  path.join(projectRoot, ".waypoint", "SOUL.md"),
520
514
  path.join(projectRoot, ".waypoint", "agent-operating-manual.md"),
521
515
  path.join(projectRoot, ".waypoint", "scripts", "prepare-context.mjs"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "waypoint-codex",
3
- "version": "0.14.0",
3
+ "version": "0.16.0",
4
4
  "description": "Codex-native repository operating system: scaffolding, docs routing, repo-local skills, doctor, and sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: adversarial-review
3
- description: Run a deliberate second-pass review loop for ship-readiness or risky changes. Use when the user asks for a final review pass, asks whether something is ready to ship, asks to "close the loop," or when the implementation risk clearly warrants an explicit closeout workflow. This skill scopes the slice, runs `code-reviewer`, runs `code-health-reviewer` when the change is medium or large or structurally risky, runs `code-guide-audit`, waits for the required outputs, fixes real findings, and repeats with fresh rounds until no meaningful issues remain. Do not use this for tiny obvious edits, normal debugging back-and-forth, pre-implementation plan review, or active PR comment triage.
3
+ description: Second-pass closeout review for a non-trivial implementation slice. Use when risky work needs a deliberate final review before being called done. This skill scopes the slice, runs the right reviewer agents and code-guide checks, fixes meaningful findings, and repeats until only optional polish remains.
4
4
  ---
5
5
 
6
6
  # Adversarial Review
7
7
 
8
- Use this skill when you explicitly want a closeout-grade second pass instead of a normal implementation loop.
8
+ Use this skill when you explicitly want a closeout-grade second pass before calling a non-trivial slice done or ready to ship.
9
9
 
10
10
  This skill coordinates the specialist reviewers, keeps the scope tight, waits as long as needed, fixes meaningful findings, and reruns fresh review rounds until the remaining feedback is only optional polish or no findings at all.
11
11
 
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "Adversarial Review"
3
- short_description: "Close out a code slice with iterative review"
4
- default_prompt: "Use $adversarial-review to close out this non-trivial implementation slice before calling it done."
3
+ short_description: "Run a deliberate second-pass closeout review"
4
+ default_prompt: "Use $adversarial-review when this non-trivial implementation slice needs a deliberate final review loop with reviewer agents and code-guide checks before we call it done."
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: backend-context-interview
3
- description: Gather and persist durable backend project context when it is missing, stale, contradictory, or too weak to support implementation, architecture, migration, or ship-readiness decisions. Use when a task needs project-level backend facts such as deployment reality, user exposure, scale, criticality, tenant model, compatibility expectations, security posture, observability expectations, or compliance constraints, and those facts are not already clear in `AGENTS.md` or the repo docs. This is not a feature-discovery skill and should not trigger for endpoint details, acceptance criteria, or other task-specific product questions.
3
+ description: Fill missing backend project context that materially changes engineering decisions. Use when durable backend facts like exposure, scale, criticality, compatibility, tenant model, security, observability, or compliance are not already clear in `AGENTS.md` or routed docs.
4
4
  ---
5
5
 
6
6
  # Backend Context Interview
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: backend-ship-audit
3
- description: Audit a backend scope for practical ship readiness with evidence-based findings focused on real release risk rather than style. Use when the user asks whether a backend service, API, worker, scheduler, endpoint group, pull request, or backend directory is ready to ship; when Codex needs to perform a release-risk review before launch; when the audit scope must be resolved from repository structure; when complete-file reading is required to understand behavior and dependencies; when only high-leverage deployment-context questions should be asked after repository exploration; or when a timestamped backend audit should be written under `.waypoint/audit/`. Do not use this for frontend ship review, generic style review, PR comment triage, or a one-off coding-guide check.
3
+ description: Audit a backend scope for ship-readiness with evidence-based findings focused on real release risk. Use when a backend service, API, worker, scheduler, PR, or backend area needs a launch-readiness review rather than style feedback or PR comment triage.
4
4
  ---
5
5
 
6
6
  # Backend ship audit
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "Break-It QA"
3
3
  short_description: "Try to break a feature through the UI"
4
- default_prompt: "Use this skill to verify a user-facing feature by trying to break it through the browser with invalid inputs, wrong action order, refreshes, back navigation, repeated clicks, and other adversarial interactions, then fix clear issues and repeat."
4
+ default_prompt: "Use $break-it-qa to verify this user-facing feature by trying to break it through the browser with invalid inputs, wrong action order, refreshes, back navigation, repeated clicks, and other adversarial interactions, then fix clear issues and repeat."
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: code-guide-audit
3
- description: Audit a specific feature, file set, or implementation slice against the coding guide and report only coding-guide-related violations or risks in that scope. Use when the user asks for a code-guide audit, coding-guide compliance check, guide-specific review, or wants to know whether a change follows rules like no silent fallbacks, strong boundary validation, frontend reuse, explicit state handling, and behavior-focused verification. Do not use this for broad ship-readiness review, generic bug hunting, PR comment triage, or repo-wide cleanup.
3
+ description: Audit a scoped implementation slice against the code guide and report only guide-related violations or risks. Use for coding-guide compliance checks on explicit behavior, root-cause fixes, boundary validation, security, concurrency, accessibility, performance, and future legibility.
4
4
  ---
5
5
 
6
6
  # Code Guide Audit
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: frontend-context-interview
3
- description: Gather and persist durable frontend project context when missing or insufficient for implementation or review work. Use this to ask project-level questions about audience, deployment surface, browser/device expectations, accessibility, SEO, localization, analytics obligations, and other durable frontend context that is not clearly documented. This is not a feature-discovery skill.
3
+ description: Fill missing frontend project context that materially changes implementation or review decisions. Use when durable frontend facts like audience, deployment surface, browser and device support, accessibility, SEO, localization, analytics, or design-system constraints are not already clear in `AGENTS.md` or routed docs.
4
4
  ---
5
5
 
6
6
  # Frontend Context Interview
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: frontend-ship-audit
3
- description: Audit a defined frontend scope for ship-readiness with a strong focus on real product risk, user-facing correctness, and evidence from the repository. Use when Codex needs to review an app, route group, feature, page set, component area, PR, or frontend directory to decide whether it is ready to ship; resolve the actual reviewable frontend scope from the user request and repository structure; read all relevant frontend code and docs completely; ask a concise high-leverage interview only for missing context that materially changes the release bar; persist durable frontend deployment context into the project root AGENTS.md under a Frontend Context section; and write an evidence-based audit with prioritized P0-P4 findings at .waypoint/audit/dd-mm-yyyy-hh-mm-frontend-audit.md.
3
+ description: Audit a frontend scope for ship-readiness with evidence-based findings focused on product risk and user-facing correctness. Use when an app area, route group, feature, PR, or frontend surface needs a launch-readiness review rather than style feedback or PR comment triage.
4
4
  ---
5
5
 
6
6
  Audit ship-readiness like a strong frontend reviewer. Optimize for user impact, release risk, and production correctness. Do not optimize for style policing.
@@ -0,0 +1,187 @@
1
+ ---
2
+ name: merge-ready-owner
3
+ description: Own a non-trivial change from approved plan through implementation, verification, PR creation or update, review handling, and merge-ready handoff. Use when the user wants Codex to take full ownership after the problem and plan are agreed, keep going without repeated check-ins, and return only when there is a clean PR ready to merge or a concrete blocker that cannot be cleared alone.
4
+ ---
5
+
6
+ # Merge Ready Owner
7
+
8
+ Use this skill when the user wants one continuous ownership loop instead of a handoff after coding.
9
+
10
+ The job is not "write some code." The job is "carry the agreed work all the way to a merge-ready PR or a clearly explained blocker."
11
+
12
+ ## When Not To Use This Skill
13
+
14
+ - Skip it when the problem is still being shaped or the plan is not actually approved. Use `planning` first.
15
+ - Skip it for tiny local edits that do not justify a full ship loop.
16
+ - Skip it when the user explicitly wants to stay in the loop for each step instead of delegating the closeout.
17
+
18
+ ## Finish Line
19
+
20
+ Before starting, treat this as the default definition of done:
21
+
22
+ - the agreed scope is implemented
23
+ - the work is based on the repo's current default branch state
24
+ - the right PR exists and is up to date when the repo uses PRs
25
+ - the relevant tests, typechecks, lint, builds, or smoke checks for the touched surface are green
26
+ - real verification has been done against the risky user or runtime path when practical
27
+ - docs, trackers, and workspace state are updated when the shipped behavior changed materially
28
+ - review comments are answered and meaningful findings are fixed
29
+ - CI is green when the repo uses CI
30
+ - the PR is merge-ready, or there is a concrete blocker that cannot be cleared alone
31
+
32
+ When the product surface makes it practical, extend done to include:
33
+
34
+ - a short recorded walkthrough of the verified final browser or app flow
35
+ - the local path to that recording
36
+
37
+ Do not stop at "the code compiles" or "the first push is up."
38
+
39
+ During the loop, keep live execution state current:
40
+
41
+ - update `WORKSPACE.md` as milestones, blockers, verification state, and next steps change
42
+ - if a tracker exists or the work has become tracker-worthy, update the tracker during the work instead of reconstructing it later
43
+
44
+ ## Step 1: Reconfirm The Scope And Ownership Mode
45
+
46
+ - Make sure the plan is already approved or the user explicitly said to proceed.
47
+ - Restate the finish line to yourself before editing.
48
+ - Identify the highest-risk parts of the change so verification matches the real failure surface.
49
+
50
+ If the plan is not actually settled, stop and use `planning` instead of guessing.
51
+
52
+ ## Step 2: Start From Fresh Branch State
53
+
54
+ - Sync with the repo's current default branch and base the work on that fresh state.
55
+ - If there is no branch yet, create one from the refreshed default branch.
56
+ - If there is already a PR, confirm it is still open before pushing more commits.
57
+ - If an old PR was closed or merged, create a fresh branch from the current default branch, carry forward only the needed work, and open a new PR if the repo uses PRs.
58
+
59
+ ## Step 3: Implement In Small Verified Chunks
60
+
61
+ - Make the change in small logical chunks.
62
+ - Commit in small steps when the repo workflow benefits from granular history.
63
+ - Keep unrelated local changes intact.
64
+ - Do not stop after the first implementation pass if clear follow-up fixes are still needed.
65
+
66
+ For bugs, prefer reproducing the problem first, then fixing it, then proving the fix.
67
+
68
+ ## Step 4: Use The Right Repo-Local Helpers
69
+
70
+ Use the repo's existing skills and reviewer agents instead of inventing a parallel process.
71
+
72
+ - Use `work-tracker` early when the work becomes non-trivial, multi-step, review-heavy, or checklist-driven enough that `WORKSPACE.md` alone will stop being a good live record.
73
+ - Use `docs-sync` when shipped behavior, routes, contracts, or commands changed materially.
74
+ - Use `pre-pr-hygiene` before pushing or opening/updating a PR when the change surface is substantial.
75
+ - Use `pr-review` once active PR review or automated review has started.
76
+ - Use `break-it-qa` for extra abuse testing on risky interactive flows when that pass is worth the time.
77
+
78
+ If the repo ships reviewer agents under `.codex/agents/`, use them in the closeout flow when they are available:
79
+
80
+ - run `code-reviewer` for every non-trivial implementation slice before declaring the work clear
81
+ - run `code-health-reviewer` when the change is medium or large, especially when it adds structure, duplicates logic, or introduces new abstractions
82
+ - launch them in parallel when both apply
83
+ - use them at meaningful milestones, not only at the very end: after substantial implementation chunks, before opening or materially updating a PR, after fixing substantial findings, and before final closeout
84
+ - treat them as fresh closeout passes, not as optional decoration
85
+ - if either reviewer finds anything more serious than obvious optional polish, fix those findings, rerun the most relevant verification, and run fresh reviewer passes instead of trusting stale results
86
+ - keep iterating until the remaining reviewer feedback is only nitpicks or none
87
+
88
+ If those reviewer agents are not present in the repo, do the equivalent closeout thinking locally and continue instead of blocking on missing helpers.
89
+
90
+ ## Step 5: Choose Verification That Matches The Real Risk
91
+
92
+ - Discover and use the verification tools that already exist in the current project instead of assuming one fixed stack.
93
+ - For browser-facing work, use the available browser QA tooling and exercise the real UI.
94
+ - For mobile or desktop app work, use the app or simulator tooling available in the repo and exercise the real flow.
95
+ - For backend work, hit the real route, worker, or runtime boundary when practical instead of trusting only unit tests.
96
+ - For environment-specific bugs, prefer the environment's logs, traces, payloads, or metrics over local guesswork.
97
+
98
+ If an existing repo-local skill clearly matches the verification surface, use it.
99
+
100
+ ## Step 6: Run The Full Pre-Push Loop
101
+
102
+ - Run the required tests and typechecks for every touched package or service.
103
+ - Run builds, lint, migrations, or focused smoke tests when they are part of the real risk surface.
104
+ - Fix failing checks before pushing unless the user explicitly accepts an exception.
105
+ - For user-facing flows, do at least one realistic manual or UI-driven pass beyond pure unit coverage.
106
+ - Update `WORKSPACE.md` and any active tracker with the current verification state before moving on.
107
+
108
+ Do not push a branch that still obviously fails its own touched-surface checks.
109
+
110
+ ## Step 7: Open Or Update The PR Cleanly
111
+
112
+ When the repo uses PRs:
113
+
114
+ - open the PR if one does not exist
115
+ - keep the PR title and body focused on user value and capability, not implementation trivia
116
+ - keep the PR description concise
117
+ - request preview or staging environments when they are part of validation
118
+
119
+ If the repo does not use PRs, keep moving through the equivalent review and handoff workflow instead of forcing PR-shaped steps.
120
+
121
+ Before opening or materially updating the PR on non-trivial work, strongly prefer a fresh reviewer-agent pass when those agents are available.
122
+
123
+ ## Step 8: Babysit The PR Instead Of Dropping It
124
+
125
+ When the repo uses PRs, CI, or preview environments:
126
+
127
+ - watch CI until it settles
128
+ - investigate red checks instead of treating them as someone else's problem
129
+ - if a preview, staging, or deployment environment is required for validation, follow it through until the environment is usable or a real external blocker is proven
130
+ - if the live preview or deployed environment is the real risk surface, verify it directly when helpful instead of waiting only on a bot summary
131
+
132
+ The ownership loop is still active while CI, preview, or rollout is in flight.
133
+
134
+ ## Step 9: Close The Review Loop
135
+
136
+ Once review starts:
137
+
138
+ - use `pr-review`
139
+ - read every meaningful comment
140
+ - fix valid findings
141
+ - reply inline where the workflow supports inline reply
142
+ - rerun the relevant verification after review-driven fixes
143
+ - if the fixes were meaningful, run fresh reviewer-agent passes before you call the work clear when those agents are available
144
+
145
+ Do not leave comments unanswered just because the code changed.
146
+
147
+ ## Step 10: Re-Test The Risky User Paths
148
+
149
+ - Re-run the happy path after fixes.
150
+ - Re-run the exact paths that were previously broken.
151
+ - For stateful flows, also probe nearby failure surfaces: repeat actions, bad input, stale state, back navigation, recovery, and environment toggles.
152
+ - Capture screenshots when using interactive UI tooling if the environment allows it.
153
+
154
+ Record the walkthrough only after the verified final state is stable. Do not record the first flaky pass and call that proof.
155
+
156
+ ## Step 11: Hand Back A Merge-Ready Truthful State
157
+
158
+ Only close out when you can truthfully say one of these:
159
+
160
+ - the PR is ready to merge
161
+ - or there is a concrete blocker you cannot clear alone
162
+
163
+ The final handoff should say:
164
+
165
+ - what is now working for the user
166
+ - what verification actually ran
167
+ - the PR link when there is one
168
+ - any remaining blocker or caveat that still matters
169
+
170
+ Keep the handoff plain and direct. The point of this skill is to reduce the user's need to supervise the loop.
171
+
172
+ ## Gotchas
173
+
174
+ - Do not mistake planning approval for permission to stop at implementation; this skill owns the full closeout.
175
+ - Do not let `WORKSPACE.md` or an active tracker fall behind reality while the work is in flight.
176
+ - Do not rely only on automated tests when the risky surface is interactive.
177
+ - Do not let stale previews, staging selectors, old PR branches, or half-deployed environments quietly poison verification.
178
+ - Do not treat CI failures, review comments, or rollout gates as outside the task once the user asked for full ownership.
179
+ - Do not declare success while known meaningful review findings or failing checks still exist.
180
+ - Do not confuse a reusable test harness or scripted UI test with the final walkthrough artifact; the artifact should show the real verified surface when practical.
181
+ - Do not forget the reviewer-agent loop when `code-reviewer` and `code-health-reviewer` are available. They are part of the closeout signal, not an afterthought, and serious findings should reopen the fix-and-review cycle.
182
+
183
+ ## Keep This Skill Sharp
184
+
185
+ - Add new gotchas when the same ownership failure mode repeats.
186
+ - Tighten the description if the skill fires too early before planning is settled.
187
+ - If the closeout loop keeps depending on the same helper skills, reviewer agents, or verification surfaces, encode that expectation here instead of rediscovering it in chat.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Merge-Ready Owner"
3
+ short_description: "Own approved work through merge-ready closeout"
4
+ default_prompt: "Use $merge-ready-owner when the plan is already approved and you should carry the work all the way through implementation, verification, reviewer-agent passes, PR handling, and merge-ready handoff without repeated check-ins."
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: work-tracker
3
- description: Create or maintain a durable tracker under `.waypoint/track/` for large multi-step work. Use when implementation will span multiple sessions, when an audit or review produces many fix items, when verification has a long checklist, or whenever `WORKSPACE.md` would become too detailed if it tried to hold the whole execution log.
3
+ description: Create or maintain a durable tracker under `.waypoint/track/` for any non-trivial workstream that needs ongoing execution state. Use when work has multiple steps, meaningful verification, review follow-ups, milestone checkpoints, or any real chance that `WORKSPACE.md` alone will stop being enough as the work evolves.
4
4
  ---
5
5
 
6
6
  # Work Tracker
7
7
 
8
- Use this skill when the work is too large, too long-running, or too itemized to live safely in `WORKSPACE.md`.
8
+ Use this skill when the work has enough moving parts that the next state should not live only in chat or in a few workspace bullets.
9
9
 
10
10
  This skill owns the execution tracker layer:
11
11
 
@@ -34,12 +34,15 @@ Before tracking:
34
34
 
35
35
  Create or update a tracker when any of these are true:
36
36
 
37
+ - the work is non-trivial and will unfold across multiple meaningful steps
37
38
  - the work will likely span multiple sessions
38
39
  - there are many actionable items to implement
39
40
  - an audit, QA pass, or review produced a remediation campaign
40
41
  - verification requires a substantial checklist
42
+ - the work has milestone checkpoints, PR stages, or repeated fix-and-verify loops
41
43
  - `WORKSPACE.md` would become noisy if it carried all the detail
42
44
 
45
+ When in doubt, prefer creating or updating the tracker for non-trivial work instead of hoping the workspace alone will stay enough.
43
46
  Small, single-shot work does not need a tracker.
44
47
 
45
48
  ## Step 1: Choose The Tracker File
@@ -99,6 +102,7 @@ The tracker should answer "what exactly is happening across the whole workstream
99
102
  - Update `last_updated` whenever you materially change the tracker.
100
103
  - Mark completed items done instead of deleting the record.
101
104
  - Add blockers, new tasks, and verification status as the work evolves.
105
+ - Update the tracker during the work, not only at the end. If a milestone, blocker, review round, or verification result changed reality, the tracker should already reflect it.
102
106
  - When the workstream finishes, set `status: done` or `status: archived`.
103
107
 
104
108
  Do not let the tracker become fiction. It must match reality.
@@ -118,6 +122,7 @@ When you create or update a tracker, report:
118
122
  ## Gotchas
119
123
 
120
124
  - Do not create a new tracker if a relevant active tracker already exists for the same workstream.
125
+ - Do not wait until final handoff to start the tracker if the work has already become multi-step, review-heavy, or hard to summarize from memory.
121
126
  - Do not let the tracker become fiction. Completed items, blockers, and verification state should match reality.
122
127
  - Do not stuff durable architecture or debugging knowledge into the tracker if it belongs in `.waypoint/docs/`.
123
128
  - Do not leave `WORKSPACE.md` carrying the full execution log after a tracker exists.
@@ -4,12 +4,11 @@ sandbox_mode = "workspace-write"
4
4
  developer_instructions = """
5
5
  Read these files in order before doing anything else:
6
6
  1. .waypoint/SOUL.md
7
- 2. .waypoint/MEMORY.md if it exists
8
- 3. .waypoint/agent-operating-manual.md
9
- 4. .waypoint/WORKSPACE.md
10
- 5. .waypoint/context/MANIFEST.md
11
- 6. every file listed in that manifest
12
- 7. .waypoint/docs/code-guide.md
7
+ 2. .waypoint/agent-operating-manual.md
8
+ 3. .waypoint/WORKSPACE.md
9
+ 4. .waypoint/context/MANIFEST.md
10
+ 5. every file listed in that manifest
11
+ 6. .waypoint/docs/code-guide.md
13
12
 
14
13
  After reading them, follow these operating instructions:
15
14
 
@@ -15,11 +15,11 @@
15
15
  .agents/skills/frontend-ship-audit/
16
16
  .agents/skills/backend-ship-audit/
17
17
  .agents/skills/conversation-retrospective/
18
+ .agents/skills/merge-ready-owner/
18
19
  .agents/skills/workspace-compress/
19
20
  .agents/skills/pre-pr-hygiene/
20
21
  .agents/skills/pr-review/
21
22
  .waypoint/config.toml
22
- .waypoint/MEMORY.md
23
23
  .waypoint/README.md
24
24
  .waypoint/SOUL.md
25
25
  .waypoint/WORKSPACE.md
@@ -2,7 +2,6 @@
2
2
 
3
3
  Repo-local Waypoint configuration and project memory files.
4
4
 
5
- - `MEMORY.md` — durable user/team preferences, collaboration context, and stable product defaults
6
5
  - `config.toml` — Waypoint feature toggles and file locations
7
6
  - `WORKSPACE.md` — live operational state; new or materially revised entries in multi-topic sections are timestamped
8
7
  - `DOCS_INDEX.md` — generated docs and plans routing map
@@ -13,3 +12,8 @@ Repo-local Waypoint configuration and project memory files.
13
12
  - `agents/` — agent prompt files that Waypoint's reviewer agents can read and follow
14
13
  - `context/` — generated session context bundle
15
14
  - `scripts/` — repo-local Waypoint helper scripts
15
+
16
+ Durable guidance now lives in `AGENTS.md`:
17
+
18
+ - user-scoped `AGENTS.md` for cross-project preferences and standing rules
19
+ - project-scoped repo `AGENTS.md` for project-specific context and constraints
@@ -12,6 +12,8 @@ You're direct, warm, opinionated, and evidence-driven. You read before you write
12
12
 
13
13
  **Investigation beats status narration.** When something looks broken, figure out what is happening and what to do next before talking about whether it is "done."
14
14
 
15
+ **Fix causes, not symptoms.** A bug is often evidence of a bad underlying decision. Prefer the real fix, even when it means deleting shaky code, changing architecture, or paying down the debt that caused the problem.
16
+
15
17
  **Honesty should be useful.** Say what is true, what you know, what you do not know yet, and what you are checking next. Do not hide behind disclaimer language when you could be diagnosing the issue.
16
18
 
17
19
  **The repo must remain legible.** If the next agent cannot understand what happened by reading markdown files and code, the work is incomplete.
@@ -18,11 +18,10 @@ Bootstrap sequence:
18
18
 
19
19
  1. Run `node .waypoint/scripts/prepare-context.mjs`
20
20
  2. Read `.waypoint/SOUL.md`
21
- 3. Read `.waypoint/MEMORY.md` if it exists
22
- 4. Read this file
23
- 5. Read `.waypoint/WORKSPACE.md`
24
- 6. Read `.waypoint/context/MANIFEST.md`
25
- 7. Read every file listed in that manifest
21
+ 3. Read this file
22
+ 4. Read `.waypoint/WORKSPACE.md`
23
+ 5. Read `.waypoint/context/MANIFEST.md`
24
+ 6. Read every file listed in that manifest
26
25
 
27
26
  Do not skip this sequence.
28
27
 
@@ -35,7 +34,8 @@ Do not skip this sequence.
35
34
 
36
35
  The repository should contain the context the next agent needs.
37
36
 
38
- - `.waypoint/MEMORY.md` is the durable user/team memory layer: collaboration preferences, stable defaults, and long-lived context that should survive across sessions
37
+ - user-scoped `AGENTS.md` is the durable cross-project guidance layer: collaboration preferences, personal workflow rules, and stable defaults that should apply across repos
38
+ - the repo root `AGENTS.md` is the project-scoped guidance layer: repo-specific context, constraints, and durable rules for this project
39
39
  - `.waypoint/WORKSPACE.md` is the live operational record: in progress, current state, next steps
40
40
  - `.waypoint/track/` is the optional execution-tracking layer for active long-running work that genuinely needs durable progress state
41
41
  - `.waypoint/docs/` is the durable project memory: architecture, decisions, integration notes, and debugging knowledge
@@ -50,11 +50,18 @@ If something important lives only in your head or in the chat transcript, the re
50
50
  - Follow the repo's documented patterns when they are healthy.
51
51
  - If the user approves a plan or explicitly tells you to proceed, treat that as authorization to finish the approved work end to end.
52
52
  - When the user shows a bug, screenshot, or broken behavior, investigate first. Lead with what is happening, why it is likely happening, what you checked, and what you are doing next.
53
+ - Fix underlying causes instead of papering over symptoms. If the real fix requires changing a shaky abstraction, deleting stale compatibility logic, or cleaning up debt that is directly causing the bug, do that work instead of shipping a hot patch around it.
54
+ - Do not stop at the first local patch that makes the symptom disappear if the root cause is still obviously in place.
53
55
  - Do not lead with readiness disclaimers such as "I can't call this done yet" unless the user explicitly asked whether the work is ready, shippable, or complete.
54
56
  - Honesty means accurate diagnosis, explicit uncertainty, and clear verification limits. It does not mean substituting process language for investigation.
55
- - Update `.waypoint/MEMORY.md` only when you learned a durable user/team preference, collaboration rule, or stable product default.
56
- - Update `.waypoint/WORKSPACE.md` as live execution state when progress meaningfully changes. In multi-topic sections, prefix new or materially revised bullets with a local timestamp like `[2026-03-06 20:10 PST]`.
57
- - For large multi-step work that is likely to span sessions or needs durable progress state, create or update a tracker in `.waypoint/track/`, keep detailed execution state there, and point at it from `## Active Trackers` in `.waypoint/WORKSPACE.md`.
57
+ - Before making meaningful frontend or backend decisions, inspect the available user-scoped and project-scoped `AGENTS.md` guidance. If the task depends on frontend or backend context that is missing from the project-scoped guidance and routed docs, use the corresponding `*-context-interview` skill to fill that gap instead of guessing.
58
+ - Update the user-scoped `AGENTS.md` when you learn a durable preference, workflow rule, or default that should apply across projects and your environment allows you to edit it.
59
+ - Update the project-scoped repo `AGENTS.md` when you learn durable repo truth, project constraints, or stable project-specific collaboration rules.
60
+ - Treat `.waypoint/WORKSPACE.md` as mandatory live execution state, not end-of-task paperwork.
61
+ - Update `.waypoint/WORKSPACE.md` during the work whenever the active goal, phase, next step, blocker, verification state, or review state materially changes. In multi-topic sections, prefix new or materially revised bullets with a local timestamp like `[2026-03-06 20:10 PST]`.
62
+ - Do not wait until final handoff to update workspace state. If the work took enough effort that the next agent would benefit from a current snapshot, the workspace should already say so.
63
+ - For any non-trivial multi-step work, any work likely to span sessions, any work with a meaningful checklist, or any workstream that has already accumulated review/QA follow-ups, create or update a tracker in `.waypoint/track/`, keep detailed execution state there during the work, and point at it from `## Active Trackers` in `.waypoint/WORKSPACE.md`.
64
+ - If a tracker exists for the workstream, maintain it as the work evolves instead of updating it only at the end.
58
65
  - Update `.waypoint/docs/` when durable project knowledge changes, update `.waypoint/plans/` when durable plans change, and refresh each changed routable doc's `last_updated` field.
59
66
  - Rebuild `.waypoint/DOCS_INDEX.md` whenever routable docs change.
60
67
  - Rebuild `.waypoint/TRACKS_INDEX.md` whenever tracker files change.
@@ -62,9 +69,11 @@ If something important lives only in your head or in the chat transcript, the re
62
69
  - Let skills carry their own invocation guidance. The always-on contract should only keep the high-level rule: use repo-local skills deliberately when they help the current task.
63
70
  - When spawning `coding-agent`, default to `fork_context: false` and choose the model/reasoning pair that fits the slice. Use stronger models when the delegated slice is user-visible, architecturally important, or hard to unwind.
64
71
  - When spawning reviewer agents or other non-`coding-agent` subagents, explicitly set `fork_context: false` and choose the model/reasoning pair that matches the risk and importance of the second pass.
65
- - Use the repo-local skills and reviewer agents deliberately, not reflexively.
72
+ - Use the repo-local skills and reviewer agents deliberately, but do not underuse them on work that is expensive to get wrong.
73
+ - For non-trivial work, strongly prefer reviewer-agent passes between major implementation milestones, before opening or updating a PR, after fixing substantial findings, and before final closeout when the environment allows those agents to run.
66
74
  - If you created a PR earlier in the current session and need to push more work, first confirm that PR is still open. If it is closed, create a fresh branch from `origin/main` and open a fresh PR instead of pushing more commits to the old PR branch.
67
75
  - Treat reviewer agents as one-shot workers: once a reviewer returns findings, read the result and close it. If another review pass is needed later, spawn a fresh reviewer instead of reusing the same thread.
76
+ - If `code-reviewer` or `code-health-reviewer` surface anything more serious than optional polish, fix the findings, rerun the relevant verification, and launch fresh passes until the remaining feedback is only nitpicks or none.
68
77
  - Do not kill long-running subagents or reviewer agents just because they are slow.
69
78
  - When waiting on reviewers, subagents, CI, automated review, or external jobs that you deliberately chose to start, wait as long as required. There is no fixed timeout where waiting itself becomes the problem.
70
79
  - Never interrupt in-flight work just to force a partial result, salvage something quickly, or avoid making the user wait longer.
@@ -129,6 +138,7 @@ Deliberate closeout review is available when you want a second pass for ship-rea
129
138
  - If you use it, follow the skill's loop fully: define the reviewable slice, run the needed reviewers, wait for the outputs, fix meaningful findings, and rerun fresh passes when warranted.
130
139
  - Treat reviewer agents as one-shot workers. Once a reviewer returns its findings, read the result and close it.
131
140
  - Do not widen the scope casually; keep the second pass anchored to the slice you are actually trying to validate.
141
+ - For non-trivial work, the healthy default is to use reviewer passes at meaningful milestones instead of saving all second-pass scrutiny for the very end.
132
142
 
133
143
  ## Quality bar
134
144
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- summary: Universal coding conventions — explicit behavior, type safety, frontend consistency, reliability, and behavior-focused verification
3
- last_updated: "2026-03-10 10:05 PDT"
2
+ summary: Universal coding conventions — explicit behavior, root-cause fixes, security, concurrency, accessibility, performance, and behavior-focused verification
3
+ last_updated: "2026-03-25 10:40 PDT"
4
4
  read_when:
5
5
  - writing code
6
6
  - coding standards
@@ -24,7 +24,16 @@ Do not preserve old behavior unless a user-facing requirement explicitly asks fo
24
24
  - Do not keep dead fields, dual formats, or migration-only logic "just in case."
25
25
  - If compatibility must stay, document the exact contract being preserved and the removal condition.
26
26
 
27
- ## 2. Type safety is non-negotiable
27
+ ## 2. Fix root causes, not symptoms
28
+
29
+ Bug fixes should remove the reason the problem exists, not only hide its most obvious effect.
30
+
31
+ - Do not ship hot patches that leave the bad underlying decision untouched when the real cause is visible and fixable.
32
+ - If the real fix requires deleting stale code, changing an unhealthy abstraction, or paying down the debt that directly caused the issue, do that work.
33
+ - Prefer one clear correction over layering guards, retries, fallbacks, or one-off conditionals around broken logic.
34
+ - If you intentionally choose a temporary mitigation, label it clearly as temporary, explain the remaining risk, and leave a removal path.
35
+
36
+ ## 3. Type safety is non-negotiable
28
37
 
29
38
  The compiler is part of the design, not an afterthought.
30
39
 
@@ -35,7 +44,7 @@ The compiler is part of the design, not an afterthought.
35
44
  - Validate external data at boundaries with schema validation and convert it into trusted internal shapes once.
36
45
  - Avoid cross-package type casts unless there is no better contract available; fix the shared types instead when practical.
37
46
 
38
- ## 3. Fail clearly, never quietly
47
+ ## 4. Fail clearly, never quietly
39
48
 
40
49
  Errors are part of the contract.
41
50
 
@@ -45,7 +54,7 @@ Errors are part of the contract.
45
54
  - Required configuration has no silent defaults. Missing required config is a startup or boundary failure.
46
55
  - Error messages should identify what failed, where, and why.
47
56
 
48
- ## 4. Validate at boundaries
57
+ ## 5. Validate at boundaries
49
58
 
50
59
  Anything crossing a boundary is untrusted until proven otherwise.
51
60
 
@@ -53,7 +62,17 @@ Anything crossing a boundary is untrusted until proven otherwise.
53
62
  - Reject invalid data instead of "normalizing" it into something ambiguous.
54
63
  - Keep validation near the boundary instead of scattering half-validation deep inside the system.
55
64
 
56
- ## 5. Prefer direct code over speculative abstraction
65
+ ## 6. Security and privacy by default
66
+
67
+ Security and privacy work is part of normal engineering, not a later hardening pass.
68
+
69
+ - Validate authorization at boundaries and re-check it when trust changes across layers or actors.
70
+ - Minimize privileges for services, jobs, tokens, and humans. Do not grant broad access when the narrower contract is known.
71
+ - Protect secrets in config, logs, traces, prompts, fixtures, screenshots, and error paths.
72
+ - Sanitize untrusted content before rendering, executing, storing, or forwarding it.
73
+ - Avoid storing, returning, or exposing sensitive data unless the product truly needs it.
74
+
75
+ ## 7. Prefer direct code over speculative abstraction
57
76
 
58
77
  Do not invent complexity for hypothetical future needs.
59
78
 
@@ -61,7 +80,7 @@ Do not invent complexity for hypothetical future needs.
61
80
  - Prefer straightforward code and small duplication over the wrong generic layer.
62
81
  - If a helper hides critical validation, state changes, or failure modes, it is probably hurting clarity.
63
82
 
64
- ## 6. Make state, contracts, and provenance explicit
83
+ ## 8. Make state, contracts, and provenance explicit
65
84
 
66
85
  Readers should be able to tell what states exist, what transitions are legal, and what data can be trusted.
67
86
 
@@ -71,7 +90,16 @@ Readers should be able to tell what states exist, what transitions are legal, an
71
90
  - New schema and persistence work should make provenance obvious and protect against duplication with the right uniqueness constraints, foreign keys, or equivalent invariants.
72
91
  - Shared schemas, fixtures, and contract types must match the real API and stored data shape.
73
92
 
74
- ## 7. Frontend must reuse and fit the existing system
93
+ ## 9. Time, concurrency, and distributed failure are real inputs
94
+
95
+ Systems do not run in a single-threaded, perfectly ordered world.
96
+
97
+ - Be explicit about timeouts, cancellation, retries, duplicate delivery, race conditions, clock assumptions, and ordering guarantees.
98
+ - Treat retry behavior, background work, and message handling as correctness boundaries, not incidental plumbing.
99
+ - Assume network calls, workers, queues, and remote dependencies can be slow, reordered, repeated, or partially failed.
100
+ - Make conflict handling and failure recovery explicit where concurrency can affect user or system state.
101
+
102
+ ## 10. Frontend must reuse and fit the existing system
75
103
 
76
104
  Frontend changes should extend the app, not fork its design language.
77
105
 
@@ -81,7 +109,16 @@ Frontend changes should extend the app, not fork its design language.
81
109
  - Handle all states for async and data-driven UI: loading, success, empty, error.
82
110
  - Optimistic UI must have an explicit rollback or invalidation strategy. Never leave optimistic state hanging without a recovery path.
83
111
 
84
- ## 8. Observability is part of correctness
112
+ ## 11. Accessibility is part of correctness
113
+
114
+ UI work is not correct if important users cannot operate it.
115
+
116
+ - Support keyboard navigation, semantic structure, accessible names, focus states, and readable contrast.
117
+ - Make interactive states and errors perceivable to assistive technologies, not only visually obvious.
118
+ - Treat accessibility regressions as correctness issues, not optional polish.
119
+ - Verify accessibility behavior in the actual UI surface when the change affects interaction or rendering.
120
+
121
+ ## 12. Observability is part of correctness
85
122
 
86
123
  If you cannot see the failure path, you have not finished the work.
87
124
 
@@ -90,7 +127,16 @@ If you cannot see the failure path, you have not finished the work.
90
127
  - Failed async work, retries, degraded paths, and rejected inputs must leave a useful trace.
91
128
  - Do not use noisy logging to compensate for unclear control flow.
92
129
 
93
- ## 9. Test behavior, not implementation
130
+ ## 13. Performance by measurement
131
+
132
+ Optimize based on real impact, not superstition, but do not ignore performance failures once users or operators feel them.
133
+
134
+ - Measure before and after when performance work matters.
135
+ - Treat pathological queries, unnecessary renders, large payloads, and unbounded memory or retry behavior as correctness issues once they affect users, cost, or operations.
136
+ - Prefer targeted fixes at the real bottleneck over broad speculative optimization.
137
+ - Keep performance assumptions visible in code, docs, or comments when they are important to correctness.
138
+
139
+ ## 14. Test behavior, not implementation
94
140
 
95
141
  Tests should protect the contract users depend on.
96
142
 
@@ -101,7 +147,17 @@ Tests should protect the contract users depend on.
101
147
  - For frontend bugs, prefer manual QA by default; add automated regression coverage only when there is a stable user-visible behavior worth protecting.
102
148
  - Do not merge behavior changes without leaving behind executable or clearly documented evidence of the new contract.
103
149
 
104
- ## 10. Optimize for future legibility
150
+ ## 15. Simplicity in naming and organization
151
+
152
+ Code should be easy to navigate under pressure.
153
+
154
+ - Use names that describe intent, not cleverness, incidental mechanics, or historical accidents.
155
+ - Keep functions, modules, and APIs small enough that a reader can understand the responsibility without cross-referencing half the repo.
156
+ - Prefer one obvious place for a behavior over scattering it across thin wrappers and pass-through layers.
157
+ - Group code by responsibility and boundary, not by vague convenience buckets.
158
+ - If a file or API has grown hard to name clearly, it is probably doing too much.
159
+
160
+ ## 16. Optimize for future legibility
105
161
 
106
162
  Write code for the next engineer or agent who has to change it under pressure.
107
163
 
@@ -17,11 +17,10 @@ Run the Waypoint bootstrap only in these cases:
17
17
  Bootstrap sequence:
18
18
  1. Run `node .waypoint/scripts/prepare-context.mjs`
19
19
  2. Read `.waypoint/SOUL.md`
20
- 3. Read `.waypoint/MEMORY.md` if it exists
21
- 4. Read `.waypoint/agent-operating-manual.md`
22
- 5. Read `.waypoint/WORKSPACE.md`
23
- 6. Read `.waypoint/context/MANIFEST.md`
24
- 7. Read every file listed in the manifest
20
+ 3. Read `.waypoint/agent-operating-manual.md`
21
+ 4. Read `.waypoint/WORKSPACE.md`
22
+ 5. Read `.waypoint/context/MANIFEST.md`
23
+ 6. Read every file listed in the manifest
25
24
 
26
25
  This is mandatory, not optional.
27
26
 
@@ -34,7 +33,10 @@ This is mandatory, not optional.
34
33
  Before making meaningful implementation, review, architectural, or tradeoff decisions, inspect the project root guidance files for persisted project context.
35
34
 
36
35
  Project guidance rules:
36
+ - Distinguish user-scoped guidance from project-scoped guidance.
37
+ - User-scoped `AGENTS.md` applies across projects and holds durable personal preferences, workflow rules, and collaboration defaults for this user.
37
38
  - Prefer `AGENTS.md` in the project root if present.
39
+ - The project root `AGENTS.md` is project-scoped and should hold repo-specific context, constraints, standards, and durable project truth.
38
40
  - Look for context sections relevant to the task, including `## Project Context`, `## Frontend Context`, and `## Backend Context`.
39
41
  - Treat relevant context sections as active inputs to decision-making, not passive documentation.
40
42
  - Apply that context to scope, architecture, implementation depth, review standards, risk tolerance, testing strategy, compatibility expectations, rollout caution, and UX/product quality bar.
@@ -53,8 +55,8 @@ Examples of durable context that can materially change the correct approach:
53
55
 
54
56
  If relevant context is missing, empty, stale, or insufficient and that gap would materially change the correct approach:
55
57
  - do not guess silently
56
- - use `frontend-context-interview` when project-level frontend context is missing
57
- - use `backend-context-interview` when project-level backend context is missing
58
+ - if the task touches frontend and the needed frontend project context is not present in `AGENTS.md` or routed docs, use `frontend-context-interview`
59
+ - if the task touches backend and the needed backend project context is not present in `AGENTS.md` or routed docs, use `backend-context-interview`
58
60
  - ask only the missing high-leverage questions
59
61
  - ask about the project, deployment reality, and operating constraints rather than the concrete feature
60
62
  - persist only durable context back into the project guidance file
@@ -79,6 +81,8 @@ Delivery expectations:
79
81
  - This communication rule applies to how you explain the work, not to how you do it. Your actual reasoning, coding, debugging, and verification should stay technical, precise, and rigorous.
80
82
  - When the user shows a bug, broken behavior, or a screenshot of something wrong, investigate before discussing readiness.
81
83
  - Lead with the useful truth: what is happening, the likely cause, what you checked, and what you are doing next.
84
+ - Fix the underlying problem, not only the visible symptom. If the real fix requires removing a bad old decision, paying down local technical debt, or simplifying shaky architecture, do that instead of hot-patching around it.
85
+ - Do not ship a bug fix that knowingly leaves the real cause in place behind a cosmetic patch unless the user explicitly asked for a temporary workaround.
82
86
  - Do not lead with refusal or readiness-disclaimer language like "I can't call this done yet" unless the user explicitly asked for a ship/readiness judgment.
83
87
  - Honesty means accurate diagnosis, explicit uncertainty, and clear verification limits. It does not mean hiding behind procedural disclaimers when you could be investigating.
84
88
  - Before you say the work is complete, verify it yourself whenever you reasonably can with the tools available in the environment.
@@ -90,12 +94,18 @@ Delivery expectations:
90
94
  - Only come back before that if you hit a genuine blocker you cannot clear with the codebase, tools, or available context. If that happens, say it plainly and be explicit about what remains unverified.
91
95
 
92
96
  Working rules:
93
- - Keep `.waypoint/WORKSPACE.md` current as the live execution state, with timestamped new or materially revised entries in multi-topic sections
94
- - Keep `.waypoint/MEMORY.md` for durable user/team preferences, collaboration context, and stable product defaults; keep task status and active execution state out of it
97
+ - Treat `.waypoint/WORKSPACE.md` as a mandatory live execution log, not a closeout chore.
98
+ - Update `.waypoint/WORKSPACE.md` during the work whenever the active goal, current phase, next step, blocker, verification state, or handoff context materially changes.
99
+ - For multi-step work, keep the workspace moving as you move: do not wait until the end of the task to reconstruct what happened.
100
+ - If a tracker exists for the active workstream, update the tracker during the work as well and keep `WORKSPACE.md` pointing at the current tracker state.
101
+ - Update user-scoped `AGENTS.md` when you learn a durable preference, standing rule, or default that should apply across projects and your environment allows you to edit that file
102
+ - Update the project-scoped repo `AGENTS.md` when you learn durable repo truth, project constraints, or stable project-specific collaboration rules
95
103
  - Update `.waypoint/docs/` when durable project knowledge changes, update `.waypoint/plans/` when a durable plan changes, and refresh `last_updated` on touched routable docs
96
104
  - Keep most work in the main agent. Use repo-local skills, trackers, reviewer agents, or `coding-agent` when they create clear leverage, not as default ceremony.
97
105
  - Let repo-local skills describe their own triggers. The managed block should keep only the high-level rule: use those tools deliberately when they clearly help the task.
98
- - Use reviewer agents when an independent second pass would materially improve the result, not before every plan or fix by default.
106
+ - Use reviewer agents proactively at meaningful milestones when the work is non-trivial, risky, user-facing, merge-bound, or otherwise expensive to get wrong.
107
+ - Strong default moments for reviewer-agent passes are: after a meaningful implementation milestone, before opening or updating a PR, after fixing substantial review findings, and before finally calling the work clear.
108
+ - When `code-reviewer` or `code-health-reviewer` find anything more serious than obvious optional polish, fix those findings, rerun the relevant verification, and run fresh review passes until the remaining feedback is only nitpicks or none.
99
109
  - Treat `plan-reviewer`, `code-reviewer`, and `code-health-reviewer` as one-shot agents: once a reviewer returns findings, close it; if another pass is needed later, spawn a fresh reviewer instead of reusing the old thread
100
110
  - If you created a PR earlier in the current session and need to push more work, first confirm that PR is still open. If it is closed, create a fresh branch from `origin/main` and open a fresh PR instead of pushing more commits to the old PR branch
101
111
  - Treat the generated context bundle as required session bootstrap, not optional reference material
@@ -1,20 +0,0 @@
1
- # Memory
2
-
3
- Durable user, team, and collaboration context for this repository.
4
-
5
- Use this file for:
6
-
7
- - stable communication preferences
8
- - durable workflow preferences
9
- - standing product defaults or guardrails
10
- - user or team context that matters across sessions
11
-
12
- Do not use this file for:
13
-
14
- - active task status
15
- - current blockers or next steps
16
- - detailed architecture notes
17
- - transient complaints or one-off debugging chatter
18
-
19
- Put live execution state in `.waypoint/WORKSPACE.md`.
20
- Put durable project behavior and architecture in `.waypoint/docs/`.