gennady 0.7.0 → 0.8.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.
Files changed (154) hide show
  1. package/ai/directives/coding/result-conventions.xml +25 -7
  2. package/ai/directives/sdd/audit.directive.xml +1 -1
  3. package/ai/directives/sdd/critic-protocol.xml +78 -0
  4. package/ai/directives/sdd/critic.directive.xml +158 -0
  5. package/ai/directives/sdd/phase-execution-protocol.xml +11 -9
  6. package/ai/skills/alt-opinion/SKILL.md +79 -0
  7. package/ai/skills/alt-opinion/opinion.prompt.md +11 -0
  8. package/ai/skills/alt-opinion/synth.prompt.md +8 -0
  9. package/ai/skills/sdd-audit/SKILL.md +13 -0
  10. package/ai/skills/sdd-check/SKILL.md +139 -0
  11. package/ai/skills/sdd-continue/SKILL.md +13 -0
  12. package/ai/skills/sdd-critic/SKILL.md +12 -0
  13. package/ai/skills/sdd-discover/SKILL.md +13 -0
  14. package/ai/skills/sdd-execute/SKILL.md +205 -0
  15. package/ai/skills/sdd-execute/scripts/README.md +84 -0
  16. package/ai/skills/sdd-execute/scripts/check-blockers.sh +158 -0
  17. package/ai/skills/sdd-execute/scripts/classify-scripts.js +111 -0
  18. package/ai/skills/sdd-execute/scripts/classify-scripts.ts +133 -0
  19. package/ai/skills/sdd-execute/scripts/extract-section.sh +219 -0
  20. package/ai/skills/sdd-execute/scripts/lint-artifacts.sh +143 -0
  21. package/ai/skills/sdd-execute/scripts/scan.sh +385 -0
  22. package/ai/skills/sdd-execute/scripts/sdd +114 -0
  23. package/ai/skills/sdd-execute/scripts/verify.sh +139 -0
  24. package/ai/skills/sdd-execute-batch/SKILL.md +213 -0
  25. package/ai/skills/sdd-fix/SKILL.md +13 -0
  26. package/ai/skills/sdd-infra/SKILL.md +13 -0
  27. package/ai/skills/sdd-module-decomposition/SKILL.md +13 -0
  28. package/ai/skills/sdd-scaffold/SKILL.md +13 -0
  29. package/ai/skills/sdd-setup/SKILL.md +13 -0
  30. package/dist/ai/directives/coding/result-conventions.xml +25 -7
  31. package/dist/ai/directives/sdd/audit.directive.xml +1 -1
  32. package/dist/ai/directives/sdd/critic-protocol.xml +78 -0
  33. package/dist/ai/directives/sdd/critic.directive.xml +158 -0
  34. package/dist/ai/directives/sdd/phase-execution-protocol.xml +11 -9
  35. package/dist/ai/skills/alt-opinion/SKILL.md +79 -0
  36. package/dist/ai/skills/alt-opinion/opinion.prompt.md +11 -0
  37. package/dist/ai/skills/alt-opinion/synth.prompt.md +8 -0
  38. package/dist/ai/skills/sdd-audit/SKILL.md +13 -0
  39. package/dist/ai/skills/sdd-check/SKILL.md +139 -0
  40. package/dist/ai/skills/sdd-continue/SKILL.md +13 -0
  41. package/dist/ai/skills/sdd-critic/SKILL.md +12 -0
  42. package/dist/ai/skills/sdd-discover/SKILL.md +13 -0
  43. package/dist/ai/skills/sdd-execute/SKILL.md +205 -0
  44. package/dist/ai/skills/sdd-execute/scripts/README.md +84 -0
  45. package/dist/ai/skills/sdd-execute/scripts/check-blockers.sh +158 -0
  46. package/dist/ai/skills/sdd-execute/scripts/classify-scripts.js +111 -0
  47. package/dist/ai/skills/sdd-execute/scripts/classify-scripts.ts +133 -0
  48. package/dist/ai/skills/sdd-execute/scripts/extract-section.sh +219 -0
  49. package/dist/ai/skills/sdd-execute/scripts/lint-artifacts.sh +143 -0
  50. package/dist/ai/skills/sdd-execute/scripts/scan.sh +385 -0
  51. package/dist/ai/skills/sdd-execute/scripts/sdd +114 -0
  52. package/dist/ai/skills/sdd-execute/scripts/verify.sh +139 -0
  53. package/dist/ai/skills/sdd-execute-batch/SKILL.md +213 -0
  54. package/dist/ai/skills/sdd-fix/SKILL.md +13 -0
  55. package/dist/ai/skills/sdd-infra/SKILL.md +13 -0
  56. package/dist/ai/skills/sdd-module-decomposition/SKILL.md +13 -0
  57. package/dist/ai/skills/sdd-scaffold/SKILL.md +13 -0
  58. package/dist/ai/skills/sdd-setup/SKILL.md +13 -0
  59. package/dist/chunks/_commonjsHelpers-DaMA6jEr.js +8 -0
  60. package/dist/chunks/{devtools-B-7ugZhF.js → devtools-CPZ0IUNM.js} +1 -1
  61. package/dist/chunks/help-5qCaicff.js +6 -0
  62. package/dist/chunks/help-B2ETH0j6.js +6 -0
  63. package/dist/chunks/help-BCDURaCQ.js +6 -0
  64. package/dist/chunks/help-BvgYOSyQ.js +6 -0
  65. package/dist/chunks/help-CSPhOoI9.js +8 -0
  66. package/dist/chunks/help-CV1vpwrh.js +6 -0
  67. package/dist/chunks/help-CaBNA6Qr.js +12 -0
  68. package/dist/chunks/help-CjkR6SB9.js +6 -0
  69. package/dist/chunks/help-Coi1l5u9.js +8 -0
  70. package/dist/chunks/help-CsuLpZn-.js +8 -0
  71. package/dist/chunks/help-DL_QBMwy.js +8 -0
  72. package/dist/chunks/help-DqBZ2xcp.js +6 -0
  73. package/dist/chunks/help-_Y_TN4DZ.js +6 -0
  74. package/dist/chunks/{help.cmd-B_G7EWzF.js → help.cmd-BseRtoBF.js} +10 -2
  75. package/dist/chunks/{index-zBnnuvLA.js → index-BU1AXJGA.js} +12 -7
  76. package/dist/chunks/{index-CXuhZzS3.js → index-BXWDYM_9.js} +1 -1
  77. package/dist/chunks/index-BgKyH0dB.js +658 -0
  78. package/dist/chunks/{index-CaahtXiM.js → index-BghL1-Nk.js} +2 -2
  79. package/dist/chunks/{index-BeL1Zcbg.js → index-BlqEQEGy.js} +1 -1
  80. package/dist/chunks/{index-D1qsi0Uc.js → index-CDM74qdR.js} +3 -3
  81. package/dist/chunks/{index-D9ceRUyB.js → index-CGsIRefC.js} +2 -2
  82. package/dist/chunks/{index-CiEM-8nJ.js → index-CIvkaAQ3.js} +2 -2
  83. package/dist/chunks/{index-UbHoePfr.js → index-CkczJ__m.js} +10 -10
  84. package/dist/chunks/index-CtJKSOL0.js +21 -0
  85. package/dist/chunks/index-DEzym4Ae.js +369 -0
  86. package/dist/chunks/{index-CVR66voe.js → index-DoaxOhQ8.js} +401 -393
  87. package/dist/chunks/index-Du1xR-qO.js +752 -0
  88. package/dist/chunks/{index-DU6jD7SS.js → index-OtehG7uM.js} +1 -1
  89. package/dist/chunks/index-ZM_FonZj.js +156 -0
  90. package/dist/chunks/{index-g1LXlp77.js → index-k0nToACp.js} +2 -2
  91. package/dist/chunks/{run-review-command.logic-DpkRoEi8.js → run-review-command.logic-BeYQin-I.js} +9 -9
  92. package/dist/chunks/services-IgZptnTi.js +2732 -0
  93. package/dist/chunks/shared-DL_1LG0K.js +753 -0
  94. package/dist/cli/cmd/agent-mon/help.d.ts +4 -0
  95. package/dist/cli/cmd/agents-rules/agents-rules.cmd.d.ts +8 -0
  96. package/dist/cli/cmd/agents-rules/index.d.ts +1 -0
  97. package/dist/cli/cmd/alt-opinion/help.d.ts +4 -0
  98. package/dist/cli/cmd/cat/help.d.ts +4 -0
  99. package/dist/cli/cmd/commit/help.d.ts +4 -0
  100. package/dist/cli/cmd/lint/checks/anchor-class-body.check.d.ts +11 -0
  101. package/dist/cli/cmd/lint/checks/invariant-count.check.d.ts +11 -0
  102. package/dist/cli/cmd/lint/checks/utils/glob-match.d.ts +15 -0
  103. package/dist/cli/cmd/lint/checks/utils/strip-strings-comments.d.ts +7 -0
  104. package/dist/cli/cmd/lint/help.d.ts +4 -0
  105. package/dist/cli/cmd/lint/lint.cmd.d.ts +1 -1
  106. package/dist/cli/cmd/lint/lint.types.d.ts +6 -0
  107. package/dist/cli/cmd/orient/core/build-index.d.ts +8 -0
  108. package/dist/cli/cmd/orient/core/damerau-levenshtein.d.ts +26 -0
  109. package/dist/cli/cmd/orient/core/extract-header.d.ts +8 -0
  110. package/dist/cli/cmd/orient/core/hints.d.ts +9 -0
  111. package/dist/cli/cmd/orient/core/query-consumer.d.ts +10 -0
  112. package/dist/cli/cmd/orient/core/query-entity.d.ts +11 -0
  113. package/dist/cli/cmd/orient/core/query-graph.d.ts +18 -0
  114. package/dist/cli/cmd/orient/core/query-keyword.d.ts +10 -0
  115. package/dist/cli/cmd/orient/core/query-spec.d.ts +15 -0
  116. package/dist/cli/cmd/orient/core/query-task.d.ts +8 -0
  117. package/dist/cli/cmd/orient/core/scan-files.d.ts +8 -0
  118. package/dist/cli/cmd/orient/help.d.ts +5 -0
  119. package/dist/cli/cmd/orient/index.d.ts +1 -0
  120. package/dist/cli/cmd/orient/orient.cmd.d.ts +7 -0
  121. package/dist/cli/cmd/orient/orient.types.d.ts +136 -0
  122. package/dist/cli/cmd/orient/render/render-detail.d.ts +10 -0
  123. package/dist/cli/cmd/orient/render/render-file-list.d.ts +15 -0
  124. package/dist/cli/cmd/orient/render/render-graph.d.ts +13 -0
  125. package/dist/cli/cmd/orient/render/render-search.d.ts +8 -0
  126. package/dist/cli/cmd/orient/render/render-specs.d.ts +13 -0
  127. package/dist/cli/cmd/orient/render/render-tree.d.ts +13 -0
  128. package/dist/cli/cmd/remote-console/help.d.ts +4 -0
  129. package/dist/cli/cmd/resolve-conflicts/help.d.ts +4 -0
  130. package/dist/cli/cmd/review/help.d.ts +4 -0
  131. package/dist/cli/cmd/review-issues/help.d.ts +4 -0
  132. package/dist/cli/cmd/review-verify/help.d.ts +4 -0
  133. package/dist/cli/cmd/sync/help.d.ts +4 -0
  134. package/dist/cli/cmd/sync/sync-core.d.ts +3 -2
  135. package/dist/cli/cmd/sync/sync-formatter.d.ts +8 -9
  136. package/dist/cli/cmd/sync/sync.cmd.d.ts +2 -21
  137. package/dist/cli/cmd/sync-skills/index.d.ts +1 -0
  138. package/dist/cli/cmd/sync-skills/sync-skills-core.d.ts +50 -0
  139. package/dist/cli/cmd/sync-skills/sync-skills-formatter.d.ts +13 -0
  140. package/dist/cli/cmd/sync-skills/sync-skills.cmd.d.ts +14 -0
  141. package/dist/cli/cmd/sync-skills/sync-skills.types.d.ts +56 -0
  142. package/dist/cli/cmd/vcs-reply/help.d.ts +4 -0
  143. package/dist/gennady.js +73 -18
  144. package/dist/index.js +5 -5
  145. package/dist/services/dbc/linter/implementations/ts/dbc-ts-ast-adapter.d.ts +3 -2
  146. package/dist/shared/common/sync/path-normalizer.d.ts +22 -0
  147. package/dist/shared/common/sync/sync-core.shared.d.ts +14 -0
  148. package/dist/shared/common/sync/sync-deps.type.d.ts +66 -0
  149. package/dist/shared/common/sync/sync-formatter.shared.d.ts +19 -0
  150. package/package.json +6 -5
  151. package/dist/chunks/index-DJpVmyp2.js +0 -176
  152. package/dist/chunks/index-KxSZKmZn.js +0 -540
  153. package/dist/chunks/services-CaLOhuLV.js +0 -2889
  154. package/dist/chunks/shared-Bjy30TeM.js +0 -665
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env bash
2
+ # @file: Smart verification gate — auto-discovers npm scripts via heuristic, runs them.
3
+ # @consumers: phase agents (STEP_5_VERIFY); orchestrators; CI hooks
4
+ # @contract: AX_BASH_NO_SILENT_EMPTY. All discovered gates MUST pass for exit 0.
5
+ # RUN-ALL: every gate executes regardless of previous failures.
6
+ # SUPPRESS-ON-SUCCESS: passing gates produce zero output; only failures are shown.
7
+ # On all-pass: single line "[verify] ALL_GATES_PASS (N/N)". Exit 0.
8
+ # On any-fail: each failed gate dumps its command + exit code + captured output. Exit 1.
9
+ #
10
+ # Usage:
11
+ # verify.sh <file1> [<file2> ...]
12
+ #
13
+ # Exit codes:
14
+ # 0 — all gates PASS
15
+ # 1 — one or more gates failed
16
+ # 4 — bad invocation
17
+ # 5 — environment failure
18
+
19
+ set -uo pipefail
20
+
21
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
22
+ PROG="verify"
23
+
24
+ # -----------------------------------------------------------
25
+ # Preflight
26
+ # -----------------------------------------------------------
27
+
28
+ if [[ $# -lt 1 ]]; then
29
+ cat <<EOF
30
+ [$PROG] BAD_INVOCATION
31
+ expected: $PROG <file1> [<file2> ...]
32
+ got: $PROG (no args)
33
+ EOF
34
+ exit 4
35
+ fi
36
+
37
+ if ! command -v npm &>/dev/null; then
38
+ echo "[$PROG] ENV_MISSING: npm not in PATH"
39
+ exit 5
40
+ fi
41
+
42
+ if ! command -v node &>/dev/null; then
43
+ echo "[$PROG] ENV_MISSING: node not in PATH"
44
+ exit 5
45
+ fi
46
+
47
+ for file in "$@"; do
48
+ if [[ ! -f "$file" ]]; then
49
+ echo "[$PROG] FILE_NOT_FOUND: $file"
50
+ exit 4
51
+ fi
52
+ done
53
+
54
+ # -----------------------------------------------------------
55
+ # Step 1: Discover scripts via heuristic (silent)
56
+ # -----------------------------------------------------------
57
+
58
+ CLASSIFIER="$SCRIPT_DIR/classify-scripts.js"
59
+
60
+ if [[ ! -f "$CLASSIFIER" ]]; then
61
+ echo "[$PROG] ENV_MISSING: classify-scripts.js not found at $CLASSIFIER"
62
+ exit 5
63
+ fi
64
+
65
+ classification=$(node "$CLASSIFIER" 2>/dev/null) || {
66
+ echo "[$PROG] ENV_FAIL: classify-scripts.js failed"
67
+ exit 5
68
+ }
69
+
70
+ # Extract selected scripts: "cls:name" lines
71
+ discovered=$(echo "$classification" | python3 -c "
72
+ import json,sys
73
+ d=json.load(sys.stdin)
74
+ sel=d.get('selected',{})
75
+ for cls in ['typecheck','gennady','lint','test','format']:
76
+ v=sel.get(cls,'')
77
+ if v:
78
+ print(f'{cls}:{v}')
79
+ " 2>/dev/null)
80
+
81
+ if [[ -z "$discovered" ]]; then
82
+ echo "[$PROG] NO_SCRIPTS_DISCOVERED"
83
+ exit 0
84
+ fi
85
+
86
+ # -----------------------------------------------------------
87
+ # Step 2: Run each gate — accumulate failures, suppress success
88
+ # -----------------------------------------------------------
89
+
90
+ total=0
91
+ passed=0
92
+ failures=""
93
+ FILES=("$@") # save original file args for file-specific commands
94
+
95
+ run_cmd() {
96
+ local label="$1"
97
+ local display_name="$2"
98
+ shift 2
99
+ local cmd=("$@")
100
+
101
+ total=$((total + 1))
102
+
103
+ local output exit_code
104
+ set +e
105
+ output=$("${cmd[@]}" 2>&1)
106
+ exit_code=$?
107
+ set -e
108
+
109
+ if [[ $exit_code -eq 0 ]]; then
110
+ passed=$((passed + 1))
111
+ return 0
112
+ else
113
+ failures+=$(printf '\n[%s] ❌ FAIL gate: %s\n command: %s\n exit: %s\n\n--- captured output ---\n%s\n--- end ---\n' "$PROG" "$label" "${cmd[*]}" "$exit_code" "$output")
114
+ return 1
115
+ fi
116
+ }
117
+
118
+ # Run ALL gates regardless of failures
119
+ while IFS=: read cls name; do
120
+ case "$cls" in
121
+ typecheck) run_cmd "typecheck" "npm run $name" npm run "$name" || true ;;
122
+ gennady) run_cmd "gennady DBC lint" "gennady lint ${#FILES[@]} files" npx tsx ~/Developer/gennady/cli/gennady.ts lint "${FILES[@]}" || true ;;
123
+ lint) run_cmd "lint" "npm run $name" npm run "$name" || true ;;
124
+ test) run_cmd "test" "npm run $name" npm run "$name" || true ;;
125
+ format) run_cmd "format check" "npm run $name" npm run "$name" || true ;;
126
+ esac
127
+ done <<< "$discovered"
128
+
129
+ # -----------------------------------------------------------
130
+ # Report: suppressed on success, full on failure
131
+ # -----------------------------------------------------------
132
+
133
+ if [[ -n "$failures" ]]; then
134
+ echo "$failures"
135
+ exit 1
136
+ fi
137
+
138
+ echo "[$PROG] ALL_GATES_PASS ($passed/$total)"
139
+ exit 0
@@ -0,0 +1,213 @@
1
+ ---
2
+ name: sdd-execute-batch
3
+ description: Orchestrate batch task execution. For each task: plan phases from its Phases Overview → dispatch one phase-subagent per phase (sequential within task; parallel across tasks in same sub-batch when file sets disjoint) → close Round → dispatch audit-subagent (fresh-eyes) → optional selective phase re-run on audit FAIL. Use for "выполни всю очередь" / "execute pickable tasks". Optional epic-level audit across batch.
4
+ license: MIT
5
+ compatibility: opencode
6
+ ---
7
+
8
+ <SddExecuteBatchOrchestrator role="orchestrator-only">
9
+ You are the BATCH ORCHESTRATOR. You PLAN the queue, manage layered parallelism, dispatch phase-subagents and audit-subagents in fresh contexts, thread typed Handoff payloads within each task. You do NOT operate under any execution directive yourself.
10
+
11
+ **Environment: macOS.** All bash commands dispatched to subagents must be macOS-compatible. No `grep -P` → use `rg`. No GNU-only flags.
12
+
13
+ You DO read each ticket's PLANNING SURFACE: section 1 Meta, section 2 Phases Overview, current Round of section 7 Execution Log. You do NOT read section 3 Phases bodies, section 4 BDD, section 5 Verification, section 6 Coverage — those are read by phase-subagents.
14
+
15
+ Each subagent runs in a FRESH ISOLATED CONTEXT.
16
+
17
+ <Inputs>
18
+ Args from operator may be:
19
+ - empty / "next" / "все" / "all pickable" → full pickable queue from tasks/README.md.
20
+ - explicit list "TSK-04 TSK-05 TSK-06" → use that exact list (verify each exists).
21
+ - "domain:<name>" → all tickets in tasks/<name>/.
22
+ - "tasks/<scope>/<scope>.task-NN.md" → single task path resolved to ID.
23
+
24
+ Optional flag: `epic-only` → skip per-task audits, run ONE epic-level audit at end. Default = per-task audit + optional epic at end.
25
+ </Inputs>
26
+
27
+ <ProgressReporting>
28
+ Black-box: subagents are opaque. Emit progress at state transitions the orchestrator owns (queue confirmation, layer/sub-batch boundaries, phase dispatch, phase return, audit, retry, batch end).
29
+
30
+ Format: `[<bar>] <pct>% | <done>/<total> | Layer L/Ltotal | <event>`
31
+
32
+ Per-task phase tokens:
33
+
34
+ - `TSK-NN: P<N> (<kind>) 🏃‍♂️‍➡️` — phase actively executing
35
+ - `TSK-NN: P<N> ✅` — phase done; orchestrator threads Handoff to next phase
36
+ - `TSK-NN: ✅ all phases → 🔍 audit`
37
+ - `TSK-NN: ✅ audit PASS`
38
+ - `TSK-NN: ❌ audit FAIL → 🔄 fix phases <list>`
39
+ - `TSK-NN: ❌ FAIL after 2 attempts`
40
+ </ProgressReporting>
41
+
42
+ <Protocol>
43
+ 1. **Collect working set:**
44
+ - Read tasks/README.md Tracker Index.
45
+ - Scan tasks/**/*.task-*.md **planning surface only** — section 1 Meta (up to `## 2.`) + section 2 Phases Overview (up to `## 3.`). Typically first 40-60 lines per ticket. Do NOT read full files.
46
+ - Working set = ALL `[ ] TODO` tickets (regardless of whether deps are DONE yet — future layers must be planned too).
47
+ - Also collect: `[x] DONE` set (for dep-resolution context) and `[~] IN_PROGRESS` / `[!] BLOCKED` set (excluded from batch but reported in summary).
48
+ - Filter by operator args (explicit list / domain scope / etc.).
49
+ - Empty working set → halt: "No TODO tasks in scope. State: <N DONE, M IN_PROGRESS, K BLOCKED>".
50
+
51
+ 2. **Plan execution layers (full forward DAG, not just Layer 0):**
52
+ Build a layered DAG over the WHOLE working set. The orchestrator does this analysis itself reading **planning surface ONLY** (Dependencies + Phases Overview to compute aggregate Target Files for conflict analysis). No subagent for planning.
53
+
54
+ Algorithm:
55
+ a. **Topological layers by explicit Task Dependencies** (entire working set):
56
+ - Layer 0 = tasks where every Dependency is in `[x] DONE` set.
57
+ - Layer L+1 = tasks where every Dependency is either DONE OR placed in layers ≤ L.
58
+ - Tasks with deps on IN_PROGRESS / BLOCKED tickets → marked `⏸️ waiting` and excluded from the layer plan.
59
+ b. **File-conflict split within each layer:**
60
+ - For each task in layer, aggregate file set = union of ALL its phases' `Target Files` (read from each phase block — minimal extra read).
61
+ - Two tasks in same layer with overlapping aggregate file sets → cannot run in parallel.
62
+ - Greedy split: assign tasks to parallel sub-batches such that no two tasks in a sub-batch share files. Conflict → push to next sub-batch within same layer.
63
+ - Result: each layer = list of sub-batches; sub-batches within a layer run sequentially; tasks within a sub-batch run in parallel.
64
+
65
+ Cycle detection: working set with unresolved deps after all layering → cycle. Halt with explicit cycle path.
66
+
67
+ **Preflight: blocker scan** (per `AX_BLOCKER_RESOLUTION_TRAIL`). For each ticket in working set, run `~/Developer/gennady/ai/skills/sdd-execute/scripts/sdd check-blockers <ticket>` (skill helper scripts ship with the sibling `sdd-execute` skill). Any ticket with unresolved blockers → mark `✋ AWAITING UNBLOCK` (NOT failed); exclude from batch dispatch with explicit list of pending decisions. Distinguish in summary from `❌ FAILED` tasks.
68
+
69
+ 3. **Show full plan to operator:**
70
+
71
+ ```
72
+ 📋 Execution Plan
73
+
74
+ Already ✅ DONE: <N> tasks (<list of TSK-NN, max 8 shown then "…">)
75
+
76
+ Layer 0 [parallel, 3 tasks]:
77
+ TSK-01 — Implement port A | deps: none | phases: P1 impl, P2 test
78
+ TSK-02 — Implement port B | deps: none | phases: P1 impl, P2 test
79
+ TSK-03 — Implement port C | deps: none | phases: P1 impl, P2 test
80
+
81
+ Layer 1 [parallel, 2 tasks]:
82
+ TSK-04 — Compose AB | deps: TSK-01,TSK-02 | phases: P1 impl, P2 test
83
+ TSK-05 — Compose AC | deps: TSK-01,TSK-03 | phases: P1 impl, P2 test
84
+
85
+ Layer 2 [serial, 2 tasks — file conflict on src/shared.ts]:
86
+ sub-batch a: TSK-07 | deps: TSK-04 | phases: P1 refactor
87
+ sub-batch b: TSK-06 | deps: TSK-04,TSK-05 | phases: P1 refactor
88
+
89
+ ⏸️ Waiting (excluded):
90
+ TSK-08 — ... | waiting on TSK-99 (IN_PROGRESS elsewhere)
91
+
92
+ 📊 Total: 7 TODO tasks across 3 layers. Max parallelism: 3. Audit mode: per-task.
93
+ ```
94
+
95
+ Ask: "Start batch? [yes / re-plan / cancel / set audit mode / restrict to Layer N]". Wait for confirmation.
96
+
97
+ 4. **Dispatch loop** (Layer → sub-batch → parallel tasks; within each task — sequential phase loop):
98
+
99
+ For each Layer L (sequential between layers):
100
+ For each sub-batch S in Layer L (sequential between sub-batches):
101
+ For each task in sub-batch S — START PER-TASK ORCHESTRATION IN PARALLEL:
102
+
103
+ Per-task orchestration (run as a single inline loop the batch orchestrator manages; one "virtual lane" per task):
104
+
105
+ For each phase in task's Phases Overview (sequential within task):
106
+ a. Dispatch PHASE subagent (`subagent_type: general-purpose`, **`model: "sonnet"`** — phase work requires capable code-generation model), fresh context, with prompt:
107
+ ```
108
+ Step 1 — Read the directive. Use Read tool directly on:
109
+ ai/directives/sdd/phase-execution-protocol.xml
110
+ On failure → halt, report exact path.
111
+
112
+ Step 2 — Activate. Announce: "🔒 DIRECTIVE ACTIVATED: SddPhaseExecution"
113
+ You ARE this directive.
114
+
115
+ Step 3 — Apply to intent.
116
+ Ticket: <absolute ticket path>
117
+ Phase: <P<N>>, kind: <kind>
118
+ Reason: <"initial" | "fix: address audit findings F-NNN" | "resume after blocker">
119
+ Inputs: <verbatim prior Handoff lines OR "none — first phase">
120
+ SDD tooling available at: ~/Developer/gennady/ai/skills/sdd-execute/scripts/sdd
121
+ (run "~/Developer/gennady/ai/skills/sdd-execute/scripts/sdd help" for surface;
122
+ use for any extraction/lint/verify operations the directive references).
123
+
124
+ Follow the directive. This ONE phase only. Do not invoke audit.
125
+ ```
126
+
127
+ b. Branch on phase status:
128
+ - `BLOCKED` or `FAIL` → STOP this task's lane; mark task FAILED for the batch. Other parallel tasks in same sub-batch continue.
129
+ - `DONE` → record Handoff (artifacts, decisions, open). Continue to next phase.
130
+
131
+ c. Thread next phase's Inputs from this phase's Handoff (verbatim).
132
+
133
+ After all phases DONE: close Round (append `#### Round close` block: sync + DONE). Sync trackers. Ticket Status → `[x] DONE`.
134
+
135
+ d. Dispatch AUDIT subagent (`subagent_type: general-purpose`, **`model: "haiku"`** — audit is mechanical verification + fact-checking, haiku sufficient and cheaper). MANDATORY, always runs. Include in prompt the SDD tooling location: `~/Developer/gennady/ai/skills/sdd-execute/scripts/sdd` (audit may use `lint`, `verify`, `check-blockers` subcommands):
136
+ ```
137
+ Step 1 — Read the directive. Use Read tool directly on:
138
+ ai/directives/sdd/audit.directive.xml
139
+ On failure → halt, report exact path.
140
+
141
+ Step 2 — Activate. Announce: "🔒 DIRECTIVE ACTIVATED: SddAudit"
142
+ You ARE this directive. Operate under its Mission, Belief_State, Halt_Conditions, Execution_Plan, Output_Contracts.
143
+
144
+ Step 3 — Apply to intent.
145
+ Task: <TSK-NN>
146
+ Ticket: <absolute ticket path>
147
+ Round: <N>
148
+ Artifacts: <union of all phase Handoff artifacts>
149
+ Mode: per-task
150
+
151
+ Follow the directive's Execution_Plan. Report findings per AUDIT_SESSION_SUMMARY_FORMAT.
152
+ ```
153
+ Wait for return. If dispatch fails → retry once. If fails again → mark task FAILED.
154
+
155
+ e. Branch on audit status:
156
+ - `PASS` / `PASS_WITH_ACKNOWLEDGED_RISKS` → task complete; continue lane (next task in batch).
157
+ - `FAIL` AND `audit_attempt = 1` → trigger selective phase re-run.
158
+ Open new Round with reason `audit-driven fix: F-NNN, F-MMM`.
159
+ For each phase in `phases_to_fix` (sequential, declared order subset):
160
+ Dispatch PHASE subagent with `Reason: fix: address audit findings F-NNN, F-MMM` and audit findings list in Inputs. Wait.
161
+ On BLOCKED/FAIL → STOP this task's lane; mark task FAILED.
162
+ After all fix phases DONE → close Round → dispatch AUDIT (round 2, fresh context). Branch again:
163
+ PASS → task complete.
164
+ FAIL (audit_attempt = 2) → STOP lane; mark task FAILED.
165
+
166
+ — Wait for all parallel task lanes in sub-batch to finish.
167
+ — Any task FAILED → continue batch (other layers may not depend on it; if they do they'll be marked `⏸️ waiting`). Operator gets failure list in final summary.
168
+
169
+ 5. **End of batch:**
170
+
171
+ Dispatch ONE verification check across all completed tasks:
172
+
173
+ ```
174
+ Verify for scope <scope>:
175
+ 1. Read tasks/<scope>/README.md — confirm all task statuses match their tickets' Meta Status.
176
+ 2. Read tasks/README.md Tracker Index — confirm aggregate counts match.
177
+ 3. If mismatches found → fix sync directly.
178
+ ```
179
+
180
+ 6. **Final summary table:**
181
+
182
+ ```
183
+ 📊 Batch Summary
184
+
185
+ | Task-ID | Phases | Audit (round) | 🔄 phases_fixed | Final | Files |
186
+ |---|---|---|---|---|---|
187
+ | TSK-04 | P1✅ P2✅ | ✅ R1 | — | ✅ PASS | 2 |
188
+ | TSK-05 | P1✅ P2✅ | ❌→✅ R2 | P2 | ✅ PASS | 1 |
189
+ | TSK-06 | P1✅ P2❌ | — | — | ❌ phase-FAIL | 0 |
190
+
191
+ 📊 ✅ <N> · 🔄 <R> · ❌ <F> · 🛑 <B> · ⏸️ waiting <S>
192
+
193
+ 🔍 Epic audit (if run): <✅ PASS | ❌ FAIL — 🔴 N cross-task findings>
194
+ ```
195
+
196
+ Any audit = FAIL → recommend `/sdd-execute <TSK-NN>` for targeted re-run.
197
+ </Protocol>
198
+
199
+ <HardForbidden>
200
+ - Reading phase-execution-protocol.xml or audit.directive.xml yourself. (Subagents do.)
201
+ - Reading full ticket files (sections 3 bodies, 4 BDD, 5 Verification, 6 Coverage). During planning, read ONLY sections 1 + 2 + 7-current-Round.
202
+ - Writing code or phase blocks in Execution Log. (Phase subagents do.)
203
+ - Sharing context between phase subagents of different tasks. Each lane is isolated; orchestrator threads only typed Handoffs within ONE task's lane.
204
+ - Skipping audit after Round close in default (per-task) mode. Audit dispatch is mandatory.
205
+ - Audit retry beyond 2 total attempts per task. Hard cap.
206
+ - Re-running phases not flagged in `phases_to_fix`. The map finding-location → phase is the contract.
207
+ - Parallel dispatch ACROSS layers. Layers run sequentially.
208
+ - Parallel dispatch ACROSS sub-batches in same layer. Sub-batches exist exactly because of file conflicts.
209
+ - Parallel dispatch ACROSS phases of the SAME task. Phases are sequential by declared Deps within a task. Cross-task parallelism is the legitimate use of parallel sub-batches.
210
+ - Auto-reopening on phase BLOCKED/FAIL within a task. Only on audit FAIL after Round close the selective phase retry kicks in (max once per task).
211
+ - Skipping the planning step. Even for 2-task batches the orchestrator MUST emit the layer plan and ask for confirmation.
212
+ </HardForbidden>
213
+ </SddExecuteBatchOrchestrator>
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: sdd-fix
3
+ description: Take findings (code review, sdd-check, audit output, bug report), classify, plan, agree with operator, execute fixes, reopen tasks, dispatch execution, verify. Use for "исправь", "почини", "fix", "sdd-fix", after code review or sdd-check.
4
+ compatibility: opencode
5
+ ---
6
+
7
+ 1. **Extract intent.** Parse findings from operator's context — code review, sdd-check output, audit summary, bug report. If no findings → HALT with explicit ask.
8
+
9
+ 2. **Load & activate directive.** Read in full: `~/Developer/gennady/ai/directives/sdd/fix.directive.xml`
10
+ Announce: `🔒 DIRECTIVE ACTIVATED: SddFix`
11
+ You ARE this directive now.
12
+
13
+ 3. **Apply directive to intent.** Pass parsed findings. Follow Execution_Plan: classify → plan → agree → execute → dispatch → verify.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: sdd-infra
3
+ description: Design or evolve an infrastructure scope — package manager, type-checker, linter, formatter, test runner, git hooks, CI. Scope-type=infrastructure discovery session. Use for bootstrapping tooling for a new infra scope (infra-base, infra-golang, infra-frontend) or pivoting/extending an existing one.
4
+ compatibility: opencode
5
+ ---
6
+
7
+ 1. **Extract intent.** Operator wants to bootstrap or evolve infrastructure scope. Scope-type is fixed: `infrastructure`. Resolve scope name from intake.
8
+
9
+ 2. **Load & activate directive.** Read in full: `~/Developer/gennady/ai/directives/sdd/discovery.directive.xml`
10
+ Announce: `🔒 DIRECTIVE ACTIVATED: SddDiscovery | infrastructure`
11
+ You ARE this directive now.
12
+
13
+ 3. **Apply directive to intent.** Force scope-type=`infrastructure`. Mode auto-detected per `AX_MODE_AUTO_DETECT_OR_HALT`. Follow Execution_Plan end-to-end.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: sdd-module-decomposition
3
+ description: Decompose a product or library scope into module specs with closed-world entity inventory, public surfaces, DbC contracts (Ports / Adapters / Services). Only applicable to scope-type=product and scope-type=library. Modes auto-detected: initial, add-module, refine-module.
4
+ compatibility: opencode
5
+ ---
6
+
7
+ 1. **Extract intent.** Operator wants to decompose scope `<name>` into modules. Verify scope-type ∈ {product, library} — infrastructure / contracts forbidden.
8
+
9
+ 2. **Load & activate directive.** Read in full: `~/Developer/gennady/ai/directives/sdd/module-decomposition.directive.xml`
10
+ Announce: `🔒 DIRECTIVE ACTIVATED: SddModuleDecomposition`
11
+ You ARE this directive now.
12
+
13
+ 3. **Apply directive to intent.** Mode auto-detected per `AX_MODE_AUTO_DETECT_OR_HALT`. Follow Execution_Plan end-to-end. Do not deviate.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: sdd-scaffold
3
+ description: Decompose specs (root + domain + infra) into a DAG of compact task tickets ready for autonomous execution by sdd-execute orchestrator. Materializes Cascade Table, Tracker Index, BDD scenarios, Phases Overview + per-phase Rules. Use for first task generation from spec tree, or scaffolding tasks for a new/refined domain. Modes auto-detected: initial, extend-dag.
4
+ compatibility: opencode
5
+ ---
6
+
7
+ 1. **Extract intent.** Operator wants to scaffold tasks for {scope | all scopes}. Mode: `initial` (no `tasks/` yet) or `extend-dag` (`tasks/` exists, adding to it).
8
+
9
+ 2. **Load & activate directive.** Read in full: `~/Developer/gennady/ai/directives/sdd/scaffold.directive.xml`
10
+ Announce: `🔒 DIRECTIVE ACTIVATED: SddScaffold`
11
+ You ARE this directive now.
12
+
13
+ 3. **Apply directive to intent.** Mode auto-detected per `AX_MODE_AUTO_DETECT_OR_HALT`. Follow Execution_Plan end-to-end. Do not deviate.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: sdd-setup
3
+ description: Initialize or update the project portal (specs/README.md) — Vision, Scope Graph, and Scopes table. This is the sole owner of the project portal. Idempotent: run any number of times to add scopes, update vision, or bootstrap infra-base. Always run this first for a brand new project.
4
+ compatibility: opencode
5
+ ---
6
+
7
+ 1. **Extract intent.** Operator wants to initialize or update the project portal. Operation may be: bootstrap new project, add a scope to Scope Graph, update Vision, sync after discovery.
8
+
9
+ 2. **Load & activate directive.** Read in full: `~/Developer/gennady/ai/directives/sdd/setup.directive.xml`
10
+ Announce: `🔒 DIRECTIVE ACTIVATED: SddSetup`
11
+ You ARE this directive now.
12
+
13
+ 3. **Apply directive to intent.** Mode auto-detected per `AX_IDEMPOTENT_MODES`. Follow Execution_Plan end-to-end. Do not deviate.
@@ -0,0 +1,8 @@
1
+ var o = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
2
+ function l(e) {
3
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
4
+ }
5
+ export {
6
+ o as c,
7
+ l as g
8
+ };
@@ -1,4 +1,4 @@
1
- import { g as l } from "./services-CaLOhuLV.js";
1
+ import { g as l } from "./_commonjsHelpers-DaMA6jEr.js";
2
2
  var n, s;
3
3
  function u() {
4
4
  return s || (s = 1, n = function() {
@@ -0,0 +1,6 @@
1
+ function o() {
2
+ console.info("gennady commit — Generate commit message from staged changes"), console.info(""), console.info("Usage:"), console.info(" npx gennady commit [options]"), console.info(""), console.info("Options:"), console.info(" --apply Apply generated commit message via git commit -am"), console.info(" --mode, -m <mode> Commit style: auto, oneline, detailed (default: auto)"), console.info(" --oneline, -o Shorthand for --mode=oneline"), console.info(" --model <model> AI model to use (reads from rc config by default)"), console.info(" --branch, -b <ref> Git diff target branch (default: origin/main)"), console.info(" --api, --apiUrl <u> Override AI API endpoint URL"), console.info(" --task, -t <desc> Task description for commit context"), console.info(""), console.info("Examples:"), console.info(" npx gennady commit"), console.info(" npx gennady commit --mode=oneline"), console.info(" npx gennady commit --apply --mode=detailed");
3
+ }
4
+ export {
5
+ o as printHelp
6
+ };
@@ -0,0 +1,6 @@
1
+ function n() {
2
+ console.info("gennady review — Review staged changes using AI models"), console.info(""), console.info("Usage:"), console.info(" npx gennady review [options]"), console.info(""), console.info("Options:"), console.info(" --branch, -b <ref> Git diff target branch (default: origin/main)"), console.info(""), console.info("Examples:"), console.info(" npx gennady review"), console.info(" npx gennady review --branch=develop");
3
+ }
4
+ export {
5
+ n as printHelp
6
+ };
@@ -0,0 +1,6 @@
1
+ function o() {
2
+ console.info("gennady remote-console — Mirror browser console output into local stdout"), console.info(""), console.info("Usage:"), console.info(" npx gennady remote-console [options]"), console.info(""), console.info("Options:"), console.info(" --port, -p <port> Server port (default: 43001)"), console.info(" --host <host> Server bind host (default: localhost)"), console.info(" --url <URL> Page URL to open with remote-console activation"), console.info(""), console.info("Examples:"), console.info(" npx gennady remote-console"), console.info(" npx gennady remote-console --port=8080"), console.info(' npx gennady remote-console --url="https://example.com"');
3
+ }
4
+ export {
5
+ o as printHelp
6
+ };
@@ -0,0 +1,6 @@
1
+ function o() {
2
+ console.info("gennady review-verify — Build verification prompt from MR/PR"), console.info(""), console.info("Usage:"), console.info(" npx gennady review-verify [URL | !ref] [options]"), console.info(""), console.info("Options:"), console.info(" --branch, -b <ref> Git diff target branch"), console.info(" --url <URL> GitLab MR or GitHub PR URL"), console.info(" --ref <ref> MR/PR reference (supports ! prefix)"), console.info(' --project <name> VCS project path (e.g. "group/repo")'), console.info(" --iid <id> MR internal ID"), console.info(" --all Include all discussions, not only unresolved"), console.info(""), console.info("Examples:"), console.info(' npx gennady review-verify --url="https://gitlab.com/g/name/-/merge_requests/42"'), console.info(" npx gennady review-verify https://github.com/owner/repo/pull/10"), console.info(' npx gennady review-verify --branch=develop "https://..."');
3
+ }
4
+ export {
5
+ o as printHelp
6
+ };
@@ -0,0 +1,8 @@
1
+ function o() {
2
+ console.info("gennady vcs-reply — Post replies to GitLab MR discussions"), console.info(""), console.info("Usage:"), console.info(" npx gennady vcs-reply --project=<name> --iid=<id> [options]"), console.info(""), console.info(" Reads a JSON array of discussion replies from stdin."), console.info(""), console.info("Options:"), console.info(' --project <name> GitLab project path (e.g. "group/repo")'), console.info(" --iid <id> Merge request internal ID"), console.info(" --dry-run, --dry Print what would be sent without posting"), console.info(""), console.info("Environment:"), console.info(" GITLAB_PERSONAL_TOKEN GitLab access token (required)"), console.info(" GITLAB_API_PATH API path override (default: /api/v4)"), console.info(""), console.info("Examples:"), console.info(
3
+ ` echo '[{"discussionId":"abc","body":"reviewed"}]' | npx gennady vcs-reply --project=my/repo --iid=42`
4
+ ), console.info(" npx gennady vcs-reply --project=my/repo --iid=42 --dry-run < replies.json");
5
+ }
6
+ export {
7
+ o as printHelp
8
+ };
@@ -0,0 +1,6 @@
1
+ function n() {
2
+ console.info("gennady sync — Synchronize ai/directives/ from npm package into current project"), console.info(""), console.info("Usage:"), console.info(" npx gennady sync [subdirs...] [options]"), console.info(""), console.info("Options:"), console.info(" --dry-run Preview changes without writing files"), console.info(""), console.info(" Specify subdirectories to sync only those parts of ai/directives/."), console.info(" Requires gennady as a local dev dependency (npm i -D gennady)."), console.info(""), console.info("Examples:"), console.info(" npx gennady sync"), console.info(" npx gennady sync --dry-run"), console.info(" npx gennady sync ts-patterns typescript --dry-run");
3
+ }
4
+ export {
5
+ n as printHelp
6
+ };
@@ -0,0 +1,12 @@
1
+ function o() {
2
+ console.info(
3
+ "gennady alt-opinion — Get alternative opinions from AI models with optional synthesis"
4
+ ), console.info(""), console.info("Usage:"), console.info(' npx gennady alt-opinion --model="provider/model" [options] < artifact.txt'), console.info(' npx gennady alt-opinion --model="provider/model" --file=<path> [options]'), console.info(""), console.info("Options:"), console.info(" --model=<spec> Model descriptor: provider/model[::prompt.md] (repeatable)"), console.info(" --synthModel=<spec> Synthesizer model (same format as --model)"), console.info(" --file=<path> Input file (mutually exclusive with stdin)"), console.info(" --modelPrompt=<p> Prompt file for all opinion models"), console.info(" --synthPrompt=<p> Prompt file for the synthesizer model"), console.info(" --strict Exit with code 1 if any model errors"), console.info(""), console.info(" Supported providers: llmproxy, openrouter."), console.info(" The ::prompt.md suffix loads a per-model custom prompt."), console.info(""), console.info("Environment:"), console.info(" LLM_PROXY_API_KEY Required for llmproxy provider"), console.info(" LLM_PROXY_BASE_URL Override default base URL"), console.info(" OPENROUTER_API_KEY Required for openrouter provider"), console.info(""), console.info("Examples:"), console.info(' npx gennady alt-opinion --model="llmproxy/gpt-4o" < spec.md'), console.info(
5
+ ' npx gennady alt-opinion --model="openrouter/gemini-pro" --synthModel="llmproxy/claude-sonnet" < spec.md'
6
+ ), console.info(
7
+ ' npx gennady alt-opinion --model="llmproxy/gpt-4o::./custom.md" --file=./spec.md --strict'
8
+ );
9
+ }
10
+ export {
11
+ o as printHelp
12
+ };
@@ -0,0 +1,6 @@
1
+ function o() {
2
+ console.info("gennady cat — Display file contents as XML or Markdown"), console.info(""), console.info("Usage:"), console.info(" npx gennady cat <path/glob>... [options]"), console.info(" npx gennady cat --url=<MR/PR URL> [options]"), console.info(""), console.info("Options:"), console.info(" --plain Suppress hint footer and color output"), console.info(" --exclude, -e <g> Glob pattern to exclude files"), console.info(" --ext <exts> Comma-separated file extensions to include"), console.info(" --output, -o <fmt> Output format: xml (default) or md"), console.info(" --url <URL> Fetch files from MR/PR URL instead of local paths"), console.info(""), console.info(" Note: --url and positional paths are mutually exclusive."), console.info(""), console.info("Examples:"), console.info(' npx gennady cat "./src/**/*.ts"'), console.info(' npx gennady cat "./src/**/*.ts" --output=md --plain | pbcopy'), console.info(' npx gennady cat --url="https://gitlab.com/.../-/merge_requests/123"');
3
+ }
4
+ export {
5
+ o as printHelp
6
+ };
@@ -0,0 +1,8 @@
1
+ function n() {
2
+ console.info(
3
+ "gennady agent-mon — Interactive terminal dashboard for monitoring AI agent sessions"
4
+ ), console.info(""), console.info("Usage:"), console.info(" npx gennady agent-mon [options]"), console.info(""), console.info("Options:"), console.info(" --once Snapshot mode — print dashboard and exit"), console.info(" --interval <ms> Polling interval in ms (default: 5000)"), console.info(" --provider <name> Filter by provider: claude, opencode, all (default: all)"), console.info(" --view <name> Dashboard layout: column (default), compact"), console.info(" --limit <N> Max sessions per provider (default: 10)"), console.info(""), console.info("Examples:"), console.info(" npx gennady agent-mon"), console.info(" npx gennady agent-mon --once"), console.info(" npx gennady agent-mon --provider=claude --limit=5");
5
+ }
6
+ export {
7
+ n as printHelp
8
+ };
@@ -0,0 +1,8 @@
1
+ function n() {
2
+ console.info(
3
+ "gennady resolve-conflicts — Build confidence-aware merge-conflict resolution prompt"
4
+ ), console.info(""), console.info("Usage:"), console.info(" npx gennady resolve-conflicts [options]"), console.info(""), console.info("Options:"), console.info(" --branch, -b <ref> Target branch for merge (default: origin/main)"), console.info(" --incoming <ref> Incoming branch being merged"), console.info(""), console.info(" Requires an active git merge with conflicts present."), console.info(""), console.info("Examples:"), console.info(" npx gennady resolve-conflicts"), console.info(" npx gennady resolve-conflicts --branch=main --incoming=feature/x");
5
+ }
6
+ export {
7
+ n as printHelp
8
+ };
@@ -0,0 +1,8 @@
1
+ function o() {
2
+ console.info("gennady lint — Validate TypeScript files for codebase conventions"), console.info(""), console.info("Usage:"), console.info(" npx gennady lint [paths...] [options]"), console.info(""), console.info("Options:"), console.info(" --autofix Auto-fix DbC contract issues where possible"), console.info(
3
+ " --staged Lint only staged and untracked .ts files (mutually exclusive with paths)"
4
+ ), console.info(" --verbose, -v Enable debug logging output"), console.info(" --max-invariants <n> Max invariants per exported entity (default: 3)"), console.info(" --exclude <glob> Exclude files matching glob pattern (repeatable)"), console.info(""), console.info(" Default exclude patterns (always active):"), console.info(" **/node_modules/** **/__tests__/** **/fixtures/**"), console.info(" **/dist/** **/coverage/** **/build/** **/out/**"), console.info(""), console.info(" When no paths or --staged are provided, lints nothing."), console.info(""), console.info("Examples:"), console.info(" npx gennady lint ./src"), console.info(" npx gennady lint --staged"), console.info(" npx gennady lint ./src --autofix --verbose");
5
+ }
6
+ export {
7
+ o as printHelp
8
+ };
@@ -0,0 +1,6 @@
1
+ function e() {
2
+ console.info("gennady orient — Navigate project structure via file headers and DBC contracts"), console.info(""), console.info("Usage:"), console.info(" npx gennady orient [options] [keyword]"), console.info(""), console.info("Options:"), console.info(" --file=<path> Show detailed view of a specific file (repeatable)"), console.info(" --dir=<path> Limit scanning to a directory"), console.info(" --task=<TSK-NN> Find files by task ID (repeatable)"), console.info(" --consumer=<name> Find files by consumer name (repeatable)"), console.info(" --entity=<name> Search for an exported entity (repeatable)"), console.info(" --graph Show consumer dependency graph"), console.info(" --recursive Expand graph recursively"), console.info(" --specs List all specs and their tasks"), console.info(" --spec=<name> Show tasks for a specific spec"), console.info(" --detail Include DBC contract details in output"), console.info(" --fuzzy Enable fuzzy matching for --entity and --consumer"), console.info(" --depth=<N> Limit tree or graph depth"), console.info(" --max-results=<N> Limit number of files shown"), console.info(""), console.info("Examples:"), console.info(" npx gennady orient Project map (S1)"), console.info(" npx gennady orient --file=index.ts Detailed file view (S5)"), console.info(" npx gennady orient --task=TSK-55 Files by task (S2)"), console.info(" npx gennady orient --graph Dependency graph (S7)"), console.info(" npx gennady orient contract Keyword search (S4)"), console.info(" npx gennady orient --specs Specs overview (S8)");
3
+ }
4
+ export {
5
+ e as printHelp
6
+ };
@@ -0,0 +1,6 @@
1
+ function o() {
2
+ console.info("gennady review-issues — Build XML issues artifact from MR/PR discussions"), console.info(""), console.info("Usage:"), console.info(" npx gennady review-issues [URL | !ref] [options]"), console.info(""), console.info("Options:"), console.info(" --branch, -b <ref> Git diff target branch"), console.info(" --url <URL> GitLab MR or GitHub PR URL"), console.info(" --ref <ref> MR/PR reference (supports ! prefix)"), console.info(' --project <name> VCS project path (e.g. "group/repo")'), console.info(" --iid <id> MR internal ID"), console.info(" --all Include all discussions, not only unresolved"), console.info(""), console.info("Examples:"), console.info(' npx gennady review-issues --url="https://gitlab.com/g/name/-/merge_requests/42"'), console.info(" npx gennady review-issues https://github.com/owner/repo/pull/10");
3
+ }
4
+ export {
5
+ o as printHelp
6
+ };
@@ -6,7 +6,7 @@ console.info("");
6
6
  console.info("Commands:");
7
7
  console.info(" commit Generate commit message from staged changes");
8
8
  console.info(" cat Display file contents as XML or Markdown");
9
- console.info(" agent Run AI agent request");
9
+ console.info(" review Review staged changes using AI models");
10
10
  console.info(" vcs-reply Post replies to GitLab MR discussions from stdin");
11
11
  console.info(" review-verify Build verification prompt from open GitLab MR or GitHub PR");
12
12
  console.info(
@@ -16,16 +16,24 @@ console.info(
16
16
  " resolve-conflicts Build confidence-aware merge-conflict resolution prompt from active git merge"
17
17
  );
18
18
  console.info(" remote-console Mirror browser console output into local stdout");
19
- console.info(" lint Validate TypeScript files: file header, DBC contracts, anchors");
19
+ console.info(
20
+ " lint Validate .ts files: headers, anchors, DBC contracts, invariants, disables"
21
+ );
20
22
  console.info(" alt-opinion Get alternative opinions from AI models with optional synthesis");
21
23
  console.info(
22
24
  " sync Synchronize ai/directives/ from npm package into current project"
23
25
  );
26
+ console.info(" sync-skills Synchronize SDD skills from ai/skills/ to .claude/skills/");
24
27
  console.info(
25
28
  " agent-mon Interactive terminal dashboard for monitoring active AI agent sessions"
26
29
  );
30
+ console.info(
31
+ " orient Navigate file headers and DBC contracts — project map, search, dependency graph"
32
+ );
33
+ console.info(" agents-rules Print orient usage instructions for AI agents");
27
34
  console.info("");
28
35
  console.info("Examples:");
29
36
  console.info(" npx gennady");
30
37
  console.info(" npx gennady commit");
31
38
  console.info(' npx gennady cat "./src/**/*.js" --output=md');
39
+ console.info(" npx gennady <command> --help (per-command help)");