@ksuchoi216/ahe 0.1.7 → 0.1.10
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 +62 -19
- package/bin/ahe +34 -233
- package/package.json +7 -4
- package/packages/ahe-antigravity/bin/ahe-antigravity +325 -0
- package/packages/ahe-antigravity/package.json +7 -0
- package/packages/ahe-antigravity/skills/ahe-git/SKILL.md +35 -0
- package/packages/ahe-antigravity/skills/ahe-ship/SKILL.md +28 -0
- package/packages/ahe-antigravity/skills/ahe-ship/scripts/post-ship-hook.sh +12 -0
- package/packages/ahe-codex/.codex/agents/ahe-harness-manager.toml +19 -0
- package/{.codex → packages/ahe-codex/.codex}/ahe-shared/templates/AGENTS.md +11 -10
- package/{.codex/ahe-shared/templates/PRODUCT.md → packages/ahe-codex/.codex/ahe-shared/templates/product.md} +1 -1
- package/packages/ahe-codex/.codex/hooks/ahe-hook.js +296 -0
- package/packages/ahe-codex/.codex/skills/ahe/SKILL.md +34 -0
- package/{.codex/skills/ahe-compression → packages/ahe-codex/.codex/skills/ahe-compress}/SKILL.md +39 -16
- package/{.codex/skills/ahe-compression → packages/ahe-codex/.codex/skills/ahe-compress}/agents/openai.yaml +1 -1
- package/{.codex/skills/ahe-compression → packages/ahe-codex/.codex/skills/ahe-compress}/scripts/check-harness-size.sh +18 -6
- package/packages/ahe-codex/.codex/skills/ahe-compress/scripts/detect_stale_tests.py +30 -0
- package/{.codex/skills/ahe-conversator → packages/ahe-codex/.codex/skills/ahe-converse}/SKILL.md +6 -6
- package/packages/ahe-codex/.codex/skills/ahe-feature/SKILL.md +25 -0
- package/packages/ahe-codex/.codex/skills/ahe-fix/SKILL.md +59 -0
- package/packages/ahe-codex/.codex/skills/ahe-fix/scripts/write_fix_plan.py +108 -0
- package/packages/ahe-codex/.codex/skills/ahe-git/SKILL.md +34 -0
- package/packages/ahe-codex/.codex/skills/ahe-harness/SKILL.md +128 -0
- package/packages/ahe-codex/.codex/skills/ahe-harness-checker/SKILL.md +46 -0
- package/{.codex/skills/ahe-init → packages/ahe-codex/.codex/skills/ahe-new}/SKILL.md +32 -21
- package/packages/ahe-codex/.codex/skills/ahe-overview/SKILL.md +119 -0
- package/packages/ahe-codex/.codex/skills/ahe-review/SKILL.md +43 -0
- package/packages/ahe-codex/.codex/skills/ahe-ship/SKILL.md +58 -0
- package/packages/ahe-codex/.codex/skills/ahe-ship/agents/openai.yaml +4 -0
- package/packages/ahe-codex/.codex/skills/ahe-ship/scripts/write_plan.py +107 -0
- package/packages/ahe-codex/.codex/skills/ahe-solve/SKILL.md +30 -0
- package/packages/ahe-codex/.codex/skills/ahe-think/SKILL.md +114 -0
- package/packages/ahe-codex/bin/ahe-codex +398 -0
- package/packages/ahe-codex/package.json +7 -0
- package/.codex/hooks/ahe-hook.js +0 -195
- package/.codex/skills/ahe-harness/SKILL.md +0 -115
- package/.codex/skills/ahe-reviewer/SKILL.md +0 -35
- package/.codex/skills/ahe-solver/SKILL.md +0 -24
- package/.codex/skills/ahe-thinker/SKILL.md +0 -80
- /package/{.codex → packages/ahe-codex/.codex}/ahe-shared/config.yaml +0 -0
- /package/{.codex → packages/ahe-codex/.codex}/ahe-shared/schemas/feature-list-schema.json +0 -0
- /package/{.codex → packages/ahe-codex/.codex}/ahe-shared/schemas/process_status.schema.json +0 -0
- /package/{.codex → packages/ahe-codex/.codex}/ahe-shared/templates/INSTRUCTIONS.md +0 -0
- /package/{.codex → packages/ahe-codex/.codex}/ahe-shared/templates/feature-list.json +0 -0
- /package/{.codex → packages/ahe-codex/.codex}/ahe-shared/templates/init.sh +0 -0
- /package/{.codex/ahe-shared/templates/PROGRESS.md → packages/ahe-codex/.codex/ahe-shared/templates/progress.md} +0 -0
- /package/{.codex/ahe-shared/templates/SESSION-HANDOFF.md → packages/ahe-codex/.codex/ahe-shared/templates/session-handoff.md} +0 -0
- /package/{.codex → packages/ahe-codex/.codex}/hooks/hooks.json +0 -0
package/.codex/hooks/ahe-hook.js
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
const AHE_DIRECTIVE_MARKER = "<ahe-mode>";
|
|
3
|
-
|
|
4
|
-
const STATUS_TABLE_LINES = [
|
|
5
|
-
" - Start the response with a concise status report table.",
|
|
6
|
-
" - Use this consistent Markdown table format:",
|
|
7
|
-
" | Item | Content |",
|
|
8
|
-
" |---|---|",
|
|
9
|
-
" | AGENTS.md | Exists/missing, purpose status, and any obvious issue. |",
|
|
10
|
-
" | PRODUCT.md | Exists/missing, completion state, and whether product scope needs work. |",
|
|
11
|
-
" | INSTRUCTIONS.md | Exists/missing, and whether instruction boundaries need work. |",
|
|
12
|
-
" | feature-list.json | Valid/missing/invalid, unfinished feature summary, and all-done status. |",
|
|
13
|
-
" | PROGRESS.md | Exists/missing and current session state. |",
|
|
14
|
-
" - Keep the table short and readable.",
|
|
15
|
-
" - Do not include the next step inside the table.",
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
const COMMON_ROUTING_LINES = [
|
|
19
|
-
"1. Run CodeGraph preflight before inspecting harness status:",
|
|
20
|
-
" - Check whether the CodeGraph CLI is installed with `command -v codegraph`.",
|
|
21
|
-
" - If the `codegraph` command is not installed, report `NOT INSTALLATION of codegraph`, skip `codegraph init` and `codegraph sync`, and continue with normal repo inspection.",
|
|
22
|
-
" - If `.codegraph/` does not exist, run `codegraph init` before reviewing code.",
|
|
23
|
-
" - If `.codegraph/` exists, run `codegraph sync` before reviewing code.",
|
|
24
|
-
"",
|
|
25
|
-
"2. Inspect current harness state before choosing a workflow:",
|
|
26
|
-
" - Check `AGENTS.md`.",
|
|
27
|
-
" - Check `docs/PRODUCT.md` and `docs/INSTRUCTIONS.md` as the product/specification source of truth.",
|
|
28
|
-
" - Check `feature-list.json` as a derived tracker.",
|
|
29
|
-
" - Check `PROGRESS.md`.",
|
|
30
|
-
" - Use `ahe-thinker` as the internal decision layer before choosing the next action.",
|
|
31
|
-
" - Before reading large harness files wholesale, let `ahe-thinker` run the `ahe-compression` size detector and call `ahe-compression` if compression is required.",
|
|
32
|
-
"",
|
|
33
|
-
"3. Review code through CodeGraph when available:",
|
|
34
|
-
" - Prefer CodeGraph MCP or CodeGraph exploration for code review and impact context after the preflight command succeeds.",
|
|
35
|
-
" - If CodeGraph is not installed, skip CodeGraph review and rely on normal repo inspection.",
|
|
36
|
-
"",
|
|
37
|
-
"4. Make the first response a simple harness engineering status report table before proceeding:",
|
|
38
|
-
...STATUS_TABLE_LINES,
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
const AHE_PROGRESS_DIRECTIVE = [
|
|
42
|
-
AHE_DIRECTIVE_MARKER,
|
|
43
|
-
"AHE automatic operation activated.",
|
|
44
|
-
"",
|
|
45
|
-
"The user sent the exact AHE command. Operate as the Awesome Harness Engineering router:",
|
|
46
|
-
"",
|
|
47
|
-
...COMMON_ROUTING_LINES,
|
|
48
|
-
"",
|
|
49
|
-
"5. Decide the next AHE workflow with `ahe-thinker`:",
|
|
50
|
-
" - If no harness files exist, route to `$ahe-init`.",
|
|
51
|
-
" - If `docs/PRODUCT.md` or `docs/INSTRUCTIONS.md` is missing or empty, classify the state as `harness engineering not enough`.",
|
|
52
|
-
" - If `feature-list.json` is missing or invalid, generating an empty one from template is allowed, but do not write specific features until `docs/PRODUCT.md` and `docs/INSTRUCTIONS.md` are created and organized.",
|
|
53
|
-
" - If any feature in `feature-list.json` has a status other than `done`, classify the state as `in the middle of building features` and continue the first unfinished feature whose dependencies are satisfied.",
|
|
54
|
-
" - If all features are `done` and no obvious harness gap remains, classify the state as `completed all` and ask the user for the next task.",
|
|
55
|
-
" - Call `ahe-reviewer` when repo or code understanding is needed.",
|
|
56
|
-
" - Call `ahe-conversator` when the next safe step is blocked on user input.",
|
|
57
|
-
" - Call `ahe-harness` when product docs, instructions, tracking, todo sync, or compression-aware harness maintenance must change.",
|
|
58
|
-
" - Call `ahe-solver` when the next job is solving or planning a feature.",
|
|
59
|
-
"",
|
|
60
|
-
"6. After the table, classify the harness into exactly one state.",
|
|
61
|
-
" - Use exactly one state: `harness engineering not enough`, `in the middle of building features`, or `completed all`.",
|
|
62
|
-
" - Do not include the next step inside the table.",
|
|
63
|
-
" - Continue automatically after classification.",
|
|
64
|
-
];
|
|
65
|
-
|
|
66
|
-
const AHE_INIT_DIRECTIVE = [
|
|
67
|
-
AHE_DIRECTIVE_MARKER,
|
|
68
|
-
"AHE automatic operation activated.",
|
|
69
|
-
"",
|
|
70
|
-
"The user sent the exact AHE init command. Treat this as a possible new start request:",
|
|
71
|
-
"",
|
|
72
|
-
"1. Route to `$ahe-init` first.",
|
|
73
|
-
"2. If no AHE-managed harness files exist, start initialization normally.",
|
|
74
|
-
"3. If any AHE-managed harness file exists, read the existing files, summarize the current project purpose and product specification state, and ask what restart scope the user wants.",
|
|
75
|
-
"4. Do not remove, overwrite, or refresh existing harness files before the user answers the restart-scope question.",
|
|
76
|
-
"5. If the chosen restart scope replaces prior harness history, summarize that replaced state in the refreshed tracking artifacts instead of creating backup copies.",
|
|
77
|
-
"6. Interpret the restart scope from the user's free-form answer; examples like `purpose` and `product` are not a closed list.",
|
|
78
|
-
"7. Product/instructions specification details belong in `docs/PRODUCT.md` and `docs/INSTRUCTIONS.md`, not `AGENTS.md`.",
|
|
79
|
-
"8. After setup, call `ahe-harness` to build the initial product, instructions, and tracking state.",
|
|
80
|
-
"9. Use `ahe-thinker` before clarification when the next setup step is uncertain.",
|
|
81
|
-
"10. If clarification is needed, call `ahe-conversator` for the exact missing detail.",
|
|
82
|
-
].join("\n");
|
|
83
|
-
|
|
84
|
-
function getQueryDirective(prompt) {
|
|
85
|
-
return [
|
|
86
|
-
AHE_DIRECTIVE_MARKER,
|
|
87
|
-
"AHE automatic operation activated.",
|
|
88
|
-
"",
|
|
89
|
-
`Original prompt: "${prompt}"`,
|
|
90
|
-
"",
|
|
91
|
-
"The user sent an explicit AHE query. Route it through `ahe-thinker`:",
|
|
92
|
-
"",
|
|
93
|
-
...COMMON_ROUTING_LINES,
|
|
94
|
-
"",
|
|
95
|
-
"5. Decide the next AHE workflow with `ahe-thinker` based on the original prompt:",
|
|
96
|
-
" - Use `ahe-reviewer` for code or harness review work.",
|
|
97
|
-
" - Use `ahe-harness` for product, instructions, progress, feature-list, todo, or compression maintenance.",
|
|
98
|
-
" - For `ahe compress feature-list`, replace old completed feature entries with one summarized done feature, preserve unfinished details, and reconcile `feature-list.json` against `docs/PRODUCT.md`.",
|
|
99
|
-
" - If no new feature can be derived from `docs/PRODUCT.md`, call `ahe-conversator` to ask what next feature, product direction, or goal should be tracked.",
|
|
100
|
-
" - Use `ahe-solver` for feature-solving work.",
|
|
101
|
-
" - If multiple plausible next steps remain, use `ahe-conversator` to ask the minimum question needed.",
|
|
102
|
-
"",
|
|
103
|
-
"6. After the table, classify the harness into exactly one state.",
|
|
104
|
-
" - Use exactly one state: `harness engineering not enough`, `in the middle of building features`, or `completed all`.",
|
|
105
|
-
" - Do not include the next step inside the table.",
|
|
106
|
-
" - Continue automatically after classification.",
|
|
107
|
-
].join("\n");
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function normalizePrompt(prompt) {
|
|
111
|
-
return prompt.trim().toLowerCase();
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function isExactAheCommand(prompt) {
|
|
115
|
-
return normalizePrompt(prompt) === "ahe";
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function isExactAheInitCommand(prompt) {
|
|
119
|
-
const normalizedPrompt = normalizePrompt(prompt);
|
|
120
|
-
return (
|
|
121
|
-
normalizedPrompt === "ahe init" ||
|
|
122
|
-
normalizedPrompt === "ahe-init" ||
|
|
123
|
-
normalizedPrompt === "$ahe-init"
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
function isExplicitAheQuery(prompt) {
|
|
128
|
-
const normalizedPrompt = normalizePrompt(prompt);
|
|
129
|
-
if (isExactAheCommand(prompt) || isExactAheInitCommand(prompt)) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
return normalizedPrompt.startsWith("ahe ");
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
async function main() {
|
|
136
|
-
let raw = "";
|
|
137
|
-
process.stdin.setEncoding("utf8");
|
|
138
|
-
for await (const chunk of process.stdin) {
|
|
139
|
-
raw += chunk;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
if (!raw.trim()) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
let parsed;
|
|
147
|
-
try {
|
|
148
|
-
parsed = JSON.parse(raw);
|
|
149
|
-
} catch {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (
|
|
154
|
-
parsed &&
|
|
155
|
-
parsed.hook_event_name === "UserPromptSubmit" &&
|
|
156
|
-
typeof parsed.prompt === "string"
|
|
157
|
-
) {
|
|
158
|
-
if (isExactAheCommand(parsed.prompt)) {
|
|
159
|
-
process.stdout.write(
|
|
160
|
-
JSON.stringify({
|
|
161
|
-
hookSpecificOutput: {
|
|
162
|
-
hookEventName: "UserPromptSubmit",
|
|
163
|
-
additionalContext: AHE_PROGRESS_DIRECTIVE.join("\n"),
|
|
164
|
-
},
|
|
165
|
-
}) + "\n"
|
|
166
|
-
);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
if (isExactAheInitCommand(parsed.prompt)) {
|
|
171
|
-
process.stdout.write(
|
|
172
|
-
JSON.stringify({
|
|
173
|
-
hookSpecificOutput: {
|
|
174
|
-
hookEventName: "UserPromptSubmit",
|
|
175
|
-
additionalContext: AHE_INIT_DIRECTIVE,
|
|
176
|
-
},
|
|
177
|
-
}) + "\n"
|
|
178
|
-
);
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
if (isExplicitAheQuery(parsed.prompt)) {
|
|
183
|
-
process.stdout.write(
|
|
184
|
-
JSON.stringify({
|
|
185
|
-
hookSpecificOutput: {
|
|
186
|
-
hookEventName: "UserPromptSubmit",
|
|
187
|
-
additionalContext: getQueryDirective(parsed.prompt),
|
|
188
|
-
},
|
|
189
|
-
}) + "\n"
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
main().catch(() => {});
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ahe-harness
|
|
3
|
-
description: Internal AHE harness workflow for managing product docs, instructions, feature tracking, session artifacts, todo sync, and compression-aware maintenance.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AHE Harness
|
|
7
|
-
|
|
8
|
-
This is an internal AHE workflow skill, not a user-facing command.
|
|
9
|
-
|
|
10
|
-
Do not treat `$ahe-harness` as a user command.
|
|
11
|
-
Use it when `ahe-thinker` or another worker decides that harness artifacts must
|
|
12
|
-
be created, updated, reconciled, or compressed.
|
|
13
|
-
|
|
14
|
-
## Command Workflow: ahe-harness
|
|
15
|
-
|
|
16
|
-
### Harness Inspection
|
|
17
|
-
|
|
18
|
-
- Read `docs/PRODUCT.md` if it exists.
|
|
19
|
-
- Read `docs/INSTRUCTIONS.md` if it exists.
|
|
20
|
-
- Read `AGENTS.md`, `feature-list.json`, `PROGRESS.md`, `SESSION-HANDOFF.md`,
|
|
21
|
-
and `docs/todo.md` when they exist.
|
|
22
|
-
- Read `.ahe/process_status.json` when it exists.
|
|
23
|
-
- Treat `docs/PRODUCT.md` as the canonical source of truth and
|
|
24
|
-
`feature-list.json` as a derived tracker.
|
|
25
|
-
|
|
26
|
-
### Harness Decision Paths
|
|
27
|
-
|
|
28
|
-
- Clarify product goal, scope, and success criteria when `docs/PRODUCT.md`
|
|
29
|
-
needs to change.
|
|
30
|
-
- Clarify project instructions when `docs/INSTRUCTIONS.md` needs to change.
|
|
31
|
-
- Clarify what next feature or goal should be tracked when the next work item is
|
|
32
|
-
unclear.
|
|
33
|
-
- `docs/PRODUCT.md` is the canonical home for product specification details collected during `ahe init`.
|
|
34
|
-
- Write product behavior, scope, requirements, success criteria, and workflow details into `docs/PRODUCT.md`.
|
|
35
|
-
- `docs/PRODUCT.md` is the canonical source of truth. Concrete feature items for `feature-list.json` must be derived from it only after it has been populated.
|
|
36
|
-
- Do not move product specification details into `AGENTS.md`.
|
|
37
|
-
- Update only the relevant docs among `docs/PRODUCT.md` and
|
|
38
|
-
`docs/INSTRUCTIONS.md`.
|
|
39
|
-
- If the user is adding new work, append it into the last `## TODO` section of
|
|
40
|
-
`docs/todo.md`, create that section when needed, and update
|
|
41
|
-
`feature-list.json`.
|
|
42
|
-
- Apply the queued `docs/todo.md` content to `docs/PRODUCT.md`.
|
|
43
|
-
- Remove the applied content from `docs/todo.md` because that todo content is
|
|
44
|
-
already reflected in `docs/PRODUCT.md`.
|
|
45
|
-
- Update `feature-list.json` to derive the specific feature items from the updated `docs/PRODUCT.md`.
|
|
46
|
-
- Update `PROGRESS.md`.
|
|
47
|
-
- Update `SESSION-HANDOFF.md`.
|
|
48
|
-
- For `ahe compress feature-list`, replace old completed feature entries with one summarized done feature.
|
|
49
|
-
- Keep the summarized feature valid for the existing schema by preserving its
|
|
50
|
-
own `id`, `name`, `description`, `dependencies`, `status`, and short
|
|
51
|
-
evidence.
|
|
52
|
-
- Preserve unfinished, blocked, or active feature items in full detail.
|
|
53
|
-
- Reconcile `feature-list.json` against `docs/PRODUCT.md` after compression.
|
|
54
|
-
- If no new feature can be derived from `docs/PRODUCT.md`, call `ahe-conversator` to ask what next feature, product direction, or goal should be tracked.
|
|
55
|
-
- Call `ahe-reviewer` directly when code or progress evidence must be checked
|
|
56
|
-
before updating harness files.
|
|
57
|
-
|
|
58
|
-
### Harness Completion
|
|
59
|
-
|
|
60
|
-
- Keep `feature-list.json` valid JSON.
|
|
61
|
-
- Do not create backup copies when compressing harness history.
|
|
62
|
-
- Keep `PROGRESS.md` focused on current work, decisions that still matter,
|
|
63
|
-
blockers, and recent verification evidence.
|
|
64
|
-
- Keep `SESSION-HANDOFF.md` focused on the next-session startup path.
|
|
65
|
-
- Keep `.ahe/process_status.json` aligned with the active workflow.
|
|
66
|
-
|
|
67
|
-
## Clarification Rule
|
|
68
|
-
|
|
69
|
-
When the next harness step is not clear, follow the `ahe-thinker` protocol first. If `ahe-thinker` finds missing information, follow the `ahe-conversator` protocol. Ask again recursively using a Codex-supported structured response request, provide 2-3 meaningful mutually exclusive options
|
|
70
|
-
when possible, and allow custom input when predefined options are not enough.
|
|
71
|
-
|
|
72
|
-
### User Response Target
|
|
73
|
-
|
|
74
|
-
- Collect the product, instruction, tracking, or next-feature details required
|
|
75
|
-
to update harness artifacts safely.
|
|
76
|
-
|
|
77
|
-
### Questions to Ask
|
|
78
|
-
|
|
79
|
-
- Ask who the product is for and what problem it solves when product intent is
|
|
80
|
-
unclear.
|
|
81
|
-
- Ask what behavior, scope boundaries, and success criteria should be
|
|
82
|
-
documented.
|
|
83
|
-
- Ask what rule, practice, or guideline belongs in `docs/INSTRUCTIONS.md`.
|
|
84
|
-
- Ask what work should be added next when `docs/PRODUCT.md` does not imply a new
|
|
85
|
-
feature safely.
|
|
86
|
-
|
|
87
|
-
### Clarification Criteria
|
|
88
|
-
|
|
89
|
-
- The answer must be concrete enough to update the relevant harness files
|
|
90
|
-
without guessing.
|
|
91
|
-
- The answer must describe actionable work, the affected area, and the intended
|
|
92
|
-
outcome when queuing a todo item.
|
|
93
|
-
|
|
94
|
-
### Re-ask When
|
|
95
|
-
|
|
96
|
-
- Ask again when the answer is vague, contradictory, or incomplete.
|
|
97
|
-
- Ask again when the response names a topic without enough detail to update the
|
|
98
|
-
harness safely.
|
|
99
|
-
|
|
100
|
-
## Session Tracking and Handoff Sync
|
|
101
|
-
|
|
102
|
-
### Tracking Update Rules
|
|
103
|
-
|
|
104
|
-
- Update `.ahe/process_status.json` at workflow start.
|
|
105
|
-
- Update `.ahe/process_status.json` after every answered question.
|
|
106
|
-
- Refresh `updated_at` every time workflow state changes.
|
|
107
|
-
- Keep `current_command`, `current_step`, and `workflow_complete` aligned with the active workflow state.
|
|
108
|
-
- Keep the `files` status map aligned with the actual workspace files.
|
|
109
|
-
|
|
110
|
-
### Progress and Handoff Content Requirements
|
|
111
|
-
|
|
112
|
-
- Update `PROGRESS.md` whenever the active feature, workflow status, blockers, or verification state changes.
|
|
113
|
-
- Update `SESSION-HANDOFF.md` whenever the current objective, completed work, important files, verification evidence, or recommended next step changes.
|
|
114
|
-
- PROGRESS.md must reflect the current active feature and latest completed work.
|
|
115
|
-
- SESSION-HANDOFF.md must leave the next Codex session with a concrete startup path.
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ahe-reviewer
|
|
3
|
-
description: Internal AHE review workflow for understanding repo code, harness files, and CodeGraph context before another agent acts.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AHE Reviewer
|
|
7
|
-
|
|
8
|
-
This is an internal AHE workflow skill, not a user-facing command.
|
|
9
|
-
|
|
10
|
-
Do not treat `$ahe-reviewer` as a user command.
|
|
11
|
-
Use it when `ahe-thinker` or another worker needs evidence from code or harness
|
|
12
|
-
state before deciding what to do next.
|
|
13
|
-
|
|
14
|
-
## Review Scope
|
|
15
|
-
|
|
16
|
-
- Inspect repo code, harness files, verification history, and feature progress.
|
|
17
|
-
- If `.codegraph/` exists, prefer `.codegraph` or CodeGraph-backed review
|
|
18
|
-
context when available.
|
|
19
|
-
- Check `AGENTS.md`, `docs/PRODUCT.md`, `docs/INSTRUCTIONS.md`,
|
|
20
|
-
`feature-list.json`, `PROGRESS.md`, `SESSION-HANDOFF.md`, and `docs/todo.md`
|
|
21
|
-
when the question is about harness state.
|
|
22
|
-
|
|
23
|
-
## Handoffs
|
|
24
|
-
|
|
25
|
-
- Report findings back to `ahe-thinker` by default.
|
|
26
|
-
- Call `ahe-harness` directly when review finds harness drift, stale tracking,
|
|
27
|
-
or Product.md / feature-list mismatches.
|
|
28
|
-
- Call `ahe-conversator` only when the missing information must come from the
|
|
29
|
-
user.
|
|
30
|
-
|
|
31
|
-
## Output
|
|
32
|
-
|
|
33
|
-
- State what was reviewed.
|
|
34
|
-
- State the relevant evidence or mismatch.
|
|
35
|
-
- State the recommended next agent.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ahe-solver
|
|
3
|
-
description: Internal AHE feature-solving workflow for dividing, planning, and solving feature work after the active goal is clear enough.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AHE Solver
|
|
7
|
-
|
|
8
|
-
This is an internal AHE workflow skill, not a user-facing command.
|
|
9
|
-
|
|
10
|
-
Do not treat `$ahe-solver` as a user command.
|
|
11
|
-
Use it when `ahe-thinker` decides that the next job is building or planning a
|
|
12
|
-
feature.
|
|
13
|
-
|
|
14
|
-
## Command Workflow: ahe-solver
|
|
15
|
-
|
|
16
|
-
- Read the active feature context from `docs/PRODUCT.md`, `feature-list.json`,
|
|
17
|
-
`PROGRESS.md`, and any relevant code files.
|
|
18
|
-
- Divide broad work into smaller problems when useful.
|
|
19
|
-
- Plan each smaller problem before implementation.
|
|
20
|
-
- Call `ahe-reviewer` when repo or code understanding is needed.
|
|
21
|
-
- Call `ahe-conversator` when feature requirements, scope, or success criteria
|
|
22
|
-
are still unclear.
|
|
23
|
-
- Report the solved step, remaining work, and recommended next agent back to
|
|
24
|
-
`ahe-thinker`.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ahe-thinker
|
|
3
|
-
description: Internal AHE orchestration protocol for routing exact `ahe` and explicit `ahe <query>` requests through the AHE agent network.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AHE Thinker
|
|
7
|
-
|
|
8
|
-
This is an internal AHE workflow skill, not a user-facing command.
|
|
9
|
-
|
|
10
|
-
Do not treat `$ahe-thinker` as a user command.
|
|
11
|
-
Use it as the central decision layer for AHE work.
|
|
12
|
-
|
|
13
|
-
## Purpose
|
|
14
|
-
|
|
15
|
-
- Judge what is missing before another agent acts.
|
|
16
|
-
- Judge the active `project`, `feature`, or `sub-feature`.
|
|
17
|
-
- Decide which of `Why`, `What`, and `How` are still missing.
|
|
18
|
-
- Choose the next internal agent: `ahe-reviewer`, `ahe-conversator`,
|
|
19
|
-
`ahe-harness`, or `ahe-solver`.
|
|
20
|
-
- Receive each agent result, reassess the state, and decide the next step.
|
|
21
|
-
|
|
22
|
-
## Routing Inputs
|
|
23
|
-
|
|
24
|
-
- Exact `ahe` means continue existing harness work.
|
|
25
|
-
- Exact `ahe init`, exact `ahe-init`, and exact `$ahe-init` stay on the
|
|
26
|
-
`$ahe-init` path.
|
|
27
|
-
- Explicit `ahe <query>` means route the query through `ahe-thinker`.
|
|
28
|
-
- Broad non-prefixed prompts must not activate AHE.
|
|
29
|
-
|
|
30
|
-
## Size Preflight
|
|
31
|
-
|
|
32
|
-
- Before reading full harness files, run
|
|
33
|
-
`sh .codex/skills/ahe-compression/scripts/check-harness-size.sh`.
|
|
34
|
-
- If the detector exits with `COMPRESSION_REQUIRED` or code `2`, call
|
|
35
|
-
`ahe-compression` before normal routing.
|
|
36
|
-
- Do not read oversized harness files wholesale before compression routing is
|
|
37
|
-
settled.
|
|
38
|
-
|
|
39
|
-
## Decision Rules
|
|
40
|
-
|
|
41
|
-
- For a `project`, require `Why`, `What`, and `How` by default.
|
|
42
|
-
- For a `feature` or `sub-feature`, require only the minimum of `Why`, `What`,
|
|
43
|
-
and `How` needed to proceed safely.
|
|
44
|
-
- If the need is understanding repo code, harness drift, progress evidence, or
|
|
45
|
-
CodeGraph context, call `ahe-reviewer`.
|
|
46
|
-
- If the need is user clarification, call `ahe-conversator`.
|
|
47
|
-
- If the need is updating harness artifacts, product docs, feature tracking,
|
|
48
|
-
todo sync, or compression of completed history, call `ahe-harness`.
|
|
49
|
-
- If the need is solving or decomposing feature work, call `ahe-solver`.
|
|
50
|
-
|
|
51
|
-
## Interaction Model
|
|
52
|
-
|
|
53
|
-
- `ahe-thinker` is centered, but direct worker-to-worker calls are allowed when
|
|
54
|
-
they are the obvious next step.
|
|
55
|
-
- Typical loops:
|
|
56
|
-
- `ahe-thinker -> ahe-reviewer -> ahe-thinker`
|
|
57
|
-
- `ahe-thinker -> ahe-harness -> ahe-thinker`
|
|
58
|
-
- `ahe-thinker -> ahe-conversator -> ahe-thinker`
|
|
59
|
-
- `ahe-thinker -> ahe-solver -> ahe-thinker`
|
|
60
|
-
- Allowed direct handoffs include:
|
|
61
|
-
- `ahe-harness -> ahe-conversator`
|
|
62
|
-
- `ahe-solver -> ahe-reviewer`
|
|
63
|
-
- `ahe-reviewer -> ahe-harness`
|
|
64
|
-
- Every handoff must state the goal, reason, relevant files or context, and the
|
|
65
|
-
expected result.
|
|
66
|
-
|
|
67
|
-
## Broad Intent Routing
|
|
68
|
-
|
|
69
|
-
- Use `ahe-reviewer` for review-first requests.
|
|
70
|
-
- Use `ahe-harness` for product, instructions, progress, feature-list, todo, or
|
|
71
|
-
compression maintenance.
|
|
72
|
-
- Use `ahe-solver` for feature implementation planning or execution work.
|
|
73
|
-
- Use `ahe-conversator` when no safe next step exists without user input.
|
|
74
|
-
|
|
75
|
-
## Completion
|
|
76
|
-
|
|
77
|
-
- Continue to the next skill or next unfinished feature until the active unit is
|
|
78
|
-
resolved.
|
|
79
|
-
- Keep `docs/PRODUCT.md` as the canonical contract and `feature-list.json` as a
|
|
80
|
-
derived tracker.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|