Agent skill

Wf Spec Validate

by changkun in changkun/wallfacer

Structural lint over the spec tree — required frontmatter fields, valid status and effort values, track location, DAG acyclicity, dispatch consistency, orphans, status consistency.

MITAuto-check passedDevelopment

Install Wf Spec Validate

skills CLI
$ npx skills add changkun/wallfacer --skill wf-spec-validate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install changkun/wallfacer wf-spec-validate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/changkun/wallfacer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/wf-spec-validate .claude/skills/wf-spec-validate && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
wf-spec-validate
GitHub stars
112
Token cost
~2.2k tokens
SKILL.md length
1,072 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Structural lint over the spec tree — required frontmatter fields, valid status and effort values, track location, DAG acyclicity, dispatch consistency, orphans, status consistency.

  • Works in 5 steps: Parse arguments → Discover all specs → Per-spec validation → …
  • Check the tree is well-formed
  • SKILL.md covers Step 0: Parse arguments, Step 1: Discover all specs, Step 2: Per-spec validation and Step 3: Cross-spec validation…, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Wf Spec Validate is an agent skill from changkun/wallfacer. Structural lint over the spec tree — required frontmatter fields, valid status and effort values, track location, DAG acyclicity, dispatch consistency, orphans, status consistency. Read-only; reports problems and fixes nothing. Use to check the tree is well-formed; use report for what the specs say about progress.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. The repository describes itself as: Chat, specs, tasks, and code. An autonomous engineering platform. Full autonomy when you trust it. Full control when you don't. The licence is MIT.

When your agent uses it

  • Check the tree is well-formed
  • Use report for what the specs say about progress

Example prompts

  • “/wf-spec-validate”

Requirements

  • Pre-approved tools (allowed-tools): Read, Grep, Glob, Bash(ls *)

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Parse arguments
  2. Discover all specs
  3. Per-spec validation
  4. Cross-spec validation (tree-wide)
  5. Generate report

What it can do on your machine

Read from SKILL.md and the folder at commit 5b3cea1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Grep
    • Glob
    • Bash(ls *)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wf Spec Validate loads about 2.2k tokens when it runs. Until then it costs about 83 tokens; SKILL.md has 1,072 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~83
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from changkun/wallfacer at commit 5b3cea1, republished under its MIT licence (© changkun). 1,072 words, ~2,158 tokens.

