@ksuchoi216/ahe 0.1.0 → 0.1.2
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 +170 -25
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,54 +1,199 @@
|
|
|
1
|
-
# Awesome Harness Engineering (
|
|
1
|
+
# Awesome Harness Engineering (AHE)
|
|
2
2
|
|
|
3
|
-
Codex chat
|
|
3
|
+
AHE automatically builds and maintains project harnesses through Codex chat. It installs a set of Codex skills into your workspace, then guides you through defining your project specification, tracking features, and managing progress — all via natural conversation.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
---
|
|
6
6
|
|
|
7
|
-
## Installation
|
|
7
|
+
## 1. Installation
|
|
8
8
|
|
|
9
|
-
###
|
|
10
|
-
To install the Codex skills in your current workspace, run:
|
|
9
|
+
### Quick Start (Recommended)
|
|
11
10
|
|
|
12
11
|
```bash
|
|
13
|
-
npx --yes --package
|
|
12
|
+
npx --yes --package=@ksuchoi216/ahe ahe install
|
|
14
13
|
```
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
### Global Install
|
|
17
16
|
|
|
18
17
|
```bash
|
|
19
|
-
npm install -g ahe
|
|
18
|
+
npm install -g @ksuchoi216/ahe
|
|
20
19
|
ahe install
|
|
21
20
|
```
|
|
22
21
|
|
|
23
|
-
###
|
|
24
|
-
|
|
22
|
+
### Local Development
|
|
23
|
+
|
|
24
|
+
After cloning the repository:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
npx --yes --package=file:. ahe install
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
### CLI Commands
|
|
31
|
+
|
|
32
|
+
| Command | Description |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `ahe install` | Install AHE skills into `.codex/` |
|
|
35
|
+
| `ahe install --force` | Overwrite existing installation |
|
|
36
|
+
| `ahe install --backup` | Backup existing installation before overwriting |
|
|
37
|
+
| `ahe uninstall` | Remove all AHE skills, shared assets, and hooks |
|
|
38
|
+
| `ahe doctor` | Check installation health and integrity |
|
|
39
|
+
| `ahe version` | Print the current version |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 2. How to Use
|
|
44
|
+
|
|
45
|
+
AHE works inside **Codex chat**. After installing via the terminal, open Codex chat in your workspace and type one of the commands below.
|
|
31
46
|
|
|
32
|
-
|
|
47
|
+
### Chat Commands
|
|
33
48
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
49
|
+
| Command | What it does |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `ahe init` | **Start a new harness.** Creates harness skeleton files, asks about your project, and writes the product specification. |
|
|
52
|
+
| `ahe` | **Continue existing work.** Inspects the current state, reports status, decides the next step, and keeps working. |
|
|
53
|
+
|
|
54
|
+
> **Note:** Only exact commands trigger AHE. Normal messages like "explain ahe" or "what does ahe do" will not start any workflow.
|
|
55
|
+
|
|
56
|
+
### Typical Workflow
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
# Step 1: Install AHE skills into your project
|
|
60
|
+
$ ahe install
|
|
61
|
+
|
|
62
|
+
# Step 2: Open Codex chat and initialize the harness
|
|
63
|
+
> ahe init
|
|
64
|
+
→ AHE asks about your project purpose, language, tech stack, constraints...
|
|
65
|
+
→ Creates AGENTS.md, feature-list.json, PROGRESS.md, docs/PRODUCT.md, etc.
|
|
66
|
+
|
|
67
|
+
# Step 3: Continue working — just type "ahe"
|
|
68
|
+
> ahe
|
|
69
|
+
→ AHE inspects the harness state and prints a status report
|
|
70
|
+
→ Picks the next unfinished feature or asks for missing info
|
|
71
|
+
→ Works on it, then updates tracking artifacts
|
|
72
|
+
|
|
73
|
+
# Step 4: Keep iterating
|
|
74
|
+
> ahe
|
|
75
|
+
→ Reports progress, moves to the next feature
|
|
76
|
+
→ Repeat until all features are done
|
|
77
|
+
```
|
|
37
78
|
|
|
38
|
-
|
|
79
|
+
---
|
|
39
80
|
|
|
40
|
-
|
|
81
|
+
## 3. How It Works
|
|
41
82
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
83
|
+
### Skills Overview
|
|
84
|
+
|
|
85
|
+
AHE is composed of five internal skills that coordinate automatically:
|
|
86
|
+
|
|
87
|
+
| Skill | Role |
|
|
88
|
+
|---|---|
|
|
89
|
+
| **ahe-init** | Entry point for new projects. Creates harness files, asks for project info, then calls ahe-spec and ahe-update. |
|
|
90
|
+
| **ahe-thinking** | Internal decision engine. Evaluates clarity on **Why** / **What** / **How** for each work unit and routes to the right action. |
|
|
91
|
+
| **ahe-conversation** | Internal question protocol. Asks exactly one focused question at a time when information is missing. |
|
|
92
|
+
| **ahe-spec** | Writes and updates `docs/PRODUCT.md` (canonical source of truth) and `docs/INSTRUCTIONS.md`. |
|
|
93
|
+
| **ahe-update** | Syncs tracking artifacts: `feature-list.json`, `PROGRESS.md`, `SESSION-HANDOFF.md`. |
|
|
94
|
+
|
|
95
|
+
### Process Flow
|
|
96
|
+
|
|
97
|
+
```mermaid
|
|
98
|
+
flowchart TD
|
|
99
|
+
Install["<b>Terminal</b><br/>ahe install"] --> Chat["Open Codex chat<br/>in the workspace"]
|
|
100
|
+
|
|
101
|
+
Chat --> Command{"What did you type?"}
|
|
102
|
+
Command -->|"ahe init"| Init["<b>ahe-init</b><br/>New-start workflow"]
|
|
103
|
+
Command -->|"ahe"| Router["<b>AHE Router</b><br/>Inspect harness & print status"]
|
|
104
|
+
Command -->|"other message"| Noop["No AHE workflow triggered"]
|
|
105
|
+
|
|
106
|
+
Router --> Classify{"Classify harness state"}
|
|
107
|
+
Classify -->|"Not enough spec"| Init
|
|
108
|
+
Classify -->|"Building features"| Feature["Continue next<br/>unfinished feature"]
|
|
109
|
+
Classify -->|"All completed"| AskNext["Ask user for<br/>the next task"]
|
|
110
|
+
|
|
111
|
+
Init --> Step1["<b>Step 1:</b> Setup<br/>AGENTS.md + templates"]
|
|
112
|
+
Step1 --> Step2["<b>Step 2: ahe-spec</b><br/>Write PRODUCT.md<br/>and INSTRUCTIONS.md"]
|
|
113
|
+
Step2 --> Step3["<b>Step 3: ahe-update</b><br/>Sync feature-list.json<br/>and PROGRESS.md"]
|
|
114
|
+
Step3 --> Done["Harness ready ✓"]
|
|
115
|
+
|
|
116
|
+
Feature --> Thinking["<b>ahe-thinking</b><br/>Check Why / What / How"]
|
|
117
|
+
Thinking --> Clear{"Clear enough<br/>to proceed?"}
|
|
118
|
+
Clear -->|"No"| Convo["<b>ahe-conversation</b><br/>Ask one focused question"]
|
|
119
|
+
Convo --> UserAnswer["User answers"]
|
|
120
|
+
UserAnswer --> Thinking
|
|
121
|
+
Clear -->|"Yes"| Execute["Execute the<br/>next safe step"]
|
|
122
|
+
Execute --> Update["<b>ahe-update</b><br/>Sync tracking artifacts"]
|
|
123
|
+
Update --> Done2["Ready for next<br/><code>ahe</code> command ✓"]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Detailed Steps
|
|
127
|
+
|
|
128
|
+
#### `ahe init` — New Start
|
|
129
|
+
|
|
130
|
+
1. Scans the workspace for existing harness files.
|
|
131
|
+
2. If files exist, asks the user what scope to restart (full restart, product-only, or custom).
|
|
132
|
+
3. Backs up affected files to `.ahe/backups/`.
|
|
133
|
+
4. Asks about project purpose, language, and tech stack.
|
|
134
|
+
5. Deploys template files (`AGENTS.md`, `PROGRESS.md`, `SESSION-HANDOFF.md`, `feature-list.json`, `init.sh`).
|
|
135
|
+
6. Calls **ahe-spec** → writes `docs/PRODUCT.md` and `docs/INSTRUCTIONS.md`.
|
|
136
|
+
7. Calls **ahe-update** → derives features and syncs tracking artifacts.
|
|
137
|
+
|
|
138
|
+
#### `ahe` — Continue Work
|
|
139
|
+
|
|
140
|
+
1. Hook injects the AHE router directive into the agent context.
|
|
141
|
+
2. Router inspects all harness files and prints a status table.
|
|
142
|
+
3. Classifies the current state:
|
|
143
|
+
- **"Not enough spec"** → routes to `ahe-init` to fill gaps.
|
|
144
|
+
- **"Building features"** → picks the next unfinished feature from `feature-list.json`.
|
|
145
|
+
- **"All completed"** → asks the user for the next task.
|
|
146
|
+
4. **ahe-thinking** checks clarity (Why / What / How) for the current work unit.
|
|
147
|
+
5. If unclear → **ahe-conversation** asks exactly one question, then re-evaluates.
|
|
148
|
+
6. If clear → executes the next safe step.
|
|
149
|
+
7. **ahe-update** syncs all tracking artifacts at the end.
|
|
150
|
+
|
|
151
|
+
#### Execution Loop
|
|
152
|
+
|
|
153
|
+
The core loop repeats until the work unit is done:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
thinking → conversation (if needed) → execution → thinking
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
45
160
|
|
|
46
161
|
## Project Structure
|
|
47
162
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
163
|
+
After `ahe install`, the following structure is added to your workspace:
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
your-project/
|
|
167
|
+
├── .codex/
|
|
168
|
+
│ ├── skills/
|
|
169
|
+
│ │ ├── ahe-init/ # New-start workflow skill
|
|
170
|
+
│ │ ├── ahe-conversation/ # Internal question protocol
|
|
171
|
+
│ │ ├── ahe-thinking/ # Internal decision engine
|
|
172
|
+
│ │ ├── ahe-spec/ # Specification writer
|
|
173
|
+
│ │ └── ahe-update/ # Tracking artifact syncer
|
|
174
|
+
│ ├── ahe-shared/
|
|
175
|
+
│ │ ├── templates/ # Harness file templates
|
|
176
|
+
│ │ └── schemas/ # Validation schemas
|
|
177
|
+
│ └── hooks/
|
|
178
|
+
│ ├── hooks.json # Chat command trigger patterns
|
|
179
|
+
│ └── ahe-hook.js # Hook script that injects directives
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
After `ahe init`, the harness files are created in your project root:
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
your-project/
|
|
186
|
+
├── docs/
|
|
187
|
+
│ ├── PRODUCT.md # Product specification (source of truth)
|
|
188
|
+
│ └── INSTRUCTIONS.md # Implementation instructions
|
|
189
|
+
├── .ahe/
|
|
190
|
+
│ └── process_status.json # Workflow state persistence
|
|
191
|
+
├── AGENTS.md # Project objectives and agent rules
|
|
192
|
+
├── feature-list.json # Feature state tracker (derived from PRODUCT.md)
|
|
193
|
+
├── PROGRESS.md # Session continuity log
|
|
194
|
+
├── SESSION-HANDOFF.md # Handoff notes between sessions
|
|
195
|
+
└── init.sh # Standard startup/verification script
|
|
196
|
+
```
|
|
52
197
|
|
|
53
198
|
## Agent Working Rules
|
|
54
199
|
|