validate
Skill173 starsChanged 12 days agoMITView on GitHub
Validate any ADLC phase output before advancing
63 other projects use a version of this.
Adopted by
Most recently taken up by
- joeldevz/skynex-pitheir own version, first seen Nov 8, 2026
- 99Luuk/Forge-or-Scraptheir own version, first seen Nov 8, 2026
- etr/groundworktheir own version, first seen Nov 8, 2026
- cykedev/vereinsheimtheir own version, first seen Nov 3, 2026
- vzhukovs/podman-desktop-kittheir own version, first seen Nov 1, 2026
- aya-taleb/biz-ready-skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use policy-init, create and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
open-coder-aiSkillpolicy-init
Create conformant Chock policy from request. args(request, target_path,
Also in 3 projects that use this
MicrosoftSkillcreate
Also in 4 projects that use this
HermeticOrmusSkillclose
End-of-session ritual. Captures session state, updates auto-memory, writes a session summary, then exits the session cleanly.
Also in 4 projects that use this
qtzx06Skilleval
Evaluate trained YOLO model accuracy with mAP metrics and per-class error analysis. Identifies failure cases for targeted improvement. Use after training.
Also in 4 projects that use this
csiddhant796-blipSkillboard
Read, write, and browse the AgentHub message board for agent coordination.
Also in 3 projects that use this
ArvorCoSkillspecify
Create feature specification from natural language description. Use when starting a new feature or creating a spec. Triggers on: create spec, specify feature, new feature spec.
Also in 3 projects that use this
Other versions63 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 63
- iPlug2/iPlug2★ 2.4ksame name
- sirius-db/sirius★ 1.1ksame name
- H-mmer/pentest-agents★ 815same name
- nudgebee/nudgebee★ 520same name
- microsoft/skills-for-copilot-studio★ 486same name
- boshu2/agentops★ 453same name
- scaccogatto/okf-skills★ 444same name
- whawkinsiv/solo-founder-skills★ 260same name
- whawkinsiv/claude-code-skills★ 258same name
- OffchainLabs/arbitrum-docs★ 252same name
53 more not listed
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.
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 7 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 53 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Run this block first, with your shell tool, and read its output before you continue.
- Very specific: line 31
Before proceeding, verify that .adlc/specs/ exists.
- Very specific: line 36
If given a REQ ID, locate all artifacts under .adlc/specs/REQ-xxx-*/
- Distinctive: line 37
If given a phase name, validate the most recently modified artifacts for that phase
- Very specific: line 39
Spec phase: Only requirement.md exists
- Distinctive: line 75
Read the REQ's rules at run time.
- Distinctive: line 161
Blocker: Must fix before advancing (e.g., missing acceptance criteria, circular deps, a vacuous verification run)
- Distinctive: line 162
Warning: Should fix but won't block (e.g., vague wording, missing edge case, unmapped BR/AC obligations, a detector rule with no benign …
- Distinctive: line 173
If all checks pass, confirm the artifact is ready to advance
- Distinctive: line 174
If blockers exist, list specific fixes needed
“Common” is measured: kept by at least 6 in 10 of the 53 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/validate — ADLC Phase Validation
You are validating ADLC artifacts to ensure quality before advancing to the next phase.
Ethos
!test -s .adlc/ETHOS.md && cat .adlc/ETHOS.md || echo No ethos found — run /init, or /adlc:init on the plugin install, to vendor .adlc/ETHOS.md
Context
Run this block first, with your shell tool, and read its output before you continue. Each read prints a notice instead of failing when its file is absent.
# adlc-context
echo '--- Active specs'
grep -rlx -e status:.draft -e status:.approved -e status:.in-progress --include requirement.md .adlc/specs 2>/dev/null || echo 'No active specs'Input
The target is the argument: whatever follows /validate in the invocation (on Claude Code it can also arrive as an ARGUMENTS: line appended to this text), a REQ, TASK or BUG id. With none, Step 1 works out what to validate.
Prerequisites
Before proceeding, verify that .adlc/specs/ exists. If it doesn't, stop and tell the user: "The .adlc/ structure hasn't been initialized. Run /init (/adlc:init on the plugin install) first."
Instructions
Step 1: Identify What to Validate
- If given a REQ ID, locate all artifacts under
.adlc/specs/REQ-xxx-*/ - If given a phase name, validate the most recently modified artifacts for that phase
- Determine the current phase based on what artifacts exist:
- Spec phase: Only
requirement.mdexists - Architecture phase:
architecture.mdexists alongside requirement - Task phase:
tasks/directory with task files exists - Implementation phase: Tasks have status
completeor code changes exist
- Spec phase: Only
Step 2: Validate Based on Phase
Validating a Requirement Spec
- Frontmatter has valid id, title, status, created, updated fields
- Description clearly explains what AND why
- Acceptance criteria are specific, testable, and use checkbox format
- No implementation details in the requirement (belongs in architecture)
- Assumptions are explicitly stated
- Out of scope items are defined to prevent scope creep
- External dependencies are identified
- No duplicate or overlapping requirements with existing specs
Validating Architecture
- Architecture follows existing patterns from
.adlc/context/architecture.md - New ADRs include rationale (not just decisions)
- Data model changes are compatible with existing Firestore schema
- API endpoint design follows REST conventions from
.adlc/context/conventions.md - Service layer follows the layered pattern (routes → services → repositories)
- No architectural conflicts with other in-progress requirements
Validating Tasks
- Every task has valid frontmatter (id, title, status, parent, created, updated, dependencies)
- Tasks form a valid DAG — no circular dependencies (including cross-repo dependencies)
- Every acceptance criterion from the requirement is covered by at least one task
- Each task lists specific files to create/modify
- Tasks are appropriately scoped (not too large, not too granular)
- Test requirements are included in task acceptance criteria
- Dependencies reference valid task IDs
Verification obligations (REQ-595) — three checks over the task set's
## Verification blocks (shape defined in .adlc/templates/task-template.md).
Read the REQ's rules at run time; never carry a copy of them here, because an
enumeration in a skill rots the moment a spec changes.
A task file with no ## Verification section is valid. Its absence is
reported by the coverage check below, not treated as a malformed task.
- Obligation coverage — every numbered BR and AC in the REQ is cited by
at least one task's
## Verificationblock. Report the unmapped ids by name. Severity: Warning (advisory, non-blocking) in epoch 1. - ACs are addressed by 1-based ordinal within the REQ's## Acceptance Criterialist — the requirement template does not print AC numbers, so position is the addressing. - BR and AC coverage are gated on the same footing. Acceptance criteria do not reduce to business rules — a REQ can carry ACs with no one-to-one BR — so reporting BRs alone would leave half the omission class open. - A REQ with zero numbered BRs passes trivially: emit a notice and move on. Do not invent rules to check. An unnumbered legacy prose spec is not gate-able, and fabricating ids to gate it would report failures against rules nobody wrote. - Benign-path coverage — every BR describing detection, refusal, or a halt
carries at least one obligation with
benign_path: yes(a case asserting the detector does not fire on the legitimate actor). A detector validated only against adversarial inputs ships broken and passes its own suite. Severity: Warning (advisory, non-blocking) in epoch 1. - Match the rule text on case-insensitive stems —detect,refus,halt,reject,block,flag— sorefusal/refusesandblocking/blockedboth hit. Do not use\bword anchors: BSDgrep -Eon macOS does not honor them, and the check would silently never fire on the dominant developer platform. - Vacuous verification run — a verification run that exits 0 having done no
work is a failure, not a pass. Severity: Blocker.
- Work is defined per kind, because the kinds are not commensurable: a
test-caseobligation reports executed cases; astructural-checkobligation reports files scanned by the lint invocation (many obligations legitimately share one invocation, so per-obligation case counts do not exist for that kind). - Read the count from whichever runner the obligation'sartifactnames, and treat a status that runner reserves for "collected/scanned nothing" as a zero count. Do not assume a runner here — which one a project uses is the project's choice, read from itsstack:, and a runner named in this skill would be the wrong one for the next project. - Most runners already signal an empty run, so this needs no new tooling. In this repo the two surfaces are concrete:tools/lint-skillsprintsscanned <N> SKILL.md file(s)to stderr and exits255when N is zero, and thetools/test runner exits5on zero collected. Consult the consumer project's own runner for the equivalent signal rather than porting these. - Either count reaching zero fails the gate. - This one blocks from epoch 1 while the two above do not, and the asymmetry is deliberate: the checks above are coverage judgments about obligation shape, whereas a zero-work run is evidence the verification did not run at all. A green suite that executed nothing proves nothing.
Why two advisory and one blocking: a coverage gate that blocked on day one would fail every in-flight REQ written before obligations existed. The advisory epoch lets the corpus accumulate obligations first; promotion to blocking is a separate follow-up REQ. The two advisory checks share a posture on purpose — both are obligation-shape judgments, and a mixed gate where one new shape check blocks and the other does not is incoherent to anyone reading the output.
Cross-repo tasks — only applies if .adlc/config.yml in the primary repo declares more than one entry under repos:. Skip these checks in single-repo mode.
- Every task has a
repo:field in its frontmatter - Every
repo:value matches an id declared in.adlc/config.ymlunderrepos: - No task modifies files outside its declared
repo:— all paths under "Files to Create/Modify" live in that repo - At least one task targets the primary repo (even if just spec/doc updates) OR a follow-up confirms the primary needs no code changes
- Cross-repo dependencies make sense (e.g., a frontend task depending on a backend task, not the reverse)
Validating Implementation
- All task acceptance criteria are met
- Tests pass (
npm testor equivalent) - Code follows conventions from
.adlc/context/conventions.md - No new lint warnings or errors
- All requirement acceptance criteria are satisfied
- ADLC artifacts are updated (task statuses set to
complete) Applicable lessons are acknowledged (REQ-647 BR-4, standalone only — no pipeline calls this phase). Run the same check
/proceedPhase 5 Step B runs. It readslessons.phase5from the REQ'spipeline-state.json(the primary repo path's copy) when one is recorded; otherwise pass--specand one--componentper changed path's most specific component, and it computes a Phase-5-style set from the diff:```sh ADLC_TOOLKIT_ROOT="${CLAUDE_PLUGIN_ROOT}"; [ -n "$ADLC_TOOLKIT_ROOT" ] || [ ! -d "$HOME/.claude/skills/partials" ] || ADLC_TOOLKIT_ROOT="$HOME/.claude/skills"; [ -n "$ADLC_TOOLKIT_ROOT" ] || ADLC_TOOLKIT_ROOT=$(cat "$HOME/.claude/adlc/plugin-root" 2>/dev/null); export ADLC_TOOLKIT_ROOT="${ADLC_TOOLKIT_ROOT:-$HOME/.claude/skills}" if [ -f .adlc/partials/lessons.sh ]; then . .adlc/partials/lessons.sh; else . "$ADLC_TOOLKIT_ROOT/partials/lessons.sh"; fi adlc_lessons ack-check --state "<pipeline-state.json>" --root . --worktree . --base "origin/<integration-branch>" --tasks-dir "<.adlc/specs/REQ-xxx-*/tasks>" --spec "<requirement.md>" --component "<component>" ``` Report each `Applicable lesson not acknowledged: …` line, and the `(+N more …)` line, as **Info** — never Warning or Blocker. A return of 2 (`lessons: unavailable — …`) is reported as one Info line and the validation continues.
Step 3: Report Results
- Display validation results as a checklist with pass/fail for each item
Categorize issues by severity:
- Blocker: Must fix before advancing (e.g., missing acceptance criteria, circular deps, a vacuous verification run)
- Warning: Should fix but won't block (e.g., vague wording, missing edge case, unmapped BR/AC obligations, a detector rule with no benign path)
- Info: Suggestions for improvement
Advisory obligation findings (REQ-595): report unmapped BR/AC ids and missing benign paths as Warning, and say plainly in the output that they do not block advancement in this epoch. Do not silently omit them because they are non-blocking — an unreported gap is exactly the omitted-requirement failure the check exists to surface, and an advisory finding nobody sees is worth nothing. Conversely, do not present them as Blockers: promotion to blocking is a named follow-up REQ, and pre-empting it here would fail every REQ written before obligations existed.
- If all checks pass, confirm the artifact is ready to advance
- If blockers exist, list specific fixes needed
Step 4: Recommend Next Action
- Spec validated → "Ready for
/architect" - Architecture validated → "Ready for implementation"
- Tasks validated → "Ready for implementation"
- Implementation validated → "Ready for
/review(/adlc:reviewon the plugin install)"
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.

