@mrciphersmith/keryx 0.2.97 → 0.2.98

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 (165) hide show
  1. package/dist/cli.js +569 -235
  2. package/dist/core.js +1 -1
  3. package/package.json +1 -1
  4. package/src/gdskills/bundled/rules/core/api-contracts.mdc +1 -0
  5. package/src/gdskills/bundled/rules/core/code-style-patterns.mdc +1 -0
  6. package/src/gdskills/bundled/rules/core/database-patterns.mdc +1 -0
  7. package/src/gdskills/bundled/rules/core/documentation-management.mdc +33 -38
  8. package/src/gdskills/bundled/rules/core/error-handling.mdc +1 -11
  9. package/src/gdskills/bundled/rules/core/execution-metrics.md +1 -2
  10. package/src/gdskills/bundled/rules/core/frontend-assistant.mdc +1 -0
  11. package/src/gdskills/bundled/rules/core/git-concurrency.mdc +101 -0
  12. package/src/gdskills/bundled/rules/core/implementation-plans.mdc +23 -11
  13. package/src/gdskills/bundled/rules/core/mobx-store-template.mdc +1 -0
  14. package/src/gdskills/bundled/rules/core/nestjs-dto.mdc +1 -0
  15. package/src/gdskills/bundled/rules/core/playwright-testing.mdc +1 -0
  16. package/src/gdskills/bundled/rules/core/requirements-management.mdc +15 -11
  17. package/src/gdskills/bundled/rules/core/rule-management-workflow.mdc +29 -14
  18. package/src/gdskills/bundled/rules/core/shared-definitions.mdc +1 -1
  19. package/src/gdskills/bundled/rules/core/skill-lifecycle.mdc +9 -5
  20. package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +59 -16
  21. package/src/gdskills/bundled/rules/core/storybook-guidelines.mdc +1 -0
  22. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +48 -71
  23. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +48 -71
  24. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +48 -71
  25. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +48 -71
  26. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +48 -71
  27. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +4 -4
  28. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +4 -4
  29. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +4 -4
  30. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +4 -4
  31. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +4 -4
  32. package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +2 -2
  33. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +12 -22
  34. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +12 -22
  35. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.detail.md +12 -22
  36. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +12 -22
  37. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +12 -22
  38. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +12 -22
  39. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.md +2 -2
  40. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.template.md +1 -1
  41. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/input-contract.schema.json +4 -4
  42. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +2 -2
  43. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +2 -2
  44. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +2 -2
  45. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +2 -2
  46. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +46 -4
  47. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +2 -2
  48. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +2 -2
  49. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +2 -2
  50. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +2 -2
  51. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +2 -2
  52. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +3 -3
  53. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +3 -3
  54. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +3 -3
  55. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +3 -3
  56. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +3 -3
  57. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +65 -23
  58. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +65 -23
  59. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +65 -23
  60. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +65 -23
  61. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +65 -23
  62. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +19 -10
  63. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +19 -10
  64. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +19 -10
  65. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +19 -10
  66. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +19 -10
  67. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +1 -1
  68. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +1 -1
  69. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +1 -1
  70. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +1 -1
  71. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +1 -1
  72. package/src/gdskills/bundled/skills/planning/interview/SKILL.md +1 -1
  73. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +1 -1
  74. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +1 -1
  75. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +1 -1
  76. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +7 -7
  77. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +7 -7
  78. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +7 -7
  79. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +7 -7
  80. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +7 -7
  81. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +1 -1
  82. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +1 -1
  83. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +1 -1
  84. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +1 -1
  85. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +1 -1
  86. package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +1 -1
  87. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +1 -1
  88. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +1 -1
  89. package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +1 -1
  90. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +2 -2
  91. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +2 -2
  92. package/src/gdskills/bundled/skills/quality/commit/SKILL.md +2 -2
  93. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +1 -1
  94. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +1 -1
  95. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +1 -1
  96. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +1 -1
  97. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +1 -1
  98. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +1 -1
  99. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +1 -1
  100. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +1 -1
  101. package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +1 -1
  102. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +1 -1
  103. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +1 -1
  104. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +1 -1
  105. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +1 -1
  106. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +1 -1
  107. package/src/gdskills/bundled/skills/quality/pr/SKILL.md +1 -1
  108. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +2 -2
  109. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +2 -2
  110. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +2 -2
  111. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +2 -2
  112. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +2 -2
  113. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +1 -1
  114. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +1 -1
  115. package/src/gdskills/bundled/skills/quality/push/SKILL.md +1 -1
  116. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +7 -2
  117. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +7 -2
  118. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +7 -2
  119. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +15 -9
  120. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +15 -9
  121. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +15 -9
  122. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +15 -9
  123. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +15 -9
  124. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +2 -2
  125. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +2 -2
  126. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +2 -2
  127. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +2 -2
  128. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +2 -2
  129. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +2 -2
  130. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +2 -2
  131. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +2 -2
  132. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +2 -2
  133. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +2 -2
  134. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +2 -2
  135. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +2 -2
  136. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +2 -2
  137. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +2 -2
  138. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +2 -2
  139. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +2 -2
  140. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +2 -2
  141. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +2 -2
  142. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +2 -2
  143. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +2 -2
  144. package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +2 -2
  145. package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +3 -3
  146. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +2 -2
  147. package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +1 -1
  148. package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +1 -1
  149. package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +2 -2
  150. package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +1 -1
  151. package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +2 -2
  152. package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +1 -1
  153. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +2 -2
  154. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +40 -35
  155. package/src/gdskills/bundled/skills/review/review-orchestrator/input-contract.schema.json +1 -2
  156. package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +1 -5
  157. package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +53 -9
  158. package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +2 -2
  159. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +6 -6
  160. package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +2 -2
  161. package/src/gdskills/bundled/skills/review/review-style/SKILL.md +3 -3
  162. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +1 -1
  163. package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +1 -1
  164. package/src/gdskills/bundled/rules/core/review-agent-profile.mdc +0 -49
  165. package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +0 -48
