Best for
- Sprint-executor completes and sends handoff message
- User says "evaluate sprint", "review implementation", "assess quality"
- Coordinator triggers via triggeroncomplete chain
sunholo-data/ailang/.claude/skills/sprint-evaluator/SKILL.md
Evaluate sprint implementations against design docs and acceptance criteria. Runs after sprint-executor to assess quality with concrete scoring rubric (100 points, 70 to pass). Provides actionable feedback loop on failure. Use when user says "evaluate sprint", "review implementation", "assess sprint quality", or automatically via coordinator after sprint execution.
Decision brief
Independently evaluate a completed sprint implementation against its design doc, acceptance criteria, and quality standards. Based on the generator-evaluator architecture — separating the agent doing the work from the agent judging it.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/sunholo-data/ailang --skill ".claude/skills/sprint-evaluator"Inspect the Agent Skill "sprint-evaluator" from https://github.com/sunholo-data/ailang/blob/9944e264e3b9043881978731dccd258f561082a3/.claude/skills/sprint-evaluator/SKILL.md at commit 9944e264e3b9043881978731dccd258f561082a3. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Review the “Quick Start” section in the pinned source before continuing.
Review the “4. Score implementation against concrete rubric (100 points)” section in the pinned source before continuing.
1. Read handoff message — Extract sprintid, branch, sprint JSON path, design doc path 2. Load sprint JSON from .ailang/state/sprints/sprint.json 3. Read design doc — The original spec (the "contract") 4. Read sprint plan — The implementation roadmap with milestones 5. Review git…
Run automated quality checks using the evaluation script:
For each feature in sprint JSON: 1. Read acceptancecriteria array 2. Verify passes: true for each feature 3. For file-related criteria, verify files exist 4. For test-related criteria, verify test functions exist 5. Score: (criteriamet / totalcriteria) 30 points
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 93/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 33 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Independently evaluate a completed sprint implementation against its design doc, acceptance criteria, and quality standards. Based on the generator-evaluator architecture — separating the agent doing the work from the agent judging it.
Use the data above first. Only re-run these commands manually if the injected context is empty or you need to refresh after making changes.
# Triggered automatically after sprint-executor, or manually:
# User says: "Evaluate the sprint M-CACHE"
# This skill will:
# 1. Load design doc, sprint plan, and sprint JSON
# 2. Run automated quality checks (tests, lint, coverage)
# 3. Verify each acceptance criterion from sprint JSON
# 4. Score implementation against concrete rubric (100 points)
# 5. PASS (trigger merge) or FAIL (send feedback to sprint-executor)
Invoke this skill when:
trigger_on_complete chainWhen invoked by the AILANG Coordinator, output these markers at the end of your response:
EVALUATION_RESULT: pass|fail
EVALUATION_SCORE: 85/100
EVALUATION_ROUND: 1
EVALUATION_REPORT_PATH: .ailang/state/evaluations/eval_<sprint-id>_round_<n>.json
FEEDBACK_SUMMARY: <one-line summary if failed>
Agent config:
- id: sprint-evaluator
label: "Sprint Evaluator"
inbox: sprint-evaluator
capabilities: [review, test, docs]
trigger_on_complete: [] # End of chain on pass
session_continuity: false # Stateless per round
approval:
needs_label: needs-evaluation-approval
approved_label: evaluation-approved
.ailang/state/sprints/sprint_<id>.jsongit diff dev...<branch> to see all changesRun automated quality checks using the evaluation script:
.claude/skills/sprint-evaluator/scripts/evaluate_sprint.sh <sprint-id> [branch]
This runs:
make test — All tests must pass (HARD FAIL if not)make lint — Linting must be cleanmake check-file-sizes — No files exceeding 800 linesmake test-coverage-badge — Coverage metricsWhen the sprint touches examples/ or examples/manifest.json, ALSO run make verify-examples (HARD FAIL if red). make test and make check-file-sizes do NOT cover the manifest-drift gate — a sprint that adds an example but omits/leaves-stale its manifest modules field passes local go test yet fails the CI test job's verify-examples step (validate_manifest --ci). Recurrent class ([[project_verify_examples_red_is_usually_manifest_drift]]); 2nd instance of a manifest defect reaching CI through a green evaluator verdict (iter-101, PR #479). If drift is found, fix it surgically (populate the modules field for the new entry — do NOT run backfill_manifest_modules.go, which reserializes the whole file and churns unrelated unicode-escaped entries) or fail the sprint back to the executor.
.claude/skills/sprint-evaluator/scripts/check_acceptance_criteria.sh <sprint-id>
For each feature in sprint JSON:
acceptance_criteria arraypasses: true for each feature(criteria_met / total_criteria) * 30 pointsHARD FAIL if fewer than 50% of acceptance criteria are met.
If a sprint JSON exists (.ailang/state/sprints/sprint_<id>.json), verify:
passes: true (or false with explanation)completed timestampsnotes with summariesstatus is "completed"If a sprint plan markdown exists, verify:
Scoring: Deduct from Code Quality (Phase 4) — up to -5 for incomplete sprint artifacts. Sprint artifacts are optional (pre-sprint-system implementations won't have them), so missing artifacts are not penalized — only incomplete/inconsistent ones are.
Read the design doc and compare against the actual implementation:
Score 0-10 based on fidelity to design intent.
Check:
examples/runnable/<feature>.ail for new featuresApply scoring rubric (see resources/scoring_rubric.md):
| Category | Points | Hard Fail? |
|---|---|---|
| Tests Pass | 20 | Yes |
| Lint Clean | 10 | No |
| Acceptance Criteria | 30 | Yes if <50% |
| Code Quality | 15 | No |
| Documentation | 15 | No |
| Design Fidelity | 10 | No |
| Regression Surface Coverage (conditional) | +10 | Yes if triggered with no analysis |
| Performance Verification (conditional) | +10 | Yes if perf sprint with no profile |
| Total | 100 (+20 conditional) | Pass: 70+ |
Conditional categories:
internal/parser/, internal/lexer/, internal/ast/, internal/types/, internal/elaborate/, internal/iface/, internal/codegen/, internal/eval/, internal/vm/, internal/effects/, or cmd/ailang/exec.go. Hard fail if triggered without a Conflict Surface analysis in the design doc and fixture tests for the named "Programs that MUST still work". Catches M-TAINT-TYPES-style silent regressions.Generate report:
.claude/skills/sprint-evaluator/scripts/generate_report.sh <sprint-id> <score> <result> <round>
Report saved to .ailang/state/evaluations/eval_<sprint-id>_round_<n>.json
Determine execution mode before acting:
On PASS (score >= 70, no hard fails):
design_docs/planned/ to design_docs/implemented/<version>/ —
and its companion sprint plans in the same move (Mark 2026-07-29): any
<doc-stem>-sprint-plan.md / <doc-stem>-m*-sprint-plan.md siblings travel WITH the
design doc. A sprint plan left in planned/ after its parent lands is folder drift —
the 2026-07-29 attended triage archived two such strays; don't create more. (Multi-phase
docs that stay in planned/ until a later milestone — e.g. an M4b — keep their plans
beside them until the doc itself moves.)EVALUATION_RESULT: passOn FAIL (score < 70 or hard fail, round < 3):
Local mode — invoke sprint-executor directly:
sprint-executor skill with the evaluation report path and specific issuesCloud/coordinator mode — send inbox message:
ailang messages send sprint-executor '{
"type": "evaluation_feedback",
"correlation_id": "eval_<sprint-id>_round_<n>",
"sprint_id": "<sprint-id>",
"evaluation_round": <n>,
"score": <score>,
"issues": [
{"file": "path/to/file.go", "issue": "description", "suggestion": "how to fix"},
...
],
"max_rounds": 3
}' --title "Evaluation Failed (Round <n>/<max>)" --from "sprint-evaluator"
EVALUATION_RESULT: failOn FAIL (round >= 3):
needs-human-review label via coordinatorscripts/evaluate_sprint.sh <sprint_id> [branch]Orchestrate automated quality checks. Outputs structured JSON with test/lint/coverage results.
scripts/check_acceptance_criteria.sh <sprint_id>Verify each acceptance criterion from sprint JSON. Outputs per-criterion pass/fail as JSON.
scripts/generate_report.sh <sprint_id> <score> <result> <round>Create evaluation report JSON at .ailang/state/evaluations/.
resources/scoring_rubric.md — Point allocations and thresholdsresources/evaluation_report_schema.md — JSON schema for evaluation reportsresources/feedback_templates.md — Actionable feedback examplesThe evaluator receives an implementation_complete message:
{
"type": "implementation_complete",
"correlation_id": "eval_M-CACHE_20260326",
"sprint_id": "M-CACHE",
"branch_name": "coordinator/task-abc123",
"sprint_json_path": ".ailang/state/sprints/sprint_M-CACHE.json",
"design_doc_path": "design_docs/planned/v0_7/M-CACHE.md",
"files_created": ["internal/cache/store.go"],
"files_modified": ["internal/server/handler.go"],
"evaluation_round": 1
}
The evaluator operates in two modes depending on where it's running:
When running in a user's local Claude Code session:
sprint-executor skill directly to fix issues, then re-evaluateimplemented/, update status — no inbox neededWhen invoked by the coordinator daemon or via agent inbox:
sprint-executor inboxEVALUATION_RESULT: pass markers for coordinator to act onimplementation_complete messageLocal mode:
sprint-evaluator (Round 1)
↓
PASS? → move design doc to implemented/, done
FAIL? → invoke sprint-executor skill with issues
↓
sprint-evaluator (Round 2, same session)
↓
PASS? → move design doc, done
FAIL? → invoke sprint-executor (Round 3)
↓
PASS? → move design doc, done
FAIL? → escalate to user for manual review
Cloud/coordinator mode:
sprint-executor completes
↓
sprint-evaluator (Round 1)
↓
PASS? → merge approval
FAIL? → feedback message to sprint-executor
↓
sprint-executor fixes issues
↓
sprint-evaluator (Round 2)
↓
PASS? → merge approval
FAIL? → feedback message (Round 3)
↓
PASS? → merge approval
FAIL? → escalate to human (needs-human-review)
.ailang/state/evaluations/eval_<id>_round_<n>.jsonFrequently asked questions
Independently evaluate a completed sprint implementation against its design doc, acceptance criteria, and quality standards. Based on the generator-evaluator architecture — separating the agent doing the work from the agent judging it.
The source record exposes this install command: npx skills add https://github.com/sunholo-data/ailang --skill ".claude/skills/sprint-evaluator". Inspect the command and pinned source before running it.
Alternatives
NintendaDev/unikit-ai
Generate and maintain the project's TECHNICAL documentation from its codebase — scans the project structure, tech stack, and module boundaries, then writes a lean README landing page plus detailed topic pages (architecture, modules, setup, build, APIs), only the docs that are relevant. Use whenever the user wants to create, update, or validate documentation of the CODE or the project itself, e.g. "generate documentation", "create docs", "write the README", "update the project docs", "document th
eugenelim/agent-ready-repo
Use when implementing or resuming a non-trivial repository change: a feature, behavior-changing fix, refactor, migration, framework or dependency upgrade, schema or API change, performance work, infrastructure or build-system change, reversion, or an existing build spec under `docs/specs/`. Also use for bare continuation commands ('resume', 'continue', 'keep going', 'pick up where I left off', 'let's get going') when conversation or workspace context identifies active build work. Do not use for
objectstack-ai/objectstack
Author ObjectStack UI metadata — Views (list/form/kanban/calendar/gantt), Apps (navigation), Pages (structured plus the HTML and React source-authoring tiers, ADR-0080/0081), Dashboards, Reports, Charts, Actions, and package Docs (`src/docs/*.md`). Use when the user is adding `*.view.ts` / `*.app.ts` / `*.dashboard.ts` / `*.action.ts` / `src/docs/*.md` files or designing a Studio-rendered UI surface, including dataset-bound dashboard/report widgets. Do not use for: data schema (see objectstack-d
mgiovani/cc-arsenal
Multi-agent review team: architecture, security, performance, testing, style, docs/UX, plus an adversary that cross-examines the other 6, for security-sensitive, architectural, or large PRs (15+ files) where a single-agent pass risks missing cross-cutting issues. Use for auth/payments/PII changes, schema/pattern changes, compliance sign-off, or when asked to 'get the review team on this' / 'multi-agent review' / 'thorough review before merge'. For a standard PR or a quick pre-merge check, use /r