waypoint-codex 0.20.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -37
- package/dist/src/cli.js +1 -1
- package/dist/src/core.js +33 -116
- package/dist/src/docs-index.js +1 -1
- package/dist/src/templates.js +0 -10
- package/package.json +1 -1
- package/templates/.agents/skills/agi-help/SKILL.md +1 -1
- package/templates/.agents/skills/code-guide-audit/SKILL.md +1 -5
- package/templates/.agents/skills/planning/SKILL.md +6 -10
- package/templates/.agents/skills/pr-review/SKILL.md +0 -1
- package/templates/.codex/agents/code-health-reviewer.toml +6 -5
- package/templates/.codex/agents/code-reviewer.toml +6 -5
- package/templates/.codex/agents/plan-reviewer.toml +6 -5
- package/templates/.waypoint/ACTIVE_PLANS.md +7 -7
- package/templates/.waypoint/README.md +5 -8
- package/templates/.waypoint/config.toml +0 -5
- package/templates/.waypoint/docs/README.md +1 -3
- package/templates/.waypoint/scripts/build-docs-index.mjs +25 -11
- package/templates/.waypoint/scripts/prepare-context.mjs +120 -205
- package/templates/WORKSPACE.md +2 -6
- package/templates/managed-agents-block.md +18 -11
- package/dist/src/track-index.js +0 -107
- package/templates/.agents/skills/break-it-qa/SKILL.md +0 -184
- package/templates/.agents/skills/break-it-qa/agents/openai.yaml +0 -4
- package/templates/.agents/skills/conversation-retrospective/SKILL.md +0 -147
- package/templates/.agents/skills/conversation-retrospective/agents/openai.yaml +0 -4
- package/templates/.agents/skills/docs-sync/SKILL.md +0 -78
- package/templates/.agents/skills/docs-sync/agents/openai.yaml +0 -4
- package/templates/.agents/skills/merge-ready-owner/SKILL.md +0 -196
- package/templates/.agents/skills/merge-ready-owner/agents/openai.yaml +0 -4
- package/templates/.agents/skills/pre-pr-hygiene/SKILL.md +0 -83
- package/templates/.agents/skills/pre-pr-hygiene/agents/openai.yaml +0 -4
- package/templates/.agents/skills/work-tracker/SKILL.md +0 -141
- package/templates/.agents/skills/work-tracker/agents/openai.yaml +0 -4
- package/templates/.agents/skills/workspace-compress/SKILL.md +0 -113
- package/templates/.agents/skills/workspace-compress/agents/openai.yaml +0 -4
- package/templates/.waypoint/SOUL.md +0 -71
- package/templates/.waypoint/agent-operating-manual.md +0 -109
- package/templates/.waypoint/scripts/build-track-index.mjs +0 -169
- package/templates/.waypoint/track/README.md +0 -38
- package/templates/.waypoint/track/_template.md +0 -48
package/dist/src/track-index.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
const VALID_TRACK_STATUSES = new Set(["active", "blocked", "paused", "done", "archived"]);
|
|
4
|
-
const ACTIVE_TRACK_STATUSES = new Set(["active", "blocked", "paused"]);
|
|
5
|
-
const SKIP_NAMES = new Set(["README.md", "CHANGELOG.md", "LICENSE.md"]);
|
|
6
|
-
function shouldSkipTrackFile(entry) {
|
|
7
|
-
return SKIP_NAMES.has(entry) || entry.startsWith("_");
|
|
8
|
-
}
|
|
9
|
-
function parseFrontmatter(filePath) {
|
|
10
|
-
const text = readFileSync(filePath, "utf8");
|
|
11
|
-
if (!text.startsWith("---\n")) {
|
|
12
|
-
return { summary: "", lastUpdated: "", readWhen: [], status: "" };
|
|
13
|
-
}
|
|
14
|
-
const endIndex = text.indexOf("\n---\n", 4);
|
|
15
|
-
if (endIndex === -1) {
|
|
16
|
-
return { summary: "", lastUpdated: "", readWhen: [], status: "" };
|
|
17
|
-
}
|
|
18
|
-
const frontmatter = text.slice(4, endIndex);
|
|
19
|
-
let summary = "";
|
|
20
|
-
let lastUpdated = "";
|
|
21
|
-
let status = "";
|
|
22
|
-
const readWhen = [];
|
|
23
|
-
let collectingReadWhen = false;
|
|
24
|
-
for (const rawLine of frontmatter.split("\n")) {
|
|
25
|
-
const line = rawLine.trim();
|
|
26
|
-
if (line.startsWith("summary:")) {
|
|
27
|
-
summary = line.slice("summary:".length).trim().replace(/^['"]|['"]$/g, "");
|
|
28
|
-
collectingReadWhen = false;
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
if (line.startsWith("last_updated:")) {
|
|
32
|
-
lastUpdated = line.slice("last_updated:".length).trim().replace(/^['"]|['"]$/g, "");
|
|
33
|
-
collectingReadWhen = false;
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
if (line.startsWith("status:")) {
|
|
37
|
-
status = line.slice("status:".length).trim().replace(/^['"]|['"]$/g, "").toLowerCase();
|
|
38
|
-
collectingReadWhen = false;
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (line.startsWith("read_when:")) {
|
|
42
|
-
collectingReadWhen = true;
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
if (collectingReadWhen && line.startsWith("- ")) {
|
|
46
|
-
readWhen.push(line.slice(2).trim());
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
if (collectingReadWhen && line.length > 0) {
|
|
50
|
-
collectingReadWhen = false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return { summary, lastUpdated, readWhen, status };
|
|
54
|
-
}
|
|
55
|
-
function walkTracks(projectRoot, currentDir, output, invalid) {
|
|
56
|
-
for (const entry of readdirSync(currentDir)) {
|
|
57
|
-
const fullPath = path.join(currentDir, entry);
|
|
58
|
-
const stat = statSync(fullPath);
|
|
59
|
-
if (stat.isDirectory()) {
|
|
60
|
-
walkTracks(projectRoot, fullPath, output, invalid);
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
if (!entry.endsWith(".md") || shouldSkipTrackFile(entry)) {
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
const { summary, lastUpdated, readWhen, status } = parseFrontmatter(fullPath);
|
|
67
|
-
const relPath = path.relative(projectRoot, fullPath);
|
|
68
|
-
if (!summary || !lastUpdated || readWhen.length === 0 || !VALID_TRACK_STATUSES.has(status)) {
|
|
69
|
-
invalid.push(relPath);
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
output.push({ path: relPath, summary, readWhen, status });
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
export function renderTracksIndex(projectRoot, trackDir) {
|
|
76
|
-
const entries = [];
|
|
77
|
-
const invalidTracks = [];
|
|
78
|
-
if (existsSync(trackDir)) {
|
|
79
|
-
walkTracks(projectRoot, trackDir, entries, invalidTracks);
|
|
80
|
-
}
|
|
81
|
-
const lines = [
|
|
82
|
-
"# Tracks Index",
|
|
83
|
-
"",
|
|
84
|
-
"Auto-generated by `waypoint sync` / `waypoint doctor`. Read active trackers when resuming long-running work.",
|
|
85
|
-
"",
|
|
86
|
-
"## .waypoint/track/",
|
|
87
|
-
"",
|
|
88
|
-
];
|
|
89
|
-
if (entries.length === 0) {
|
|
90
|
-
lines.push("No tracker files found.");
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
for (const entry of entries.sort((a, b) => a.path.localeCompare(b.path))) {
|
|
94
|
-
lines.push(`- **${entry.path}** — [${entry.status}] ${entry.summary}`);
|
|
95
|
-
lines.push(` Read when: ${entry.readWhen.join("; ")}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
lines.push("");
|
|
99
|
-
return {
|
|
100
|
-
content: `${lines.join("\n")}`,
|
|
101
|
-
invalidTracks,
|
|
102
|
-
activeTrackPaths: entries
|
|
103
|
-
.filter((entry) => ACTIVE_TRACK_STATUSES.has(entry.status))
|
|
104
|
-
.map((entry) => entry.path)
|
|
105
|
-
.sort((a, b) => a.localeCompare(b)),
|
|
106
|
-
};
|
|
107
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: break-it-qa
|
|
3
|
-
description: Verify a user-facing feature by trying to break it on purpose instead of only following the happy path. Use after building forms, multistep flows, settings pages, onboarding, stateful UI, destructive actions, or any browser-facing feature where invalid inputs, refreshes, back navigation, repeated clicks, wrong action order, or recovery paths might expose real bugs.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Break-It QA
|
|
7
|
-
|
|
8
|
-
Use this skill to attack the feature like an impatient, confused, or careless user.
|
|
9
|
-
|
|
10
|
-
This skill is for adversarial manual QA. It tries to make the feature fail through invalid, interrupted, stale, repeated, or out-of-order interactions instead of only proving the happy path works.
|
|
11
|
-
|
|
12
|
-
## Step 1: Ask The Three Setup Questions
|
|
13
|
-
|
|
14
|
-
Before testing, ask the user these questions if the answer is not already clear from context:
|
|
15
|
-
|
|
16
|
-
- what exact feature or scope should this cover?
|
|
17
|
-
- how many attack items should the break log reach before stopping?
|
|
18
|
-
- should the skill stop at findings or also fix clear issues after they are found?
|
|
19
|
-
|
|
20
|
-
Keep this intake short. These are the main user-controlled knobs for the skill.
|
|
21
|
-
|
|
22
|
-
If the user does not specify a count, use a reasonable default such as `40`.
|
|
23
|
-
|
|
24
|
-
## Step 2: Read First
|
|
25
|
-
|
|
26
|
-
Before verification:
|
|
27
|
-
|
|
28
|
-
1. Read `.waypoint/SOUL.md`
|
|
29
|
-
2. Read `.waypoint/agent-operating-manual.md`
|
|
30
|
-
3. Read `.waypoint/WORKSPACE.md`
|
|
31
|
-
4. Read `.waypoint/context/MANIFEST.md`
|
|
32
|
-
5. Read every file listed in that manifest
|
|
33
|
-
6. Read the routed docs or nearby code that define the feature being tested
|
|
34
|
-
|
|
35
|
-
## Step 3: Identify Break Surfaces
|
|
36
|
-
|
|
37
|
-
- Identify the happy path first so you know what "broken" means.
|
|
38
|
-
- Find the fragile surfaces: forms, wizards, pending states, destructive actions, async transitions, navigation changes, and persisted state.
|
|
39
|
-
- For each major step or transition, ask explicit "What if...?" questions before testing. Examples:
|
|
40
|
-
- What if the user refreshes here?
|
|
41
|
-
- What if they go back now?
|
|
42
|
-
- What if they click twice?
|
|
43
|
-
- What if this input is empty, malformed, too long, or contradictory?
|
|
44
|
-
- What if this action succeeds in the UI but fails in persistence?
|
|
45
|
-
|
|
46
|
-
Do not test blindly.
|
|
47
|
-
|
|
48
|
-
## Step 4: Create A Break Log
|
|
49
|
-
|
|
50
|
-
Write or update a durable markdown log under `.waypoint/docs/`.
|
|
51
|
-
|
|
52
|
-
- Prefer a focused path such as `.waypoint/docs/verification/<feature>-break-it-qa.md`.
|
|
53
|
-
- If a routed verification doc already exists for this feature, update it instead of creating a competing file.
|
|
54
|
-
- The log is part of the skill, not an optional extra.
|
|
55
|
-
- Pre-generate the attack plan in this log before executing it. Do not improvise everything live.
|
|
56
|
-
|
|
57
|
-
Use one item per attempted action. A good entry shape is:
|
|
58
|
-
|
|
59
|
-
```markdown
|
|
60
|
-
- [ ] What if the user refreshes on the confirmation step before the request finishes?
|
|
61
|
-
Step: confirmation
|
|
62
|
-
Category: navigation
|
|
63
|
-
Status: pending
|
|
64
|
-
Observed: not tried yet
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Then update each item as you go:
|
|
68
|
-
|
|
69
|
-
- `survived`
|
|
70
|
-
- `broke`
|
|
71
|
-
- `fixed`
|
|
72
|
-
- `retested-survived`
|
|
73
|
-
- `blocked`
|
|
74
|
-
- `not-applicable`
|
|
75
|
-
|
|
76
|
-
Every executed item must include:
|
|
77
|
-
|
|
78
|
-
- `Step`
|
|
79
|
-
- `Category`
|
|
80
|
-
- `Status`
|
|
81
|
-
- `Observed`
|
|
82
|
-
|
|
83
|
-
If the user sets a target such as "make this file 150 items long before you stop," treat that as a hard stopping condition unless you hit a real blocker and explain why.
|
|
84
|
-
|
|
85
|
-
Use consistent categories such as:
|
|
86
|
-
|
|
87
|
-
- `navigation`
|
|
88
|
-
- `input-validation`
|
|
89
|
-
- `repeat-action`
|
|
90
|
-
- `stale-state`
|
|
91
|
-
- `error-recovery`
|
|
92
|
-
- `destructive-action`
|
|
93
|
-
- `permissions`
|
|
94
|
-
- `async-state`
|
|
95
|
-
- `persistence`
|
|
96
|
-
|
|
97
|
-
## Step 5: Enforce Coverage Before Execution
|
|
98
|
-
|
|
99
|
-
Before you start executing attacks:
|
|
100
|
-
|
|
101
|
-
- pre-generate a meaningful attack list
|
|
102
|
-
- spread it across the major flow steps
|
|
103
|
-
- spread it across relevant categories
|
|
104
|
-
- make sure the count is not satisfied by one repetitive corner of the feature
|
|
105
|
-
|
|
106
|
-
Do not treat total item count alone as sufficient coverage.
|
|
107
|
-
|
|
108
|
-
If the user asks for a large target such as `150`, ensure the log covers multiple steps and multiple categories instead of padding one surface.
|
|
109
|
-
|
|
110
|
-
Anti-cheating rules:
|
|
111
|
-
|
|
112
|
-
- no filler items
|
|
113
|
-
- each attack must be meaningfully distinct
|
|
114
|
-
- reworded duplicates do not count toward the target
|
|
115
|
-
|
|
116
|
-
## Step 6: Use The Real UI
|
|
117
|
-
|
|
118
|
-
- Use `playwright-interactive`.
|
|
119
|
-
- Exercise the actual UI instead of mocking the flow in code.
|
|
120
|
-
- Keep the scope focused on the feature the user asked you to verify.
|
|
121
|
-
- Capture screenshots of the important states you observe so the user can see the evidence directly.
|
|
122
|
-
|
|
123
|
-
## Step 7: Try To Break It On Purpose
|
|
124
|
-
|
|
125
|
-
Do more than a happy-path walkthrough.
|
|
126
|
-
|
|
127
|
-
Actively try:
|
|
128
|
-
|
|
129
|
-
- invalid inputs
|
|
130
|
-
- empty required fields
|
|
131
|
-
- boundary-length or malformed inputs
|
|
132
|
-
- repeated or double clicks
|
|
133
|
-
- submitting twice
|
|
134
|
-
- wrong action order
|
|
135
|
-
- back and forward navigation
|
|
136
|
-
- page refresh during the flow
|
|
137
|
-
- closing and reopening modals or screens
|
|
138
|
-
- canceling mid-flow and re-entering
|
|
139
|
-
- stale UI state after edits
|
|
140
|
-
- conflicting selections or toggles
|
|
141
|
-
- error recovery after a failed action
|
|
142
|
-
|
|
143
|
-
If the feature is stateful, also check whether the UI, network result, and persisted state stay coherent after those interactions.
|
|
144
|
-
|
|
145
|
-
As you test, keep expanding the break log with new "What if...?" cases that emerge from the flow. Do not rely on memory or chat-only notes.
|
|
146
|
-
|
|
147
|
-
## Step 8: Record And Fix Real Bugs
|
|
148
|
-
|
|
149
|
-
- Document each meaningful issue you find.
|
|
150
|
-
- Fix the issue when the remediation is clear and the chosen mode includes fixes.
|
|
151
|
-
- If the behavior is ambiguous, call out the product decision instead of bluffing a fix.
|
|
152
|
-
- Update docs when the verification exposes stale assumptions about how the feature works.
|
|
153
|
-
- Update the break log entry for each attempted action with what happened and whether the feature survived.
|
|
154
|
-
- Require a short observed-result note for every executed item. "Worked" is too weak; capture what actually happened.
|
|
155
|
-
- Save screenshots for the key broken, risky, or fixed states as you go.
|
|
156
|
-
|
|
157
|
-
Do not stop at the first bug.
|
|
158
|
-
|
|
159
|
-
## Step 9: Repeat Until The Feature Resists Abuse
|
|
160
|
-
|
|
161
|
-
After fixes:
|
|
162
|
-
|
|
163
|
-
- rerun the relevant happy path
|
|
164
|
-
- rerun the break attempts that previously failed
|
|
165
|
-
- rerun directly related attacks
|
|
166
|
-
- rerun neighboring attacks that touch the same step, state transition, or failure surface
|
|
167
|
-
- verify the fix did not create a new inconsistent state
|
|
168
|
-
- keep adding and executing new "What if...?" items until the requested target coverage is reached
|
|
169
|
-
|
|
170
|
-
The skill is not done when the feature only works once. It is done when the feature behaves predictably under sloppy real-world use.
|
|
171
|
-
|
|
172
|
-
## Step 10: Report Truthfully
|
|
173
|
-
|
|
174
|
-
Summarize:
|
|
175
|
-
|
|
176
|
-
- the path to the break log markdown file
|
|
177
|
-
- how many attack items were recorded and exercised
|
|
178
|
-
- how coverage was distributed across steps and categories
|
|
179
|
-
- which screenshots you captured and what each one shows
|
|
180
|
-
- what break attempts you tried
|
|
181
|
-
- which issues you found
|
|
182
|
-
- what you fixed
|
|
183
|
-
- a short systemic-risks summary describing recurring weakness patterns, not just individual bugs
|
|
184
|
-
- what still looks risky or was not exercised
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Break-It QA"
|
|
3
|
-
short_description: "Try to break a feature through the UI"
|
|
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,147 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: conversation-retrospective
|
|
3
|
-
description: Harvest durable knowledge, user feedback, skill lessons, and repeated workflow patterns from the active conversation into the repo's existing memory system. Use when the user asks to save what was learned, write down what changed, capture lessons from this thread, update docs or handoff state without more prompting, improve skills that were used or exposed gaps, or record new skill ideas based on repetitive work in the live conversation. Do not use this for generic planning, broad docs audits, or digging through archived session history unless the user explicitly asks for that.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Conversation Retrospective
|
|
7
|
-
|
|
8
|
-
Use this skill to harvest the active conversation into the repo's existing memory system.
|
|
9
|
-
|
|
10
|
-
This skill works from the live conversation already in context. Do not go hunting through archived session files unless the user explicitly asks for that.
|
|
11
|
-
|
|
12
|
-
This is a closeout and distillation workflow, not a generic planning pass or a broad docs audit.
|
|
13
|
-
|
|
14
|
-
## When Not To Use This Skill
|
|
15
|
-
|
|
16
|
-
- Skip it for generic planning or implementation design; use the planning workflow for that.
|
|
17
|
-
- Skip it for broad docs audits that are not driven by what happened in this conversation.
|
|
18
|
-
- Skip it when the user wants archived history analysis rather than the live thread; only dig into old sessions if they explicitly ask.
|
|
19
|
-
- Skip it when there is nothing durable to preserve and no skill or workflow lesson to capture.
|
|
20
|
-
|
|
21
|
-
## Read First
|
|
22
|
-
|
|
23
|
-
Before persisting anything:
|
|
24
|
-
|
|
25
|
-
1. Read the repo's main agent guidance and project-context files
|
|
26
|
-
2. Read the repo's current durable memory surfaces, such as docs, workspace/handoff files, trackers, decision logs, or knowledge files
|
|
27
|
-
3. Read the exact docs, notes, and skill files that the conversation touched
|
|
28
|
-
|
|
29
|
-
Do not assume the repo uses Waypoint. Adapt to the memory structure that already exists.
|
|
30
|
-
|
|
31
|
-
## Step 1: Distill Durable Knowledge
|
|
32
|
-
|
|
33
|
-
Review the current conversation and separate:
|
|
34
|
-
|
|
35
|
-
- durable project knowledge
|
|
36
|
-
- live execution state
|
|
37
|
-
- transient chatter
|
|
38
|
-
- direct user feedback, corrections, complaints, and preferences
|
|
39
|
-
|
|
40
|
-
Persist without asking follow-up questions when the correct destination is clear.
|
|
41
|
-
|
|
42
|
-
Treat explicit user feedback as a high-priority signal. If the user corrected the approach, rejected a behavior, called out friction, or stated a standing preference, prefer preserving that over the agent's earlier assumptions.
|
|
43
|
-
|
|
44
|
-
Write durable knowledge to the smallest truthful home the repo already uses:
|
|
45
|
-
|
|
46
|
-
- the main docs or knowledge layer for architecture, behavior, decisions, debugging knowledge, and reusable operating guidance
|
|
47
|
-
- the repo's plans layer for durable implementation, rollout, migration, or investigation plans
|
|
48
|
-
- the repo's standing guidance file for durable project context or long-lived working rules
|
|
49
|
-
- the repo's live handoff or workspace file for current state, blockers, and immediate next steps
|
|
50
|
-
- the repo's tracker or execution-log layer when the conversation created or materially changed a long-running workstream
|
|
51
|
-
|
|
52
|
-
If the repo uses doc metadata such as `last_updated`, refresh it when needed.
|
|
53
|
-
|
|
54
|
-
If the repo has no obvious durable home but the need is clear, create the smallest coherent doc or note that fits the surrounding patterns instead of leaving the learning only in chat.
|
|
55
|
-
|
|
56
|
-
Do not leave important truths only in chat.
|
|
57
|
-
|
|
58
|
-
## Step 2: Improve Existing Skills
|
|
59
|
-
|
|
60
|
-
Identify which skills were actually used in this conversation, or which existing skills clearly should have covered the workflow but left avoidable gaps.
|
|
61
|
-
|
|
62
|
-
For each used or clearly relevant skill, explicitly decide whether it:
|
|
63
|
-
|
|
64
|
-
- succeeded
|
|
65
|
-
- partially succeeded
|
|
66
|
-
- failed
|
|
67
|
-
|
|
68
|
-
Base that judgment on the actual conversation, especially:
|
|
69
|
-
|
|
70
|
-
- direct user feedback
|
|
71
|
-
- whether the skill helped complete the task
|
|
72
|
-
- whether the agent had to work around missing guidance
|
|
73
|
-
- whether concrete errors, dead ends, or repeated corrections happened while using it
|
|
74
|
-
|
|
75
|
-
Distinguish between:
|
|
76
|
-
|
|
77
|
-
- a skill problem
|
|
78
|
-
- an execution mistake by the agent
|
|
79
|
-
- an external/tooling failure
|
|
80
|
-
- a one-off user preference that should not be generalized
|
|
81
|
-
|
|
82
|
-
Only change the skill when the problem is truly in the skill guidance.
|
|
83
|
-
|
|
84
|
-
For each affected skill:
|
|
85
|
-
|
|
86
|
-
- read the existing skill before editing it
|
|
87
|
-
- update only reusable guidance, not one-off transcript details
|
|
88
|
-
- add missing guardrails, path hints, failure modes, error-handling guidance, decision rules, or references that would have made the conversation easier to complete
|
|
89
|
-
- keep `SKILL.md` concise; prefer targeted structural improvements over turning the skill into a diary
|
|
90
|
-
|
|
91
|
-
If the environment has both a source-of-truth skill and one or more mirrored or installed copies, update the source-of-truth version and any copies the user expects to stay in sync.
|
|
92
|
-
|
|
93
|
-
Do not assume there is only one skill location, and do not assume there are many.
|
|
94
|
-
|
|
95
|
-
## Step 3: Propose New Skills
|
|
96
|
-
|
|
97
|
-
When the conversation revealed repetitive work that existing skills do not cover well:
|
|
98
|
-
|
|
99
|
-
- do not silently scaffold a new skill unless the user asked for implementation
|
|
100
|
-
- record the proposal in the repo's existing docs or idea-capture layer
|
|
101
|
-
|
|
102
|
-
If there is no obvious place for durable skill proposals, create a small doc such as `skill-ideas.md` in the repo's normal docs area.
|
|
103
|
-
|
|
104
|
-
Each proposal should include:
|
|
105
|
-
|
|
106
|
-
- the repeated workflow or problem
|
|
107
|
-
- likely trigger phrases
|
|
108
|
-
- expected outputs or side effects
|
|
109
|
-
- why existing skills were insufficient
|
|
110
|
-
|
|
111
|
-
Skip this doc when there is no real new-skill candidate.
|
|
112
|
-
|
|
113
|
-
## Step 4: Refresh Repo Memory
|
|
114
|
-
|
|
115
|
-
After changing docs, handoff state, trackers, or skills:
|
|
116
|
-
|
|
117
|
-
- run whatever repo-local refresh or index step the project uses, if one exists
|
|
118
|
-
- otherwise make sure the edited memory surfaces are internally consistent and discoverable
|
|
119
|
-
|
|
120
|
-
Do not invent a refresh command when the repo does not have one.
|
|
121
|
-
|
|
122
|
-
## Step 5: Report
|
|
123
|
-
|
|
124
|
-
Summarize:
|
|
125
|
-
|
|
126
|
-
- what durable knowledge you saved and where
|
|
127
|
-
- which skills you evaluated and whether they succeeded, partially succeeded, or failed
|
|
128
|
-
- which skills you improved
|
|
129
|
-
- which concrete errors, failure modes, or repeated friction points you captured
|
|
130
|
-
- which new skill ideas you recorded, if any
|
|
131
|
-
- what you intentionally left unpersisted because it was transient
|
|
132
|
-
|
|
133
|
-
If no substantive persistence changes were needed, say that explicitly instead of inventing updates.
|
|
134
|
-
|
|
135
|
-
## Gotchas
|
|
136
|
-
|
|
137
|
-
- Do not turn this skill into a transcript dump. Persist only durable knowledge, live state, or reusable lessons.
|
|
138
|
-
- Do not scatter the same learning across multiple files. Pick the smallest truthful home the repo already uses.
|
|
139
|
-
- Do not blame a skill for a problem that was really an execution mistake or an external tool failure.
|
|
140
|
-
- Do not preserve one-off user phrasing or temporary frustration as if it were standing repo policy unless the user clearly framed it that way.
|
|
141
|
-
- Do not go hunting through archived session files just because the live thread feels incomplete. This skill should work from the current conversation unless the user explicitly broadens the scope.
|
|
142
|
-
|
|
143
|
-
## Keep This Skill Sharp
|
|
144
|
-
|
|
145
|
-
- After meaningful retrospectives, add new gotchas when the same persistence mistake, memory-placement mistake, or skill-triage mistake keeps recurring.
|
|
146
|
-
- Tighten the description if the skill misses real prompts like "save what we learned here" or fires on requests that are really planning or docs-audit work.
|
|
147
|
-
- If the same kind of durable learning keeps needing a custom destination, add that routing guidance to the skill instead of leaving the decision to be rediscovered in chat.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Conversation Retrospective"
|
|
3
|
-
short_description: "Harvest the live conversation into repo memory"
|
|
4
|
-
default_prompt: "Use $conversation-retrospective to preserve the durable lessons, repo-memory updates, and skill learnings from this live conversation."
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: docs-sync
|
|
3
|
-
description: Audit routed docs against the actual codebase and shipped behavior. Use when the user asks to sync docs, when docs may be stale after implementation work, before pushing or opening a PR, when routes, contracts, config, commands, or shipped behavior changed, or when Codex should find missing, incorrect, outdated, or broken documentation and then update or flag the exact gaps. Do not use this for vendor-doc ingestion, repo-memory cleanup, or broad code review that is not specifically about docs drift.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Docs Sync
|
|
7
|
-
|
|
8
|
-
Use this skill to keep repo docs aligned with reality.
|
|
9
|
-
|
|
10
|
-
This is not a vendor-doc ingestion skill and not a workspace-cleanup skill. It owns one job: compare the codebase and shipped behavior against routed docs, then fix or flag the mismatches.
|
|
11
|
-
|
|
12
|
-
## When Not To Use This Skill
|
|
13
|
-
|
|
14
|
-
- Skip it for importing or summarizing upstream vendor docs. Link to the real source instead of copying it into the repo.
|
|
15
|
-
- Skip it for workspace compression or tracker cleanup. This skill is about docs drift, not handoff hygiene.
|
|
16
|
-
- Skip it for broad code review that is not specifically about docs-to-reality mismatches.
|
|
17
|
-
- Skip it when the user only wants a new durable plan or architecture note; use the planning or normal docs-writing flow in that case.
|
|
18
|
-
|
|
19
|
-
## Read First
|
|
20
|
-
|
|
21
|
-
Before auditing docs:
|
|
22
|
-
|
|
23
|
-
1. Read `.waypoint/SOUL.md`
|
|
24
|
-
2. Read `.waypoint/agent-operating-manual.md`
|
|
25
|
-
3. Read `.waypoint/WORKSPACE.md`
|
|
26
|
-
4. Read `.waypoint/context/MANIFEST.md`
|
|
27
|
-
5. Read every file listed in that manifest
|
|
28
|
-
6. Read the routed docs for the area under review
|
|
29
|
-
|
|
30
|
-
## Step 1: Compare Docs To Reality
|
|
31
|
-
|
|
32
|
-
Audit the real code, routes, contracts, config surfaces, and user-visible behavior against `.waypoint/docs/`.
|
|
33
|
-
|
|
34
|
-
Look for:
|
|
35
|
-
|
|
36
|
-
- missing docs for real shipped behavior
|
|
37
|
-
- stale docs that describe removed or changed behavior
|
|
38
|
-
- broken routing links or docs index gaps
|
|
39
|
-
- examples or commands that no longer work
|
|
40
|
-
- contract/schema/config docs that no longer match the code
|
|
41
|
-
- docs that still describe future work as if it is already shipped
|
|
42
|
-
|
|
43
|
-
## Step 2: Fix Or Flag
|
|
44
|
-
|
|
45
|
-
- Update the docs when the correct wording is clear.
|
|
46
|
-
- Add the smallest routed doc needed when behavior exists but is undocumented.
|
|
47
|
-
- Remove or reframe stale claims instead of letting them linger.
|
|
48
|
-
- If a mismatch is real but the correct doc shape is unclear, flag it explicitly instead of bluffing.
|
|
49
|
-
|
|
50
|
-
Do not mirror vendor reference docs into the repo. Link to the real upstream docs when that is the right source of truth.
|
|
51
|
-
|
|
52
|
-
## Step 3: Refresh Routing
|
|
53
|
-
|
|
54
|
-
After changing routed docs:
|
|
55
|
-
|
|
56
|
-
- Run `node .waypoint/scripts/prepare-context.mjs` so the docs index and generated context match the updated docs.
|
|
57
|
-
|
|
58
|
-
## Step 4: Report The Sync Result
|
|
59
|
-
|
|
60
|
-
Summarize:
|
|
61
|
-
|
|
62
|
-
- what docs were stale or missing
|
|
63
|
-
- what you updated
|
|
64
|
-
- what still needs a decision, if anything
|
|
65
|
-
|
|
66
|
-
## Gotchas
|
|
67
|
-
|
|
68
|
-
- Do not trust docs-to-docs consistency alone. The source of truth is the shipped code and behavior, not whether two markdown files agree with each other.
|
|
69
|
-
- Do not leave stale future-tense claims behind after a feature ships or is cut. Docs drift often shows up as roadmap language that quietly became false.
|
|
70
|
-
- Do not update prose without checking commands, routes, config names, and examples. Small copied snippets are often where docs rot first.
|
|
71
|
-
- Do not invent certainty when the right doc shape is unclear. Flag the mismatch instead of bluffing a final answer.
|
|
72
|
-
- After touching routed docs, always refresh the generated docs/context layer so the repo’s index and bootstrap bundle match the new reality.
|
|
73
|
-
|
|
74
|
-
## Keep This Skill Sharp
|
|
75
|
-
|
|
76
|
-
- After meaningful runs, add new gotchas when the same docs-drift pattern, broken example shape, or stale-claim mistake keeps recurring.
|
|
77
|
-
- Tighten the description if the skill misses real prompts like "sync the docs" or fires on requests that are really about repo-memory cleanup instead.
|
|
78
|
-
- If the skill starts needing detailed provider-specific or command-heavy guidance, move that detail into references instead of bloating the hub file.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Docs Sync"
|
|
3
|
-
short_description: "Audit docs against the real codebase"
|
|
4
|
-
default_prompt: "Use $docs-sync to audit routed docs against the actual codebase and shipped behavior, then update or flag any missing, incorrect, or outdated documentation."
|