@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.
- package/dist/cli.js +569 -235
- package/dist/core.js +1 -1
- package/package.json +1 -1
- package/src/gdskills/bundled/rules/core/api-contracts.mdc +1 -0
- package/src/gdskills/bundled/rules/core/code-style-patterns.mdc +1 -0
- package/src/gdskills/bundled/rules/core/database-patterns.mdc +1 -0
- package/src/gdskills/bundled/rules/core/documentation-management.mdc +33 -38
- package/src/gdskills/bundled/rules/core/error-handling.mdc +1 -11
- package/src/gdskills/bundled/rules/core/execution-metrics.md +1 -2
- package/src/gdskills/bundled/rules/core/frontend-assistant.mdc +1 -0
- package/src/gdskills/bundled/rules/core/git-concurrency.mdc +101 -0
- package/src/gdskills/bundled/rules/core/implementation-plans.mdc +23 -11
- package/src/gdskills/bundled/rules/core/mobx-store-template.mdc +1 -0
- package/src/gdskills/bundled/rules/core/nestjs-dto.mdc +1 -0
- package/src/gdskills/bundled/rules/core/playwright-testing.mdc +1 -0
- package/src/gdskills/bundled/rules/core/requirements-management.mdc +15 -11
- package/src/gdskills/bundled/rules/core/rule-management-workflow.mdc +29 -14
- package/src/gdskills/bundled/rules/core/shared-definitions.mdc +1 -1
- package/src/gdskills/bundled/rules/core/skill-lifecycle.mdc +9 -5
- package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +59 -16
- package/src/gdskills/bundled/rules/core/storybook-guidelines.mdc +1 -0
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +48 -71
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +48 -71
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +48 -71
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +48 -71
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +48 -71
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +4 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +4 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +4 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +4 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +4 -4
- package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +12 -22
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +12 -22
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.detail.md +12 -22
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +12 -22
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +12 -22
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +12 -22
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.template.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/input-contract.schema.json +4 -4
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +46 -4
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +65 -23
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +65 -23
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +65 -23
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +65 -23
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +65 -23
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +19 -10
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +19 -10
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +19 -10
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +19 -10
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +19 -10
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +7 -7
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +7 -7
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +7 -7
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +7 -7
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +7 -7
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/quality/commit/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/push/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +7 -2
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +7 -2
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +7 -2
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +15 -9
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +15 -9
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +15 -9
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +15 -9
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +15 -9
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +3 -3
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +40 -35
- package/src/gdskills/bundled/skills/review/review-orchestrator/input-contract.schema.json +1 -2
- package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +1 -5
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +53 -9
- package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +6 -6
- package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +3 -3
- package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +1 -1
- package/src/gdskills/bundled/rules/core/review-agent-profile.mdc +0 -49
- 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: "
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
110
|
+
Execute each available check. Capture full output.
|
|
124
111
|
|
|
125
|
-
**Execution order:** lint
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
138
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
157
|
-
# OR
|
|
158
|
-
|
|
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
|
-
-
|
|
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.
|
|
141
|
+
**2.3 Circular import check (if madge available):**
|
|
168
142
|
```bash
|
|
169
|
-
|
|
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
|
|
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: "
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
110
|
+
Execute each available check. Capture full output.
|
|
124
111
|
|
|
125
|
-
**Execution order:** lint
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
138
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
157
|
-
# OR
|
|
158
|
-
|
|
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
|
-
-
|
|
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.
|
|
141
|
+
**2.3 Circular import check (if madge available):**
|
|
168
142
|
```bash
|
|
169
|
-
|
|
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
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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 `.
|
|
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
|
|
337
|
-
├──
|
|
338
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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 `
|
|
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
|
|
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
|
|