@@ -12,9 +12,9 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.0.0"
15
- category: "verification"
15
+ category: "orchestration"
16
16
  agent_worthy: true
17
- compatible_harnesses: "cursor,codex,zed,opencode"
17
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
18
18
  license: "MIT"
19
19
  ---
20
20
 
@@ -61,56 +61,43 @@ Code Verifier Progress:
61
61
 
62
62
  ### Phase 1: DETECT
63
63
 
64
- Auto-detect the project stack and available verification tools.
64
+ Determine scope. Stack and tool discovery is delegated to `keryx health run`
65
+ and `keryx test run` — do NOT hand-roll package-manager or
66
+ lint/type-check/test tool detection here.
65
67
 
66
- **1.1 Package manager and runner:**
67
-
68
- ```bash
69
- cd <codebase_path>
70
-
71
- if [ -f bun.lock ] || [ -f bun.lockb ]; then PM=bun; RUNNER="bun run"
72
- elif [ -f pnpm-lock.yaml ]; then PM=pnpm; RUNNER="pnpm run"
73
- elif [ -f yarn.lock ]; then PM=yarn; RUNNER="yarn"
74
- elif [ -f package-lock.json ]; then PM=npm; RUNNER="npm run"
75
- elif [ -f pyproject.toml ] || [ -f requirements.txt ]; then PM=python; RUNNER=""
76
- elif [ -f go.mod ]; then PM=go; RUNNER=""
77
- else PM=unknown; RUNNER=""
78
- fi
79
- ```
80
-
81
- **1.2 Detect available check commands:**
82
-
83
- | Check | How to detect | Command |
84
- |---|---|---|
85
- | Lint | `package.json` has `"lint"` script | `$RUNNER lint` |
86
- | Lint (auto) | `eslint.config.*` or `.eslintrc*` present | `npx eslint . --max-warnings 0` |
87
- | Biome | `biome.json` present | `npx biome check .` |
88
- | Type-check | `package.json` has `"type-check"` or `"typecheck"` script | `$RUNNER type-check` |
89
- | Type-check (auto) | `tsconfig.json` present | `npx tsc --noEmit` |
90
- | Tests | `package.json` has `"test"` script | `$RUNNER test --run` (vitest) or `$RUNNER test` |
91
- | pytest | `pytest` in `pyproject.toml` or `requirements.txt` | `pytest --tb=short -q` |
92
- | Go tests | `go.mod` present | `go test ./...` |
93
- | Circular imports | `madge` in devDependencies | `npx madge --circular src/` |
94
-
95
- **1.3 Determine scope:**
68
+ **1.1 Determine scope:**
96
69
 
