@mrciphersmith/keryx 0.2.72 → 0.2.74

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 (144) hide show
  1. package/dist/cli.js +33409 -32626
  2. package/package.json +2 -2
  3. package/src/gdskills/bundled/rules/core/gproject-contracts.mdc +1 -1
  4. package/src/gdskills/bundled/rules/core/jobs-documentation.mdc +1 -1
  5. package/src/gdskills/bundled/rules/core/subagent-context-construction.md +1 -1
  6. package/src/gdskills/bundled/skills/core/reviewer-skill-creator/SKILL.md +214 -0
  7. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +326 -20
  8. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +320 -22
  9. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +326 -12
  10. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +333 -9
  11. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +92 -4
  12. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +92 -4
  13. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +92 -4
  14. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +92 -4
  15. package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +1 -1
  16. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +154 -1098
  17. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +154 -1098
  18. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +154 -1098
  19. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +154 -1098
  20. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +1 -1
  21. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +101 -41
  22. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +101 -41
  23. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +48 -1
  24. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/input-contract.schema.json +70 -4
  25. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +115 -49
  26. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +115 -49
  27. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +115 -49
  28. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +115 -49
  29. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
  30. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +15 -6
  31. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +15 -6
  32. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +15 -6
  33. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +15 -6
  34. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +1 -1
  35. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +1 -1
  36. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +1 -1
  37. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +1 -1
  38. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +1 -1
  39. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +300 -55
  40. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +300 -55
  41. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +120 -37
  42. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +300 -55
  43. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +300 -55
  44. package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +56 -14
  45. package/src/gdskills/bundled/skills/orchestration/task-implementer/orchestrator-prompt.md +50 -23
  46. package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +6 -2
  47. package/src/gdskills/bundled/skills/orchestration/task-implementer/task-request.template.md +18 -12
  48. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +1 -1
  49. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +1 -1
  50. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +169 -10
  51. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +169 -10
  52. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +1 -1
  53. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +7 -1
  54. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +7 -1
  55. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +7 -1
  56. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +7 -1
  57. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +216 -10
  58. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +216 -10
  59. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +1 -1
  60. package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +169 -10
  61. package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +169 -10
  62. package/src/gdskills/bundled/skills/planning/planner/SKILL.md +1 -1
  63. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +2 -2
  64. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +2 -2
  65. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +2 -2
  66. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +2 -2
  67. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +134 -10
  68. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +134 -10
  69. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +1 -1
  70. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +146 -10
  71. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +146 -10
  72. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +1 -1
  73. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +211 -10
  74. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +211 -10
  75. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +1 -1
  76. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +162 -10
  77. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +162 -10
  78. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +1 -1
  79. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +1 -1
  80. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +1 -1
  81. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +1 -1
  82. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +1 -1
  83. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +1 -1
  84. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +1 -1
  85. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +1 -1
  86. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +1 -1
  87. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +1 -1
  88. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +1 -1
  89. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +1 -1
  90. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +1 -1
  91. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +1 -1
  92. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +1 -1
  93. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +1 -1
  94. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +1 -1
  95. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +1 -1
  96. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +1 -1
  97. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +15 -1
  98. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +248 -165
  99. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +15 -1
  100. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +359 -19
  101. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +1 -1
  102. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +1 -1
  103. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +1 -1
  104. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +1 -1
  105. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +1 -1
  106. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +1 -1
  107. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +299 -24
  108. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +296 -31
  109. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +309 -18
  110. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +312 -17
  111. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +29 -30
  112. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +29 -30
  113. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +29 -30
  114. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +29 -30
  115. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +21 -30
  116. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +21 -30
  117. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +21 -30
  118. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +21 -30
  119. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +19 -23
  120. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +19 -23
  121. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +19 -23
  122. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +19 -23
  123. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +17 -24
  124. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +17 -24
  125. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +17 -24
  126. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +17 -24
  127. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +33 -1
  128. package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +217 -0
  129. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +26 -0
  130. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +320 -5
  131. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +644 -113
  132. package/src/gdskills/bundled/skills/review/review-pr-feedback/input-contract.schema.json +79 -0
  133. package/src/gdskills/bundled/skills/review/review-pr-feedback/output-contract.schema.json +375 -0
  134. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +111 -1
  135. package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +25 -1
  136. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.claude.md +0 -46
  137. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.claude.md +0 -94
  138. package/src/gdskills/bundled/skills/quality/changelog/SKILL.claude.md +0 -45
  139. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.claude.md +0 -40
  140. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.claude.md +0 -45
  141. package/src/gdskills/bundled/skills/quality/deploy/SKILL.claude.md +0 -42
  142. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.claude.md +0 -48
  143. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.claude.md +0 -40
  144. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.claude.md +0 -30
