@nurix/etna 0.15.7 → 0.16.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/bin/etna.js +64 -13
- package/data/harness-index.json +7 -5
- package/data/harnesses/code/CLAUDE.md +3 -7
- package/data/harnesses/code/agents/harness-manager.md +4 -4
- package/data/harnesses/code/agents/maintenance.md +1 -1
- package/data/harnesses/code/harness.json +4 -3
- package/data/harnesses/code/hooks/hooks.json +3 -17
- package/data/harnesses/code/hooks/prompt-recall.js +157 -0
- package/data/harnesses/code/hooks/session-reflect.js +283 -0
- package/data/harnesses/code/skills/distiller/SKILL.md +62 -60
- package/data/harnesses/code/skills/distiller/references/docs-mode.md +21 -21
- package/data/harnesses/code/skills/distiller/references/method.md +41 -41
- package/data/harnesses/code/skills/documentation/references/templates.md +20 -27
- package/data/harnesses/code-fable/CLAUDE.md +138 -0
- package/data/harnesses/code-fable/agents/brainstorm.md +35 -0
- package/data/harnesses/code-fable/agents/change-review.md +249 -0
- package/data/harnesses/code-fable/agents/harness-manager.md +193 -0
- package/data/harnesses/code-fable/agents/maintenance.md +123 -0
- package/data/harnesses/code-fable/agents/performance-review.md +218 -0
- package/data/harnesses/code-fable/agents/spec-mode.md +56 -0
- package/data/harnesses/code-fable/harness.json +7 -0
- package/data/harnesses/code-fable/hooks/hooks.json +27 -0
- package/data/harnesses/code-fable/hooks/lib/redact.js +37 -0
- package/data/harnesses/code-fable/hooks/prompt-recall.js +157 -0
- package/data/harnesses/code-fable/hooks/session-reflect.js +283 -0
- package/data/harnesses/code-fable/rules/general.md +96 -0
- package/data/harnesses/code-fable/rules/nomenclature.md +34 -0
- package/data/harnesses/code-fable/skills/boundary/SKILL.md +262 -0
- package/data/harnesses/code-fable/skills/boundary/references/boundary-taxonomy.md +734 -0
- package/data/harnesses/code-fable/skills/brainstorm/README.md +136 -0
- package/data/harnesses/code-fable/skills/brainstorm/SKILL.md +135 -0
- package/data/harnesses/code-fable/skills/brainstorm/harvest.md +26 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/backlog.md +39 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/build.md +37 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/decisions.md +29 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/doctrine.md +31 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/domain-model.md +25 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/glossary.md +19 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/milestones.md +43 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/non-goals.md +21 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/plan-doc.md +61 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/questions.md +35 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/references.md +28 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/rejected.md +29 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/state.md +8 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/tech.md +23 -0
- package/data/harnesses/code-fable/skills/brainstorm/templates/thesis.md +21 -0
- package/data/harnesses/code-fable/skills/distiller/SKILL.md +219 -0
- package/data/harnesses/code-fable/skills/distiller/references/docs-mode.md +526 -0
- package/data/harnesses/code-fable/skills/distiller/references/method.md +166 -0
- package/data/harnesses/code-fable/skills/documentation/SKILL.md +127 -0
- package/data/harnesses/code-fable/skills/documentation/references/examples.md +193 -0
- package/data/harnesses/code-fable/skills/documentation/references/style-guide.md +288 -0
- package/data/harnesses/code-fable/skills/documentation/references/templates.md +942 -0
- package/data/harnesses/code-fable/skills/workflow-mapper/SKILL.md +430 -0
- package/data/harnesses/code-fable/skills/workflow-mapper/references/patterns.md +214 -0
- package/data/harnesses/{re → discover}/CLAUDE.md +48 -33
- package/data/harnesses/{re → discover}/agents/api.md +3 -3
- package/data/harnesses/{re → discover}/agents/codebase.md +3 -3
- package/data/harnesses/{re → discover}/agents/community.md +3 -3
- package/data/harnesses/{re → discover}/agents/deployed-client-bundle.md +5 -5
- package/data/harnesses/{re → discover}/agents/distribution-artifacts.md +4 -4
- package/data/harnesses/{re → discover}/agents/docs.md +3 -3
- package/data/harnesses/{re → discover}/agents/infra-backend-fingerprint.md +2 -2
- package/data/harnesses/{re → discover}/agents/packages.md +3 -3
- package/data/harnesses/{re → discover}/agents/session.md +19 -11
- package/data/harnesses/{re → discover}/agents/website.md +3 -3
- package/data/harnesses/{re → discover}/agents/wire-capture.md +9 -7
- package/data/harnesses/discover/harness.json +7 -0
- package/data/harnesses/{re/rules/re-discovery.md → discover/rules/discovery.md} +54 -17
- package/data/harnesses/{re/rules/re-evaluation.md → discover/rules/evaluation.md} +12 -1
- package/data/harnesses/{re/rules/re-ingestion.md → discover/rules/ingestion.md} +192 -23
- package/data/harnesses/discover/rules/self-correction.md +177 -0
- package/data/harnesses/discover/rules/tradecraft.md +532 -0
- package/data/harnesses/hr/CLAUDE.md +91 -0
- package/data/harnesses/hr/harness.json +7 -0
- package/data/harnesses/hr/skills/interview-eval/SKILL.md +118 -0
- package/data/harnesses/hr/skills/interview-eval/TEMPLATE.md +124 -0
- package/data/harnesses/hr/skills/interview-eval/extract_session.py +418 -0
- package/data/harnesses/hr/skills/interview-eval/rubric.md +219 -0
- package/data/harnesses/kb-agi/harness.json +1 -0
- package/package.json +1 -1
- package/data/harnesses/code/hooks/post-commit.js +0 -136
- package/data/harnesses/code/hooks/post-tool-failure.js +0 -136
- package/data/harnesses/code/hooks/session-stop.js +0 -207
- package/data/harnesses/re/harness.json +0 -6
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# Documentation Style Guide
|
|
2
|
+
|
|
3
|
+
Writing rules for clear, maintainable documentation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Function Documentation
|
|
8
|
+
|
|
9
|
+
### Signature Format
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
### `functionName(param1, param2, options)`
|
|
13
|
+
|
|
14
|
+
**Goal:** One-line purpose
|
|
15
|
+
**Input:**
|
|
16
|
+
|
|
17
|
+
- `param1` (type) - Description
|
|
18
|
+
- `param2` (type, optional) - Description
|
|
19
|
+
**Output:** `{ field1, field2 }`
|
|
20
|
+
**Side Effects:** State updates, API calls, etc.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Parameter Rules
|
|
24
|
+
|
|
25
|
+
- Name + type + one-line purpose
|
|
26
|
+
- Mark optional params with `(type, optional)`
|
|
27
|
+
- Nest object properties:
|
|
28
|
+
```markdown
|
|
29
|
+
- `options` (object) - Configuration
|
|
30
|
+
- `options.retry` (boolean) - Enable retries
|
|
31
|
+
- `options.timeout` (number) - Timeout in ms
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Return Values
|
|
35
|
+
|
|
36
|
+
Always specify:
|
|
37
|
+
|
|
38
|
+
- Type: `Array<Object>`, `boolean`, `{ merged, changes }`
|
|
39
|
+
- Shape for objects/arrays
|
|
40
|
+
- Meaning: "True if sync successful"
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## State Documentation
|
|
45
|
+
|
|
46
|
+
### When to Document State
|
|
47
|
+
|
|
48
|
+
✅ Do:
|
|
49
|
+
|
|
50
|
+
- Redux persistence (localStorage, IndexedDB)
|
|
51
|
+
- Database schemas
|
|
52
|
+
- API request/response shapes
|
|
53
|
+
|
|
54
|
+
❌ Don't:
|
|
55
|
+
|
|
56
|
+
- Component-level state
|
|
57
|
+
- Derived/computed state
|
|
58
|
+
- Temporary UI state
|
|
59
|
+
|
|
60
|
+
### Format
|
|
61
|
+
|
|
62
|
+
````markdown
|
|
63
|
+
**Frontend (at persistence):**
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"activeField": "value"
|
|
68
|
+
// "deprecated": null // UNUSED: Remove in v3
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
````
|
|
72
|
+
|
|
73
|
+
**Storage:** localStorage key `state_key`
|
|
74
|
+
|
|
75
|
+
**Backend:**
|
|
76
|
+
|
|
77
|
+
```sql
|
|
78
|
+
model Table {
|
|
79
|
+
id String @id
|
|
80
|
+
data Json
|
|
81
|
+
// old String? // UNUSED: Legacy
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
````
|
|
86
|
+
|
|
87
|
+
### Mark Unused Keys
|
|
88
|
+
|
|
89
|
+
Always comment deprecated/unused fields:
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"active": [],
|
|
93
|
+
// "legacy": {} // UNUSED: Migrated to newField
|
|
94
|
+
}
|
|
95
|
+
````
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## ASCII Diagrams
|
|
100
|
+
|
|
101
|
+
### When to Use
|
|
102
|
+
|
|
103
|
+
- Data flows
|
|
104
|
+
- System architecture
|
|
105
|
+
- Component interactions
|
|
106
|
+
- Process flows
|
|
107
|
+
|
|
108
|
+
### Pattern
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
┌─────────────────────────────────────────┐
|
|
112
|
+
│ TITLE │
|
|
113
|
+
├─────────────────────────────────────────┤
|
|
114
|
+
│ │
|
|
115
|
+
│ ┌──────┐ ┌──────┐ ┌──────┐ │
|
|
116
|
+
│ │ A │────▶│ B │────▶│ C │ │
|
|
117
|
+
│ └──────┘ └──────┘ └──────┘ │
|
|
118
|
+
│ │ │ │
|
|
119
|
+
│ ▼ ▼ │
|
|
120
|
+
│ Detail Detail │
|
|
121
|
+
│ │
|
|
122
|
+
└─────────────────────────────────────────┘
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Characters
|
|
126
|
+
|
|
127
|
+
- Boxes: `┌─┐│└┘├┤┬┴┼`
|
|
128
|
+
- Arrows: `───▶` `◀───` `│▼` `│▲`
|
|
129
|
+
- Width: ~70 chars max
|
|
130
|
+
|
|
131
|
+
### UI Wireframes
|
|
132
|
+
|
|
133
|
+
For screen layouts (not data flows), use these conventions:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
**Route:** `path/:id`
|
|
137
|
+
**Tab:** Tab Name
|
|
138
|
+
|
|
139
|
+
┌────────────────────────────────────┐
|
|
140
|
+
│ Title [i]3 [Button]│
|
|
141
|
+
│ [i]Label [Tag1][Tag2][+Add] │
|
|
142
|
+
└────────────────────────────────────┘
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
- `[text]` = clickable button/badge
|
|
146
|
+
- `[i]` = icon (followed by label or count)
|
|
147
|
+
- `v` / `^` = expand/collapse indicator
|
|
148
|
+
- Show each UI state (collapsed/expanded) as separate diagrams
|
|
149
|
+
- Include Route/Tab context above wireframe
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Code Examples
|
|
154
|
+
|
|
155
|
+
### Rules
|
|
156
|
+
|
|
157
|
+
- Under 15 lines
|
|
158
|
+
- Show contracts, not implementations
|
|
159
|
+
- Use pseudocode for algorithms
|
|
160
|
+
|
|
161
|
+
✅ Good:
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
// Critical: Balanced brace matching
|
|
165
|
+
function extract(json) {
|
|
166
|
+
// Track brace depth
|
|
167
|
+
// Ignore braces inside strings
|
|
168
|
+
// Return complete objects only
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
❌ Bad: Full 50-line implementation
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Writing Style
|
|
177
|
+
|
|
178
|
+
### Voice
|
|
179
|
+
|
|
180
|
+
Use imperative/active:
|
|
181
|
+
|
|
182
|
+
- ✅ "Fetches data from server"
|
|
183
|
+
- ✅ "Returns array of objects"
|
|
184
|
+
- ❌ "This function is used to fetch"
|
|
185
|
+
- ❌ "An array is returned"
|
|
186
|
+
|
|
187
|
+
### When Prose Adds Value
|
|
188
|
+
|
|
189
|
+
Prose is valuable for context that contracts can't capture:
|
|
190
|
+
|
|
191
|
+
| Use Prose For | Example |
|
|
192
|
+
| -------------------- | ------------------------------------------------------------------------------------------------- |
|
|
193
|
+
| Section intros | "When the editor mounts, `useAppInit` is called with the `appId` from URL." |
|
|
194
|
+
| Non-obvious behavior | "The hook always fetches fresh data. There is no caching or version checking." |
|
|
195
|
+
| Design rationale | "Why parallel fetches? Each entity type is independent, reducing load time." |
|
|
196
|
+
| Edge cases | "If created then deleted before save, it's removed from `added[]` without adding to `removed[]`." |
|
|
197
|
+
| Current limitations | "This hook is not currently integrated into the main flow." |
|
|
198
|
+
| Usage context | "Used to show 'Unsaved' badge, warn before navigation, enable save buttons." |
|
|
199
|
+
|
|
200
|
+
### When to Avoid Prose
|
|
201
|
+
|
|
202
|
+
- Describing WHAT code does (use signatures instead)
|
|
203
|
+
- Step-by-step flows (use diagrams instead)
|
|
204
|
+
- Structured comparisons (use tables instead)
|
|
205
|
+
|
|
206
|
+
### Conciseness
|
|
207
|
+
|
|
208
|
+
One line when possible:
|
|
209
|
+
|
|
210
|
+
- ✅ "Merge server data with local changes using version-based conflict resolution"
|
|
211
|
+
- ❌ "This function takes the data from the server and also takes the local data..."
|
|
212
|
+
|
|
213
|
+
### Tables
|
|
214
|
+
|
|
215
|
+
Use for structured info:
|
|
216
|
+
|
|
217
|
+
```markdown
|
|
218
|
+
| Parameter | Type | Description |
|
|
219
|
+
| --------- | ------ | -------------- |
|
|
220
|
+
| `data` | object | Fresh from API |
|
|
221
|
+
| `local` | object | Current state |
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Structure
|
|
227
|
+
|
|
228
|
+
### Headers
|
|
229
|
+
|
|
230
|
+
```markdown
|
|
231
|
+
# Document Title (H1 - once)
|
|
232
|
+
|
|
233
|
+
## Major Section (H2)
|
|
234
|
+
|
|
235
|
+
### Subsection (H3)
|
|
236
|
+
|
|
237
|
+
#### Detail (H4 - sparingly)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Standard Layout
|
|
241
|
+
|
|
242
|
+
```markdown
|
|
243
|
+
# [Title]
|
|
244
|
+
|
|
245
|
+
**Goal:** One-line purpose
|
|
246
|
+
|
|
247
|
+
## Architecture
|
|
248
|
+
|
|
249
|
+
[Diagram + explanation]
|
|
250
|
+
|
|
251
|
+
## Key Functions
|
|
252
|
+
|
|
253
|
+
[Signatures and contracts]
|
|
254
|
+
|
|
255
|
+
## State
|
|
256
|
+
|
|
257
|
+
[Persistence shapes]
|
|
258
|
+
|
|
259
|
+
## Files
|
|
260
|
+
|
|
261
|
+
[Source file list]
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### File References
|
|
265
|
+
|
|
266
|
+
Always end with:
|
|
267
|
+
|
|
268
|
+
```markdown
|
|
269
|
+
## Files
|
|
270
|
+
|
|
271
|
+
- `src/path/main.js` - Core logic
|
|
272
|
+
- `src/path/hooks.js` - React hooks
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Summary
|
|
278
|
+
|
|
279
|
+
| Aspect | Rule |
|
|
280
|
+
| ---------- | ------------------------------- |
|
|
281
|
+
| Functions | Always include signatures |
|
|
282
|
+
| Parameters | Type + purpose |
|
|
283
|
+
| Returns | Type + shape |
|
|
284
|
+
| State | Persistence points only |
|
|
285
|
+
| Diagrams | ASCII for all flows |
|
|
286
|
+
| Code | Under 15 lines, contracts only |
|
|
287
|
+
| Voice | Imperative/active |
|
|
288
|
+
| Length | Concise, one line when possible |
|