97
70
  ```
98
71
  IF scope = "changed" (default when dispatched by orchestrator):
99
72
  FILES = git diff --name-only <base_branch>...HEAD
100
- Run tests only for files related to changed code
101
- Run lint only on changed files: npx eslint <changed_files>
102
- Run type-check on full project (tsc doesn't support file-level scope)
73
+ Pass --changed to keryx health run and keryx test run below.
103
74
 
104
75
  IF scope = "full":
105
- Run all checks on full project
76
+ Run all checks on the full project (omit --changed).
106
77
  ```
107
78
 
79
+ **1.2 Checks used:**
80
+
81
+ | Check | Command |
82
+ |---|---|
83
+ | Lint + type-check | `keryx health run --changed --source eslint,typescript` (drop `--changed` for full scope) |
84
+ | Tests | `keryx test run --changed --strict` (drop `--changed` for full scope) |
85
+ | Circular imports | the project's own package-manager runner + `madge --circular --extensions ts,tsx src/`, if `madge` is a devDependency — optional; not covered by `keryx health run` / `keryx test run` |
86
+
87
+ `src/health/sources/eslint.ts` and `src/health/sources/typescript.ts` resolve
88
+ the real lint/type-check invocation for the project; `src/testing/service.ts`
89
+ detects `bun` / `pnpm` / `yarn` / `npm` from the lockfile and builds the test
90
+ invocation from the project's own test script. Do NOT hard-code a package
91
+ manager, linter, type-checker, or test binary here — that is the if-chain
92
+ these commands already resolve. On a project with no keryx health/testing
93
+ config, fall back to the project's own configured lint/type-check/test
94
+ command (discovered from its `package.json` scripts or equivalent, not a
95
+ hardcoded tool).
96
+
108
97
  **Output of Phase 1:**
109
98
  ```
110
99
  TOOLING:
111
- pm: bun | pnpm | yarn | npm | python | go | unknown
112
- runner: "bun run" | ...
113
- checks_available: [lint, type-check, tests, circular-imports]
100
+ checks_available: [lint+type-check, tests, circular-imports]
114
101
  checks_skipped: [<reason>]
115
102
  scope: changed | full
116
103
  changed_files: [<paths>]
@@ -120,54 +107,44 @@ TOOLING:
120
107
 
121
108
  ### Phase 2: RUN
122
109
 
123
- Execute each available check in order. Capture full output.
110
+ Execute each available check. Capture full output.
124
111
 
125
- **Execution order:** lint → type-check → tests → import-check
112
+ **Execution order:** lint+type-check → tests → import-check
126
113
 
127
114
  **Do NOT abort early** — run all checks even if one fails. The orchestrator needs the complete picture.
128
115
 
129
- **2.1 Lint:**
116
+ **2.1 Lint + type-check:**
130
117
  ```bash
131
- # Changed files only (faster, more actionable)
132
- npx eslint <changed_files> --format=json --max-warnings 0
133
- # OR if lint script exists:
134
- $RUNNER lint
118
+ keryx health run --changed --source eslint,typescript
119
+ # OR, full scope:
120
+ keryx health run --source eslint,typescript
135
121
  ```
136
122
 
137
- Capture:
138
- - Exit code (0 = pass, non-zero = fail)
123
+ Read the result with `keryx health status` (or the report path the command
124
+ prints). Capture:
125
+ - Gate status (pass/fail) per source
139
126
  - Number of errors and warnings
140
- - Per-file error list (file path, line, column, rule, message)
141
-
142
- **2.2 Type-check:**
143
- ```bash
144
- npx tsc --noEmit 2>&1
145
- # OR:
146
- $RUNNER type-check
147
- ```
127
+ - Per-finding: file, line, column, rule/TS code, message
148
128
 
149
- Capture:
150
- - Exit code
151
- - Number of errors
152
- - Per-error: file, line, column, message, TS error code
153
-
154
- **2.3 Tests:**
129
+ **2.2 Tests:**
155
130
  ```bash
