@nurix/etna 0.18.22 → 0.18.24
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/data/harness-index.json +1 -5
- package/data/harnesses/code/CLAUDE.md +16 -27
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/rules/testing.md +1 -1
- package/data/harnesses/etna/CLAUDE.md +5 -14
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/rules/testing.md +1 -1
- package/package.json +1 -1
- package/data/harnesses/mobile/.prettierignore +0 -12
- package/data/harnesses/mobile/.prettierrc.json +0 -3
- package/data/harnesses/mobile/.vscode/settings.json +0 -10
- package/data/harnesses/mobile/CLAUDE.md +0 -151
- package/data/harnesses/mobile/agents/brainstorm.md +0 -35
- package/data/harnesses/mobile/agents/change-review.md +0 -251
- package/data/harnesses/mobile/agents/lld-mode.md +0 -56
- package/data/harnesses/mobile/agents/maintenance.md +0 -216
- package/data/harnesses/mobile/agents/performance-review.md +0 -223
- package/data/harnesses/mobile/harness.json +0 -11
- package/data/harnesses/mobile/hooks/generate-ownership-index.mjs +0 -148
- package/data/harnesses/mobile/hooks/hooks.json +0 -16
- package/data/harnesses/mobile/rules/database.md +0 -38
- package/data/harnesses/mobile/rules/general.md +0 -49
- package/data/harnesses/mobile/rules/nomenclature.md +0 -34
- package/data/harnesses/mobile/rules/nustack.md +0 -150
- package/data/harnesses/mobile/rules/react-native.md +0 -132
- package/data/harnesses/mobile/rules/testing.md +0 -25
- package/data/harnesses/mobile/rules/typescript.md +0 -40
- package/data/harnesses/mobile/skills/boundary/SKILL.md +0 -69
- package/data/harnesses/mobile/skills/boundary/references/index.md +0 -16
- package/data/harnesses/mobile/skills/boundary/references/mechanisms.md +0 -99
- package/data/harnesses/mobile/skills/boundary/references/packs/async-messaging.md +0 -81
- package/data/harnesses/mobile/skills/boundary/references/packs/auth.md +0 -93
- package/data/harnesses/mobile/skills/boundary/references/packs/build-config-runtime.md +0 -93
- package/data/harnesses/mobile/skills/boundary/references/packs/cloudflare.md +0 -93
- package/data/harnesses/mobile/skills/boundary/references/packs/frontend.md +0 -93
- package/data/harnesses/mobile/skills/boundary/references/packs/generic-tail.md +0 -55
- package/data/harnesses/mobile/skills/boundary/references/packs/persistence.md +0 -93
- package/data/harnesses/mobile/skills/boundary/references/packs/wire-api.md +0 -87
- package/data/harnesses/mobile/skills/brainstorm/README.md +0 -162
- package/data/harnesses/mobile/skills/brainstorm/SKILL.md +0 -152
- package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +0 -66
- package/data/harnesses/mobile/skills/brainstorm/templates/backlog.md +0 -39
- package/data/harnesses/mobile/skills/brainstorm/templates/build.md +0 -37
- package/data/harnesses/mobile/skills/brainstorm/templates/decisions.md +0 -29
- package/data/harnesses/mobile/skills/brainstorm/templates/doctrine.md +0 -31
- package/data/harnesses/mobile/skills/brainstorm/templates/domain-model.md +0 -25
- package/data/harnesses/mobile/skills/brainstorm/templates/evidence.md +0 -24
- package/data/harnesses/mobile/skills/brainstorm/templates/glossary.md +0 -20
- package/data/harnesses/mobile/skills/brainstorm/templates/milestones.md +0 -43
- package/data/harnesses/mobile/skills/brainstorm/templates/non-goals.md +0 -17
- package/data/harnesses/mobile/skills/brainstorm/templates/plan-doc.md +0 -61
- package/data/harnesses/mobile/skills/brainstorm/templates/questions.md +0 -36
- package/data/harnesses/mobile/skills/brainstorm/templates/references.md +0 -28
- package/data/harnesses/mobile/skills/brainstorm/templates/rejected.md +0 -33
- package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +0 -49
- package/data/harnesses/mobile/skills/brainstorm/templates/state.md +0 -1
- package/data/harnesses/mobile/skills/brainstorm/templates/tech.md +0 -23
- package/data/harnesses/mobile/skills/brainstorm/templates/thesis.md +0 -21
- package/data/harnesses/mobile/skills/documentation/SKILL.md +0 -172
- package/data/harnesses/mobile/skills/documentation/references/examples.md +0 -203
- package/data/harnesses/mobile/skills/documentation/references/style-guide.md +0 -315
- package/data/harnesses/mobile/skills/documentation/references/templates.md +0 -1091
- package/data/harnesses/mobile/skills/workflow-mapper/SKILL.md +0 -451
- package/data/harnesses/mobile/skills/workflow-mapper/references/patterns.md +0 -214
|
@@ -1,315 +0,0 @@
|
|
|
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 **Input:**
|
|
15
|
-
|
|
16
|
-
- `param1` (type) - Description
|
|
17
|
-
- `param2` (type, optional) - Description **Output:** `{ field1, field2 }` **Side Effects:** State updates, API calls, etc.
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### Parameter Rules
|
|
21
|
-
|
|
22
|
-
- Name + type + one-line purpose
|
|
23
|
-
- Mark optional params with `(type, optional)`
|
|
24
|
-
- Nest object properties:
|
|
25
|
-
```markdown
|
|
26
|
-
- `options` (object) - Configuration
|
|
27
|
-
- `options.retry` (boolean) - Enable retries
|
|
28
|
-
- `options.timeout` (number) - Timeout in ms
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Return Values
|
|
32
|
-
|
|
33
|
-
Always specify:
|
|
34
|
-
|
|
35
|
-
- Type: `Array<Object>`, `boolean`, `{ merged, changes }`
|
|
36
|
-
- Shape for objects/arrays
|
|
37
|
-
- Meaning: "True if sync successful"
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## State Documentation
|
|
42
|
-
|
|
43
|
-
### When to Document State
|
|
44
|
-
|
|
45
|
-
✅ Do:
|
|
46
|
-
|
|
47
|
-
- Redux persistence (localStorage, IndexedDB)
|
|
48
|
-
- Database schemas
|
|
49
|
-
- API request/response shapes
|
|
50
|
-
|
|
51
|
-
❌ Don't:
|
|
52
|
-
|
|
53
|
-
- Component-level state
|
|
54
|
-
- Derived/computed state
|
|
55
|
-
- Temporary UI state
|
|
56
|
-
|
|
57
|
-
### Format
|
|
58
|
-
|
|
59
|
-
````markdown
|
|
60
|
-
**Frontend (at persistence):**
|
|
61
|
-
|
|
62
|
-
```json
|
|
63
|
-
{
|
|
64
|
-
"activeField": "value"
|
|
65
|
-
// "deprecated": null // UNUSED: Remove in v3
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
````
|
|
69
|
-
|
|
70
|
-
**Storage:** localStorage key `state_key`
|
|
71
|
-
|
|
72
|
-
**Backend:**
|
|
73
|
-
|
|
74
|
-
```sql
|
|
75
|
-
model Table {
|
|
76
|
-
id String @id
|
|
77
|
-
data Json
|
|
78
|
-
// old String? // UNUSED: Legacy
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
````
|
|
83
|
-
|
|
84
|
-
### Mark Unused Keys
|
|
85
|
-
|
|
86
|
-
Always comment deprecated/unused fields:
|
|
87
|
-
```json
|
|
88
|
-
{
|
|
89
|
-
"active": [],
|
|
90
|
-
// "legacy": {} // UNUSED: Migrated to newField
|
|
91
|
-
}
|
|
92
|
-
````
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## ASCII Diagrams
|
|
97
|
-
|
|
98
|
-
### When to Use
|
|
99
|
-
|
|
100
|
-
- Data flows
|
|
101
|
-
- System architecture
|
|
102
|
-
- Component interactions
|
|
103
|
-
- Process flows
|
|
104
|
-
|
|
105
|
-
### Pattern
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
┌─────────────────────────────────────────┐
|
|
109
|
-
│ TITLE │
|
|
110
|
-
├─────────────────────────────────────────┤
|
|
111
|
-
│ │
|
|
112
|
-
│ ┌──────┐ ┌──────┐ ┌──────┐ │
|
|
113
|
-
│ │ A │────▶│ B │────▶│ C │ │
|
|
114
|
-
│ └──────┘ └──────┘ └──────┘ │
|
|
115
|
-
│ │ │ │
|
|
116
|
-
│ ▼ ▼ │
|
|
117
|
-
│ Detail Detail │
|
|
118
|
-
│ │
|
|
119
|
-
└─────────────────────────────────────────┘
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Characters
|
|
123
|
-
|
|
124
|
-
- Boxes: `┌─┐│└┘├┤┬┴┼`
|
|
125
|
-
- Arrows: `───▶` `◀───` `│▼` `│▲`
|
|
126
|
-
- Width: ~70 chars max
|
|
127
|
-
|
|
128
|
-
### UI Wireframes
|
|
129
|
-
|
|
130
|
-
For screen layouts (not data flows), use these conventions:
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
**Route:** `path/:id`
|
|
134
|
-
**Tab:** Tab Name
|
|
135
|
-
|
|
136
|
-
┌────────────────────────────────────┐
|
|
137
|
-
│ Title [i]3 [Button]│
|
|
138
|
-
│ [i]Label [Tag1][Tag2][+Add] │
|
|
139
|
-
└────────────────────────────────────┘
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
- `[text]` = clickable button/badge
|
|
143
|
-
- `[i]` = icon (followed by label or count)
|
|
144
|
-
- `v` / `^` = expand/collapse indicator
|
|
145
|
-
- Show each UI state (collapsed/expanded) as separate diagrams
|
|
146
|
-
- Include Route/Tab context above wireframe
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## Code Examples
|
|
151
|
-
|
|
152
|
-
### Rules
|
|
153
|
-
|
|
154
|
-
- Under 15 lines
|
|
155
|
-
- Show contracts, not implementations
|
|
156
|
-
- Use pseudocode for algorithms
|
|
157
|
-
|
|
158
|
-
✅ Good:
|
|
159
|
-
|
|
160
|
-
```javascript
|
|
161
|
-
// Critical: Balanced brace matching
|
|
162
|
-
function extract(json) {
|
|
163
|
-
// Track brace depth
|
|
164
|
-
// Ignore braces inside strings
|
|
165
|
-
// Return complete objects only
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
❌ Bad: Full 50-line implementation
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Writing Style
|
|
174
|
-
|
|
175
|
-
### Voice
|
|
176
|
-
|
|
177
|
-
Use imperative/active:
|
|
178
|
-
|
|
179
|
-
- ✅ "Fetches data from server"
|
|
180
|
-
- ✅ "Returns array of objects"
|
|
181
|
-
- ❌ "This function is used to fetch"
|
|
182
|
-
- ❌ "An array is returned"
|
|
183
|
-
|
|
184
|
-
### When Prose Adds Value
|
|
185
|
-
|
|
186
|
-
Prose is valuable for context that contracts can't capture:
|
|
187
|
-
|
|
188
|
-
| Use Prose For | Example |
|
|
189
|
-
| --- | --- |
|
|
190
|
-
| Section intros | "When the editor mounts, `useAppInit` is called with the `appId` from URL." |
|
|
191
|
-
| Non-obvious behavior | "The hook always fetches fresh data. There is no caching or version checking." |
|
|
192
|
-
| Design rationale | "Why parallel fetches? Each entity type is independent, reducing load time." |
|
|
193
|
-
| Edge cases | "If created then deleted before save, it's removed from `added[]` without adding to `removed[]`." |
|
|
194
|
-
| Current limitations | "This hook is not currently integrated into the main flow." |
|
|
195
|
-
| Usage context | "Used to show 'Unsaved' badge, warn before navigation, enable save buttons." |
|
|
196
|
-
|
|
197
|
-
### When to Avoid Prose
|
|
198
|
-
|
|
199
|
-
- Describing WHAT code does (use signatures instead)
|
|
200
|
-
- Step-by-step flows (use diagrams instead)
|
|
201
|
-
- Structured comparisons (use tables instead)
|
|
202
|
-
|
|
203
|
-
### Conciseness
|
|
204
|
-
|
|
205
|
-
One line when possible:
|
|
206
|
-
|
|
207
|
-
- ✅ "Merge server data with local changes using version-based conflict resolution"
|
|
208
|
-
- ❌ "This function takes the data from the server and also takes the local data..."
|
|
209
|
-
|
|
210
|
-
### Tables
|
|
211
|
-
|
|
212
|
-
Use for structured info:
|
|
213
|
-
|
|
214
|
-
```markdown
|
|
215
|
-
| Parameter | Type | Description |
|
|
216
|
-
| --------- | ------ | -------------- |
|
|
217
|
-
| `data` | object | Fresh from API |
|
|
218
|
-
| `local` | object | Current state |
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## The Two Natures — Tense & History
|
|
224
|
-
|
|
225
|
-
Every document is a **truth document** (states current absolutes, updated in place) or a **record** (dated account of activity, frozen or append-only) — see `SKILL.md` § The Two Natures. The tense rules follow directly:
|
|
226
|
-
|
|
227
|
-
**Truth documents describe the present, not the past.** Everything outside `docs/history/` states what the system _is_ and how it works _today_. It must not narrate how it got there. The journey — the dates, the migrations — lives **only** in records (`docs/history/`: changelog, plans, migrations). Two sanctioned exceptions: `docs/memory/` is the agent's own dated ledger, and an AD's **Decision Changelog** tail carries that decision's dated revision history (the AD body stays current-truth-only — head is truth, tail is provenance).
|
|
228
|
-
|
|
229
|
-
**Records are never edited to match the present.** A frozen plan stays wrong-in-hindsight; a changelog entry describes what shipped as it shipped. A scope change gets a new dated record that links back.
|
|
230
|
-
|
|
231
|
-
Strip this language from truth documents:
|
|
232
|
-
|
|
233
|
-
| ❌ Historical narration (belongs in a record) | ✅ Present-tense fact (belongs in the truth doc) |
|
|
234
|
-
| --- | --- |
|
|
235
|
-
| "Folded in from the `NuStack-X` repo (2026-06-12)." | "Vendor-connector catalogue; one subpath per vendor." |
|
|
236
|
-
| "Built 2026-06-14; shipped + verified 2026-06-13." | "`agentSessionWorkflow` runs an outer turn loop over `runAgentLoop`." |
|
|
237
|
-
| "The legacy worker was deleted in the 2026-06-14 fold." | "One worker interprets `WorkflowDefinition`." |
|
|
238
|
-
| "ex-`@nurix/mcp-runtime`, M9 Phase C; was X, now Y." | "MCP client runtime, wired into `agentTriggerWorkflow`." |
|
|
239
|
-
| "Read first: `docs/history/plans/2026-…-fold.md`" (routing) | "Read first: `docs/architecture/<current-truth-doc>.md`" |
|
|
240
|
-
|
|
241
|
-
Rules:
|
|
242
|
-
|
|
243
|
-
- **No dates in truth documents** for when something shipped, was verified, folded, or was removed. A bare status marker (`✅ shipped`, `⏳ pending`) is fine; the _date_ it shipped is not.
|
|
244
|
-
- **Cite the AD for the _why_, never the _when_.** `Provenance: AD-002` is good (it points to the decision rationale). "Decided in AD-002 and shipped 2026-06-13" is not.
|
|
245
|
-
- **Routing/index docs point only to truth documents.** A row whose only "read first" target is a historical plan or changelog is a redirect-for-history — repoint it to the current truth doc, or drop the row.
|
|
246
|
-
- **When a doc changes because the system changed, the change-story goes in `docs/history/` (a changelog entry), and the truth document simply becomes correct in present tense.** Never leave the diff narrated in place.
|
|
247
|
-
- **A decision that moves is an edit, not a new document.** Rewrite the AD's affected sections to the new truth and append the revision to its Decision Changelog — never mint a parallel doc and never leave the old choice narrated in the body.
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## Structure
|
|
252
|
-
|
|
253
|
-
### Headers
|
|
254
|
-
|
|
255
|
-
```markdown
|
|
256
|
-
# Document Title (H1 - once)
|
|
257
|
-
|
|
258
|
-
## Major Section (H2)
|
|
259
|
-
|
|
260
|
-
### Subsection (H3)
|
|
261
|
-
|
|
262
|
-
#### Detail (H4 - sparingly)
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
**Headings are retrieval keys.** Search and agents retrieve sections out of context, and a bare `## State` reads identically across every feature doc. In long docs, qualify generic headings with the feature name — `## State — invoice-pdf`, `### Merge rules — data sync` — so a section stands alone when retrieved. Short docs whose H1 disambiguates can keep bare headings.
|
|
266
|
-
|
|
267
|
-
### Standard Layout
|
|
268
|
-
|
|
269
|
-
```markdown
|
|
270
|
-
# [Title]
|
|
271
|
-
|
|
272
|
-
**Goal:** One-line purpose
|
|
273
|
-
|
|
274
|
-
## Architecture
|
|
275
|
-
|
|
276
|
-
[Diagram + explanation]
|
|
277
|
-
|
|
278
|
-
## Key Functions
|
|
279
|
-
|
|
280
|
-
[Signatures and contracts]
|
|
281
|
-
|
|
282
|
-
## State
|
|
283
|
-
|
|
284
|
-
[Persistence shapes]
|
|
285
|
-
|
|
286
|
-
## Files
|
|
287
|
-
|
|
288
|
-
[Source file list]
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
### File References
|
|
292
|
-
|
|
293
|
-
Always end with:
|
|
294
|
-
|
|
295
|
-
```markdown
|
|
296
|
-
## Files
|
|
297
|
-
|
|
298
|
-
- `src/path/main.js` - Core logic
|
|
299
|
-
- `src/path/hooks.js` - React hooks
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
---
|
|
303
|
-
|
|
304
|
-
## Summary
|
|
305
|
-
|
|
306
|
-
| Aspect | Rule |
|
|
307
|
-
| ---------- | ------------------------------- |
|
|
308
|
-
| Functions | Always include signatures |
|
|
309
|
-
| Parameters | Type + purpose |
|
|
310
|
-
| Returns | Type + shape |
|
|
311
|
-
| State | Persistence points only |
|
|
312
|
-
| Diagrams | ASCII for all flows |
|
|
313
|
-
| Code | Under 15 lines, contracts only |
|
|
314
|
-
| Voice | Imperative/active |
|
|
315
|
-
| Length | Concise, one line when possible |
|