speckit-evaluator-run
Skill3 starsChanged 27 days agoMITView on GitHub
Run an evaluator against one or more artifacts and produce a versioned
1 other project uses a version of this.
Adopted by
Most recently taken up by
- electrohire/spec-kit-aeeword for word, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 1
- electrohire/spec-kit-aee★ 4100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository24 other files it gives its agents.
- speckit-aee-assessSkill
- speckit-aee-challengeSkill
- speckit-aee-draft-claimsSkill
- speckit-aee-gapsSkill
- speckit-aee-gateSkill
- speckit-aee-report-savingsSkill
- speckit-aee-reviewSkill
- speckit-aee-route-evidenceSkill
- speckit-aee-traceSkill
- speckit-aee-verifySkill
- speckit-analyzeSkill
- speckit-checklistSkill
- speckit-clarifySkill
- speckit-constitutionSkill
- speckit-convergeSkill
- speckit-evaluator-composeSkill
- speckit-evaluator-reportSkill
- speckit-evaluator-routeSkill
- speckit-implementSkill
- speckit-planSkill
- speckit-specifySkill
- speckit-tasksSkill
- speckit-taskstoissuesSkill
- evaluator-contractSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 41
Read the schema from .specify/extensions/evaluator/schemas/evaluator-result.schema.json.
- Very specific: line 45
Look for evaluator configurations in .specify/extensions/evaluator/.
- Very specific: line 47
Check .specify/extensions/evaluator/evaluators.yml for a list of registered evaluator IDs.
- Distinctive: line 55
Deterministic evaluators first: run deterministic checks (schema validation, linting, static analysis) before model-backed evaluators.
- Very specific: line 62
Write the result to .specify/extensions/evaluator/results/<evaluator-id>-<phase>-<timestamp>.json.
- Distinctive: line 85
Every result MUST conform to this structure (see the schema for full details):
- Very specific: line 161
Never modify source files — write only under .specify/extensions/evaluator/results/.
- Very specific: line 162
Never treat a model-generated assertion as observed evidence — always classify it as asserted.
- Distinctive: line 163
Never collapse contradictory findings — preserve both and let composition resolve.
- Very specific: line 164
Never fabricate evidence references — if no evidence exists, mark it unsupported.
- Distinctive: line 165
Never overwrite an existing result file without confirmation (interactive) or appending a disambiguating suffix (automated).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Evaluator Run Skill
Evaluator Run
Execute an evaluator against specified artifacts and produce a result conforming to the evaluator result contract defined in .specify/extensions/evaluator/schemas/evaluator-result.schema.json.
This command is the execution entry point for any evaluator — deterministic linters, model-backed reviewers, security scanners, policy checkers, provenance verifiers, or custom governance checks. The evaluator receives artifact references and returns a versioned, machine-readable result that downstream composition and reporting can consume.
User Input
$ARGUMENTSThe user input specifies what to evaluate and which evaluator(s) to run. Accept:
- Phase context — the lifecycle phase this evaluation runs under (e.g.,
phase=after_plan). If not provided, infer from the hook event or ask. - Artifact references — one or more artifact paths to evaluate (e.g.,
spec.md,plan.md,tasks.md). If not provided, discover artifacts for the current phase from.specify/and the feature directory. - Evaluator selection — which evaluator(s) to run. If not provided, discover registered evaluators from
.specify/extensions/evaluator/config.
Prerequisites
- Path safety (do this before any read or write): resolve the project root and the real, symlink-resolved path of
.specify/extensions/evaluator/and every artifact you touch. Refuse and report — never follow — if any path component is a symlink, or if the resolved path does not remain inside the project root. - The evaluator result schema MUST exist at
.specify/extensions/evaluator/schemas/evaluator-result.schema.json. If missing, report the path and instruct the user to reinstall the evaluator extension. - Each artifact to evaluate MUST exist and be readable. Report missing artifacts; do not fabricate evaluations for absent files.
Execution
1. Load the Evaluator Contract
Read the schema from .specify/extensions/evaluator/schemas/evaluator-result.schema.json. Every result produced MUST validate against this schema.
2. Discover Evaluators
Look for evaluator configurations in .specify/extensions/evaluator/. An evaluator is any extension that declares it produces evaluator results. Discovery order:
- Check
.specify/extensions/evaluator/evaluators.ymlfor a list of registered evaluator IDs. - For each registered evaluator, locate its configuration.
- If no evaluators are registered, produce a single result with
outcome: "block"and amissing_evidencefinding stating that no evaluators are configured. Fail closed (Spec 003 FR-6.1): an empty registry is a configuration defect, not a pass — absence of evaluation must never read downstream as a green gate.
3. Run Each Evaluator
For each discovered evaluator, in priority order (lower priority value first, default 10):
- Deterministic evaluators first: run deterministic checks (schema validation, linting, static analysis) before model-backed evaluators.
- Invoke the evaluator with the artifact references.
- Collect the result — it MUST be valid JSON conforming to the evaluator result schema.
- Validate the result against the schema. If validation fails, wrap the raw output in an error finding and set
outcome: "block".
4. Produce the Result
Write the result to .specify/extensions/evaluator/results/<evaluator-id>-<phase>-<timestamp>.json.
Each result file MUST contain exactly one evaluator result object. The filename pattern is:
<evaluator-id>-<phase>-<ISO8601-basic-timestamp>.jsonExample: epistemic-after_plan-20260715T143022Z.json
5. Report
Output a summary to the user:
- The evaluator ID and version
- The phase evaluated
- The outcome (
pass,warn,iterate,clarify,gather_evidence,block) - The number of findings by severity
- The recommended next action
- The path to the result file
Evaluator Result Contract
Every result MUST conform to this structure (see the schema for full details):
{
"schema_version": "1.0",
"evaluator": {
"id": "<unique-id>",
"version": "<semver>"
},
"phase": "<lifecycle-phase>",
"outcome": "pass|warn|iterate|clarify|gather_evidence|block",
"summary": "<one-paragraph summary>",
"findings": [
{
"id": "<finding-id>",
"severity": "critical|high|medium|low|info",
"kind": "<finding-kind>",
"subject": "<artifact-reference>",
"evidence_refs": [
{
"ref": "<reference>",
"kind": "observed|inferred|asserted|contradicted|unsupported"
}
],
"provenance_refs": ["<artifact>#<element>"],
"uncertainty": "none|low|medium|high|insufficient_evidence",
"recommended_action": "none|gather_evidence|clarify|revise|iterate|escalate|accept_risk|block"
}
],
"next_action": {
"kind": "pass|warn|iterate|clarify|gather_evidence|block",
"target_phase": "<phase-to-iterate-to>",
"message": "<human-readable>"
},
"metadata": {
"timestamp": "<ISO-8601>",
"duration_ms": 0,
"artifacts_evaluated": ["<path>"],
"deterministic": true
},
"state": {}
}Outcome Semantics
| Outcome | Meaning | Workflow Effect |
pass | All checks passed; no issues found | Continue to next phase |
warn | Issues found but not blocking | Continue with warnings recorded |
iterate | Issues require revisiting a prior phase | Return to target_phase |
clarify | Ambiguities need human resolution | Pause for human input |
gather_evidence | Insufficient evidence to decide | Pause for evidence collection |
block | Hard blocker; cannot proceed | Stop the workflow |
Evidence Kinds
| Kind | Meaning |
observed | Directly observed from an artifact or command output |
inferred | Logically derived from observed evidence |
asserted | Claimed by a model or agent without direct observation |
contradicted | Conflicts with other observed evidence |
unsupported | No evidence found to support or refute |
Key Design Rules
- Generated assertions MUST remain distinguishable from observed evidence. A model saying "the test passed" is
asserted; a command exit code 0 with captured stdout isobserved. - Model self-attestation MUST NOT satisfy an evidence gate by itself. An evaluator cannot certify its own output as evidence.
- Contradictions MUST be preserved, not collapsed into a single synthesized answer. Conflicting findings from different evaluators are both recorded.
- Insufficient evidence MUST be represented explicitly (
uncertainty: "insufficient_evidence") rather than inventing certainty. - Deterministic checks SHOULD run before probabilistic review where appropriate.
- Higher-risk work MAY require evaluator independence — the same model/family SHOULD NOT both generate and certify the result.
Guardrails
- Never modify source files — write only under
.specify/extensions/evaluator/results/. - Never treat a model-generated assertion as observed evidence — always classify it as
asserted. - Never collapse contradictory findings — preserve both and let composition resolve.
- Never fabricate evidence references — if no evidence exists, mark it
unsupported. - Never overwrite an existing result file without confirmation (interactive) or appending a disambiguating suffix (automated).
- The
stateobject is evaluator-defined opaque data for pause/resume — do not interpret or modify another evaluator's state.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

