novahiz 0.2.5 → 0.3.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.
Files changed (54) hide show
  1. package/NOTICE.md +18 -6
  2. package/README.md +12 -7
  3. package/adapters/README.md +1 -1
  4. package/adapters/opencode/agent/novahiz.md +2 -2
  5. package/adapters/opencode/instructions.md +2 -1
  6. package/adapters/opencode/novahiz.ts +336 -40
  7. package/catalog/categories.json +282 -9
  8. package/catalog/overrides.json +727 -0
  9. package/catalog/providers.json +63 -10
  10. package/catalog/rules.json +42 -9
  11. package/docs/ARCHITECTURE.md +2 -2
  12. package/docs/CATALOG.md +4 -4
  13. package/docs/CLASSIFICATION.md +3 -1
  14. package/docs/CONFIGURATION.md +5 -5
  15. package/docs/CONVERGENCE-2026-09-25.md +5 -0
  16. package/docs/GATE.md +26 -15
  17. package/docs/HARNESSES.md +10 -6
  18. package/docs/INSTALL.md +1 -0
  19. package/docs/PROVIDERS.md +21 -6
  20. package/docs/ROADMAPS.md +29 -0
  21. package/docs/RULES.md +7 -4
  22. package/install/bootstrap.mjs +29 -24
  23. package/install/install.mjs +56 -19
  24. package/install/lib.mjs +20 -4
  25. package/mcp/novahiz-tools/README.md +5 -0
  26. package/mcp/novahiz-tools/index.mjs +78 -7
  27. package/novahiz.config.example.json +4 -3
  28. package/package.json +3 -2
  29. package/skills/gate/SKILL.md +16 -1
  30. package/skills/novahiz-analyse/SKILL.md +2 -2
  31. package/skills/novahiz-audit/SKILL.md +1 -1
  32. package/skills/novahiz-code-review/SKILL.md +1 -1
  33. package/skills/novahiz-converge/SKILL.md +1 -1
  34. package/skills/novahiz-gate/SKILL.md +2 -1
  35. package/skills/novahiz-implement/SKILL.md +2 -2
  36. package/skills/novahiz-plan/SKILL.md +2 -2
  37. package/skills/novahiz-planner/SKILL.md +5 -3
  38. package/skills/novahiz-task/SKILL.md +1 -1
  39. package/skills/prompt-rewriter/SKILL.md +18 -13
  40. package/src/cli.ts +24 -4
  41. package/src/commands/context.ts +43 -4
  42. package/src/commands/doctor.ts +26 -8
  43. package/src/commands/gate.ts +66 -85
  44. package/src/commands/graft.ts +14 -9
  45. package/src/commands/inspect.ts +28 -2
  46. package/src/commands/task.ts +30 -1
  47. package/src/exec.ts +38 -10
  48. package/src/gate-repair.ts +87 -0
  49. package/src/gate.ts +156 -14
  50. package/src/graft.ts +56 -23
  51. package/src/ledger.ts +12 -2
  52. package/src/memory.ts +14 -1
  53. package/src/prompt-rewriter.ts +357 -24
  54. package/src/spec.ts +19 -6
@@ -25,8 +25,6 @@
25
25
  "kotlin",
26
26
  "swift",
27
27
  "php",
28
- "dart",
29
- "flutter",
30
28
  "react",
31
29
  "vue",
32
30
  "angular",
@@ -37,7 +35,21 @@
37
35
  "split",
38
36
  "cli"
39
37
  ],
40
- "defaultSkills": [],
38
+ "defaultSkills": [
39
+ "flutter-apply-architecture-best-practices",
40
+ "dart-run-static-analysis",
41
+ "expo-overview",
42
+ "expo-router",
43
+ "expo-app-clip",
44
+ "expo-brownfield",
45
+ "expo-data-fetching",
46
+ "expo-dom",
47
+ "expo-examples",
48
+ "expo-migrate-module",
49
+ "expo-module",
50
+ "expo-project-structure",
51
+ "expo-web-to-native"
52
+ ],
41
53
  "roadmap": {
42
54
  "id": "feature",
43
55
  "steps": [
@@ -100,6 +112,216 @@
100
112
  ]
101
113
  }
102
114
  },