156
- $RUNNER test --run 2>&1 # vitest
157
- # OR: npx jest --ci 2>&1
158
- # OR: pytest --tb=short -q 2>&1
159
- # OR: go test ./... 2>&1
131
+ keryx test run --changed --strict
132
+ # OR, full scope:
133
+ keryx test run --strict
160
134
  ```
161
135
 
162
136
  Capture:
163
- - Exit code
137
+ - Report status / exit code
164
138
  - Tests passed / failed / skipped counts
165
139
  - Per-failure: test name, file, error message, stack (first 5 lines)
166
140
 
167
- **2.4 Circular import check (if madge available):**
141
+ **2.3 Circular import check (if madge available):**
168
142
  ```bash
169
- npx madge --circular --extensions ts,tsx src/ 2>&1
143
+ <pm> exec madge --circular --extensions ts,tsx src/ 2>&1
170
144
  ```
145
+ `<pm>` is the project's own package-manager runner for devDependency
146
+ binaries (`pnpm exec`, `yarn`, or the npm-based equivalent), resolved the
147
+ same way `keryx test run` resolves it from the lockfile — not hardcoded.
171
148
 
172
149
  Capture:
173
150
  - Exit code
@@ -298,7 +275,7 @@ code-verifier:
298
275
  code-verifier:
299
276
  codebase_path: <worktree_path>
300
277
  scope: changed
301
- → If gate still FAIL after 2 iterations → report as BLOCKED, skip to report
278
+ → If gate still FAIL after 3 iterations → report as BLOCKED, skip to report
302
279
  → If gate: PASS → proceed to report
303
280
  ```
304
281
 
@@ -12,9 +12,9 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.0.0"
15
- category: "verification"
15
+ category: "orchestration"
16
16
  agent_worthy: true
17
- compatible_harnesses: "cursor,codex,zed,opencode"
17
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
18
18
  license: "MIT"
19
19
  ---
20
20
 
@@ -61,56 +61,43 @@ Code Verifier Progress:
61
61
 
62
62
  ### Phase 1: DETECT
63
63
 
64
- Auto-detect the project stack and available verification tools.
64
+ Determine scope. Stack and tool discovery is delegated to `keryx health run`
65
+ and `keryx test run` — do NOT hand-roll package-manager or
66
+ lint/type-check/test tool detection here.
65
67
 
66
- **1.1 Package manager and runner:**
67
-
68
- ```bash
69
- cd <codebase_path>
70
-
71
- if [ -f bun.lock ] || [ -f bun.lockb ]; then PM=bun; RUNNER="bun run"
72
- elif [ -f pnpm-lock.yaml ]; then PM=pnpm; RUNNER="pnpm run"
73
- elif [ -f yarn.lock ]; then PM=yarn; RUNNER="yarn"
74
- elif [ -f package-lock.json ]; then PM=npm; RUNNER="npm run"
75
- elif [ -f pyproject.toml ] || [ -f requirements.txt ]; then PM=python; RUNNER=""
76
- elif [ -f go.mod ]; then PM=go; RUNNER=""
77
- else PM=unknown; RUNNER=""
78
- fi
79
- ```
80
-
81
- **1.2 Detect available check commands:**
82
-
83
- | Check | How to detect | Command |
84
- |---|---|---|
85
- | Lint | `package.json` has `"lint"` script | `$RUNNER lint` |
86
- | Lint (auto) | `eslint.config.*` or `.eslintrc*` present | `npx eslint . --max-warnings 0` |
87
- | Biome | `biome.json` present | `npx biome check .` |
88
- | Type-check | `package.json` has `"type-check"` or `"typecheck"` script | `$RUNNER type-check` |
89
- | Type-check (auto) | `tsconfig.json` present | `npx tsc --noEmit` |
90
- | Tests | `package.json` has `"test"` script | `$RUNNER test --run` (vitest) or `$RUNNER test` |
91
- | pytest | `pytest` in `pyproject.toml` or `requirements.txt` | `pytest --tb=short -q` |
92
- | Go tests | `go.mod` present | `go test ./...` |
93
- | Circular imports | `madge` in devDependencies | `npx madge --circular src/` |
94
-
95
- **1.3 Determine scope:**
68
+ **1.1 Determine scope:**
96
69
 
