gennady 0.8.4-next.9 → 0.9.0-next.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/ai/directives/coding/result-conventions.xml +29 -0
- package/ai/directives/coding/uikit-spec-drafting.xml +15 -0
- package/ai/directives/sdd/README.md +22 -15
- package/ai/directives/sdd/audit.directive.xml +215 -81
- package/ai/directives/sdd/critic-protocol.xml +22 -12
- package/ai/directives/sdd/critic.directive.xml +55 -30
- package/ai/directives/sdd/discovery.directive.xml +10 -4
- package/ai/directives/sdd/module-decomposition.directive.xml +8 -2
- package/ai/directives/sdd/phase-execution-protocol.xml +55 -16
- package/ai/directives/sdd/scaffold.directive.xml +19 -8
- package/ai/directives/testing/common.xml +35 -0
- package/ai/directives/testing/node-test.xml +9 -0
- package/ai/directives/testing/vitest-rules.xml +10 -0
- package/ai/skills/README.md +18 -7
- package/ai/skills/sdd-audit/SKILL.md +19 -5
- package/ai/skills/sdd-check/SKILL.md +34 -6
- package/ai/skills/sdd-execute/SKILL.md +130 -46
- package/ai/skills/sdd-execute/scripts/README.md +15 -12
- package/ai/skills/sdd-execute/scripts/_sdd-lib.sh +64 -7
- package/ai/skills/sdd-execute/scripts/check.sh +290 -27
- package/ai/skills/sdd-execute/scripts/extract-section.sh +3 -2
- package/ai/skills/sdd-execute/scripts/scan.sh +35 -9
- package/ai/skills/sdd-execute/scripts/sdd +11 -4
- package/ai/skills/sdd-execute-batch/SKILL.md +101 -194
- package/dist/ai/directives/coding/result-conventions.xml +29 -0
- package/dist/ai/directives/coding/uikit-spec-drafting.xml +15 -0
- package/dist/ai/directives/sdd/README.md +22 -15
- package/dist/ai/directives/sdd/audit.directive.xml +215 -81
- package/dist/ai/directives/sdd/critic-protocol.xml +22 -12
- package/dist/ai/directives/sdd/critic.directive.xml +55 -30
- package/dist/ai/directives/sdd/discovery.directive.xml +10 -4
- package/dist/ai/directives/sdd/module-decomposition.directive.xml +8 -2
- package/dist/ai/directives/sdd/phase-execution-protocol.xml +55 -16
- package/dist/ai/directives/sdd/scaffold.directive.xml +19 -8
- package/dist/ai/directives/testing/common.xml +35 -0
- package/dist/ai/directives/testing/node-test.xml +9 -0
- package/dist/ai/directives/testing/vitest-rules.xml +10 -0
- package/dist/ai/skills/README.md +18 -7
- package/dist/ai/skills/sdd-audit/SKILL.md +19 -5
- package/dist/ai/skills/sdd-check/SKILL.md +34 -6
- package/dist/ai/skills/sdd-execute/SKILL.md +130 -46
- package/dist/ai/skills/sdd-execute/scripts/README.md +15 -12
- package/dist/ai/skills/sdd-execute/scripts/_sdd-lib.sh +64 -7
- package/dist/ai/skills/sdd-execute/scripts/check.sh +290 -27
- package/dist/ai/skills/sdd-execute/scripts/extract-section.sh +3 -2
- package/dist/ai/skills/sdd-execute/scripts/scan.sh +35 -9
- package/dist/ai/skills/sdd-execute/scripts/sdd +11 -4
- package/dist/ai/skills/sdd-execute-batch/SKILL.md +101 -194
- package/dist/chunks/{classify-mr-stage.logic-Dnd980CN.js → classify-mr-stage.logic-DZGjUv_X.js} +2 -2
- package/dist/chunks/{help-B_ASr0VC.js → help-6U1C7MaJ.js} +1 -1
- package/dist/chunks/{help-CS6ySEQr.js → help-CrH7JbkQ.js} +1 -1
- package/dist/chunks/{index-BEFk5tEp.js → index-B2e5IkOV.js} +1 -1
- package/dist/chunks/{index-Ck6FvMDh.js → index-BBZ2sZIQ.js} +2 -2
- package/dist/chunks/{index-CCqb-2J2.js → index-BDRz3lXA.js} +3 -3
- package/dist/chunks/{index-Bd-zIMib.js → index-BEqwjJ3g.js} +2 -2
- package/dist/chunks/{index-C8-ASGs3.js → index-BFGmZ-nA.js} +2 -2
- package/dist/chunks/{index-DBkie7c-.js → index-BOqtpzbY.js} +2 -2
- package/dist/chunks/{index-BBXM3lsU.js → index-BaRqlR5Z.js} +2 -2
- package/dist/chunks/{index-BI_YHCD-.js → index-BxGNUOe7.js} +2 -2
- package/dist/chunks/{index-BFpKNrY5.js → index-Byfv0STQ.js} +1 -1
- package/dist/chunks/{index-CUAkHNZj.js → index-C00OiAOa.js} +1 -1
- package/dist/chunks/{index-D1Vjjx-G.js → index-C18rETLO.js} +1 -1
- package/dist/chunks/index-C4WjBAwj.js +452 -0
- package/dist/chunks/{index-B0QEFQp0.js → index-CK21WzHk.js} +2 -2
- package/dist/chunks/{index-CJOe_V3T.js → index-CMJ-BeNB.js} +2 -2
- package/dist/chunks/{index-Bk1YqNdY.js → index-D-bCkBnI.js} +2 -2
- package/dist/chunks/{index-BvtD7rdl.js → index-DAKO8NzT.js} +1 -1
- package/dist/chunks/{index-BSJjwB2R.js → index-DJb5pC6J.js} +2 -2
- package/dist/chunks/{index-DVe5_tHO.js → index-DLw0rhBC.js} +2 -2
- package/dist/chunks/{index-CyRUoAkC.js → index-DMZvxXla.js} +3 -3
- package/dist/chunks/{index-BDLu3R0J.js → index-DRnLPx14.js} +2 -2
- package/dist/chunks/{index-COSkBKSt.js → index-DYC3I17s.js} +2 -2
- package/dist/chunks/{index-D0SqcZV8.js → index-DYLeydbi.js} +2 -2
- package/dist/chunks/{index-BlMEzvPi.js → index-DZ2uzr_h.js} +2 -2
- package/dist/chunks/{index-C5YNRfwf.js → index-D_d1SoKI.js} +2 -2
- package/dist/chunks/{index-BHK0Porr.js → index-Dge9xC5p.js} +2 -2
- package/dist/chunks/{index-QBAP-DXO.js → index-DhhVvfCC.js} +2 -2
- package/dist/chunks/{index-NUbc9nsY.js → index-Do8Rkc9u.js} +2 -2
- package/dist/chunks/{index-mXhoqAHl.js → index-FutEl5bP.js} +2 -2
- package/dist/chunks/{index-DTRnPURh.js → index-Pj9AcyYF.js} +2 -2
- package/dist/chunks/{index-DhmJocBf.js → index-UX--GLfC.js} +1 -1
- package/dist/chunks/{index-dyIXTgzD.js → index-hGDyrnx1.js} +2 -2
- package/dist/chunks/{index-BgYuwxiz.js → index-jJJoXOgC.js} +3 -3
- package/dist/chunks/{index-C5Y2OgqW.js → index-rYwVVnXg.js} +2 -2
- package/dist/chunks/{run-review-command.logic-C7b7XU2K.js → run-review-command.logic-mUOnwzxi.js} +2 -2
- package/dist/chunks/{services-BD0-3T2K.js → services-CLhhJf0J.js} +20 -15
- package/dist/chunks/{shared-CKWIgYym.js → shared-Bh29rPvY.js} +1 -1
- package/dist/cli/cmd/sync-skills/sync-skills-core.d.ts +61 -0
- package/dist/gennady.js +36 -36
- package/dist/index.js +3 -3
- package/dist/shared/common/sync/sync-deps.type.d.ts +4 -3
- package/dist/stack.js +10 -0
- package/docs/sdd-flow.md +71 -55
- package/package.json +12 -6
- package/plugins/golang/directives/infra/golang-setup.xml +25 -0
- package/dist/chunks/index-ByMppTkp.js +0 -413
|
@@ -59,6 +59,35 @@
|
|
|
59
59
|
</Axiom>
|
|
60
60
|
</BeliefState>
|
|
61
61
|
|
|
62
|
+
<AntiPatterns>
|
|
63
|
+
<AntiPattern id="AP_RESULT_AS_INTERNAL_BRANCHING">
|
|
64
|
+
<Bad>Return `Result` from every private helper and branch on `isErr` or `.ok` at each call site.</Bad>
|
|
65
|
+
<WhyBad>It mixes transport and control-flow concerns, duplicates error propagation, and bypasses the guarded public boundary.</WhyBad>
|
|
66
|
+
<Good>Private I/O helpers throw, pure helpers return honest scalar/error values, and the public boundary converts failures to `Result` once.</Good>
|
|
67
|
+
</AntiPattern>
|
|
68
|
+
<AntiPattern id="AP_UNGUARDED_MUST_AT_BOUNDARY">
|
|
69
|
+
<Bad>An exported `Result`-returning function calls `must()` outside a try/catch and lets the contained error escape.</Bad>
|
|
70
|
+
<WhyBad>The declared Result boundary can throw instead of returning `fail(error)`.</WhyBad>
|
|
71
|
+
<Good>Guard `must()` in the public boundary and return `fail(TessellError.cast(...))` from catch.</Good>
|
|
72
|
+
</AntiPattern>
|
|
73
|
+
<AntiPattern id="AP_MANUAL_RESULT_SHAPE">
|
|
74
|
+
<Bad>Construct `{ ok, data, error }` manually or pin a concrete second Result generic.</Bad>
|
|
75
|
+
<WhyBad>The code bypasses canonical constructors and promises an error surface the runtime cannot guarantee.</WhyBad>
|
|
76
|
+
<Good>Use `success(value)`, `fail(error)`, and `Result<T>`.</Good>
|
|
77
|
+
</AntiPattern>
|
|
78
|
+
</AntiPatterns>
|
|
79
|
+
|
|
80
|
+
<VerificationHooks>
|
|
81
|
+
<Hook id="HOOK_RESULT_LINT_RULES">
|
|
82
|
+
<Command>npm run lint</Command>
|
|
83
|
+
<Expected>Exit 0; R1–R7 report no violations in changed Result-bearing code.</Expected>
|
|
84
|
+
</Hook>
|
|
85
|
+
<Hook id="HOOK_RESULT_RULE_TESTS">
|
|
86
|
+
<Command>npm test</Command>
|
|
87
|
+
<Expected>Exit 0; each custom Result rule keeps positive, negative, and edge-case coverage.</Expected>
|
|
88
|
+
</Hook>
|
|
89
|
+
</VerificationHooks>
|
|
90
|
+
|
|
62
91
|
<RewardCriteria>
|
|
63
92
|
- R1 flags `Result<T, DataStorageError>`, autofixes to `Result<T>`. Does NOT flag `Result<T, E>` where E is a type parameter of the enclosing generic.
|
|
64
93
|
- R2 flags `{ ok: true, data: x, error: null }`, autofixes to `success(x)`.
|
|
@@ -220,6 +220,21 @@
|
|
|
220
220
|
</AntiPattern>
|
|
221
221
|
</AntiPatterns>
|
|
222
222
|
|
|
223
|
+
<VerificationHooks>
|
|
224
|
+
<Hook id="HOOK_EXTRACTION_HAS_REQUIRED_INPUT">
|
|
225
|
+
<Command>jq -e '.variants | length > 0' <extraction-result.json></Command>
|
|
226
|
+
<Expected>Exit 0; the extraction contains at least one variant before drafting starts.</Expected>
|
|
227
|
+
</Hook>
|
|
228
|
+
<Hook id="HOOK_DRAFT_PRESERVES_REVIEW_MARKER">
|
|
229
|
+
<Command>rg -n '<!-- DRAFT: generated from figma-utils extract\.' <component.ui.spec.md></Command>
|
|
230
|
+
<Expected>Exactly one DRAFT marker is present before operator review.</Expected>
|
|
231
|
+
</Hook>
|
|
232
|
+
<Hook id="HOOK_DRAFT_REQUIRED_SECTIONS">
|
|
233
|
+
<Command>rg -n '^## (Vision|Variants|Token Mapping|Element Structure|A11y Requirements|BDD Scenarios)$' <component.ui.spec.md></Command>
|
|
234
|
+
<Expected>All six required section headings are present; missing extraction data is represented explicitly, not omitted.</Expected>
|
|
235
|
+
</Hook>
|
|
236
|
+
</VerificationHooks>
|
|
237
|
+
|
|
223
238
|
<RewardCriteria>
|
|
224
239
|
✅ Draft содержит все 6 обязательных секций (Vision, Variants, Token Mapping, Element Structure, A11y, BDD).
|
|
225
240
|
✅ Variants — closed-world таблица, все комбинации size × appearance × mode перечислены.
|
|
@@ -17,6 +17,7 @@ flowchart LR
|
|
|
17
17
|
E --> F["sdd-execute / sdd-execute-batch"]
|
|
18
18
|
F --> G[audit]
|
|
19
19
|
G -->|FAIL| F
|
|
20
|
+
G -->|PASS + insights| H["operator reviews canonical backflow"]
|
|
20
21
|
```
|
|
21
22
|
|
|
22
23
|
```
|
|
@@ -32,22 +33,28 @@ setup ──► discovery ──► module-decomposition? ──► scaffold ─
|
|
|
32
33
|
|
|
33
34
|
## Директивы
|
|
34
35
|
|
|
35
|
-
| Директива | Что делает
|
|
36
|
-
| ------------------------------------ |
|
|
37
|
-
| `setup.directive.xml` | Создаёт/обновляет портал проекта — Vision и Scope Graph (sole owner)
|
|
38
|
-
| `discovery.directive.xml` | Проектирует scope: vision, архитектура, инструменты; режимы greenfield/refine/pivot
|
|
39
|
-
| `module-decomposition.directive.xml` | Декомпозирует scope на модули (только library/product)
|
|
40
|
-
| `scaffold.directive.xml` | Строит DAG task-тикетов с Phases Overview, BDD, правилами per phase
|
|
41
|
-
| `phase-execution-protocol.xml` | Выполняет
|
|
42
|
-
| `audit.directive.xml` | Проверяет
|
|
43
|
-
| `critic.directive.xml` |
|
|
44
|
-
| `critic-protocol.xml` | Изолированный критик-сабагент: read-only, только артефакт + родительская спека
|
|
45
|
-
| `fix.directive.xml` | Findings → классификация → план → фиксы → reopen → execute → verify
|
|
46
|
-
| `interview-protocol.xml` | Движок интервью оператора: coverage map, один вопрос за сообщение
|
|
47
|
-
| `visual-vocabulary.xml` | Cheat-sheet диаграмм: ASCII в чате / mermaid в спеках
|
|
48
|
-
| `svelte-ui-discovery.directive.xml` | Компонент-спека `.ui.spec.md` из Figma SVG (component-level, дополняет flow)
|
|
36
|
+
| Директива | Что делает | Входные данные | Выходные данные |
|
|
37
|
+
| ------------------------------------ | ------------------------------------------------------------------------------------- | --------------------------- | ----------------------------------------------- |
|
|
38
|
+
| `setup.directive.xml` | Создаёт/обновляет портал проекта — Vision и Scope Graph (sole owner) | Намерение оператора | `specs/README.md` |
|
|
39
|
+
| `discovery.directive.xml` | Проектирует scope: vision, архитектура, инструменты; режимы greenfield/refine/pivot | Название scope + scope-type | `specs/<scope>/<scope>.spec.md` |
|
|
40
|
+
| `module-decomposition.directive.xml` | Декомпозирует scope на модули (только library/product) | scope-spec | `specs/<scope>/<module>/<module>.spec.md` |
|
|
41
|
+
| `scaffold.directive.xml` | Строит DAG task-тикетов с Phases Overview, BDD, правилами per phase | Все scope-specs | `tasks/README.md`, `tasks/<scope>/*.task-NN.md` |
|
|
42
|
+
| `phase-execution-protocol.xml` | Выполняет одну фазу; безопасные расхождения фиксирует обычным `decision` и продолжает | Phase ID + ticket + Handoff | Target Files + лог-блок + typed Handoff |
|
|
43
|
+
| `audit.directive.xml` | Проверяет spec ↔ тикет ↔ код; каждый finding называет владельца исправления | Закрытый Round + код | PASS / FAIL + маршрутизация |
|
|
44
|
+
| `critic.directive.xml` | Baseline → узкая проверка правок; сохраняет компактный итог CLEAN | Артефакт (спека/таск) | Закрытые пробелы / проверяемый вердикт |
|
|
45
|
+
| `critic-protocol.xml` | Изолированный критик-сабагент: read-only, только артефакт + родительская спека | Артефакт | Находки (отчёт) |
|
|
46
|
+
| `fix.directive.xml` | Findings → классификация → план → фиксы → reopen → execute → verify | Находки (ревью/аудит/check) | Исправления + переоткрытые тикеты |
|
|
47
|
+
| `interview-protocol.xml` | Движок интервью оператора: coverage map, один вопрос за сообщение | scope-type + focus | Закрытая карта покрытия + ответы |
|
|
48
|
+
| `visual-vocabulary.xml` | Cheat-sheet диаграмм: ASCII в чате / mermaid в спеках | Контекст авторинга | Выбор диаграммы |
|
|
49
|
+
| `svelte-ui-discovery.directive.xml` | Компонент-спека `.ui.spec.md` из Figma SVG (component-level, дополняет flow) | Имя компонента + SVG | `specs/<scope>/components/<name>.ui.spec.md` |
|
|
49
50
|
|
|
50
|
-
Оркестрация — через SKILL
|
|
51
|
+
Оркестрация — через SKILL-ы: `sdd-execute` владеет единственным per-task lifecycle, а
|
|
52
|
+
`sdd-execute-batch` только планирует dependency-очередь и последовательно делегирует ему готовые
|
|
53
|
+
TODO/IN_PROGRESS тикеты. Они читают planning surface и никогда не выполняют фазы сами. Нештатные
|
|
54
|
+
решения переносятся существующим Handoff до fresh-eyes аудита. Диспатчи наследуют настроенную модель. Аудит подтверждает
|
|
55
|
+
runtime-утверждения выполненной командой или probe, продолжает исправления до PASS либо доказанного
|
|
56
|
+
no-progress и возвращает обычные `INSIGHT_BACKFLOW` предложения; оператор получает их одним блоком
|
|
57
|
+
после исполнения.
|
|
51
58
|
|
|
52
59
|
## Scope Model
|
|
53
60
|
|