115
+ {
116
+ "id": "flutter",
117
+ "label": "Flutter / Dart",
118
+ "priority": 61,
119
+ "keywords": [
120
+ { "term": "flutter", "weight": 3 },
121
+ { "term": "dart", "weight": 2 },
122
+ "widget",
123
+ "widgets",
124
+ "pubspec",
125
+ "hot reload",
126
+ "hot restart",
127
+ "cupertino",
128
+ "materialapp",
129
+ "material design",
130
+ "riverpod",
131
+ "bloc",
132
+ "getx",
133
+ "sliver",
134
+ "scaffold",
135
+ "dart analyze",
136
+ "flutter test",
137
+ "widget test",
138
+ "integration_test",
139
+ "platform channel"
140
+ ],
141
+ "negativeKeywords": [
142
+ "supabase",
143
+ "rls"
144
+ ],
145
+ "defaultSkills": [
146
+ "flutter-apply-architecture-best-practices",
147
+ "dart-run-static-analysis",
148
+ "dart-add-unit-test"
149
+ ],
150
+ "roadmap": {
151
+ "id": "flutter-feature",
152
+ "steps": [
153
+ {
154
+ "id": "plan",
155
+ "label": "Set the direction",
156
+ "kind": "skill",
157
+ "requireSkills": ["novahiz-plan"]
158
+ },
159
+ {
160
+ "id": "clarify",
161
+ "label": "Remove ambiguities",
162
+ "kind": "skill",
163
+ "requireSkills": ["novahiz-clarify"]
164
+ },
165
+ {
166
+ "id": "tasks",
167
+ "label": "Break into tasks",
168
+ "kind": "skill",
169
+ "requireSkills": ["novahiz-task"]
170
+ },
171
+ {
172
+ "id": "analyse",
173
+ "label": "Analyze the affected code",
174
+ "kind": "skill",
175
+ "requireSkills": ["novahiz-analyse"]
176
+ },
177
+ {
178
+ "id": "architecture",
179
+ "label": "Apply Flutter architecture best practices",
180
+ "kind": "skill",
181
+ "requireSkills": ["flutter-apply-architecture-best-practices"]
182
+ },
183
+ {
184
+ "id": "analyze",
185
+ "label": "Run Dart static analysis",
186
+ "kind": "skill",
187
+ "requireSkills": ["dart-run-static-analysis"]
188
+ },
189
+ {
190
+ "id": "implement",
191
+ "label": "Implement incrementally",
192
+ "kind": "edit",
193
+ "requireSkills": ["novahiz-implement"]
194
+ },
195
+ {
196
+ "id": "tests",
197
+ "label": "Add unit or widget tests",
198
+ "kind": "skill",
199
+ "requireSkills": ["dart-add-unit-test"]
200
+ },
201
+ {
202
+ "id": "impeccable-critique",
203
+ "label": "Impeccable critique (UI work)",
204
+ "kind": "skill",
205
+ "requireSkills": ["impeccable"],
206
+ "optional": true
207
+ },
208
+ {
209
+ "id": "converge",
210
+ "label": "Converge",
211
+ "kind": "verify",
212
+ "requireSkills": ["novahiz-converge"]
213
+ },
214
+ {
215
+ "id": "review",
216
+ "label": "Self-review",
217
+ "kind": "skill",
218
+ "requireSkills": ["novahiz-code-review"]
219
+ }
220
+ ]
221
+ }
222
+ },
223
+ {
224
+ "id": "expo",
225
+ "label": "Expo / React Native",
226
+ "priority": 61,
227
+ "keywords": [
228
+ { "term": "expo", "weight": 3 },
229
+ { "term": "react native", "weight": 3 },
230
+ "expo router",
231
+ "expo sdk",
232
+ "expo install",
233
+ "expo-go",
234
+ "eas build",
235
+ "eas update",
236
+ "app.json",
237
+ "app.config",
238
+ "react-native",
239
+ "metro bundler",
240
+ "dev client"
241
+ ],
242
+ "negativeKeywords": [
243
+ "flutter",
244
+ "pubspec"
245
+ ],
246
+ "defaultSkills": [
247
+ "expo-overview"
248
+ ],
249
+ "roadmap": {
250
+ "id": "expo-feature",
251
+ "steps": [
252
+ {
253
+ "id": "plan",
254
+ "label": "Set the direction",
255
+ "kind": "skill",
256
+ "requireSkills": ["novahiz-plan"]
257
+ },
258
+ {
259
+ "id": "clarify",
260
+ "label": "Remove ambiguities",
261
+ "kind": "skill",
262
+ "requireSkills": ["novahiz-clarify"]
263
+ },
264
+ {
265
+ "id": "tasks",
266
+ "label": "Break into tasks",
267
+ "kind": "skill",
268
+ "requireSkills": ["novahiz-task"]
269
+ },
270
+ {
271
+ "id": "analyse",
272
+ "label": "Analyze the affected code",
273
+ "kind": "skill",
274
+ "requireSkills": ["novahiz-analyse"]
275
+ },
276
+ {
277
+ "id": "expo-routes",
278
+ "label": "Expo Router navigation (route or screen work)",
279
+ "kind": "skill",
280
+ "requireSkills": ["expo-router"],
281
+ "optional": true
282
+ },
283
+ {
284
+ "id": "expo-native",
285
+ "label": "Expo native module (native code work)",
286
+ "kind": "skill",
287
+ "requireSkills": ["expo-module"],
288
+ "optional": true
289
+ },
290
+ {
291
+ "id": "expo-build",
292
+ "label": "Dev client / EAS build setup",
293
+ "kind": "skill",
294
+ "requireSkills": ["expo-dev-client"],
295
+ "optional": true
296
+ },
297
+ {
298
+ "id": "expo-upgrade",
299
+ "label": "Expo SDK upgrade",
300
+ "kind": "skill",
301
+ "requireSkills": ["expo-upgrade"],
302
+ "optional": true
303
+ },
304
+ {
305
+ "id": "implement",
306
+ "label": "Implement incrementally",
307
+ "kind": "edit",
308
+ "requireSkills": ["novahiz-implement"]
309
+ },
310
+ {
311
+ "id": "converge",
312
+ "label": "Converge",
313
+ "kind": "verify",
314
+ "requireSkills": ["novahiz-converge"]
315
+ },
316
+ {
317
+ "id": "review",
318
+ "label": "Self-review",
319
+ "kind": "skill",
320
+ "requireSkills": ["novahiz-code-review"]
321
+ }
322
+ ]
323
+ }
324
+ },
103
325
  {
104
326
  "id": "debug",
105
327
  "label": "Debug",
@@ -118,7 +340,12 @@
118
340
  "fix",
119
341
  "reproduce"
120
342
  ],