97
70
  ```
98
71
  IF scope = "changed" (default when dispatched by orchestrator):
99
72
  FILES = git diff --name-only <base_branch>...HEAD
100
- Run tests only for files related to changed code
101
- Run lint only on changed files: npx eslint <changed_files>
102
- Run type-check on full project (tsc doesn't support file-level scope)
73
+ Pass --changed to keryx health run and keryx test run below.
103
74
 
104
75
  IF scope = "full":
105
- Run all checks on full project
76
+ Run all checks on the full project (omit --changed).
106
77
  ```
107
78
 
79
+ **1.2 Checks used:**
80
+
81
+ | Check | Command |
82
+ |---|---|
83
+ | Lint + type-check | `keryx health run --changed --source eslint,typescript` (drop `--changed` for full scope) |
84
+ | Tests | `keryx test run --changed --strict` (drop `--changed` for full scope) |
85
+ | Circular imports | the project's own package-manager runner + `madge --circular --extensions ts,tsx src/`, if `madge` is a devDependency — optional; not covered by `keryx health run` / `keryx test run` |
86
+
87
+ `src/health/sources/eslint.ts` and `src/health/sources/typescript.ts` resolve
88
+ the real lint/type-check invocation for the project; `src/testing/service.ts`
89
+ detects `bun` / `pnpm` / `yarn` / `npm` from the lockfile and builds the test
90
+ invocation from the project's own test script. Do NOT hard-code a package
91
+ manager, linter, type-checker, or test binary here — that is the if-chain
92
+ these commands already resolve. On a project with no keryx health/testing
93
+ config, fall back to the project's own configured lint/type-check/test
94
+ command (discovered from its `package.json` scripts or equivalent, not a
95
+ hardcoded tool).
96
+
108
97
  **Output of Phase 1:**
109
98
  ```
110
99
  TOOLING:
111
- pm: bun | pnpm | yarn | npm | python | go | unknown
112
- runner: "bun run" | ...
113
- checks_available: [lint, type-check, tests, circular-imports]
100
+ checks_available: [lint+type-check, tests, circular-imports]
114
101
  checks_skipped: [<reason>]
115
102
  scope: changed | full
116
103
  changed_files: [<paths>]
@@ -120,54 +107,44 @@ TOOLING:
120
107
 
121
108
  ### Phase 2: RUN
122
109
 
123
- Execute each available check in order. Capture full output.
110
+ Execute each available check. Capture full output.
124
111
 
125
- **Execution order:** lint → type-check → tests → import-check
112
+ **Execution order:** lint+type-check → tests → import-check
126
113
 
127
114
  **Do NOT abort early** — run all checks even if one fails. The orchestrator needs the complete picture.
128
115
 
129
- **2.1 Lint:**
116
+ **2.1 Lint + type-check:**
130
117
  ```bash
131
- # Changed files only (faster, more actionable)
132
- npx eslint <changed_files> --format=json --max-warnings 0
133
- # OR if lint script exists:
134
- $RUNNER lint
118
+ keryx health run --changed --source eslint,typescript
119
+ # OR, full scope:
120
+ keryx health run --source eslint,typescript
135
121
  ```
136
122
 
137
- Capture:
138
- - Exit code (0 = pass, non-zero = fail)
123
+ Read the result with `keryx health status` (or the report path the command
124
+ prints). Capture:
125
+ - Gate status (pass/fail) per source
139
126
  - Number of errors and warnings
140
- - Per-file error list (file path, line, column, rule, message)
141
-
142
- **2.2 Type-check:**
143
- ```bash
144
- npx tsc --noEmit 2>&1
145
- # OR:
146
- $RUNNER type-check
147
- ```
127
+ - Per-finding: file, line, column, rule/TS code, message
148
128
 
149
- Capture:
150
- - Exit code
151
- - Number of errors
152
- - Per-error: file, line, column, message, TS error code
153
-
154
- **2.3 Tests:**
129
+ **2.2 Tests:**
155
130
  ```bash
