@nurix/etna 0.17.1 → 0.18.1
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 +19 -9
- package/bin/etna.js +56 -28
- package/data/harness-index.json +21 -6
- package/data/harnesses/code/CLAUDE.md +7 -18
- package/data/harnesses/code/agents/brainstorm.md +3 -3
- package/data/harnesses/code/agents/change-review.md +13 -10
- package/data/harnesses/code/agents/harness-manager.md +16 -16
- package/data/harnesses/code/agents/maintenance.md +10 -3
- package/data/harnesses/code/agents/performance-review.md +5 -0
- package/data/harnesses/code/harness.json +1 -1
- package/data/harnesses/code/rules/general.md +40 -36
- package/data/harnesses/code/skills/boundary/SKILL.md +15 -42
- package/data/harnesses/code/skills/boundary/references/boundary-taxonomy.md +366 -304
- package/data/harnesses/code/skills/brainstorm/README.md +9 -9
- package/data/harnesses/code/skills/brainstorm/SKILL.md +15 -15
- package/data/harnesses/code/skills/brainstorm/harvest.md +2 -2
- package/data/harnesses/code/skills/brainstorm/templates/backlog.md +2 -2
- package/data/harnesses/code/skills/brainstorm/templates/build.md +6 -6
- package/data/harnesses/code/skills/brainstorm/templates/decisions.md +3 -3
- package/data/harnesses/code/skills/brainstorm/templates/doctrine.md +2 -2
- package/data/harnesses/code/skills/brainstorm/templates/domain-model.md +2 -2
- package/data/harnesses/code/skills/brainstorm/templates/glossary.md +2 -1
- package/data/harnesses/code/skills/brainstorm/templates/non-goals.md +3 -7
- package/data/harnesses/code/skills/brainstorm/templates/questions.md +6 -5
- package/data/harnesses/code/skills/brainstorm/templates/state.md +1 -8
- package/data/harnesses/code/skills/brainstorm/templates/tech.md +6 -6
- package/data/harnesses/code/skills/brainstorm/templates/thesis.md +2 -2
- package/data/harnesses/code/skills/distiller/SKILL.md +48 -177
- package/data/harnesses/code/skills/distiller/references/docs-mode.md +116 -343
- package/data/harnesses/code/skills/distiller/references/method.md +37 -109
- package/data/harnesses/code/skills/documentation/SKILL.md +9 -6
- package/data/harnesses/code/skills/documentation/references/examples.md +30 -61
- package/data/harnesses/code/skills/documentation/references/style-guide.md +59 -62
- package/data/harnesses/code/skills/documentation/references/templates.md +25 -33
- package/data/harnesses/code/skills/workflow-mapper/SKILL.md +32 -11
- package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +1 -1
- package/data/harnesses/code-fable/CLAUDE.md +12 -23
- package/data/harnesses/code-fable/agents/brainstorm.md +3 -3
- package/data/harnesses/code-fable/agents/change-review.md +13 -10
- package/data/harnesses/code-fable/agents/harness-manager.md +16 -16
- package/data/harnesses/code-fable/agents/maintenance.md +10 -3
- package/data/harnesses/code-fable/agents/performance-review.md +5 -0
- package/data/harnesses/code-fable/harness.json +1 -1
- package/data/harnesses/code-fable/rules/general.md +40 -36
- package/data/harnesses/code-fable/skills/boundary/SKILL.md +15 -42
- package/data/harnesses/code-fable/skills/boundary/references/boundary-taxonomy.md +366 -304
- package/data/harnesses/code-fable/skills/brainstorm/README.md +9 -9
- package/data/harnesses/code-fable/skills/brainstorm/SKILL.md +15 -15
- package/data/harnesses/code-fable/skills/brainstorm/harvest.md +2 -2
- package/data/harnesses/code-fable/skills/brainstorm/templates/backlog.md +2 -2
- package/data/harnesses/code-fable/skills/brainstorm/templates/build.md +6 -6
- package/data/harnesses/code-fable/skills/brainstorm/templates/decisions.md +3 -3
- package/data/harnesses/code-fable/skills/brainstorm/templates/doctrine.md +2 -2
- package/data/harnesses/code-fable/skills/brainstorm/templates/domain-model.md +2 -2
- package/data/harnesses/code-fable/skills/brainstorm/templates/glossary.md +2 -1
- package/data/harnesses/code-fable/skills/brainstorm/templates/non-goals.md +3 -7
- package/data/harnesses/code-fable/skills/brainstorm/templates/questions.md +6 -5
- package/data/harnesses/code-fable/skills/brainstorm/templates/state.md +1 -8
- package/data/harnesses/code-fable/skills/brainstorm/templates/tech.md +6 -6
- package/data/harnesses/code-fable/skills/brainstorm/templates/thesis.md +2 -2
- package/data/harnesses/code-fable/skills/distiller/SKILL.md +48 -177
- package/data/harnesses/code-fable/skills/distiller/references/docs-mode.md +116 -343
- package/data/harnesses/code-fable/skills/distiller/references/method.md +37 -109
- package/data/harnesses/code-fable/skills/documentation/SKILL.md +9 -6
- package/data/harnesses/code-fable/skills/documentation/references/examples.md +30 -61
- package/data/harnesses/code-fable/skills/documentation/references/style-guide.md +59 -62
- package/data/harnesses/code-fable/skills/documentation/references/templates.md +25 -33
- package/data/harnesses/code-fable/skills/workflow-mapper/SKILL.md +32 -11
- package/data/harnesses/code-fable/skills/workflow-mapper/references/patterns.md +1 -1
- package/data/harnesses/discover/CLAUDE.md +41 -109
- package/data/harnesses/discover/agents/api.md +11 -28
- package/data/harnesses/discover/agents/codebase.md +12 -30
- package/data/harnesses/discover/agents/community.md +9 -21
- package/data/harnesses/discover/agents/deployed-client-bundle.md +16 -67
- package/data/harnesses/discover/agents/distribution-artifacts.md +21 -59
- package/data/harnesses/discover/agents/docs.md +11 -20
- package/data/harnesses/discover/agents/infra-backend-fingerprint.md +28 -68
- package/data/harnesses/discover/agents/packages.md +12 -28
- package/data/harnesses/discover/agents/session.md +18 -50
- package/data/harnesses/discover/agents/website.md +9 -19
- package/data/harnesses/discover/agents/wire-capture.md +22 -72
- package/data/harnesses/discover/harness.json +1 -1
- package/data/harnesses/discover/rules/discovery.md +73 -182
- package/data/harnesses/discover/rules/evaluation.md +90 -98
- package/data/harnesses/discover/rules/ingestion.md +123 -322
- package/data/harnesses/discover/rules/self-correction.md +67 -92
- package/data/harnesses/discover/rules/tradecraft.md +201 -172
- package/data/harnesses/hr/CLAUDE.md +21 -51
- package/data/harnesses/hr/harness.json +1 -1
- package/data/harnesses/hr/skills/interview-eval/SKILL.md +23 -11
- package/data/harnesses/hr/skills/interview-eval/TEMPLATE.md +49 -29
- package/data/harnesses/hr/skills/interview-eval/rubric.md +30 -30
- package/data/harnesses/kb-agi/CLAUDE.md +8 -8
- package/data/harnesses/kb-agi/agents/kb-agi-init.md +31 -22
- package/data/harnesses/kb-agi/agents/kb-catch-stale.md +1 -1
- package/data/harnesses/kb-agi/agents/kb-find-gaps.md +1 -1
- package/data/harnesses/kb-agi/agents/kb-fix-links.md +1 -1
- package/data/harnesses/kb-agi/agents/kb-refresh-summaries.md +2 -2
- package/data/harnesses/kb-agi/agents/kb-sync-metadata.md +2 -2
- package/data/harnesses/kb-agi/harness.json +1 -1
- package/package.json +1 -1
|
@@ -143,17 +143,20 @@ grep -rn "Icons\[" src/ --include="*.jsx" --include="*.tsx"
|
|
|
143
143
|
Scan for React performance issues:
|
|
144
144
|
|
|
145
145
|
### Missing memoization
|
|
146
|
+
|
|
146
147
|
- Components rendering large lists without `React.memo`
|
|
147
148
|
- Expensive computations without `useMemo`
|
|
148
149
|
- Callback props without `useCallback` causing child re-renders
|
|
149
150
|
- Focus on components in tables, lists, grids, repeated rows
|
|
150
151
|
|
|
151
152
|
### Request waterfalls
|
|
153
|
+
|
|
152
154
|
- Sequential `await` calls that could be `Promise.all`
|
|
153
155
|
- `useEffect` chains where one fetch triggers another
|
|
154
156
|
- Component trees where parent fetches block child renders
|
|
155
157
|
|
|
156
158
|
### Missing virtualization
|
|
159
|
+
|
|
157
160
|
- Lists rendering >50 items without react-window or similar
|
|
158
161
|
- Tables with unbounded row counts
|
|
159
162
|
- Grids without lazy loading
|
|
@@ -183,6 +186,7 @@ grep -rn "TODO\|FIXME\|HACK\|XXX" src/ --include="*.jsx" --include="*.tsx" --inc
|
|
|
183
186
|
### Report format
|
|
184
187
|
|
|
185
188
|
**Dependencies**
|
|
189
|
+
|
|
186
190
|
- **Vulnerabilities**: critical/high CVEs, new since last audit
|
|
187
191
|
- **Outdated**: top outdated packages by semver distance
|
|
188
192
|
- **Licenses**: non-permissive license flags
|
|
@@ -191,6 +195,7 @@ grep -rn "TODO\|FIXME\|HACK\|XXX" src/ --include="*.jsx" --include="*.tsx" --inc
|
|
|
191
195
|
- **Dependency size**: largest installed packages
|
|
192
196
|
|
|
193
197
|
**Code**
|
|
198
|
+
|
|
194
199
|
- **Bundle size**: total vendor size, top offenders, growth since last review
|
|
195
200
|
- **Tree-shaking issues**: namespace imports, barrel-file problems (cross-referenced with the heavy/bloat packages from Part A)
|
|
196
201
|
- **Performance**: missing memoization, request waterfalls, missing virtualization
|
|
@@ -10,40 +10,40 @@
|
|
|
10
10
|
|
|
11
11
|
No alternatives. Just use these.
|
|
12
12
|
|
|
13
|
-
| Package
|
|
14
|
-
|
|
|
15
|
-
| react
|
|
16
|
-
| vite
|
|
17
|
-
| tailwindcss
|
|
18
|
-
| @vitejs/plugin-react-swc | ^4.2.2
|
|
19
|
-
| react-router-dom
|
|
20
|
-
| @reduxjs/toolkit
|
|
21
|
-
| react-redux
|
|
22
|
-
| axios
|
|
23
|
-
| date-fns
|
|
24
|
-
| @dnd-kit/core
|
|
25
|
-
| motion
|
|
26
|
-
| sonner
|
|
27
|
-
| react-window
|
|
28
|
-
| nanoid
|
|
29
|
-
| express
|
|
30
|
-
| drizzle-orm
|
|
31
|
-
| drizzle-kit
|
|
32
|
-
| zod
|
|
33
|
-
| jose
|
|
34
|
-
| microdiff
|
|
35
|
-
| react18-json-view
|
|
36
|
-
| @tiptap/react
|
|
37
|
-
| shiki
|
|
38
|
-
| lucide-react
|
|
39
|
-
| @pdfme/generator
|
|
40
|
-
| cmdk
|
|
41
|
-
| @monaco-editor/react
|
|
42
|
-
| localforage
|
|
43
|
-
| react-markdown
|
|
44
|
-
| fast-deep-equal
|
|
45
|
-
| @ngneat/falso
|
|
46
|
-
| pino
|
|
13
|
+
| Package | Version | Use | Don't use |
|
|
14
|
+
| --- | --- | --- | --- |
|
|
15
|
+
| react | ^19.2.3 | UI components | - |
|
|
16
|
+
| vite | ^8.0.0 | Build tool, dev server | webpack, CRA |
|
|
17
|
+
| tailwindcss | ^4.1.18 | Styling | styled-components |
|
|
18
|
+
| @vitejs/plugin-react-swc | ^4.2.2 | JSX compilation | @vitejs/plugin-react |
|
|
19
|
+
| react-router-dom | ^7.11.0 | Routing | - |
|
|
20
|
+
| @reduxjs/toolkit | ^2.11.2 | State management | zustand, jotai |
|
|
21
|
+
| react-redux | ^9.2.0 | Redux React bindings | - |
|
|
22
|
+
| axios | ^1.13.2 | HTTP requests | fetch |
|
|
23
|
+
| date-fns | ^4.1.0 | Date formatting | moment, dayjs |
|
|
24
|
+
| @dnd-kit/core | ^6.3.1 | Drag and drop | react-beautiful-dnd |
|
|
25
|
+
| motion | ^12.23.26 | Animations | react-spring |
|
|
26
|
+
| sonner | ^2.0.7 | Toast notifications | react-toastify |
|
|
27
|
+
| react-window | ^2.2.3 | List virtualization | react-virtualized |
|
|
28
|
+
| nanoid | ^5.1.6 | ID generation | uuid |
|
|
29
|
+
| express | ^5.2.1 | HTTP server | fastify, koa |
|
|
30
|
+
| drizzle-orm | latest | Database ORM | prisma, sequelize, typeorm |
|
|
31
|
+
| drizzle-kit | latest | Schema tooling | - |
|
|
32
|
+
| zod | ^4.2.1 | Schema validation | yup, joi |
|
|
33
|
+
| jose | ^6.1.3 | JWT handling | jsonwebtoken |
|
|
34
|
+
| microdiff | ^1.5.0 | JSON object diffing | deep-diff, just-diff |
|
|
35
|
+
| react18-json-view | ^0.2.9 | JSON tree view | react-json-view |
|
|
36
|
+
| @tiptap/react | ^3.11.1 | Rich text editor | slate, quill, draft-js |
|
|
37
|
+
| shiki | ^3.22.0 | Syntax highlighting | prism, highlight.js |
|
|
38
|
+
| lucide-react | ^0.562.0 | Icons | react-icons, heroicons |
|
|
39
|
+
| @pdfme/generator | ^5.5.8 | PDF generation | jspdf, pdfkit |
|
|
40
|
+
| cmdk | ^1.1.1 | Command palette | kbar, ninja-keys |
|
|
41
|
+
| @monaco-editor/react | ^4.7.0 | Code editor | codemirror, ace |
|
|
42
|
+
| localforage | ^1.10.0 | Client-side storage | idb, dexie |
|
|
43
|
+
| react-markdown | ^10.1.0 | Markdown rendering | marked, markdown-it |
|
|
44
|
+
| fast-deep-equal | ^3.1.3 | Deep equality checks | lodash.isEqual |
|
|
45
|
+
| @ngneat/falso | latest | Fake data generation | @faker-js/faker, chance |
|
|
46
|
+
| pino | ^10.1.0 | Logging | winston |
|
|
47
47
|
|
|
48
48
|
## Frontend
|
|
49
49
|
|
|
@@ -51,7 +51,7 @@ Tailwind v4 + shadcn-based UI; conventions below.
|
|
|
51
51
|
|
|
52
52
|
- **@nurix/components** — the UI component library (linked, pre-built); import by subpath, e.g. `@nurix/components/button`.
|
|
53
53
|
- No components.json / shadcn CLI scaffold (.tsx, not .jsx) — consume the prebuilt library; never `npx shadcn add`.
|
|
54
|
-
- Vite: `@tailwindcss/vite` + `@vitejs/plugin-react-swc`. Pin react / react-dom / react/jsx-runtime / react/jsx-dev-runtime to the app's single copy via `resolve.alias` (linked @nurix
|
|
54
|
+
- Vite: `@tailwindcss/vite` + `@vitejs/plugin-react-swc`. Pin react / react-dom / react/jsx-runtime / react/jsx-dev-runtime to the app's single copy via `resolve.alias` (linked @nurix/\* ship nested react — keep one hook dispatcher).
|
|
55
55
|
- Tailwind v4, CSS-only (no tailwind.config.js, no PostCSS): styling runs through the `@tailwindcss/vite` plugin.
|
|
56
56
|
- CSS entry `globals.css`, imports in order — `@import "./personality.css"` (token source) → `@import "tailwindcss"` → the library's `styles.css` — then `@theme inline {…}` mapping vars to tokens.
|
|
57
57
|
- Tokens: CSS vars in `:root, :root[data-theme="light"]` + the archetype selector `[data-style="…"]` (personality.css), consumed as semantic Tailwind tokens (bg-card, text-foreground). Honor the archetype's radius/theme decisions (e.g. re-assert `--radius-*` to 0 for a flat archetype; add `@custom-variant dark` only if the project supports dark mode). The library bundles class-variance-authority, clsx, tailwind-merge.
|
|
@@ -71,7 +71,11 @@ app.use(rateLimit({ windowMs: 15 * 60 * 1000, max: 100 }));
|
|
|
71
71
|
## API Response Format
|
|
72
72
|
|
|
73
73
|
```json
|
|
74
|
-
{
|
|
74
|
+
{
|
|
75
|
+
"status": 1,
|
|
76
|
+
"message": "Message sent successfully",
|
|
77
|
+
"data": { "delivered": [{ "user@example.com": 2 }] }
|
|
78
|
+
}
|
|
75
79
|
```
|
|
76
80
|
|
|
77
81
|
Error: `{ "status": 0, "message": "Error description", "data": null }`
|
|
@@ -7,45 +7,21 @@ description: Boundary diagnostic for implementation plans. Given a plan file, re
|
|
|
7
7
|
|
|
8
8
|
You diagnose whether a plan's changes would break an application boundary.
|
|
9
9
|
|
|
10
|
-
A boundary is a contract between two pieces of code (or code and infra) that
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
dispatcher parses, the env var a deploy script writes. Changing one side ships
|
|
14
|
-
green and breaks the other silently. Your job is to find those edges in the
|
|
15
|
-
plan's path *before* execution.
|
|
16
|
-
|
|
17
|
-
[`references/boundary-taxonomy.md`](references/boundary-taxonomy.md) is the
|
|
18
|
-
catalog of boundary types (~170 across persistence, wire/API, frontend,
|
|
19
|
-
auth/tenancy, async/messaging, config/build, runtime/infra), with per-type
|
|
20
|
-
severities and safe-change checklists. Read it first — it tells you what to
|
|
21
|
-
look for; the code tells you what exists.
|
|
10
|
+
A boundary is a contract between two pieces of code (or code and infra) that share an assumption with **no compile-time link** between them: the column a raw SQL string names, the JSON envelope a client unwraps, the event string a dispatcher parses, the env var a deploy script writes. Changing one side ships green and breaks the other silently. Your job is to find those edges in the plan's path _before_ execution.
|
|
11
|
+
|
|
12
|
+
[`references/boundary-taxonomy.md`](references/boundary-taxonomy.md) is the catalog of boundary types (~170 across persistence, wire/API, frontend, auth/tenancy, async/messaging, config/build, runtime/infra), with per-type severities and safe-change checklists. Read it first — it tells you what to look for; the code tells you what exists.
|
|
22
13
|
|
|
23
14
|
## Run
|
|
24
15
|
|
|
25
|
-
**Input:** a plan path (given, or the newest in `docs/history/plans/`) — or a
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
its immediate imports). Against the taxonomy, list the contracts this code
|
|
35
|
-
participates in — the schema it queries, the envelope it emits, the events
|
|
36
|
-
it publishes or parses, the auth checks it sits behind, the env it reads.
|
|
37
|
-
|
|
38
|
-
3. **Trace the other side.** A boundary has two sides; the danger lives on the
|
|
39
|
-
one the plan *doesn't* mention. For each contract, grep the shared name or
|
|
40
|
-
shape across the repo — the column name in other SQL strings, the response
|
|
41
|
-
field in client unwrappers, the event kind in subscribers, the route in
|
|
42
|
-
fetch calls and scripts, the env key in deploy tooling. Record consumers as
|
|
43
|
-
`file:line`.
|
|
44
|
-
|
|
45
|
-
4. **Judge each intersection.** Does the planned change alter a shape a traced
|
|
46
|
-
consumer depends on, break an invariant the code establishes (append-only
|
|
47
|
-
vocabularies, idempotency keys, fail-closed checks, ordering guarantees), or
|
|
48
|
-
add a new cross-module edge? Severity:
|
|
16
|
+
**Input:** a plan path (given, or the newest in `docs/history/plans/`) — or a diff / named code area for non-plan work. Everything below is identical either way; a diff's hunks stand in for the plan's steps.
|
|
17
|
+
|
|
18
|
+
1. **Build the touch list.** Parse the plan's Proposed Changes: files to be created or modified, entities/state added or changed, API changes, anything the author flags as a cross-module contract. Note missing subsections.
|
|
19
|
+
|
|
20
|
+
2. **Identify the boundaries in the touched code.** Read each touched file (and its immediate imports). Against the taxonomy, list the contracts this code participates in — the schema it queries, the envelope it emits, the events it publishes or parses, the auth checks it sits behind, the env it reads.
|
|
21
|
+
|
|
22
|
+
3. **Trace the other side.** A boundary has two sides; the danger lives on the one the plan _doesn't_ mention. For each contract, grep the shared name or shape across the repo — the column name in other SQL strings, the response field in client unwrappers, the event kind in subscribers, the route in fetch calls and scripts, the env key in deploy tooling. Record consumers as `file:line`.
|
|
23
|
+
|
|
24
|
+
4. **Judge each intersection.** Does the planned change alter a shape a traced consumer depends on, break an invariant the code establishes (append-only vocabularies, idempotency keys, fail-closed checks, ordering guarantees), or add a new cross-module edge? Severity:
|
|
49
25
|
- **CRITICAL** — can corrupt persisted data, or open an auth/money path.
|
|
50
26
|
- **HIGH** — silent cross-module breakage that would ship green.
|
|
51
27
|
- **MEDIUM** — drift-prone coupling (string-matched, duplicated constants).
|
|
@@ -67,10 +43,7 @@ way; a diff's hunks stand in for the plan's steps.
|
|
|
67
43
|
|
|
68
44
|
## Rules
|
|
69
45
|
|
|
70
|
-
- **Read-only.** You never edit the plan, the code, or any doc. The user folds
|
|
71
|
-
|
|
72
|
-
- **
|
|
73
|
-
every boundary you report, and cite both as `file:line`.
|
|
74
|
-
- **No consumer, no finding.** An intersection with no traced other side isn't
|
|
75
|
-
a violation; at most note it as a new edge the plan introduces.
|
|
46
|
+
- **Read-only.** You never edit the plan, the code, or any doc. The user folds your amendments into the plan.
|
|
47
|
+
- **Verify in source.** Never flag from plan text alone — read both sides of every boundary you report, and cite both as `file:line`.
|
|
48
|
+
- **No consumer, no finding.** An intersection with no traced other side isn't a violation; at most note it as a new edge the plan introduces.
|
|
76
49
|
- **A clean report is valid.** Zero violations means say so — don't pad.
|