@@ -1,29 +1,353 @@
1
1
  ---
2
2
  name: code-verifier
3
- description: "Full quality gate: lint, type-check, tests, circular imports. Mandatory post-implementation step in job-orchestrator. Use when: verifying code after implementation, running quality gate before review."
3
+ model_tier: light
4
+ description: "Use when running a full quality gate after implementation — lint, type-check, tests, and import validation. Mandatory step in job-orchestrator after task-implementer and after fix iterations. Use standalone when you need a structured verification report."
4
5
  triggers:
5
6
  - "Run verification"
6
7
  - "Quality gate"
8
+ - "Check code quality"
7
9
  - "Run lint and tests"
8
10
  - "Verify implementation"
11
+ - "Run checks"
9
12
  metadata:
10
13
  author: "MrCipherSmith"
11
14
  version: "1.0.0"
12
15
  category: "verification"
16
+ agent_worthy: true
13
17
  compatible_harnesses: "cursor,codex,zed,opencode"
14
18
  license: "MIT"
15
19
  ---
16
20
 
17
21
  # Code Verifier
18
22
 
19
- lint → type-check → tests → circular-import gate.
23
+ ## Purpose
20
24
 
21
- **Pipeline:** task-implementer → **code-verifier** → review
25
+ Runs the full quality gate for a project: lint, type-check, tests, and import validation. Provides a structured, parseable result that the orchestrator uses to decide whether to proceed or trigger a fix loop.
22
26
 
23
- ## Steps
24
- 1. Detect tooling
25
- 2. Run all checks (never abort early)
26
- 3. Classify: CRITICAL/HIGH = FAIL, LOW = PASS_WITH_WARNINGS
27
- 4. Emit VERIFICATION_RESULT
27
+ **Distinct from `task-implementer` Phase 5:** task-implementer does inline self-verification during implementation. `code-verifier` is an independent gate that runs after all tasks in a wave are complete — giving a clean, consolidated view of the whole diff, not per-task.
28
28
 