156
- $RUNNER test --run 2>&1 # vitest
157
- # OR: npx jest --ci 2>&1
158
- # OR: pytest --tb=short -q 2>&1
159
- # OR: go test ./... 2>&1
131
+ keryx test run --changed --strict
132
+ # OR, full scope:
133
+ keryx test run --strict
160
134
  ```
161
135
 
162
136
  Capture:
163
- - Exit code
137
+ - Report status / exit code
164
138
  - Tests passed / failed / skipped counts
165
139
  - Per-failure: test name, file, error message, stack (first 5 lines)
166
140
 
167
- **2.4 Circular import check (if madge available):**
141
+ **2.3 Circular import check (if madge available):**
168
142
  ```bash
169
- npx madge --circular --extensions ts,tsx src/ 2>&1
143
+ <pm> exec madge --circular --extensions ts,tsx src/ 2>&1
170
144
  ```
145
+ `<pm>` is the project's own package-manager runner for devDependency
146
+ binaries (`pnpm exec`, `yarn`, or the npm-based equivalent), resolved the
147
+ same way `keryx test run` resolves it from the lockfile — not hardcoded.
171
148
 
172
149
  Capture:
173
150
  - Exit code
@@ -298,7 +275,7 @@ code-verifier:
298
275
  code-verifier:
299
276
  codebase_path: <worktree_path>
300
277
  scope: changed
301
- → If gate still FAIL after 2 iterations → report as BLOCKED, skip to report
278
+ → If gate still FAIL after 3 iterations → report as BLOCKED, skip to report
302
279
  → If gate: PASS → proceed to report
303
280
  ```
304
281
 
@@ -12,9 +12,9 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.1.0"
15
- category: "context"
15
+ category: "orchestration"
16
16
  agent_worthy: true
17
- compatible_harnesses: "cursor,codex,zed,opencode"
17
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
18
18
  license: "MIT"
19
19
  ---
20
20
 
@@ -600,7 +600,7 @@ When the orchestrator dispatches this skill as a sub-agent:
600
600
  You are the context-collector agent. Your task is to research and build
601
601
  a context document for the current job.
602
602
 
603
- Load the skill from: skills/orchestration/context-collector/SKILL.md
603
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
604
604
 
605
605
  ACTION: collect
606
606
  JOB_NAME: <job-name>
@@ -622,7 +622,7 @@ For updates:
622
622
  You are the context-collector agent. Your task is to update the existing
623
623
  context document for this job.
624
624
 
625
- Load the skill from: skills/orchestration/context-collector/SKILL.md
625
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
626
626
 
627
627
  ACTION: update
628
628
  JOB_NAME: <job-name>
@@ -12,9 +12,9 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.1.0"
15
- category: "context"
15
+ category: "orchestration"
16
16
  agent_worthy: true
17
- compatible_harnesses: "cursor,codex,zed,opencode"
17
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
18
18
  license: "MIT"
19
19
  ---
20
20
 
@@ -600,7 +600,7 @@ When the orchestrator dispatches this skill as a sub-agent:
600
600
  You are the context-collector agent. Your task is to research and build
601
601
  a context document for the current job.
602
602
 
603
- Load the skill from: skills/orchestration/context-collector/SKILL.md
603
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
604
604
 
605
605
  ACTION: collect
606
606
  JOB_NAME: <job-name>
@@ -622,7 +622,7 @@ For updates:
622
622
  You are the context-collector agent. Your task is to update the existing
623
623
  context document for this job.
624
624
 
625
- Load the skill from: skills/orchestration/context-collector/SKILL.md
625
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
626
626
 
627
627
  ACTION: update
628
628
  JOB_NAME: <job-name>
@@ -12,9 +12,9 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.1.0"
15
- category: "context"
15
+ category: "orchestration"
16
16
  agent_worthy: true