Download SKILL.mdSave it as .claude/skills/wf-spec-validate/SKILL.md (or your agent's skills folder).
name
wf-spec-validate
description
Structural lint over the spec tree — required frontmatter fields, valid status and effort values, track location, DAG acyclicity, dispatch consistency, orphans, status consistency. Read-only; reports problems and fixes nothing. Use to check the tree is well-formed; use report for what the specs say about progress.
allowed-tools
Read, Grep, Glob, Bash(ls *)
argument-hint
spec-file.md

Validate Specs

Run structural validation on spec documents against the repo's document model — a document-model spec under specs/, an internals doc describing how specs are parsed, or, failing both, the conventions below. If a specific spec file is given as $ARGUMENTS, validate only that spec (and run cross-spec checks it participates in). Otherwise, validate the entire spec tree.

Step 0: Parse arguments

If an argument is provided, treat it as a single spec file to validate. Otherwise, validate all specs under specs/.

Step 1: Discover all specs

  1. Glob for all spec files recursively: specs/**/*.md (excluding README.md and any non-spec markdown files like changelogs).
  2. For each spec file, parse YAML frontmatter between --- fences. Extract: title, status, depends_on, affects, effort, created, updated, author, dispatched_task_id.
  3. Determine leaf vs non-leaf: a spec is non-leaf if a subdirectory with the same name (without .md) exists and contains at least one child spec.
  4. Build the full spec tree (parent-child from filesystem) and the dependency DAG (from depends_on edges).

Step 2: Per-spec validation

For each spec, check these rules. Classify each finding as error or warning per the severity column.

Required fields (error)

title, status, effort, created, updated, author must all be present in the frontmatter. Report each missing field. (track may be a frontmatter field or derived from the path, depending on the repo's layout; see Valid track.)

Valid status (error)

status must be one of: vague, drafted, validated, testing, complete, stale, archived — the seven lifecycle states. testing is the transient drift-verdict state between validated and complete; a spec in testing is valid (not an error), though a long-lived testing carrying a testing_pending reason is worth a warning. The server may also set the optional fields implementation_commit (base..tip, present during testing) and testing_pending (a reason string when the drift tester failed); both are valid.

Valid track (error)

Grouping and ordering are independent axes, and they compose — specs/local/003-live-serve.md is grouped by directory and numbered. Check each separately; never infer one from the other, and never decide a single layout for the whole repo from a majority vote.

Grouping. Every spec must have a track from exactly one source:

  • A directory under specs/ supplies it — the segment immediately after specs/. A track: key that merely restates the directory is a removable no-op.
  • A spec sitting directly under specs/ must carry a track: frontmatter field. A spec with neither is an error.

Ordering. An NNN- filename prefix is an optional, per-directory reading order. Judge it within each directory, never across the tree:

  • A directory whose specs are numbered should number all of them; flag an unnumbered straggler.
  • Flag duplicate numbers inside one directory. The same number in two different directories is fine — they are separate number spaces.
  • A directory with no numbering at all is not an error. Do not ask for numbers that were never adopted.
  • An archived spec keeps the number it had (specs/.archive/…/042-foo.md), so depends_on paths pointing at it still resolve.

Numbers are never the dependency order. That is depends_on, checked below.

Valid effort (error)

effort must be one of: small, medium, large, xlarge.

Date format (error)

created and updated must be valid ISO dates (YYYY-MM-DD). updated must be greater than or equal to created.

Dispatch consistency (error)

Non-leaf specs must have dispatched_task_id: null (or absent). Leaf specs may have null or a valid UUID.

depends_on targets exist (error)

Every path in depends_on must resolve to an existing spec file relative to the repository root.

No self-dependency (error)

A spec must not appear in its own depends_on list.

affects paths exist (warning)

Every path in affects should resolve to an existing file or directory in the codebase. Only a warning because code may not exist yet for vague/drafted specs. Suppressed for archived specs — deleted paths are not actionable.

Body not empty (warning)

Specs with status beyond vague should have meaningful content below the frontmatter (more than just a title heading). Suppressed for archived specs — a stub with only frontmatter is valid.

Show full SKILL.md (413 more words)Show less

Step 3: Cross-spec validation (tree-wide)

Run these checks across the full spec tree.

DAG is acyclic (error)

Perform a topological sort on the depends_on graph. If a cycle is detected, report the full cycle path (e.g., A -> B -> C -> A).

No orphan directories (warning)

A <name>/ subdirectory under a spec track should have a corresponding <name>.md parent spec file in the same directory.

No orphan specs (warning)

A <name>.md file that has a <name>/ subdirectory should have at least one child spec inside that directory.

Status consistency (warning)

A complete non-leaf spec should not have incomplete leaves in its subtree. Check recursively: if any leaf in the subtree has a status other than complete, warn. Skipped when the non-leaf is archived — the subtree is considered below glass regardless of leaf states.

Stale propagation (warning)

If a spec is stale, check all specs that list it in their depends_on. Those that are still validated should be flagged for review — their assumptions about the stale spec may no longer hold. Does not fire for archived dependencies — a validated spec depending on an archived spec receives a dependency-is-archived advisory note instead (see below).

Track location (warning)

Where a spec sits in a track directory, warn if it also carries a track: key — the directory already supplies it and the loader ignores the field. Where a spec sits directly under specs/, there is no directory to cross-check, so this warning does not apply; a missing track: there is the error above.

dependency-is-archived (warning)

A live spec whose depends_on includes an archived spec. Advisory only — recommend removing the edge or documenting why it still matters. Does not count as a stale-propagation warning.

Unique dispatches (error)

No two specs may share the same non-null dispatched_task_id value. Collect all dispatched_task_id values and report duplicates.

Step 4: Generate report

Present findings grouped by severity, then by spec:

## Spec Validation Report

Specs scanned: N
Errors: N
Warnings: N

### Errors

#### specs/shared/sandbox-backends.md
- [error] Missing required field: author
- [error] depends_on target does not exist: specs/shared/nonexistent.md

#### specs/local/foo.md
- [error] Invalid status: "wip" (must be vague|drafted|validated|testing|complete|stale|archived)

### Cross-Spec Errors
- [error] Cycle detected: A.md -> B.md -> C.md -> A.md
- [error] Duplicate dispatched_task_id "abc-123": specs/a.md, specs/b.md

### Warnings

#### specs/cloud/bar.md
- [warning] affects path does not exist: internal/cloud/bar.go
- [warning] Body is empty for a "drafted" spec

### Cross-Spec Warnings
- [warning] Orphan directory: specs/shared/old-feature/ has no parent spec
- [warning] Stale propagation: specs/shared/api.md is stale, but
  specs/local/client.md (validated) depends on it

### Verdict: PASS / N errors, M warnings

If there are zero errors, the verdict is PASS. If there are errors, list the count. Warnings alone do not cause a failure.

Notes

  • This skill is read-only. It does not modify any files.
  • When validating a single spec ($ARGUMENTS provided), still run cross-spec checks that involve that spec (its depends_on targets, specs that depend on it, cycle detection through it).
  • Specs without YAML frontmatter are reported as having all required fields missing — they may be legacy specs that predate the document model.
  • When the repo implements its own spec validator, these rules mirror it. Report a disagreement rather than silently preferring one side.

© changkun, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/wf-spec-validate of changkun/wallfacer.

Open the folder on GitHubat commit 5b3cea1

Compare with similar skills

Wf Spec Validate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Wf Spec Validate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wf Spec Validate this skillchangkun/wallfacer112—~2.2kAutomated safety check: PassMIT
Vercel Composition Patternssupabase/supabase111k59 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 59 repos~726 tokens
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

More from changkun/wallfacer

All 14 skills in this repo
  • Wf Spec Breakdown

    changkun/wallfacer

    Split one spec into children — sub-design specs when questions are still open, or implementation-ready leaves when the plan is clear.

    112 GitHub stars~2.6k tokensUpdated 4 days ago
    Auto-check passed
  • Wf Spec Create

    changkun/wallfacer

    Write a new spec from scratch when none exists for the idea yet.

    112 GitHub stars~2.3k tokensUpdated 4 days ago
    Auto-check passed
  • Wf Spec Dispatch

    changkun/wallfacer

    Mark a validated spec ready to build and resolve its dependency wiring; where a task board with a transition API is present, create the linked task atomically.

    112 GitHub stars~1.6k tokensUpdated 4 days ago
    Auto-check passed
  • Wf Spec Drive

    changkun/wallfacer

    Run the whole lifecycle for one spec, calling the other skills in order and advancing one legal transition at a time until it reaches a target state (default complete), stopping to ask at…

    112 GitHub stars~2.3k tokensUpdated 4 days ago
    Auto-check passed
  • Wf Spec Report

    changkun/wallfacer

    Survey the whole spec tree: what is complete, in progress, blocked, and actionable next.

    112 GitHub stars~1.6k tokensUpdated 4 days ago
    Auto-check passed
  • Wf Spec Review Impl

    changkun/wallfacer

    Read-only verdict on whether an implementation meets its spec: each acceptance criterion classified, unintended changes flagged, test coverage checked.

    112 GitHub stars~1.1k tokensUpdated 4 days ago
    Auto-check passed

Categories

Questions about Wf Spec Validate

What does Wf Spec Validate do?

Structural lint over the spec tree — required frontmatter fields, valid status and effort values, track location, DAG acyclicity, dispatch consistency, orphans, status consistency. Wf Spec Validate is an agent skill from changkun/wallfacer. Structural lint over the spec tree — required frontmatter fields, valid status and effort values, track location, DAG acyclicity, dispatch consistency, orphans, status consistency.

When should I use Wf Spec Validate?

Wf Spec Validate fits situations like: check the tree is well-formed; use report for what the specs say about progress.

How do I install Wf Spec Validate in Claude Code?

Run `npx skills add changkun/wallfacer --skill wf-spec-validate -a claude-code`. Or copy the skill folder (.claude/skills/wf-spec-validate in changkun/wallfacer) into .claude/skills/wf-spec-validate in your project. Claude Code loads it when a task matches its description.

How do I install Wf Spec Validate in Codex?

Run `npx skills add changkun/wallfacer --skill wf-spec-validate -a codex`. Or copy the skill folder (.claude/skills/wf-spec-validate in changkun/wallfacer) into .agents/skills/wf-spec-validate in your project. Codex loads it when a task matches its description.

Can I use Wf Spec Validate in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add changkun/wallfacer --skill wf-spec-validate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wf-spec-validate, .gemini/skills/wf-spec-validate, .github/skills/wf-spec-validate and .opencode/skills/wf-spec-validate in your project.

What does Wf Spec Validate need to run?

SKILL.md names no scripts, command-line tools or credentials: Wf Spec Validate is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Grep, Glob, Bash(ls *).

Does Wf Spec Validate access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Wf Spec Validate safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Wf Spec Validate use?

Wf Spec Validate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wf Spec Validate use?

About 2.2k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Wf Spec Validate?

Skills that share tags, products or a category with Wf Spec Validate: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 296k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wf Spec Validate?

changkun (a GitHub user) maintains it in changkun/wallfacer, which has 112 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 4, 2026.

Source: changkun/wallfacer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.