29
- Full spec: `.metaproject/skills/gdskills/orchestration/code-verifier/SKILL.md`
29
+ **Input:** Codebase path + worktree path + scope (changed files or full project)
30
+ **Output:** `VERIFICATION_RESULT` structured report — gate status (pass/fail), per-check results, actionable findings
31
+
32
+ ## When to Use
33
+
34
+ - Dispatched by `job-orchestrator` after each task-implementer wave (mandatory)
35
+ - Dispatched by `job-orchestrator` after each fix iteration
36
+ - Run standalone: "verify my code", "run quality gate", "/code-verifier"
37
+ - Any time you need a reproducible, structured view of project health
38
+
39
+ ## Architecture: 4 Phases
40
+
41
+ ```
42
+ Phase 1: DETECT → Auto-detect stack, tooling, commands
43
+ Phase 2: RUN → Execute lint → type-check → tests → import-check
44
+ Phase 3: ANALYZE → Parse outputs, classify findings by severity
45
+ Phase 4: REPORT → Emit VERIFICATION_RESULT
46
+ ```
47
+
48
+ ---
49
+
50
+ ## Workflow
51
+
52
+ ```
53
+ Code Verifier Progress:
54
+ - [ ] Phase 1: Detect stack and tooling
55
+ - [ ] Phase 2: Run verification checks
56
+ - [ ] Phase 3: Analyze and classify findings
57
+ - [ ] Phase 4: Report results
58
+ ```
59
+
60
+ ---
61
+
62
+ ### Phase 1: DETECT
63
+
64
+ Auto-detect the project stack and available verification tools.
65
+
66
+ **1.1 Package manager and runner:**
67
+
68
+ ```bash
69
+ cd <codebase_path>
70
+
71
+ if [ -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:**
96
+
97
+ ```
98
+ IF scope = "changed" (default when dispatched by orchestrator):
99
+ 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)
103
+
104
+ IF scope = "full":
105
+ Run all checks on full project
106
+ ```
107
+
108
+ **Output of Phase 1:**
109
+ ```
110
+ TOOLING:
111
+ pm: bun | pnpm | yarn | npm | python | go | unknown
112
+ runner: "bun run" | ...
113
+ checks_available: [lint, type-check, tests, circular-imports]
114
+ checks_skipped: [<reason>]
115
+ scope: changed | full
116
+ changed_files: [<paths>]
117
+ ```
118
+
119
+ ---
120
+
121
+ ### Phase 2: RUN
122
+
123
+ Execute each available check in order. Capture full output.
124
+
125
+ **Execution order:** lint → type-check → tests → import-check
126
+
127
+ **Do NOT abort early** — run all checks even if one fails. The orchestrator needs the complete picture.
128
+
129
+ **2.1 Lint:**
130
+ ```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
135
+ ```
136
+
137
+ Capture:
138
+ - Exit code (0 = pass, non-zero = fail)
139
+ - 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
+ ```
148
+
149
+ Capture:
150
+ - Exit code
151
+ - Number of errors
152
+ - Per-error: file, line, column, message, TS error code
153
+
154
+ **2.3 Tests:**
155
+ ```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
160
+ ```
161
+
162
+ Capture:
163
+ - Exit code
164
+ - Tests passed / failed / skipped counts
165
+ - Per-failure: test name, file, error message, stack (first 5 lines)
166
+
167
+ **2.4 Circular import check (if madge available):**
168
+ ```bash
169
+ npx madge --circular --extensions ts,tsx src/ 2>&1
170
+ ```
171
+
172
+ Capture:
173
+ - Exit code
174
+ - List of circular chains (if any)
175
+
176
+ ---
177
+
178
+ ### Phase 3: ANALYZE
179
+
180
+ Parse raw outputs into structured findings. Classify by severity.
181
+
182
+ **3.1 Severity classification:**
183
+
184
+ | Finding | Severity |
185
+ |---|---|
186
+ | Type error | CRITICAL |
187
+ | Test failure | CRITICAL |
188
+ | ESLint error (not warning) | HIGH |
189
+ | Circular import | HIGH |
190
+ | ESLint warning | LOW |
191
+ | Skipped test | INFO |
192
+
193
+ **3.2 Gate decision:**
194
+
195
+ ```
196
+ GATE = PASS
197
+ IF any CRITICAL findings → GATE = FAIL (blocks proceed)
198
+ IF any HIGH findings → GATE = FAIL (blocks proceed)
199
+ IF only LOW/INFO findings → GATE = PASS_WITH_WARNINGS
200
+ ```
201
+
202
+ **3.3 Actionable finding format:**
203
+
204
+ Each finding must include enough context for `task-implementer` (fix mode) to resolve it without re-reading the full output:
205
+
206
+ ```
207
+ {
208
+ severity: CRITICAL | HIGH | LOW | INFO,
209
+ check: lint | type-check | test | circular-import,
210
+ file: <path>,
211
+ line: <N> | null,
212
+ column: <N> | null,
213
+ rule: <ESLint rule or TS error code> | null,
214
+ message: <error text>,
215
+ suggestion: <optional fix hint>
216
+ }
217
+ ```
218
+
219
+ ---
220
+
221
+ ### Phase 4: REPORT
222
+
223
+ Emit the structured `VERIFICATION_RESULT` as the final message.
224
+
225
+ ```
226
+ VERIFICATION_RESULT:
227
+ gate: PASS | PASS_WITH_WARNINGS | FAIL
228
+ scope: changed | full
229
+
230
+ checks:
231
+ lint:
232
+ status: pass | fail | skipped
233
+ errors: <N>
234
+ warnings: <N>
235
+ command_used: "<command>"
236
+
237
+ type_check:
238
+ status: pass | fail | skipped
239
+ errors: <N>
240
+ command_used: "<command>"
241
+
242
+ tests:
243
+ status: pass | fail | skipped
244
+ passed: <N>
245
+ failed: <N>
246
+ skipped: <N>
247
+ command_used: "<command>"
248
+
249
+ circular_imports:
250
+ status: pass | fail | skipped
251
+ cycles: <N>
252
+
253
+ findings:
254
+ - severity: CRITICAL
255
+ check: type-check
256
+ file: src/services/UserService.ts
257
+ line: 42
258
+ rule: TS2345
259
+ message: "Argument of type 'string' is not assignable to parameter of type 'number'"
260
+ - severity: HIGH
261
+ check: lint
262
+ file: src/components/Form.tsx
263
+ line: 18
264
+ rule: "no-unused-vars"
265
+ message: "'value' is defined but never used"
266
+
267
+ summary: "<1-2 sentence human-readable summary>"
268
+ ```
269
+
270
+ **STATUS reporting:**
271
+
272
+ ```
273
+ STATUS: DONE — gate PASS or PASS_WITH_WARNINGS, report follows
274
+ STATUS: DONE_WITH_CONCERNS — PASS_WITH_WARNINGS with notable warnings
275
+ STATUS: BLOCKED — could not run checks (missing tooling, wrong directory)
276
+ ```
277
+
278
+ > If `gate: FAIL` → STATUS is still `DONE` (the gate result, not the skill's execution). The orchestrator reads `gate: FAIL` and decides to trigger fix.
279
+
280
+ ---
281
+
282
+ ## Integration with job-orchestrator
283
+
284
+ The orchestrator dispatches `code-verifier` at two points:
285
+
286
+ **After task-implementer wave (pre-review gate):**
287
+ ```
288
+ code-verifier:
289
+ codebase_path: <worktree_path>
290
+ scope: changed
291
+ base_branch: <base_branch from JOB_STATE>
292
+ → If gate: FAIL → dispatch fix tasks → re-run code-verifier
293
+ → If gate: PASS → proceed to review
294
+ ```
295
+
296
+ **After fix iterations (post-fix gate):**
297
+ ```
298
+ code-verifier:
299
+ codebase_path: <worktree_path>
300
+ scope: changed
301
+ → If gate still FAIL after 2 iterations → report as BLOCKED, skip to report
302
+ → If gate: PASS → proceed to report
303
+ ```
304
+
305
+ **The orchestrator's internal "checks" step (2.8) is replaced by `code-verifier` dispatch.**
306
+
307
+ ---
308
+
309
+ ## Standalone Usage
310
+
311
+ ```bash
312
+ # Run on current directory, changed files only
313
+ /code-verifier
314
+
315
+ # Run on specific project
316
+ /code-verifier --path /path/to/project
317
+
318
+ # Full project scan (not just changed files)
319
+ /code-verifier --scope full
320
+ ```
321
+
322
+ ---
323
+
324
+ ## Automation Settings
325
+
326
+ | Setting | Default | Options | Description |
327
+ |---------|---------|---------|-------------|
328
+ | `scope` | `changed` | `changed` / `full` | Limit checks to changed files or run full project |
329
+ | `fail_on_warnings` | `false` | true/false | Treat ESLint warnings as gate failures |
330
+ | `include_circular` | `true` | true/false | Run circular import detection if madge available |
331
+ | `max_findings_reported` | `20` | 1-100 | Cap findings in report to avoid overflow |
332
+
333
+ ---
334
+
335
+ ## Error Handling
336
+
337
+ | Error | Action |
338
+ |---|---|
339
+ | Check command not found | Mark check as `skipped`, continue others |
340
+ | Wrong working directory | ABORT with `STATUS: BLOCKED` and directory hint |
341
+ | Command times out (>120s) | Mark check as `skipped (timeout)`, continue |
342
+ | Zero checks available | `STATUS: BLOCKED` — cannot verify without any tooling |
343
+ | Circular import tool missing | Skip silently (not installed in all projects) |
344
+
345
+ ---
346
+
347
+ ## Rules of Engagement
348
+
349
+ 1. **Run ALL checks** — never abort after first failure. The orchestrator needs the full picture.
350
+ 2. **Do NOT modify files** — this is read-only verification.
351
+ 3. **Scope to changed files** by default — full scans are slow and produce noise.
352
+ 4. **Be specific** in findings — include file, line, rule, message. Vague "lint failed" is not actionable.
353
+ 5. Return `VERIFICATION_RESULT` as the **final message** to the orchestrator.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: context-collector
3
- description: "Collects, summarizes, and maintains a unified context document for a job. Gathers relevant local documentation (docs/, jobs/, rules), identifies libraries/patterns/references, fetches external documentation via web, extracts best practices, and produces a single context document that all sub-agents can reference during the job lifecycle. Can be invoked by job-orchestrator or directly by user."
3
+ description: "Use when a job needs a unified context document — gathering docs, libraries, and references for sub-agents before execution."
4
4
  triggers:
5
5
  - "Collect context"
6
6
  - "Build context"
@@ -11,12 +11,19 @@ triggers:
11
11
  - "Research context"
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
- version: "1.0.0"
14
+ version: "1.1.0"
15
15
  category: "context"
16
+ agent_worthy: true
16
17
  compatible_harnesses: "cursor,codex,zed,opencode"
17
18
  license: "MIT"
18
19
  ---
19
20
 
21
+ <SUBAGENT-STOP>
22
+ If you were dispatched as a subagent to execute a specific task, skip this skill entirely.
23
+ This skill is for orchestrators and interactive session-level routing only.
24
+ Proceed directly with your assigned task.
25
+ </SUBAGENT-STOP>
26
+
20
27
  # Context Collector
21
28
 
22
29
  ## Purpose
@@ -163,9 +170,15 @@ Scan local sources for relevant context. Be selective — only include what is d
163
170
  |------------|---------------|
164
171
  | React components | code-style-patterns.mdc, frontend-assistant.mdc, storybook-guidelines.mdc |
165
172
  | MobX stores | code-style-patterns.mdc, mobx-store-template.mdc |
166
- | API / DTOs | nestjs-dto.mdc, code-style-patterns.mdc |
167
- | Testing | playwright-testing.mdc, storybook-guidelines.mdc |
173
+ | API / DTOs | nestjs-dto.mdc, code-style-patterns.mdc, api-contracts.mdc |
174
+ | Testing | playwright-testing.mdc, storybook-guidelines.mdc, tdd-workflow.mdc |
168
175
  | General code | code-style-patterns.mdc, frontend-assistant.mdc |
176
+ | TDD / test-first | tdd-workflow.mdc |
177
+ | Architecture / layers | clean-architecture.mdc, solid-principles.mdc |
178
+ | Error handling | error-handling.mdc |
179
+ | Database / ORM | database-patterns.mdc |
180
+ | Security | security-baseline.mdc |
181
+ | Async code | async-patterns.mdc |
169
182
 
170
183
  2. Read each applicable rule
171
184
  3. Extract: specific conventions, required patterns, prohibited practices
@@ -189,6 +202,61 @@ Scan local sources for relevant context. Be selective — only include what is d
189
202
  - Key patterns to follow for consistency
190
203
  ```
191
204
 
205
+ ### 2.5 Test Framework Detection (`PROJECT_DIR`)
206
+
207
+ Always detect the test framework — `tests-creator` and `task-implementer` both need this.
208
+
209
+ ```
210
+ 1. Read package.json:
211
+ - Check "dependencies" and "devDependencies" for:
212
+ vitest, jest, @jest/*, mocha, jasmine, bun:test, pytest, go test
213
+
214
+ 2. Check for config files:
215
+ - vitest.config.ts / vitest.config.js
216
+ - jest.config.ts / jest.config.js
217
+ - .mocharc.* / mocha.opts
218
+
219
+ 3. Read 2-3 existing test files (*.test.ts, *.spec.ts, test_*.py):
220
+ - Import style (global vs explicit import)
221
+ - Describe/it/test nesting depth
222
+ - Assertion style (expect().toBe vs assert.equal)
223
+ - Mock library (vi.fn / jest.fn / sinon)
224
+ - Fixture patterns (factories, builders, inline data)
225
+ - Test file location convention (co-located vs __tests__/)
226
+
227
+ 4. Summarize as "Test Framework Context":
228
+ framework: <vitest|jest|bun:test|mocha|pytest>
229
+ import_style: esm | cjs | global
230
+ file_pattern: "*.test.ts" | "*.spec.ts"
231
+ file_location: co-located | __tests__ | tests/
232
+ mock_library: vi | jest | sinon
233
+ run_command: "bun test" | "npx vitest run" | "npm test"
234
+ example_test_file: <path to a representative test>
235
+ ```
236
+
237
+ ### 2.6 Greptile Codebase Context (when available)
238
+
239
+ Greptile indexes the full repository and stores codebase-level context. If Greptile MCP is available in the session, query it as an additional local source — it can surface cross-file patterns that a manual scan would miss.
240
+
241
+ ```
242
+ 1. Try fetching stored custom context:
243
+ mcp__greptile__get_custom_context({})
244
+ or
245
+ mcp__greptile__search_custom_context({ query: "<task_description>" })
246
+
247
+ 2. If Greptile context is returned:
248
+ - Extract: documented patterns, known exceptions, team conventions
249
+ - Note: "Source: Greptile codebase index"
250
+
251
+ 3. Check for relevant past review comments (signals about recurring issues):
252
+ mcp__greptile__search_greptile_comments({ query: "<focus_area>", limit: 5 })
253
+ - Extract recurring findings → add to "Known Issues / Watch Areas" section
254
+
255
+ 4. If Greptile MCP is not available or returns empty: skip silently, proceed normally.
256
+ ```
257
+
258
+ Greptile context is additive — it supplements local context, never replaces it.
259
+
192
260
  **Output of Phase 2:**
193
261
  ```
194
262
  LOCAL_CONTEXT:
@@ -196,6 +264,8 @@ LOCAL_CONTEXT:
196
264
  related_jobs: [{job_name, relevance, key_findings}]
197
265
  applicable_rules: [{rule, key_conventions: [string]}]
198
266
  codebase_patterns: [{area, patterns: [string], example_files: [path]}]
267
+ test_framework: {framework, import_style, file_pattern, file_location, mock_library, run_command, example_test_file}
268
+ greptile_context: {available: bool, patterns: [string], known_issues: [string]}
199
269
  ```
200
270
 
201
271
  ---
@@ -445,6 +515,24 @@ If no JOB_NAME is provided:
445
515
  - Write context to `<DOCS_ROOT>/context/<descriptive-slug>.md`
446
516
  - Include full metadata block
447
517
 
518
+ ## Reporting Results
519
+
520
+ Every final response to the orchestrator MUST begin with the status line:
521
+
522
+ ```
523
+ STATUS: DONE
524
+
525
+ ## Context collected
526
+ [summary of what was gathered]
527
+
528
+ ## CONTEXT_RESULT
529
+ [the full result block]
530
+ ```
531
+
532
+ Use `STATUS: DONE_WITH_CONCERNS` if context is partial. Use `STATUS: BLOCKED` if access fails.
533
+
534
+ **IRON LAW: THE FIRST LINE OF YOUR FINAL RESPONSE IS ALWAYS "STATUS: <STATUS>". THE CONTEXT_RESULT BLOCK FOLLOWS AFTER.**
535
+
448
536
  ### 5.3 Return Result
449
537
 
450
538
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: context-collector
3
- description: "Collects, summarizes, and maintains a unified context document for a job. Gathers relevant local documentation (docs/, jobs/, rules), identifies libraries/patterns/references, fetches external documentation via web, extracts best practices, and produces a single context document that all sub-agents can reference during the job lifecycle. Can be invoked by job-orchestrator or directly by user."
3
+ description: "Use when a job needs a unified context document — gathering docs, libraries, and references for sub-agents before execution."
4
4
  triggers:
5
5
  - "Collect context"
6
6
  - "Build context"
@@ -11,12 +11,19 @@ triggers:
11
11
  - "Research context"
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
- version: "1.0.0"
14
+ version: "1.1.0"
15
15
  category: "context"
16
+ agent_worthy: true
16
17
  compatible_harnesses: "cursor,codex,zed,opencode"
17
18
  license: "MIT"
18
19
  ---
19
20
 
21
+ <SUBAGENT-STOP>
22
+ If you were dispatched as a subagent to execute a specific task, skip this skill entirely.
23
+ This skill is for orchestrators and interactive session-level routing only.
24
+ Proceed directly with your assigned task.
25
+ </SUBAGENT-STOP>
26
+
20
27
  # Context Collector
21
28
 
22
29
  ## Purpose
@@ -163,9 +170,15 @@ Scan local sources for relevant context. Be selective — only include what is d
163
170
  |------------|---------------|
164
171
  | React components | code-style-patterns.mdc, frontend-assistant.mdc, storybook-guidelines.mdc |
165
172
  | MobX stores | code-style-patterns.mdc, mobx-store-template.mdc |
166
- | API / DTOs | nestjs-dto.mdc, code-style-patterns.mdc |
167
- | Testing | playwright-testing.mdc, storybook-guidelines.mdc |
173
+ | API / DTOs | nestjs-dto.mdc, code-style-patterns.mdc, api-contracts.mdc |
174
+ | Testing | playwright-testing.mdc, storybook-guidelines.mdc, tdd-workflow.mdc |
168
175
  | General code | code-style-patterns.mdc, frontend-assistant.mdc |
176
+ | TDD / test-first | tdd-workflow.mdc |
177
+ | Architecture / layers | clean-architecture.mdc, solid-principles.mdc |
178
+ | Error handling | error-handling.mdc |
179
+ | Database / ORM | database-patterns.mdc |
180
+ | Security | security-baseline.mdc |
181
+ | Async code | async-patterns.mdc |
169
182
 
170
183
  2. Read each applicable rule
171
184
  3. Extract: specific conventions, required patterns, prohibited practices
@@ -189,6 +202,61 @@ Scan local sources for relevant context. Be selective — only include what is d
189
202
  - Key patterns to follow for consistency
190
203
  ```
191
204
 
205
+ ### 2.5 Test Framework Detection (`PROJECT_DIR`)
206
+
207
+ Always detect the test framework — `tests-creator` and `task-implementer` both need this.
208
+
209
+ ```
210
+ 1. Read package.json:
211
+ - Check "dependencies" and "devDependencies" for:
212
+ vitest, jest, @jest/*, mocha, jasmine, bun:test, pytest, go test
213
+
214
+ 2. Check for config files:
215
+ - vitest.config.ts / vitest.config.js
216
+ - jest.config.ts / jest.config.js
217
+ - .mocharc.* / mocha.opts
218
+
219
+ 3. Read 2-3 existing test files (*.test.ts, *.spec.ts, test_*.py):
220
+ - Import style (global vs explicit import)
221
+ - Describe/it/test nesting depth
222
+ - Assertion style (expect().toBe vs assert.equal)
223
+ - Mock library (vi.fn / jest.fn / sinon)
224
+ - Fixture patterns (factories, builders, inline data)
225
+ - Test file location convention (co-located vs __tests__/)
226
+
227
+ 4. Summarize as "Test Framework Context":
228
+ framework: <vitest|jest|bun:test|mocha|pytest>
229
+ import_style: esm | cjs | global
230
+ file_pattern: "*.test.ts" | "*.spec.ts"
231
+ file_location: co-located | __tests__ | tests/
232
+ mock_library: vi | jest | sinon
233
+ run_command: "bun test" | "npx vitest run" | "npm test"
234
+ example_test_file: <path to a representative test>
235
+ ```
236
+
237
+ ### 2.6 Greptile Codebase Context (when available)
238
+
239
+ Greptile indexes the full repository and stores codebase-level context. If Greptile MCP is available in the session, query it as an additional local source — it can surface cross-file patterns that a manual scan would miss.
240
+
241
+ ```
242
+ 1. Try fetching stored custom context:
243
+ mcp__greptile__get_custom_context({})
244
+ or
245
+ mcp__greptile__search_custom_context({ query: "<task_description>" })
246
+
247
+ 2. If Greptile context is returned:
248
+ - Extract: documented patterns, known exceptions, team conventions
249
+ - Note: "Source: Greptile codebase index"
250
+
251
+ 3. Check for relevant past review comments (signals about recurring issues):
252
+ mcp__greptile__search_greptile_comments({ query: "<focus_area>", limit: 5 })
253
+ - Extract recurring findings → add to "Known Issues / Watch Areas" section
254
+
255
+ 4. If Greptile MCP is not available or returns empty: skip silently, proceed normally.
256
+ ```
257
+
258
+ Greptile context is additive — it supplements local context, never replaces it.
259
+
192
260
  **Output of Phase 2:**
193
261
  ```
194
262
  LOCAL_CONTEXT:
@@ -196,6 +264,8 @@ LOCAL_CONTEXT:
196
264
  related_jobs: [{job_name, relevance, key_findings}]
197
265
  applicable_rules: [{rule, key_conventions: [string]}]
198
266
  codebase_patterns: [{area, patterns: [string], example_files: [path]}]
267
+ test_framework: {framework, import_style, file_pattern, file_location, mock_library, run_command, example_test_file}
268
+ greptile_context: {available: bool, patterns: [string], known_issues: [string]}
199
269
  ```
200
270
 
201
271
  ---
@@ -445,6 +515,24 @@ If no JOB_NAME is provided:
445
515
  - Write context to `<DOCS_ROOT>/context/<descriptive-slug>.md`
446
516
  - Include full metadata block
447
517
 
518
+ ## Reporting Results
519
+
520
+ Every final response to the orchestrator MUST begin with the status line:
521
+
522
+ ```
523
+ STATUS: DONE
524
+
525
+ ## Context collected
526
+ [summary of what was gathered]
527
+
528
+ ## CONTEXT_RESULT
529
+ [the full result block]
530
+ ```
531
+
532
+ Use `STATUS: DONE_WITH_CONCERNS` if context is partial. Use `STATUS: BLOCKED` if access fails.
533
+
534
+ **IRON LAW: THE FIRST LINE OF YOUR FINAL RESPONSE IS ALWAYS "STATUS: <STATUS>". THE CONTEXT_RESULT BLOCK FOLLOWS AFTER.**
535
+
448
536
  ### 5.3 Return Result
449
537
 
450
538
  ```