17
- compatible_harnesses: "cursor,codex,zed,opencode"
17
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
18
18
  license: "MIT"
19
19
  ---
20
20
 
@@ -600,7 +600,7 @@ When the orchestrator dispatches this skill as a sub-agent:
600
600
  You are the context-collector agent. Your task is to research and build
601
601
  a context document for the current job.
602
602
 
603
- Load the skill from: skills/orchestration/context-collector/SKILL.md
603
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
604
604
 
605
605
  ACTION: collect
606
606
  JOB_NAME: <job-name>
@@ -622,7 +622,7 @@ For updates:
622
622
  You are the context-collector agent. Your task is to update the existing
623
623
  context document for this job.
624
624
 
625
- Load the skill from: skills/orchestration/context-collector/SKILL.md
625
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
626
626
 
627
627
  ACTION: update
628
628
  JOB_NAME: <job-name>
@@ -12,9 +12,9 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.1.0"
15
- category: "context"
15
+ category: "orchestration"
16
16
  agent_worthy: true
17
- compatible_harnesses: "cursor,codex,zed,opencode"
17
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
18
18
  license: "MIT"
19
19
  ---
20
20
 
@@ -600,7 +600,7 @@ When the orchestrator dispatches this skill as a sub-agent:
600
600
  You are the context-collector agent. Your task is to research and build
601
601
  a context document for the current job.
602
602
 
603
- Load the skill from: skills/orchestration/context-collector/SKILL.md
603
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
604
604
 
605
605
  ACTION: collect
606
606
  JOB_NAME: <job-name>
@@ -622,7 +622,7 @@ For updates:
622
622
  You are the context-collector agent. Your task is to update the existing
623
623
  context document for this job.
624
624
 
625
- Load the skill from: skills/orchestration/context-collector/SKILL.md
625
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
626
626
 
627
627
  ACTION: update
628
628
  JOB_NAME: <job-name>
@@ -12,9 +12,9 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.1.0"
15
- category: "context"
15
+ category: "orchestration"
16
16
  agent_worthy: true
17
- compatible_harnesses: "cursor,codex,zed,opencode"
17
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
18
18
  license: "MIT"
19
19
  ---
20
20
 
@@ -600,7 +600,7 @@ When the orchestrator dispatches this skill as a sub-agent:
600
600
  You are the context-collector agent. Your task is to research and build
601
601
  a context document for the current job.
602
602
 
603
- Load the skill from: skills/orchestration/context-collector/SKILL.md
603
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
604
604
 
605
605
  ACTION: collect
606
606
  JOB_NAME: <job-name>
@@ -622,7 +622,7 @@ For updates:
622
622
  You are the context-collector agent. Your task is to update the existing
623
623
  context document for this job.
624
624
 
625
- Load the skill from: skills/orchestration/context-collector/SKILL.md
625
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
626
626
 
627
627
  ACTION: update
628
628
  JOB_NAME: <job-name>
@@ -58,7 +58,7 @@ IF ACTION == "update":
58
58
  You are the context-collector agent. Your task is to research and build
59
59
  a context document for the current job.
60
60
 
61
- Load the skill from: skills/orchestration/context-collector/SKILL.md
61
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
62
62
 
63
63
  DO NOT ask the user any questions. Execute all phases autonomously.
64
64
 
@@ -85,7 +85,7 @@ and return a CONTEXT_RESULT block as your final message.
85
85
  You are the context-collector agent. Your task is to update the existing
86
86
  context document for this job.
87
87
 
88
- Load the skill from: skills/orchestration/context-collector/SKILL.md
88
+ Load the skill from: .metaproject/skills/gdskills/orchestration/context-collector/SKILL.md
89
89
 
90
90
  DO NOT ask the user any questions. Execute the update flow autonomously.
91
91
 
@@ -12,8 +12,8 @@ triggers:
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "2.4.0"
15
- category: "analysis"
16
- compatible_harnesses: "cursor,codex,zed,opencode"
15
+ category: "orchestration"
16
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
17
17
  license: "MIT"
18
18
  ---
19
19
 