121
- "defaultSkills": [],
343
+ "defaultSkills": [
344
+ "dart-fix-runtime-errors",
345
+ "flutter-fix-layout-issues",
346
+ "expo-dev-client",
347
+ "expo-upgrade"
348
+ ],
122
349
  "roadmap": {
123
350
  "id": "bugfix",
124
351
  "steps": [
@@ -302,7 +529,12 @@
302
529
  "pytest",
303
530
  "playwright test"
304
531
  ],
305
- "defaultSkills": [],
532
+ "defaultSkills": [
533
+ "flutter-add-widget-test",
534
+ "dart-add-unit-test",
535
+ "expo-skill-eval",
536
+ "eas-simulator"
537
+ ],
306
538
  "roadmap": {
307
539
  "id": "testing",
308
540
  "steps": [
@@ -525,7 +757,12 @@
525
757
  "defaultSkills": [
526
758
  "novahiz-humanizer",
527
759
  "ui-slop-remover",
528
- "ui-craft-rules"
760
+ "ui-craft-rules",
761
+ "flutter-build-responsive-layout",
762
+ "expo-native-ui",
763
+ "expo-design-system",
764
+ "expo-animation",
765
+ "expo-ui"
529
766
  ],
530
767
  "roadmap": {
531
768
  "id": "design",
@@ -573,6 +810,33 @@
573
810
  "novahiz-implement"
574
811
  ]
575
812
  },
813
+ {
814
+ "id": "impeccable-critique",
815
+ "label": "Impeccable critique (systematic after UI work)",
816
+ "kind": "skill",
817
+ "requireSkills": [
818
+ "impeccable"
819
+ ],
820
+ "optional": true
821
+ },
822
+ {
823
+ "id": "impeccable-audit",
824
+ "label": "Impeccable audit (a11y/perf/responsive, when the UI warrants it)",
825
+ "kind": "skill",
826
+ "requireSkills": [
827
+ "impeccable"
828
+ ],
829
+ "optional": true
830
+ },
831
+ {
832
+ "id": "impeccable-polish",
833
+ "label": "Impeccable polish (final pass before ship)",
834
+ "kind": "skill",
835
+ "requireSkills": [
836
+ "impeccable"
837
+ ],
838
+ "optional": true
839
+ },
576
840
  {
577
841
  "id": "responsive",
578
842
  "label": "Verify responsive behavior",
@@ -841,9 +1105,17 @@
841
1105
  "ansible",
842
1106
  "nginx",
843
1107
  "infra",
844
- "monitoring"
1108
+ "monitoring",
1109
+ "eas"
1110
+ ],
1111
+ "defaultSkills": [
1112
+ "eas-workflows",
1113
+ "eas-app-stores",
1114
+ "eas-hosting",
1115
+ "eas-observe",
1116
+ "eas-update",
1117
+ "eas-update-insights"
845
1118
  ],
846
- "defaultSkills": [],
847
1119
  "roadmap": {
848
1120
  "id": "devops",
849
1121
  "steps": [
@@ -1037,7 +1309,8 @@
1037
1309
  "novahiz-clarify",
1038
1310
  "novahiz-analyse",
1039
1311
  "novahiz-implement",
1040
- "novahiz-converge"
1312
+ "novahiz-converge",
1313
+ "expo-skill-feedback"
1041
1314
  ],
1042
1315
  "roadmap": {
1043
1316
  "id": "general",