@mrciphersmith/keryx 0.2.71 → 0.2.73
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 +4632 -2229
- package/package.json +2 -2
- package/src/gdskills/bundled/rules/core/code-review-learned-profile.mdc +81 -0
- package/src/gdskills/bundled/rules/core/gproject-contracts.mdc +1 -1
- package/src/gdskills/bundled/rules/core/jobs-documentation.mdc +2 -2
- package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +8 -4
- package/src/gdskills/bundled/rules/core/subagent-context-construction.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +326 -20
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +320 -22
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +326 -12
- package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +333 -9
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +94 -6
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +94 -6
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +94 -6
- package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +94 -6
- package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +3 -3
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +154 -1098
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +102 -42
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +102 -42
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +115 -49
- package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +16 -7
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +16 -7
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +16 -7
- package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +16 -7
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +973 -510
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +973 -510
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +944 -514
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +973 -510
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +973 -510
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json +38 -28
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/orchestrator-prompt.md +98 -66
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/output-contract.schema.json +27 -5
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +120 -37
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +300 -55
- package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +57 -15
- package/src/gdskills/bundled/skills/orchestration/task-implementer/orchestrator-prompt.md +50 -23
- package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +6 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/task-request.template.md +18 -12
- 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/consistency-checker/SKILL.codex.md +168 -9
- package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +168 -9
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +7 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +7 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +7 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +7 -1
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +215 -9
- package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +215 -9
- package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +168 -9
- package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +168 -9
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +2 -2
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +2 -2
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +2 -2
- package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +2 -2
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +133 -9
- package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +133 -9
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +145 -9
- package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +145 -9
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +210 -9
- package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +210 -9
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +161 -9
- package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +161 -9
- 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/hookify/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.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/commit/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +1 -1
- 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/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/deploy/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.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/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-issue-documenter/SKILL.codex.md +15 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +248 -165
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +15 -1
- package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +359 -19
- 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/security-audit/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +299 -24
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +296 -31
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +309 -18
- package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +312 -17
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +29 -30
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +29 -30
- 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 +29 -30
- package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +29 -30
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +243 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +243 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +243 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +243 -0
- package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +243 -0
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +19 -23
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +19 -23
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +19 -23
- package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +19 -23
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +17 -24
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +17 -24
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +17 -24
- package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +17 -24
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +1 -1
- 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 +1 -1
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-highload/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 +26 -13
- package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +36 -17
- package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +1 -1
- 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/skills/shared/git-merge-base.md +1 -1
- package/src/gdskills/bundled/rules/core/code-review-b091-profile.mdc +0 -48
- package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.claude.md +0 -46
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.claude.md +0 -94
- package/src/gdskills/bundled/skills/quality/changelog/SKILL.claude.md +0 -45
- package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.claude.md +0 -40
- package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.claude.md +0 -45
- package/src/gdskills/bundled/skills/quality/deploy/SKILL.claude.md +0 -42
- package/src/gdskills/bundled/skills/quality/perf-check/SKILL.claude.md +0 -48
- package/src/gdskills/bundled/skills/quality/security-audit/SKILL.claude.md +0 -40
- package/src/gdskills/bundled/skills/quality/test-gen/SKILL.claude.md +0 -30
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.codex.md +0 -209
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.cursor.md +0 -209
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.md +0 -208
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.opencode.md +0 -209
- package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.zed.md +0 -209
|
@@ -1,29 +1,353 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-verifier
|
|
3
|
-
|
|
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
|
-
|
|
23
|
+
## Purpose
|
|
20
24
|
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: "
|
|
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.
|
|
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
|
```
|
|
@@ -512,7 +600,7 @@ When the orchestrator dispatches this skill as a sub-agent:
|
|
|
512
600
|
You are the context-collector agent. Your task is to research and build
|
|
513
601
|
a context document for the current job.
|
|
514
602
|
|
|
515
|
-
Load the skill from: skills/context-collector/SKILL.md
|
|
603
|
+
Load the skill from: skills/orchestration/context-collector/SKILL.md
|
|
516
604
|
|
|
517
605
|
ACTION: collect
|
|
518
606
|
JOB_NAME: <job-name>
|
|
@@ -534,7 +622,7 @@ For updates:
|
|
|
534
622
|
You are the context-collector agent. Your task is to update the existing
|
|
535
623
|
context document for this job.
|
|
536
624
|
|
|
537
|
-
Load the skill from: skills/context-collector/SKILL.md
|
|
625
|
+
Load the skill from: skills/orchestration/context-collector/SKILL.md
|
|
538
626
|
|
|
539
627
|
ACTION: update
|
|
540
628
|
JOB_NAME: <job-name>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: context-collector
|
|
3
|
-
description: "
|
|
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.
|
|
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
|
```
|
|
@@ -512,7 +600,7 @@ When the orchestrator dispatches this skill as a sub-agent:
|
|
|
512
600
|
You are the context-collector agent. Your task is to research and build
|
|
513
601
|
a context document for the current job.
|
|
514
602
|
|
|
515
|
-
Load the skill from: skills/context-collector/SKILL.md
|
|
603
|
+
Load the skill from: skills/orchestration/context-collector/SKILL.md
|
|
516
604
|
|
|
517
605
|
ACTION: collect
|
|
518
606
|
JOB_NAME: <job-name>
|
|
@@ -534,7 +622,7 @@ For updates:
|
|
|
534
622
|
You are the context-collector agent. Your task is to update the existing
|
|
535
623
|
context document for this job.
|
|
536
624
|
|
|
537
|
-
Load the skill from: skills/context-collector/SKILL.md
|
|
625
|
+
Load the skill from: skills/orchestration/context-collector/SKILL.md
|
|
538
626
|
|
|
539
627
|
ACTION: update
|
|
540
628
|
JOB_NAME: <job-name>
|
|
@@ -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/context-collector/SKILL.md
|
|
603
|
+
Load the skill from: skills/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/context-collector/SKILL.md
|
|
625
|
+
Load the skill from: skills/orchestration/context-collector/SKILL.md
|
|
626
626
|
|
|
627
627
|
ACTION: update
|
|
628
628
|
JOB_NAME: <job-name>
|