waypoint-codex 0.2.0 → 0.3.1
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 +5 -2
- package/dist/src/core.js +4 -0
- package/package.json +1 -1
- package/templates/.agents/skills/e2e-verify/SKILL.md +63 -0
- package/templates/.agents/skills/e2e-verify/agents/openai.yaml +4 -0
- package/templates/.agents/skills/planning/SKILL.md +18 -7
- package/templates/.agents/skills/pr-review/SKILL.md +48 -0
- package/templates/.agents/skills/pr-review/agents/openai.yaml +4 -0
- package/templates/.agents/skills/pre-pr-hygiene/SKILL.md +61 -0
- package/templates/.agents/skills/pre-pr-hygiene/agents/openai.yaml +4 -0
- package/templates/.agents/skills/workspace-compress/SKILL.md +90 -0
- package/templates/.agents/skills/workspace-compress/agents/openai.yaml +4 -0
- package/templates/.codex/config.toml +1 -5
- package/templates/.waypoint/agent-operating-manual.md +5 -1
- package/templates/.waypoint/docs/code-guide.md +73 -56
- package/templates/managed-agents-block.md +3 -0
- package/templates/.codex/agents/docs-researcher.toml +0 -14
- package/templates/.waypoint/agents/docs-researcher.md +0 -73
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ It helps the next agent pick up your repo with full context by keeping the impor
|
|
|
8
8
|
- `.waypoint/WORKSPACE.md` for live state, with timestamped multi-topic entries
|
|
9
9
|
- `.waypoint/docs/` for durable project memory, with `summary`, `last_updated`, and `read_when` frontmatter on routable docs
|
|
10
10
|
- `.waypoint/DOCS_INDEX.md` for docs routing
|
|
11
|
-
- repo-local skills for planning and
|
|
11
|
+
- repo-local skills for planning, audits, verification, workspace compression, and review closure
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
|
@@ -59,6 +59,10 @@ repo/
|
|
|
59
59
|
- `error-audit`
|
|
60
60
|
- `observability-audit`
|
|
61
61
|
- `ux-states-audit`
|
|
62
|
+
- `workspace-compress`
|
|
63
|
+
- `pre-pr-hygiene`
|
|
64
|
+
- `pr-review`
|
|
65
|
+
- `e2e-verify`
|
|
62
66
|
|
|
63
67
|
## Optional reviewer roles
|
|
64
68
|
|
|
@@ -66,7 +70,6 @@ If you initialize with `--with-roles`, Waypoint scaffolds:
|
|
|
66
70
|
|
|
67
71
|
- `code-health-reviewer`
|
|
68
72
|
- `code-reviewer`
|
|
69
|
-
- `docs-researcher`
|
|
70
73
|
- `plan-reviewer`
|
|
71
74
|
|
|
72
75
|
The intended workflow is post-commit: after your own commit lands, run `code-reviewer` and `code-health-reviewer` in parallel in the background, then fix real findings before you call the work finished.
|
package/dist/src/core.js
CHANGED
|
@@ -453,6 +453,10 @@ export function doctorRepository(projectRoot) {
|
|
|
453
453
|
"error-audit",
|
|
454
454
|
"observability-audit",
|
|
455
455
|
"ux-states-audit",
|
|
456
|
+
"workspace-compress",
|
|
457
|
+
"pre-pr-hygiene",
|
|
458
|
+
"pr-review",
|
|
459
|
+
"e2e-verify",
|
|
456
460
|
]) {
|
|
457
461
|
const skillPath = path.join(projectRoot, ".agents/skills", skillName, "SKILL.md");
|
|
458
462
|
if (!existsSync(skillPath)) {
|
package/package.json
CHANGED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: e2e-verify
|
|
3
|
+
description: Perform manual end-to-end verification for a shipped feature or major change. Use when frontend and backend behavior must be verified together, when a feature needs a realistic walkthrough, or when the agent should manually exercise the flow, inspect logs and persisted state, document issues, fix them, and repeat until no meaningful end-to-end issues remain.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# E2E Verify
|
|
7
|
+
|
|
8
|
+
Use this skill when "it should work" is not enough and the flow needs to be proven end to end.
|
|
9
|
+
|
|
10
|
+
## Read First
|
|
11
|
+
|
|
12
|
+
Before verification:
|
|
13
|
+
|
|
14
|
+
1. Read `.waypoint/SOUL.md`
|
|
15
|
+
2. Read `.waypoint/agent-operating-manual.md`
|
|
16
|
+
3. Read `.waypoint/WORKSPACE.md`
|
|
17
|
+
4. Read `.waypoint/context/MANIFEST.md`
|
|
18
|
+
5. Read every file listed in that manifest
|
|
19
|
+
6. Read the routed docs that define the feature, flow, or contract being verified
|
|
20
|
+
|
|
21
|
+
## Step 1: Exercise The Real Flow
|
|
22
|
+
|
|
23
|
+
- For browser-facing paths, manually exercise the feature through the real UI.
|
|
24
|
+
- For backend-only or service flows, drive the real API or runtime path directly.
|
|
25
|
+
- Follow the feature from entry point to persistence to user-visible outcome.
|
|
26
|
+
|
|
27
|
+
## Step 2: Inspect End-To-End State
|
|
28
|
+
|
|
29
|
+
Check the surfaces that prove the system actually behaved correctly:
|
|
30
|
+
|
|
31
|
+
- UI state
|
|
32
|
+
- server responses
|
|
33
|
+
- logs
|
|
34
|
+
- background-job state if relevant
|
|
35
|
+
- database or persisted records when relevant
|
|
36
|
+
|
|
37
|
+
Do not stop at "the page looked okay."
|
|
38
|
+
|
|
39
|
+
## Step 3: Record And Fix Issues
|
|
40
|
+
|
|
41
|
+
- Document each meaningful issue you find.
|
|
42
|
+
- Fix the issue when the remediation is clear.
|
|
43
|
+
- Update docs or contracts if verification exposes stale assumptions.
|
|
44
|
+
|
|
45
|
+
## Step 4: Repeat Until Clean
|
|
46
|
+
|
|
47
|
+
Re-run the end-to-end flow after fixes.
|
|
48
|
+
|
|
49
|
+
The skill is complete only when:
|
|
50
|
+
|
|
51
|
+
- the intended flow works
|
|
52
|
+
- the persisted state is correct
|
|
53
|
+
- the logs tell a truthful story
|
|
54
|
+
- no meaningful issues remain
|
|
55
|
+
|
|
56
|
+
## Step 5: Report Verification Truthfully
|
|
57
|
+
|
|
58
|
+
Summarize:
|
|
59
|
+
|
|
60
|
+
- the flows exercised
|
|
61
|
+
- the state surfaces inspected
|
|
62
|
+
- the issues found and fixed
|
|
63
|
+
- any residual risks or unverified edges
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "E2E Verify"
|
|
3
|
+
short_description: "Manually verify a feature end to end"
|
|
4
|
+
default_prompt: "Use this skill for manual end-to-end verification of a feature or major change. Exercise the real flow, inspect UI plus logs and persisted state, document issues, fix them, and repeat until no meaningful end-to-end issues remain."
|
|
@@ -3,9 +3,10 @@ name: planning
|
|
|
3
3
|
description: >
|
|
4
4
|
Interview-driven planning methodology that produces implementation-ready plans.
|
|
5
5
|
Use for new features, refactoring, architecture changes, migrations, or any non-trivial
|
|
6
|
-
implementation work. Ask multiple rounds of clarifying questions
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
implementation work. Ask multiple rounds of clarifying questions about product behavior,
|
|
7
|
+
user expectations, edge cases, and architecture; explore the repo deeply before deciding;
|
|
8
|
+
and do not waste questions on implementation details that can be learned directly from the
|
|
9
|
+
code or routed docs.
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Planning
|
|
@@ -20,7 +21,7 @@ Before planning:
|
|
|
20
21
|
|
|
21
22
|
1. Read `.waypoint/SOUL.md`
|
|
22
23
|
2. Read `.waypoint/agent-operating-manual.md`
|
|
23
|
-
3. Read
|
|
24
|
+
3. Read `.waypoint/WORKSPACE.md`
|
|
24
25
|
4. Read `.waypoint/context/MANIFEST.md`
|
|
25
26
|
5. Read every file listed in the manifest
|
|
26
27
|
6. Read the routed docs relevant to the task
|
|
@@ -55,7 +56,7 @@ Keep looping until you can explain:
|
|
|
55
56
|
|
|
56
57
|
## Interviewing
|
|
57
58
|
|
|
58
|
-
**Interviewing is the most important part of planning.** You cannot build what you don't understand. Every unasked question is an assumption that will break during implementation.
|
|
59
|
+
**Interviewing is the most important part of planning.** You cannot build what you don't understand. Every unasked product, behavior, edge-case, or architecture question is an assumption that will break during implementation.
|
|
59
60
|
|
|
60
61
|
Interview iteratively: 2-4 questions -> answers -> deeper follow-ups -> repeat. Each round should go deeper.
|
|
61
62
|
|
|
@@ -63,6 +64,16 @@ Interview iteratively: 2-4 questions -> answers -> deeper follow-ups -> repeat.
|
|
|
63
64
|
- Feature or migration -> many rounds of questions
|
|
64
65
|
- Architectural work -> keep drilling until the constraints and tradeoffs are clear
|
|
65
66
|
|
|
67
|
+
Ask aggressively about:
|
|
68
|
+
|
|
69
|
+
- how the feature should behave
|
|
70
|
+
- who the users are
|
|
71
|
+
- which edge cases matter
|
|
72
|
+
- what tradeoffs are acceptable
|
|
73
|
+
- what architecture direction the user wants
|
|
74
|
+
|
|
75
|
+
Do **not** spend those questions on implementation facts that can be learned from reading the code, routed docs, or external docs already linked by the repo.
|
|
76
|
+
|
|
66
77
|
Push back when something seems off. Neutrality is not the goal; correctness is.
|
|
67
78
|
|
|
68
79
|
## Exploring the Codebase
|
|
@@ -111,10 +122,11 @@ Before presenting the plan, verify against real code:
|
|
|
111
122
|
- No pretending you verified something you didn't
|
|
112
123
|
|
|
113
124
|
If the change touches durable project behavior, include docs/workspace updates in the plan.
|
|
125
|
+
If the plan is meant to outlive the current chat, write or update a durable plan doc under `.waypoint/docs/` and make sure it is discoverable through the routed docs layer.
|
|
114
126
|
|
|
115
127
|
## External APIs
|
|
116
128
|
|
|
117
|
-
If an external API or library is relevant
|
|
129
|
+
If an external API or library is relevant, read the actual upstream docs before finalizing the plan. Prefer the repo's external-doc links or URL registry when one exists. Read the real source docs; do not copy vendor reference material into the repo unless the user explicitly wants a durable local note.
|
|
118
130
|
|
|
119
131
|
## Output
|
|
120
132
|
|
|
@@ -130,4 +142,3 @@ A good final plan usually includes:
|
|
|
130
142
|
## Quality Bar
|
|
131
143
|
|
|
132
144
|
If the plan would make the implementer ask "where does this hook in?" or "what exactly am I changing?", it is not done.
|
|
133
|
-
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-review
|
|
3
|
+
description: Triage and close the review loop on an open PR after automated or human review has started. Use when a PR has review comments pending, when automated reviewers are still running, or when you need to wait for review completion, answer every inline comment, fix meaningful issues, push follow-up commits, and keep repeating until no new meaningful review findings remain.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PR Review
|
|
7
|
+
|
|
8
|
+
Use this skill to drive the PR through review instead of treating review as a one-shot comment sweep.
|
|
9
|
+
|
|
10
|
+
## Step 1: Wait For Review To Settle
|
|
11
|
+
|
|
12
|
+
- Check the PR's current review and CI status.
|
|
13
|
+
- If automated review is still running, wait for it to finish instead of racing it.
|
|
14
|
+
- If comments are still arriving, do not prematurely declare the loop complete.
|
|
15
|
+
|
|
16
|
+
## Step 2: Read Every Review Comment
|
|
17
|
+
|
|
18
|
+
- Read all open review comments, especially inline comments.
|
|
19
|
+
- Group duplicates, but do not ignore any comment.
|
|
20
|
+
- Distinguish between meaningful issues, optional suggestions, and comments that should be explicitly declined.
|
|
21
|
+
|
|
22
|
+
## Step 3: Triage And Respond Inline
|
|
23
|
+
|
|
24
|
+
For every comment:
|
|
25
|
+
|
|
26
|
+
- fix it if it is correct and in scope
|
|
27
|
+
- explain clearly if you are declining it
|
|
28
|
+
- reply inline where the comment lives instead of posting a disconnected summary comment
|
|
29
|
+
|
|
30
|
+
Do not leave comments unanswered.
|
|
31
|
+
|
|
32
|
+
## Step 4: Push The Next Round
|
|
33
|
+
|
|
34
|
+
- Make the needed fixes.
|
|
35
|
+
- rerun the relevant verification
|
|
36
|
+
- push follow-up commit(s)
|
|
37
|
+
- return to the PR and continue the loop
|
|
38
|
+
|
|
39
|
+
Stay in the loop until no new meaningful issues remain.
|
|
40
|
+
|
|
41
|
+
## Step 5: Close With A Crisp State Summary
|
|
42
|
+
|
|
43
|
+
Summarize:
|
|
44
|
+
|
|
45
|
+
- what was fixed
|
|
46
|
+
- what was intentionally declined
|
|
47
|
+
- what verification ran
|
|
48
|
+
- whether the PR is clear or still waiting on reviewer response
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "PR Review"
|
|
3
|
+
short_description: "Close the review loop on an active PR"
|
|
4
|
+
default_prompt: "Use this skill when a PR has active review comments or automated review in progress. Wait for review to settle, triage every comment, reply inline, fix meaningful issues, push follow-up commits, and repeat until no new meaningful findings remain."
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pre-pr-hygiene
|
|
3
|
+
description: Run a broad final hygiene pass before pushing, before opening or updating a PR, or after a large implementation chunk when the diff is substantial and needs a deeper audit than per-commit review. Verify code-guide compliance, docs-to-behavior alignment, shared contract/schema drift, typing gaps, optimistic UI rollback or invalidation strategy, persistence correctness risks, and any other cross-cutting quality issues that would make the next review painful.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pre-PR Hygiene
|
|
7
|
+
|
|
8
|
+
Use this skill for the larger final audit before code leaves the machine.
|
|
9
|
+
|
|
10
|
+
## Read First
|
|
11
|
+
|
|
12
|
+
Before the hygiene pass:
|
|
13
|
+
|
|
14
|
+
1. Read `.waypoint/SOUL.md`
|
|
15
|
+
2. Read `.waypoint/agent-operating-manual.md`
|
|
16
|
+
3. Read `.waypoint/WORKSPACE.md`
|
|
17
|
+
4. Read `.waypoint/context/MANIFEST.md`
|
|
18
|
+
5. Read every file listed in that manifest
|
|
19
|
+
6. Read `.waypoint/docs/code-guide.md` and the routed docs relevant to the area being shipped
|
|
20
|
+
|
|
21
|
+
## Step 1: Audit The Whole Change Surface
|
|
22
|
+
|
|
23
|
+
Inspect the code and docs that are about to ship.
|
|
24
|
+
|
|
25
|
+
Look for:
|
|
26
|
+
|
|
27
|
+
- code-guide violations such as silent fallbacks, swallowed errors, weak boundary validation, unsafe typing, or stale compatibility layers
|
|
28
|
+
- stale docs, stale routes, or workspace notes that no longer match real behavior
|
|
29
|
+
- shared schema, fixture, or API-contract drift
|
|
30
|
+
- typing gaps such as avoidable `any`, weak narrowing, or unnecessary casts
|
|
31
|
+
- optimistic UI without rollback or invalidation
|
|
32
|
+
- persistence risks such as missing provenance, missing idempotency protection, weak uniqueness, or missing foreign-key style invariants
|
|
33
|
+
|
|
34
|
+
Skip checks that truly do not apply, but say that you skipped them.
|
|
35
|
+
|
|
36
|
+
## Step 2: Fix Or Stage Findings
|
|
37
|
+
|
|
38
|
+
- Fix meaningful issues directly when the right remediation is clear.
|
|
39
|
+
- Update `.waypoint/docs/` when shipped behavior or routes changed.
|
|
40
|
+
- If the live handoff has become bloated or stale, use `workspace-compress`.
|
|
41
|
+
|
|
42
|
+
Do not stop at reporting obvious fixable issues.
|
|
43
|
+
|
|
44
|
+
## Step 3: Verify Before Ship
|
|
45
|
+
|
|
46
|
+
Run the most relevant verification for the area:
|
|
47
|
+
|
|
48
|
+
- tests
|
|
49
|
+
- typecheck
|
|
50
|
+
- lint
|
|
51
|
+
- build
|
|
52
|
+
- targeted manual QA
|
|
53
|
+
|
|
54
|
+
## Step 4: Report The Gate Result
|
|
55
|
+
|
|
56
|
+
Summarize:
|
|
57
|
+
|
|
58
|
+
- what you checked
|
|
59
|
+
- what you fixed
|
|
60
|
+
- what verification ran
|
|
61
|
+
- what residual risks remain, if any
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Pre-PR Hygiene"
|
|
3
|
+
short_description: "Run the final cross-cutting ship audit"
|
|
4
|
+
default_prompt: "Use this skill before pushing or opening/updating a PR for substantial work to do a broader hygiene pass across code, docs, contracts, typing, UI rollback, persistence correctness, and code-guide compliance."
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workspace-compress
|
|
3
|
+
description: Compress and refresh the repository's live workspace handoff so `WORKSPACE.md` stays short, current, and useful to the next agent. Use after finishing a meaningful chunk of work, before stopping for the session, before asking for review, before opening or updating a PR, or whenever the workspace has started accumulating stale history, repeated status logs, or resolved context that should no longer stay in the live handoff. Keep the minimum current operational state, collapse old resolved entries, and move durable detail into existing routed docs instead of duplicating it in the workspace.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workspace Compress
|
|
7
|
+
|
|
8
|
+
Keep `WORKSPACE.md` as a live handoff, not a project diary.
|
|
9
|
+
|
|
10
|
+
This skill is for compression, not for erasing context. Preserve what the next agent needs in the first few minutes of a resume, and push durable detail into the docs layer that already exists in the repo.
|
|
11
|
+
|
|
12
|
+
## Read First
|
|
13
|
+
|
|
14
|
+
Before compressing:
|
|
15
|
+
|
|
16
|
+
1. Read `.waypoint/SOUL.md`
|
|
17
|
+
2. Read `.waypoint/agent-operating-manual.md`
|
|
18
|
+
3. Read `.waypoint/WORKSPACE.md`
|
|
19
|
+
4. Read `.waypoint/context/MANIFEST.md`
|
|
20
|
+
5. Read every file listed in that manifest
|
|
21
|
+
6. Read the routed docs relevant to the active workspace sections
|
|
22
|
+
|
|
23
|
+
## Step 1: Build Context From Routing, Not From Git Diff
|
|
24
|
+
|
|
25
|
+
This skill must work even in a dirty tree or an arbitrary session state.
|
|
26
|
+
|
|
27
|
+
- Read the workspace file in full.
|
|
28
|
+
- Read `.waypoint/DOCS_INDEX.md` and the workspace's obvious routing pointers.
|
|
29
|
+
- Read the project or domain docs directly linked from the active sections you may compress.
|
|
30
|
+
- If the workspace references a progress, status, architecture, or release doc, treat that as the durable home for details before removing anything from the live handoff.
|
|
31
|
+
|
|
32
|
+
Do not rely on `git diff` as the primary signal for what matters.
|
|
33
|
+
|
|
34
|
+
## Step 2: Apply The Handoff Test
|
|
35
|
+
|
|
36
|
+
Ask one question:
|
|
37
|
+
|
|
38
|
+
**What does the next agent need in the first 10 minutes to resume effectively?**
|
|
39
|
+
|
|
40
|
+
Keep only the answer to that question in the workspace. Usually that means:
|
|
41
|
+
|
|
42
|
+
- current focus
|
|
43
|
+
- latest verified state
|
|
44
|
+
- open blockers or risks
|
|
45
|
+
- immediate next steps
|
|
46
|
+
- only the last few meaningful timestamped updates
|
|
47
|
+
|
|
48
|
+
Usually remove or collapse:
|
|
49
|
+
|
|
50
|
+
- resolved implementation logs
|
|
51
|
+
- repeated status updates that say the same thing
|
|
52
|
+
- validation transcripts
|
|
53
|
+
- old milestone history
|
|
54
|
+
- duplicated durable documentation
|
|
55
|
+
|
|
56
|
+
Compression is documentation quality, not data loss.
|
|
57
|
+
|
|
58
|
+
## Step 3: Compress Safely
|
|
59
|
+
|
|
60
|
+
When editing the workspace:
|
|
61
|
+
|
|
62
|
+
1. Preserve the active operational truth.
|
|
63
|
+
2. Collapse stale resolved bullets into one short summary when history still matters.
|
|
64
|
+
3. Remove entries that are already preserved elsewhere and no longer affect immediate execution.
|
|
65
|
+
4. Keep timestamp discipline for new or materially revised bullets.
|
|
66
|
+
5. Do not turn the workspace into an archive, changelog, or debug notebook.
|
|
67
|
+
|
|
68
|
+
If durable context is missing from `.waypoint/docs/`, add or refresh the smallest coherent routed doc before removing it from the workspace.
|
|
69
|
+
|
|
70
|
+
## Step 4: Protect User-Owned State
|
|
71
|
+
|
|
72
|
+
- Never overwrite or revert unrelated user changes.
|
|
73
|
+
- If a workspace or doc already has in-flight edits you did not make, read carefully and work around them.
|
|
74
|
+
- Prefer surgical edits over broad rewrites.
|
|
75
|
+
- Do not delete project memory just because live state is being compressed.
|
|
76
|
+
|
|
77
|
+
## Step 5: Refresh Routing
|
|
78
|
+
|
|
79
|
+
After changing routed docs or the workspace:
|
|
80
|
+
|
|
81
|
+
- Run `node .waypoint/scripts/prepare-context.mjs` so the docs index and generated context match the edited sources.
|
|
82
|
+
|
|
83
|
+
## Step 6: Report The Result
|
|
84
|
+
|
|
85
|
+
Summarize:
|
|
86
|
+
|
|
87
|
+
- what stayed in the live handoff
|
|
88
|
+
- what was collapsed or removed
|
|
89
|
+
- which durable docs now hold the preserved detail
|
|
90
|
+
- any remaining risk that still belongs in the workspace
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Workspace Compress"
|
|
3
|
+
short_description: "Compress the live workspace handoff"
|
|
4
|
+
default_prompt: "Use this skill after a meaningful chunk of work, before stopping, before review, or before opening or updating a PR to keep WORKSPACE.md short, current, and useful to the next agent."
|
|
@@ -3,7 +3,7 @@ multi_agent = true
|
|
|
3
3
|
|
|
4
4
|
[agents]
|
|
5
5
|
max_depth = 1
|
|
6
|
-
max_threads =
|
|
6
|
+
max_threads = 24
|
|
7
7
|
|
|
8
8
|
[agents."code-health-reviewer"]
|
|
9
9
|
description = "Read-only background reviewer for post-commit maintainability drift, dead code, duplication, and refactoring opportunities worth fixing."
|
|
@@ -13,10 +13,6 @@ config_file = "agents/code-health-reviewer.toml"
|
|
|
13
13
|
description = "Read-only background reviewer for post-commit bugs, regressions, and integration mistakes."
|
|
14
14
|
config_file = "agents/code-reviewer.toml"
|
|
15
15
|
|
|
16
|
-
[agents."docs-researcher"]
|
|
17
|
-
description = "Documentation researcher for external APIs, libraries, and tools when the repo lacks durable docs."
|
|
18
|
-
config_file = "agents/docs-researcher.toml"
|
|
19
|
-
|
|
20
16
|
[agents."plan-reviewer"]
|
|
21
17
|
description = "Read-only plan validator that checks whether a proposed implementation plan is complete, feasible, and safe to execute."
|
|
22
18
|
config_file = "agents/plan-reviewer.toml"
|
|
@@ -46,6 +46,7 @@ If something important lives only in your head or in the chat transcript, the re
|
|
|
46
46
|
- Update `.waypoint/docs/` when durable knowledge changes, and refresh each changed routable doc's `last_updated` field.
|
|
47
47
|
- Rebuild `.waypoint/DOCS_INDEX.md` whenever routable docs change.
|
|
48
48
|
- Use the repo-local skills and optional reviewer agents instead of improvising from scratch.
|
|
49
|
+
- Do not kill long-running subagents or reviewer agents just because they are slow. Wait unless they are clearly stuck, failed, or the user redirects the work.
|
|
49
50
|
|
|
50
51
|
## Documentation expectations
|
|
51
52
|
|
|
@@ -66,6 +67,10 @@ Do not document every trivial implementation detail. Document the non-obvious, d
|
|
|
66
67
|
- `error-audit` when failures are being swallowed or degraded invisibly
|
|
67
68
|
- `observability-audit` when production debugging signals look weak
|
|
68
69
|
- `ux-states-audit` when async/data-driven UI likely lacks loading, empty, or error states
|
|
70
|
+
- `workspace-compress` after meaningful chunks, before stopping, and before review when the live handoff needs compression
|
|
71
|
+
- `pre-pr-hygiene` before pushing or opening/updating a PR for substantial work
|
|
72
|
+
- `pr-review` once a PR has active review comments or automated review in progress
|
|
73
|
+
- `e2e-verify` for major user-facing or cross-system changes that need manual end-to-end verification
|
|
69
74
|
|
|
70
75
|
## When to use the optional reviewer agents
|
|
71
76
|
|
|
@@ -73,7 +78,6 @@ If the repo was initialized with Waypoint roles enabled, use them as focused sec
|
|
|
73
78
|
|
|
74
79
|
- `code-reviewer` for correctness and regression review
|
|
75
80
|
- `code-health-reviewer` for maintainability drift
|
|
76
|
-
- `docs-researcher` for external dependency research
|
|
77
81
|
- `plan-reviewer` to challenge weak implementation plans before execution
|
|
78
82
|
|
|
79
83
|
## Post-Commit Review Loop
|
|
@@ -1,96 +1,113 @@
|
|
|
1
1
|
---
|
|
2
|
-
summary:
|
|
3
|
-
last_updated: "2026-03-
|
|
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"
|
|
4
4
|
read_when:
|
|
5
|
-
- writing
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
5
|
+
- writing code
|
|
6
|
+
- coding standards
|
|
7
|
+
- code conventions
|
|
8
|
+
- TypeScript
|
|
9
|
+
- frontend
|
|
10
|
+
- backend
|
|
11
|
+
- error handling patterns
|
|
12
|
+
- testing
|
|
10
13
|
---
|
|
11
14
|
|
|
12
15
|
# Code Guide
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
Write code that keeps behavior explicit, failure visible, and the next change easier than the last one.
|
|
15
18
|
|
|
16
19
|
## 1. Compatibility is opt-in, not ambient
|
|
17
20
|
|
|
18
21
|
Do not preserve old behavior unless a user-facing requirement explicitly asks for it.
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
- Remove replaced paths instead of leaving shims, aliases, or silent compatibility branches.
|
|
24
|
+
- Do not keep dead fields, dual formats, or migration-only logic "just in case."
|
|
25
|
+
- If compatibility must stay, document the exact contract being preserved and the removal condition.
|
|
21
26
|
|
|
22
|
-
|
|
27
|
+
## 2. Type safety is non-negotiable
|
|
23
28
|
|
|
24
|
-
|
|
29
|
+
The compiler is part of the design, not an afterthought.
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
- Write as if strict mode is enabled. Type errors are build blockers.
|
|
32
|
+
- Never use `any` when `unknown`, narrowing, generics, or better shared types can express the real contract.
|
|
33
|
+
- Reuse exported library or app types instead of recreating them locally.
|
|
34
|
+
- Be explicit at boundaries: function params, returns, public interfaces, API payloads, DB rows, and shared contracts.
|
|
35
|
+
- Validate external data at boundaries with schema validation and convert it into trusted internal shapes once.
|
|
36
|
+
- Avoid cross-package type casts unless there is no better contract available; fix the shared types instead when practical.
|
|
27
37
|
|
|
28
|
-
|
|
38
|
+
## 3. Fail clearly, never quietly
|
|
29
39
|
|
|
30
|
-
|
|
40
|
+
Errors are part of the contract.
|
|
31
41
|
|
|
32
|
-
|
|
42
|
+
- Fail explicitly. No silent fallbacks, empty catches, or degraded behavior that pretends everything is fine.
|
|
43
|
+
- Every caught exception must propagate, crash, or be surfaced truthfully to the user or operator.
|
|
44
|
+
- Do not silently switch to worse models, stale cache, inferred defaults, empty values, or best-effort modes unless that degradation is an intentional product behavior.
|
|
45
|
+
- Required configuration has no silent defaults. Missing required config is a startup or boundary failure.
|
|
46
|
+
- Error messages should identify what failed, where, and why.
|
|
33
47
|
|
|
34
|
-
|
|
48
|
+
## 4. Validate at boundaries
|
|
35
49
|
|
|
36
|
-
|
|
50
|
+
Anything crossing a boundary is untrusted until proven otherwise.
|
|
37
51
|
|
|
38
|
-
|
|
52
|
+
- Validate user input, config, files, HTTP responses, generated content, database reads, queue payloads, and external API data at the boundary.
|
|
53
|
+
- Reject invalid data instead of "normalizing" it into something ambiguous.
|
|
54
|
+
- Keep validation near the boundary instead of scattering half-validation deep inside the system.
|
|
39
55
|
|
|
40
|
-
##
|
|
56
|
+
## 5. Prefer direct code over speculative abstraction
|
|
41
57
|
|
|
42
|
-
|
|
58
|
+
Do not invent complexity for hypothetical future needs.
|
|
43
59
|
|
|
44
|
-
|
|
60
|
+
- Add abstractions only when multiple concrete cases already demand the same shape.
|
|
61
|
+
- Prefer straightforward code and small duplication over the wrong generic layer.
|
|
62
|
+
- If a helper hides critical validation, state changes, or failure modes, it is probably hurting clarity.
|
|
45
63
|
|
|
46
|
-
|
|
64
|
+
## 6. Make state, contracts, and provenance explicit
|
|
47
65
|
|
|
48
|
-
|
|
66
|
+
Readers should be able to tell what states exist, what transitions are legal, and what data can be trusted.
|
|
49
67
|
|
|
50
|
-
|
|
68
|
+
- Use explicit state representations and enforce invariants at the boundary of the operation.
|
|
69
|
+
- Multi-step writes must have clear transaction boundaries.
|
|
70
|
+
- Retryable operations must be idempotent or guarded against duplicate effects.
|
|
71
|
+
- New schema and persistence work should make provenance obvious and protect against duplication with the right uniqueness constraints, foreign keys, or equivalent invariants.
|
|
72
|
+
- Shared schemas, fixtures, and contract types must match the real API and stored data shape.
|
|
51
73
|
|
|
52
|
-
|
|
74
|
+
## 7. Frontend must reuse and fit the existing system
|
|
53
75
|
|
|
54
|
-
|
|
76
|
+
Frontend changes should extend the app, not fork its design language.
|
|
55
77
|
|
|
56
|
-
|
|
78
|
+
- Before creating a new component, check whether the app already has a component or pattern that should be reused.
|
|
79
|
+
- Reuse existing components when they satisfy the need, even if minor adaptation is required.
|
|
80
|
+
- When a new component is necessary, make it match the design language, interaction model, spacing, states, and compositional patterns of the rest of the app.
|
|
81
|
+
- Handle all states for async and data-driven UI: loading, success, empty, error.
|
|
82
|
+
- Optimistic UI must have an explicit rollback or invalidation strategy. Never leave optimistic state hanging without a recovery path.
|
|
57
83
|
|
|
58
|
-
|
|
84
|
+
## 8. Observability is part of correctness
|
|
59
85
|
|
|
60
|
-
|
|
86
|
+
If you cannot see the failure path, you have not finished the work.
|
|
61
87
|
|
|
62
|
-
|
|
88
|
+
- Emit structured logs, metrics, or events at important boundaries and state transitions.
|
|
89
|
+
- Include enough context to reproduce issues without logging secrets or sensitive data.
|
|
90
|
+
- Failed async work, retries, degraded paths, and rejected inputs must leave a useful trace.
|
|
91
|
+
- Do not use noisy logging to compensate for unclear control flow.
|
|
63
92
|
|
|
64
|
-
##
|
|
93
|
+
## 9. Test behavior, not implementation
|
|
65
94
|
|
|
66
|
-
|
|
95
|
+
Tests should protect the contract users depend on.
|
|
67
96
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Any behavior change must update tests to describe the new contract. If the old behavior mattered, remove or rewrite the old tests instead of making them weaker.
|
|
75
|
-
|
|
76
|
-
Test observable behavior and boundary cases, not implementation trivia. Cover failure modes, validation rules, configuration strictness, and any intentional degradation path. If a bug fix closes a previously possible bad state, add a test that proves the bad state is now rejected.
|
|
77
|
-
|
|
78
|
-
Do not merge code whose behavior changed without leaving behind executable evidence of the new rules.
|
|
79
|
-
|
|
80
|
-
## 9. Observability is part of correctness
|
|
81
|
-
|
|
82
|
-
Code is not complete if production failures cannot be understood from its signals.
|
|
83
|
-
|
|
84
|
-
Emit structured logs, metrics, or events at important boundaries and state transitions, especially around input rejection, external calls, retries, and degraded modes. Observability should explain which path executed and why.
|
|
85
|
-
|
|
86
|
-
Do not log noise to compensate for poor design. Prefer a small number of high-value signals tied to decisions, failures, and contract edges.
|
|
97
|
+
- Test observable behavior and boundary cases, not implementation trivia.
|
|
98
|
+
- Never write brittle regression tests that assert exact class strings, styling internals, private helper calls, incidental DOM structure, internal schema representations, or other implementation-detail artifacts.
|
|
99
|
+
- Regression tests must focus on the behavior that was broken and the behavior that is now guaranteed.
|
|
100
|
+
- For backend bugs, prefer behavior-focused regression tests by default.
|
|
101
|
+
- For frontend bugs, prefer manual QA by default; add automated regression coverage only when there is a stable user-visible behavior worth protecting.
|
|
102
|
+
- Do not merge behavior changes without leaving behind executable or clearly documented evidence of the new contract.
|
|
87
103
|
|
|
88
104
|
## 10. Optimize for future legibility
|
|
89
105
|
|
|
90
|
-
Write code for the next
|
|
91
|
-
|
|
92
|
-
Keep modules narrow in responsibility. Keep data flow obvious. Keep control flow boring. Prefer designs where the main path is easy to follow and unusual behavior is explicitly named.
|
|
106
|
+
Write code for the next engineer or agent who has to change it under pressure.
|
|
93
107
|
|
|
94
|
-
|
|
108
|
+
- Keep modules narrow in responsibility and data flow obvious.
|
|
109
|
+
- Remove stale branches, half-migrations, dead code, and obsolete docs around the change.
|
|
110
|
+
- Keep docs and shipped behavior aligned.
|
|
111
|
+
- Before pushing or opening a PR, do a hygiene pass for stale docs, drifting contracts, typing gaps, missing rollback strategies, and new persistence correctness risks.
|
|
95
112
|
|
|
96
|
-
The best code is not
|
|
113
|
+
The best code is not the most flexible code. It is the code whose current truth is obvious, whose failures are visible, and whose wrong parts can be deleted without fear.
|
|
@@ -35,5 +35,8 @@ Working rules:
|
|
|
35
35
|
- Update `.waypoint/docs/` when behavior or durable project knowledge changes, and refresh `last_updated` on touched routable docs
|
|
36
36
|
- Use the repo-local skills Waypoint ships for structured workflows when relevant
|
|
37
37
|
- If optional reviewer roles are present and you make a commit, run `code-reviewer` and `code-health-reviewer` in parallel before calling the work done
|
|
38
|
+
- Before pushing or opening/updating a PR for substantial work, use `pre-pr-hygiene`
|
|
39
|
+
- Use `pr-review` once a PR has active review comments or automated review in progress
|
|
40
|
+
- Use `e2e-verify` for major user-facing or cross-system changes that need manual end-to-end verification
|
|
38
41
|
- Treat the generated context bundle as required session bootstrap, not optional reference material
|
|
39
42
|
<!-- waypoint:end -->
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
model_reasoning_effort = "medium"
|
|
2
|
-
sandbox_mode = "read-only"
|
|
3
|
-
developer_instructions = """
|
|
4
|
-
Read these files in order before doing anything else:
|
|
5
|
-
1. .waypoint/SOUL.md
|
|
6
|
-
2. .waypoint/agent-operating-manual.md
|
|
7
|
-
3. WORKSPACE.md
|
|
8
|
-
4. .waypoint/context/MANIFEST.md
|
|
9
|
-
5. every file listed in that manifest
|
|
10
|
-
6. .waypoint/agents/docs-researcher.md
|
|
11
|
-
|
|
12
|
-
After reading them, follow .waypoint/agents/docs-researcher.md as your operating instructions.
|
|
13
|
-
"""
|
|
14
|
-
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: docs-researcher
|
|
3
|
-
source: meridian-adapted
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
You research external tools, APIs, and products, building comprehensive knowledge docs that the repo can reference later.
|
|
7
|
-
|
|
8
|
-
## Read First
|
|
9
|
-
|
|
10
|
-
1. Read `.waypoint/SOUL.md`
|
|
11
|
-
2. Read `.waypoint/agent-operating-manual.md`
|
|
12
|
-
3. Read `WORKSPACE.md`
|
|
13
|
-
4. Read `.waypoint/context/MANIFEST.md`
|
|
14
|
-
5. Read every file listed in the manifest
|
|
15
|
-
6. Read any existing repo docs for the dependency or integration
|
|
16
|
-
|
|
17
|
-
## Critical Rule
|
|
18
|
-
|
|
19
|
-
Do not write documentation from memory when the facts are version-sensitive.
|
|
20
|
-
|
|
21
|
-
Research first, then write.
|
|
22
|
-
|
|
23
|
-
## What You Produce
|
|
24
|
-
|
|
25
|
-
Not just API specs. Produce durable repo knowledge:
|
|
26
|
-
|
|
27
|
-
- what the tool is and what it's for
|
|
28
|
-
- current version or current relevant state
|
|
29
|
-
- setup requirements
|
|
30
|
-
- conceptual model
|
|
31
|
-
- best practices
|
|
32
|
-
- operations and constraints
|
|
33
|
-
- gotchas and known sharp edges
|
|
34
|
-
- links to official docs for deeper reading
|
|
35
|
-
|
|
36
|
-
## Process
|
|
37
|
-
|
|
38
|
-
### 1. Check Existing Docs
|
|
39
|
-
|
|
40
|
-
Search the repo for existing docs about the tool. Understand what's documented, what's missing, and what's stale.
|
|
41
|
-
|
|
42
|
-
### 2. Research
|
|
43
|
-
|
|
44
|
-
Use primary sources first:
|
|
45
|
-
|
|
46
|
-
- official docs
|
|
47
|
-
- official guides
|
|
48
|
-
- changelogs
|
|
49
|
-
- release notes
|
|
50
|
-
- authoritative repos
|
|
51
|
-
|
|
52
|
-
Capture text content, not just code snippets. The conceptual guides matter as much as the method signatures.
|
|
53
|
-
|
|
54
|
-
### 3. Write or Update Durable Docs
|
|
55
|
-
|
|
56
|
-
Create or update repo docs so future work does not have to repeat the same research.
|
|
57
|
-
|
|
58
|
-
### 4. Rebuild the Docs Index
|
|
59
|
-
|
|
60
|
-
If you add or update durable docs, rebuild `DOCS_INDEX.md`.
|
|
61
|
-
|
|
62
|
-
## Quality Bar
|
|
63
|
-
|
|
64
|
-
The repo should be smarter after you finish than before you started.
|
|
65
|
-
|
|
66
|
-
## Output
|
|
67
|
-
|
|
68
|
-
Summarize:
|
|
69
|
-
|
|
70
|
-
- what you researched
|
|
71
|
-
- what matters for this repo
|
|
72
|
-
- what durable docs were added or updated
|
|
73
|
-
|