waypoint-codex 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/bin/waypoint.js +3 -0
- package/dist/src/cli.js +140 -0
- package/dist/src/core.js +605 -0
- package/dist/src/docs-index.js +95 -0
- package/dist/src/templates.js +34 -0
- package/dist/src/types.js +1 -0
- package/package.json +47 -0
- package/templates/.agents/skills/error-audit/SKILL.md +69 -0
- package/templates/.agents/skills/error-audit/references/error-patterns.md +37 -0
- package/templates/.agents/skills/observability-audit/SKILL.md +67 -0
- package/templates/.agents/skills/observability-audit/references/observability-patterns.md +35 -0
- package/templates/.agents/skills/planning/SKILL.md +133 -0
- package/templates/.agents/skills/ux-states-audit/SKILL.md +63 -0
- package/templates/.agents/skills/ux-states-audit/references/ux-patterns.md +34 -0
- package/templates/.codex/agents/code-health-reviewer.toml +14 -0
- package/templates/.codex/agents/code-reviewer.toml +14 -0
- package/templates/.codex/agents/docs-researcher.toml +14 -0
- package/templates/.codex/agents/plan-reviewer.toml +14 -0
- package/templates/.codex/config.toml +19 -0
- package/templates/.gitignore.snippet +3 -0
- package/templates/.waypoint/README.md +13 -0
- package/templates/.waypoint/SOUL.md +54 -0
- package/templates/.waypoint/agent-operating-manual.md +79 -0
- package/templates/.waypoint/agents/code-health-reviewer.md +87 -0
- package/templates/.waypoint/agents/code-reviewer.md +102 -0
- package/templates/.waypoint/agents/docs-researcher.md +73 -0
- package/templates/.waypoint/agents/plan-reviewer.md +86 -0
- package/templates/.waypoint/automations/README.md +18 -0
- package/templates/.waypoint/automations/docs-garden.toml +7 -0
- package/templates/.waypoint/automations/repo-health.toml +8 -0
- package/templates/.waypoint/config.toml +13 -0
- package/templates/.waypoint/rules/README.md +6 -0
- package/templates/.waypoint/scripts/build-docs-index.mjs +153 -0
- package/templates/.waypoint/scripts/prepare-context.mjs +174 -0
- package/templates/WORKSPACE.md +26 -0
- package/templates/docs/README.md +16 -0
- package/templates/docs/code-guide.md +31 -0
- package/templates/managed-agents-block.md +21 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
function findTemplatesRoot() {
|
|
8
|
+
const candidates = [
|
|
9
|
+
path.resolve(__dirname, "../templates"),
|
|
10
|
+
path.resolve(__dirname, "../../templates"),
|
|
11
|
+
];
|
|
12
|
+
for (const candidate of candidates) {
|
|
13
|
+
if (existsSync(path.join(candidate, "managed-agents-block.md"))) {
|
|
14
|
+
return candidate;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
throw new Error("Could not locate Waypoint templates directory.");
|
|
18
|
+
}
|
|
19
|
+
const templatesRoot = findTemplatesRoot();
|
|
20
|
+
export const MANAGED_BLOCK_START = "<!-- waypoint:start -->";
|
|
21
|
+
export const MANAGED_BLOCK_END = "<!-- waypoint:end -->";
|
|
22
|
+
export function templatePath(relativePath) {
|
|
23
|
+
return path.join(templatesRoot, relativePath);
|
|
24
|
+
}
|
|
25
|
+
export function readTemplate(relativePath) {
|
|
26
|
+
return readFileSync(templatePath(relativePath), "utf8");
|
|
27
|
+
}
|
|
28
|
+
export function renderWaypointConfig(options) {
|
|
29
|
+
return readTemplate(".waypoint/config.toml")
|
|
30
|
+
.replace("__PROFILE__", options.profile)
|
|
31
|
+
.replace("__ROLES__", String(options.roles))
|
|
32
|
+
.replace("__RULES__", String(options.rules))
|
|
33
|
+
.replace("__AUTOMATIONS__", String(options.automations));
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "waypoint-codex",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Codex-native repository operating system: scaffolding, docs routing, repo-local skills, doctor, and sync.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"waypoint": "bin/waypoint.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin",
|
|
12
|
+
"dist",
|
|
13
|
+
"templates",
|
|
14
|
+
"README.md",
|
|
15
|
+
"LICENSE"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc -p tsconfig.build.json",
|
|
19
|
+
"changeset": "changeset",
|
|
20
|
+
"check": "npm run clean && npm run build && npm test",
|
|
21
|
+
"clean": "rm -rf dist",
|
|
22
|
+
"dev": "tsx src/cli.ts",
|
|
23
|
+
"prepack": "npm run check",
|
|
24
|
+
"release": "npm publish --access public",
|
|
25
|
+
"version-packages": "changeset version",
|
|
26
|
+
"test": "tsx --test tests/**/*.test.ts"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"codex",
|
|
30
|
+
"agents",
|
|
31
|
+
"automation",
|
|
32
|
+
"skills",
|
|
33
|
+
"developer-tools"
|
|
34
|
+
],
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=20"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@changesets/cli": "^2.29.6",
|
|
40
|
+
"@types/node": "^24.0.0",
|
|
41
|
+
"tsx": "^4.20.3",
|
|
42
|
+
"typescript": "^5.8.3"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@iarna/toml": "^2.2.5"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: error-audit
|
|
3
|
+
description: Audit code for silent error swallowing, fallbacks to degraded alternatives, backwards compatibility shims, and UI that fails to show errors to the user. Finds and fixes all occurrences in the specified scope.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Error Audit
|
|
7
|
+
|
|
8
|
+
The core principle: **every error belongs to the user**. Not to a catch block, not to a console, not to a null return. Scan the specified code, fix every violation, report what changed.
|
|
9
|
+
|
|
10
|
+
## Read First
|
|
11
|
+
|
|
12
|
+
1. Read `.waypoint/SOUL.md`
|
|
13
|
+
2. Read `.waypoint/agent-operating-manual.md`
|
|
14
|
+
3. Read `WORKSPACE.md`
|
|
15
|
+
4. Read `.waypoint/context/MANIFEST.md`
|
|
16
|
+
5. Read every file listed in the manifest
|
|
17
|
+
6. Read `references/error-patterns.md`
|
|
18
|
+
|
|
19
|
+
## Step 0: Understand the app's error mechanisms
|
|
20
|
+
|
|
21
|
+
Before fixing anything, identify how this app surfaces errors to users — toast notifications, error banners, error boundaries, returned error states, alert dialogs, inline messages. Use these patterns exclusively. Don't invent a new one.
|
|
22
|
+
|
|
23
|
+
## Anti-patterns to find and fix
|
|
24
|
+
|
|
25
|
+
**Silent error swallowing — backend/logic layer:**
|
|
26
|
+
- Empty catch blocks: `catch(e) {}`
|
|
27
|
+
- Log-and-continue with execution proceeding normally
|
|
28
|
+
- `.catch(() => {})` on promises
|
|
29
|
+
- Functions returning `null`, `undefined`, or empty defaults on failure instead of throwing
|
|
30
|
+
|
|
31
|
+
**Silent error swallowing — UI layer:**
|
|
32
|
+
- Data fetching catches an error and returns null/empty -> component renders blank with no explanation
|
|
33
|
+
- Error boundaries that catch but show nothing (or a generic "something went wrong" with no recovery path)
|
|
34
|
+
- `try/catch` in a loader or server action that swallows the error and returns partial/empty data
|
|
35
|
+
- Async operations where the UI has no error state at all — success renders fine, failure renders identical to loading or empty
|
|
36
|
+
|
|
37
|
+
**Fallbacks to degraded alternatives:**
|
|
38
|
+
- Catch -> silently switch to a worse model, API, or service
|
|
39
|
+
- Catch -> return cached or stale data without telling the user
|
|
40
|
+
- Catch -> offline/degraded mode with no visible indication
|
|
41
|
+
|
|
42
|
+
**Backwards compatibility shims:**
|
|
43
|
+
- `if (legacyFormat)` or `if (oldVersion)` branches
|
|
44
|
+
- Deprecated fields still being populated alongside new ones
|
|
45
|
+
- Old code paths running in parallel with new ones
|
|
46
|
+
|
|
47
|
+
**Config defaults that hide misconfiguration:**
|
|
48
|
+
- `process.env.X || 'fallback'` for required values — missing required config is a startup crash, not a default
|
|
49
|
+
- Optional environment variables that should be required
|
|
50
|
+
|
|
51
|
+
**Optional chaining hiding missing required data:**
|
|
52
|
+
- `user?.profile?.name ?? 'Guest'` when profile must always exist — the absence is a bug, not an edge case to handle silently
|
|
53
|
+
|
|
54
|
+
## Fix principles
|
|
55
|
+
|
|
56
|
+
- Throw or re-throw rather than catch-and-continue
|
|
57
|
+
- In the UI: every error path must render something visible — use the app's established error display mechanism
|
|
58
|
+
- Required config missing at startup -> log a clear message and exit
|
|
59
|
+
- Delete fallback branches — don't comment them out
|
|
60
|
+
- When unsure if a fallback was intentional, flag it in your report rather than guessing
|
|
61
|
+
|
|
62
|
+
## Reference files
|
|
63
|
+
|
|
64
|
+
- `references/error-patterns.md` — Concrete anti-patterns with structural descriptions, examples, and false positive notes. Read this before starting the audit.
|
|
65
|
+
|
|
66
|
+
## Report
|
|
67
|
+
|
|
68
|
+
After fixing, summarize by file: what was found, what the fix was. Be specific — file paths and the pattern removed.
|
|
69
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Error Anti-Patterns Reference
|
|
2
|
+
|
|
3
|
+
Patterns to identify when auditing error handling. Each section describes the anti-pattern structurally — what the code does, not just what keywords to grep for.
|
|
4
|
+
|
|
5
|
+
## Silent error swallowing
|
|
6
|
+
|
|
7
|
+
- empty catch blocks
|
|
8
|
+
- `.catch(() => {})`
|
|
9
|
+
- broad exception handlers that return defaults
|
|
10
|
+
- ignored Go errors via `_`
|
|
11
|
+
|
|
12
|
+
## Log-and-continue
|
|
13
|
+
|
|
14
|
+
An error gets logged, but execution continues as if the operation succeeded.
|
|
15
|
+
|
|
16
|
+
## Return-null-on-failure
|
|
17
|
+
|
|
18
|
+
The function converts a real operational failure into what looks like a normal "empty" result.
|
|
19
|
+
|
|
20
|
+
## Invisible degradation
|
|
21
|
+
|
|
22
|
+
The code silently falls back to a worse model, API, cache, or degraded mode with no visible signal.
|
|
23
|
+
|
|
24
|
+
## Config defaults hiding misconfiguration
|
|
25
|
+
|
|
26
|
+
Required settings should fail loudly, not silently pick a fallback.
|
|
27
|
+
|
|
28
|
+
## UI error blindness
|
|
29
|
+
|
|
30
|
+
Failure should not render the same as loading or empty.
|
|
31
|
+
|
|
32
|
+
Quality bar:
|
|
33
|
+
|
|
34
|
+
- confirm the issue is real in context
|
|
35
|
+
- prefer concrete fixes over broad rewrites
|
|
36
|
+
- use existing repo patterns for user-visible error handling
|
|
37
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: observability-audit
|
|
3
|
+
description: Audit code for observability gaps — debug logs left in, errors caught without being logged, missing context on log entries, and untracked slow operations. Uses the app's existing observability tooling exclusively.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Observability Audit
|
|
7
|
+
|
|
8
|
+
Code that works locally but is impossible to debug in production. This skill finds and fixes observability gaps using whatever tools the app already has.
|
|
9
|
+
|
|
10
|
+
## Read First
|
|
11
|
+
|
|
12
|
+
1. Read `.waypoint/SOUL.md`
|
|
13
|
+
2. Read `.waypoint/agent-operating-manual.md`
|
|
14
|
+
3. Read `WORKSPACE.md`
|
|
15
|
+
4. Read `.waypoint/context/MANIFEST.md`
|
|
16
|
+
5. Read every file listed in the manifest
|
|
17
|
+
6. Read `references/observability-patterns.md`
|
|
18
|
+
|
|
19
|
+
## Step 0: Research existing observability tooling
|
|
20
|
+
|
|
21
|
+
Before anything else, explore the codebase to understand what's already in use:
|
|
22
|
+
|
|
23
|
+
- Error tracking
|
|
24
|
+
- Logging
|
|
25
|
+
- APM / metrics
|
|
26
|
+
- Analytics
|
|
27
|
+
- Any custom logger or telemetry utilities
|
|
28
|
+
|
|
29
|
+
Read how they're configured and how they're used. All fixes must use these — never introduce a new observability dependency or pattern.
|
|
30
|
+
|
|
31
|
+
## What to look for
|
|
32
|
+
|
|
33
|
+
**Debug artifacts left in production code**
|
|
34
|
+
|
|
35
|
+
**Errors that disappear**
|
|
36
|
+
|
|
37
|
+
**Missing context on log entries**
|
|
38
|
+
|
|
39
|
+
**Untracked slow or critical operations**
|
|
40
|
+
|
|
41
|
+
See `references/observability-patterns.md` for concrete patterns.
|
|
42
|
+
|
|
43
|
+
## Process
|
|
44
|
+
|
|
45
|
+
1. Research existing tooling
|
|
46
|
+
2. Identify the scope
|
|
47
|
+
3. Find every instance of the anti-patterns
|
|
48
|
+
4. Fix using the existing tooling and patterns
|
|
49
|
+
5. Remove debug artifacts, add context to thin logs, add tracking where missing
|
|
50
|
+
6. Report changes
|
|
51
|
+
|
|
52
|
+
## Fix principles
|
|
53
|
+
|
|
54
|
+
- Every caught error should be logged with enough context to reproduce the problem
|
|
55
|
+
- Use the existing logger/tracker — never introduce a second one
|
|
56
|
+
- Debug `console.log` goes away entirely — no conversion to structured log, just deleted
|
|
57
|
+
- Log context should include: what operation, what failed, relevant IDs
|
|
58
|
+
- Don't add logging to every function — focus on boundaries and critical paths
|
|
59
|
+
|
|
60
|
+
## Reference files
|
|
61
|
+
|
|
62
|
+
- `references/observability-patterns.md` — Detection patterns, bad/fix examples for debug artifacts, missing logging, missing context, untracked operations. Read before starting the audit.
|
|
63
|
+
|
|
64
|
+
## Report
|
|
65
|
+
|
|
66
|
+
Summarize by file: what was removed, what was added or improved, what context was missing and is now included.
|
|
67
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Observability Anti-Patterns Reference
|
|
2
|
+
|
|
3
|
+
Use this file to guide observability audits.
|
|
4
|
+
|
|
5
|
+
## Debug artifacts
|
|
6
|
+
|
|
7
|
+
- `console.log`, `console.debug`, `print`, `fmt.Printf` in non-CLI production paths
|
|
8
|
+
- commented-out debug statements
|
|
9
|
+
- `debugger` and focused tests left behind
|
|
10
|
+
|
|
11
|
+
## Errors without useful traces
|
|
12
|
+
|
|
13
|
+
- catch/except blocks that rethrow or return without logging context
|
|
14
|
+
- tracker calls with no metadata
|
|
15
|
+
- logs that say "failed" without saying what failed
|
|
16
|
+
|
|
17
|
+
## Missing context
|
|
18
|
+
|
|
19
|
+
- no user, entity, request, or job identifiers
|
|
20
|
+
- no operation name
|
|
21
|
+
- no correlation/request ID at service boundaries
|
|
22
|
+
|
|
23
|
+
## Slow paths with no timing
|
|
24
|
+
|
|
25
|
+
- external API calls
|
|
26
|
+
- critical database queries
|
|
27
|
+
- background jobs without start/complete/fail visibility
|
|
28
|
+
- webhook handlers with no event-level logging
|
|
29
|
+
|
|
30
|
+
Quality bar:
|
|
31
|
+
|
|
32
|
+
- use the existing observability stack
|
|
33
|
+
- improve debugging value, not log volume
|
|
34
|
+
- focus on boundaries and critical paths
|
|
35
|
+
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: planning
|
|
3
|
+
description: >
|
|
4
|
+
Interview-driven planning methodology that produces implementation-ready plans.
|
|
5
|
+
Use for new features, refactoring, architecture changes, migrations, or any non-trivial
|
|
6
|
+
implementation work. Ask multiple rounds of clarifying questions, explore the repo deeply
|
|
7
|
+
before deciding, capture verbatim requirements when needed, and do not stop at vague or
|
|
8
|
+
partially-investigated plans.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Planning
|
|
12
|
+
|
|
13
|
+
Good plans prove you understand the problem. Size matches complexity — a rename might be 20 lines, a complex feature might be 500.
|
|
14
|
+
|
|
15
|
+
**The handoff test:** Could someone implement this plan without asking you questions? If not, find what's missing.
|
|
16
|
+
|
|
17
|
+
## Read First
|
|
18
|
+
|
|
19
|
+
Before planning:
|
|
20
|
+
|
|
21
|
+
1. Read `.waypoint/SOUL.md`
|
|
22
|
+
2. Read `.waypoint/agent-operating-manual.md`
|
|
23
|
+
3. Read `WORKSPACE.md`
|
|
24
|
+
4. Read `.waypoint/context/MANIFEST.md`
|
|
25
|
+
5. Read every file listed in the manifest
|
|
26
|
+
6. Read the routed docs relevant to the task
|
|
27
|
+
|
|
28
|
+
## Verbatim Requirements
|
|
29
|
+
|
|
30
|
+
Capture the user's exact words at the top of every plan when the wording matters. No paraphrasing, no compression.
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
## Verbatim Requirements
|
|
34
|
+
|
|
35
|
+
### Original Request
|
|
36
|
+
> [User's ENTIRE message, word for word]
|
|
37
|
+
|
|
38
|
+
### Clarifications
|
|
39
|
+
**Q:** [Your question]
|
|
40
|
+
**A:** [User's ENTIRE answer, verbatim]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## The Core Loop
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
ASK -> EXPLORE -> LEARN -> MORE QUESTIONS? -> REPEAT
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Keep looping until you can explain:
|
|
50
|
+
|
|
51
|
+
- what exists today
|
|
52
|
+
- how the data and control flow work
|
|
53
|
+
- what needs to change
|
|
54
|
+
- what could go wrong
|
|
55
|
+
|
|
56
|
+
## Interviewing
|
|
57
|
+
|
|
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
|
+
|
|
60
|
+
Interview iteratively: 2-4 questions -> answers -> deeper follow-ups -> repeat. Each round should go deeper.
|
|
61
|
+
|
|
62
|
+
- Simple bug -> a few focused questions
|
|
63
|
+
- Feature or migration -> many rounds of questions
|
|
64
|
+
- Architectural work -> keep drilling until the constraints and tradeoffs are clear
|
|
65
|
+
|
|
66
|
+
Push back when something seems off. Neutrality is not the goal; correctness is.
|
|
67
|
+
|
|
68
|
+
## Exploring the Codebase
|
|
69
|
+
|
|
70
|
+
**More exploration = better plans.** The number one cause of plan failure is insufficient exploration.
|
|
71
|
+
|
|
72
|
+
Explore until you stop having questions, not until you've "done enough."
|
|
73
|
+
|
|
74
|
+
Use the repository like a map:
|
|
75
|
+
|
|
76
|
+
- find the real entry points
|
|
77
|
+
- trace callers and imports
|
|
78
|
+
- inspect nearby modules solving similar problems
|
|
79
|
+
- identify existing patterns worth following
|
|
80
|
+
- identify constraints that the change must respect
|
|
81
|
+
|
|
82
|
+
Do not plan from abstractions alone. Ground major decisions in actual files.
|
|
83
|
+
|
|
84
|
+
## Plan Content
|
|
85
|
+
|
|
86
|
+
Plans document your understanding. Include what matters for this task:
|
|
87
|
+
|
|
88
|
+
- **Current State**: What exists today — relevant files, data flows, constraints, existing patterns
|
|
89
|
+
- **Changes**: Every file to create/modify/delete, how changes connect
|
|
90
|
+
- **Decisions**: Why this approach, tradeoffs, assumptions
|
|
91
|
+
- **Acceptance criteria**: What must be true when each step is "done"
|
|
92
|
+
- **Test cases**: For behavioral changes, include input -> expected output examples
|
|
93
|
+
- **Non-Goals**: Explicitly out of scope to prevent implementation drift
|
|
94
|
+
|
|
95
|
+
Use ASCII diagrams when they clarify flow, layering, or state.
|
|
96
|
+
|
|
97
|
+
## Self-Review Before Finalizing
|
|
98
|
+
|
|
99
|
+
Before presenting the plan, verify against real code:
|
|
100
|
+
|
|
101
|
+
- existing controls
|
|
102
|
+
- state invariants
|
|
103
|
+
- transaction boundaries for multi-write operations
|
|
104
|
+
- verification executability with current tooling
|
|
105
|
+
|
|
106
|
+
## Rules
|
|
107
|
+
|
|
108
|
+
- No TBD
|
|
109
|
+
- No "we'll figure it out during implementation"
|
|
110
|
+
- No literal code unless the user explicitly wants it
|
|
111
|
+
- No pretending you verified something you didn't
|
|
112
|
+
|
|
113
|
+
If the change touches durable project behavior, include docs/workspace updates in the plan.
|
|
114
|
+
|
|
115
|
+
## External APIs
|
|
116
|
+
|
|
117
|
+
If an external API or library is relevant and the repo lacks durable docs for it, use the `docs-researcher` agent before finalizing the plan.
|
|
118
|
+
|
|
119
|
+
## Output
|
|
120
|
+
|
|
121
|
+
A good final plan usually includes:
|
|
122
|
+
|
|
123
|
+
1. Current state
|
|
124
|
+
2. Proposed changes
|
|
125
|
+
3. Decisions and tradeoffs
|
|
126
|
+
4. Acceptance criteria
|
|
127
|
+
5. Verification
|
|
128
|
+
6. TL;DR
|
|
129
|
+
|
|
130
|
+
## Quality Bar
|
|
131
|
+
|
|
132
|
+
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,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-states-audit
|
|
3
|
+
description: Audit UI code for missing loading states, empty states, and error states. Every async operation and data-driven UI must handle all three. Finds gaps and implements the missing states using the app's existing patterns.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UX States Audit
|
|
7
|
+
|
|
8
|
+
Every piece of UI that fetches data or triggers async work has three states beyond the happy path: **loading**, **empty**, and **error**. LLMs implement the happy path and leave the rest blank. This skill finds and fills those gaps.
|
|
9
|
+
|
|
10
|
+
This is distinct from `error-audit`: `error-audit` finds errors that are suppressed. This finds states that were never implemented.
|
|
11
|
+
|
|
12
|
+
## Read First
|
|
13
|
+
|
|
14
|
+
1. Read `.waypoint/SOUL.md`
|
|
15
|
+
2. Read `.waypoint/agent-operating-manual.md`
|
|
16
|
+
3. Read `WORKSPACE.md`
|
|
17
|
+
4. Read `.waypoint/context/MANIFEST.md`
|
|
18
|
+
5. Read every file listed in the manifest
|
|
19
|
+
6. Read `references/ux-patterns.md`
|
|
20
|
+
|
|
21
|
+
## Step 0: Understand existing patterns
|
|
22
|
+
|
|
23
|
+
Before touching anything, read the codebase to understand how it currently handles these states:
|
|
24
|
+
|
|
25
|
+
- loading components or primitives
|
|
26
|
+
- empty state patterns
|
|
27
|
+
- error display patterns
|
|
28
|
+
|
|
29
|
+
Use these patterns exclusively. Don't introduce a new loading spinner if one already exists.
|
|
30
|
+
|
|
31
|
+
## What to look for
|
|
32
|
+
|
|
33
|
+
**Missing loading state**
|
|
34
|
+
|
|
35
|
+
**Missing empty state**
|
|
36
|
+
|
|
37
|
+
**Missing error state**
|
|
38
|
+
|
|
39
|
+
See `references/ux-patterns.md` for concrete patterns.
|
|
40
|
+
|
|
41
|
+
## Process
|
|
42
|
+
|
|
43
|
+
1. Identify the scope
|
|
44
|
+
2. Find every component that fetches data or triggers async work
|
|
45
|
+
3. For each: check whether loading, empty, and error states are handled
|
|
46
|
+
4. Implement missing states using the patterns found in Step 0
|
|
47
|
+
5. Report what was added, by component
|
|
48
|
+
|
|
49
|
+
## Fix principles
|
|
50
|
+
|
|
51
|
+
- Loading states should be immediate
|
|
52
|
+
- Empty states should explain the situation and, where appropriate, offer an action
|
|
53
|
+
- Error states should say what went wrong and what the user can do
|
|
54
|
+
- Don't invent new UI primitives — use what already exists
|
|
55
|
+
|
|
56
|
+
## Reference files
|
|
57
|
+
|
|
58
|
+
- `references/ux-patterns.md` — Detection patterns and examples for missing loading, empty, and error states. Read before starting the audit.
|
|
59
|
+
|
|
60
|
+
## Report
|
|
61
|
+
|
|
62
|
+
Summarize by component: which states were missing, what was added.
|
|
63
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# UX State Patterns Reference
|
|
2
|
+
|
|
3
|
+
Use this file to guide UX state audits.
|
|
4
|
+
|
|
5
|
+
## Missing loading state
|
|
6
|
+
|
|
7
|
+
Look for:
|
|
8
|
+
|
|
9
|
+
- fetch starts and nothing changes visually
|
|
10
|
+
- button-triggered async action with no pending state
|
|
11
|
+
- form submission with no disabled or in-progress signal
|
|
12
|
+
|
|
13
|
+
## Missing empty state
|
|
14
|
+
|
|
15
|
+
Look for:
|
|
16
|
+
|
|
17
|
+
- empty lists rendering blank space
|
|
18
|
+
- search results with no explanation when empty
|
|
19
|
+
- dashboard widgets vanishing instead of explaining that no data exists
|
|
20
|
+
|
|
21
|
+
## Missing error state
|
|
22
|
+
|
|
23
|
+
Look for:
|
|
24
|
+
|
|
25
|
+
- fetch failure rendering the same as loading
|
|
26
|
+
- mutation failure with no user-visible feedback
|
|
27
|
+
- components returning blank/null on failure
|
|
28
|
+
|
|
29
|
+
Quality bar:
|
|
30
|
+
|
|
31
|
+
- use the repo's established UI primitives
|
|
32
|
+
- implement all three states where relevant
|
|
33
|
+
- favor clarity over decorative treatment
|
|
34
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
model_reasoning_effort = "high"
|
|
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/code-health-reviewer.md
|
|
11
|
+
|
|
12
|
+
After reading them, follow .waypoint/agents/code-health-reviewer.md as your operating instructions.
|
|
13
|
+
"""
|
|
14
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
model_reasoning_effort = "high"
|
|
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/code-reviewer.md
|
|
11
|
+
|
|
12
|
+
After reading them, follow .waypoint/agents/code-reviewer.md as your operating instructions.
|
|
13
|
+
"""
|
|
14
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
model_reasoning_effort = "high"
|
|
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/plan-reviewer.md
|
|
11
|
+
|
|
12
|
+
After reading them, follow .waypoint/agents/plan-reviewer.md as your operating instructions.
|
|
13
|
+
"""
|
|
14
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[agents]
|
|
2
|
+
max_depth = 1
|
|
3
|
+
max_threads = 4
|
|
4
|
+
|
|
5
|
+
[agents."code-health-reviewer"]
|
|
6
|
+
description = "Read-only reviewer focused on maintainability drift, dead code, duplication, and refactoring opportunities worth fixing."
|
|
7
|
+
config_file = "agents/code-health-reviewer.toml"
|
|
8
|
+
|
|
9
|
+
[agents."code-reviewer"]
|
|
10
|
+
description = "Read-only deep code reviewer focused on real bugs, regressions, and integration mistakes."
|
|
11
|
+
config_file = "agents/code-reviewer.toml"
|
|
12
|
+
|
|
13
|
+
[agents."docs-researcher"]
|
|
14
|
+
description = "Documentation researcher for external APIs, libraries, and tools when the repo lacks durable docs."
|
|
15
|
+
config_file = "agents/docs-researcher.toml"
|
|
16
|
+
|
|
17
|
+
[agents."plan-reviewer"]
|
|
18
|
+
description = "Read-only plan validator that checks whether a proposed implementation plan is complete, feasible, and safe to execute."
|
|
19
|
+
config_file = "agents/plan-reviewer.toml"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# .waypoint
|
|
2
|
+
|
|
3
|
+
Repo-local Waypoint configuration and optional integration sources.
|
|
4
|
+
|
|
5
|
+
- `config.toml` — Waypoint feature toggles and file locations
|
|
6
|
+
- `SOUL.md` — agent identity and working values
|
|
7
|
+
- `agent-operating-manual.md` — required session workflow
|
|
8
|
+
- `agents/` — agent prompt files that optional Codex roles can read and follow
|
|
9
|
+
- `automations/` — optional automation source specs
|
|
10
|
+
- `context/` — generated session context bundle
|
|
11
|
+
- `rules/` — optional rule source files
|
|
12
|
+
- `scripts/` — repo-local Waypoint helper scripts
|
|
13
|
+
- `state/` — local sync state and tooling metadata
|