@@ -275,7 +275,7 @@ When focus specified: boost files matching focus keywords to P0; select ALL focu
275
275
  1. **Dependency search**: find all target files importing changed DTOs/APIs from source
276
276
  2. **Contract divergence**: compare new source contracts with current target implementation
277
277
  3. **Target deep dive**: read 2-3 key components that will need changes
278
- 4. **Target rules compliance**: check `.cursor/rules/core/*.mdc` in target repo
278
+ 4. **Target rules compliance**: check `.metaproject/rules/core/*.mdc` in target repo
279
279
 
280
280
  ---
281
281
 
@@ -333,24 +333,14 @@ Wait for user confirmation before generating full report.
333
333
  ### Output Structure
334
334
 
335
335
  ```
336
- <DOCS_ROOT>/analysis/<feature-name>-<YYYY-MM-DD>/
337
- ├── README.md # Index and navigation
338
- ├── report/
339
- │ ├── en/report.md # English for humans
340
- │ ├── ru/report.md # Russian for humans
341
- │ └── ai/report.md # Structured for AI agents (EN)
342
- ├── plans/
343
- │ ├── en/implementation-plan.md
344
- │ ├── ru/implementation-plan.md
345
- │ └── ai/implementation-plan.md
346
- ├── contracts/
347
- │ ├── api-changes.md # API contract diff
348
- │ └── dto-comparison.md # Before/after DTOs
349
- └── metrics/
350
- └── analysis-metrics.md # Analysis metadata
336
+ <DOCS_ROOT>/analysis/<feature-name>/
337
+ ├── report.md # Findings, API contract diff, DTO comparison, cross-repo impact, analysis metrics
338
+ └── implementation-plan.md # Actionable implementation plan derived from the analysis
351
339
  ```
352
340
 
353
- The AI-readable format (`report/ai/`, `plans/ai/`) uses Gherkin-style scenarios.
341
+ No date-stamped folder: update `report.md`/`implementation-plan.md` in place for a rerun on the same feature rather than creating a parallel copy. Default output is a single English (`en`) pair. Add other language variants only if the user explicitly asks for them, and keep any variants you create synchronized.
342
+
343
+ `report.md` should use Gherkin-style scenarios where they make findings easier for other AI agents to parse.
354
344
  > For full Gherkin output format and syntax rules, see `SKILL.detail.md`.
355
345
 
356
346
  ---
@@ -360,7 +350,7 @@ The AI-readable format (`report/ai/`, `plans/ai/`) uses Gherkin-style scenarios.
360
350
  - Every claim MUST reference specific code: `[filename.ts:L123](file:///absolute/path#L123)`
361
351
  - Minimum 3 code examples per report
362
352
  - Mermaid diagrams for architecture, tables for DTO changes, flowcharts for data flow
363
- - Multi-language: `en/` for humans, `ru/` for humans, `ai/` for AI agents
353
+ - Default to a single `en` document; add `ru`/`ai` (or other) variants only when the user explicitly asks, keeping them synchronized
364
354
 
365
355
  ---
366
356
 
@@ -378,7 +368,7 @@ The AI-readable format (`report/ai/`, `plans/ai/`) uses Gherkin-style scenarios.
378
368
 
379
369
  ## Step 13: Analysis Metrics
380
370
 
381
- Track and include in `metrics/analysis-metrics.md`:
371
+ Track and include in the `## Analysis Metrics` section of `report.md`:
382
372
  - Duration, files analyzed (P0/P1/P2), lines changed
383
373
  - Cross-repo dependencies, API endpoints changed, DTOs modified
384
374
  - Breaking changes count, test coverage %, risk level
@@ -415,7 +405,7 @@ Follow `documentation-management.mdc`: update `<DOCS_ROOT>/readme.md`, add entry
415
405
  4. **Never assume** — ask user when unclear
416
406
  5. **Never skip** intermediate review for complex analyses (P0 files > 3)
417
407
  6. **Always provide** concrete, actionable recommendations
418
- 7. **Always include** both human-readable and AI-readable formats
408
+ 7. **Always default** to a single-language document (`en`); add other language variants only when the user explicitly asks
419
409
 
420
410
  ---
421
411