Skip to main content
skill CX Codex

impl-validator — Claude Code skill: validate an implementation

Independently checks whether finished work matches its stated goal and returns PASS, WARN or FAIL with a list of issues.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Ar9av/obsidian-wiki --skill impl-validator -a claude-code
Open on GitHub

What impl-validator does

The skill runs in two modes. Another skill or agent spawns it programmatically and hands over a check: block with a goal, artifacts and a list of checks. Or you type /impl-validator yourself and describe what was just done. In user mode the goal and artifacts come from context, and one clarifying question is asked if the goal is ambiguous — critical checks never run on a guess.

The protocol moves in steps. First the goal is restated in one sentence; if that fails, it is already a WARN. Then every artifact gets an existence check, a completeness check and a correctness check. The reviewer looks for leftover placeholders such as <TODO> and {{variable}}, copy-paste slips with the wrong path or tool name, logical contradictions, and missing required fields. Project conventions are checked separately: a SKILL.md needs YAML frontmatter with name and description, shell scripts need a shebang and set -e, plist files need a Label matching the filename.

The output is a table of checks plus an overall verdict: any FAIL makes it FAIL, WARNs alone make it WARN, all PASS makes it PASS. In subagent mode the report goes back to the calling skill, which decides whether to fix things before showing output to the user. In user mode the report is presented right away, and on FAIL the skill offers to fix what it found. Code style, performance and whether the goal was worth pursuing are out of scope.

What it helps with

  • catch a leftover <TODO> placeholder before the user sees it
  • compare a generated file against its stated goal and get a verdict
  • confirm a SKILL.md has frontmatter with name and description
  • spot copy-paste slips with the wrong path or tool name
  • get a second opinion on someone else's implementation before shipping

Example prompts for the agent

  • /impl-validator check that the skill in .claude/skills matches its goal
  • /impl-validator I just rewrote a shell script, take a look
  • /impl-validator goal was adding a wiki page, artifact is the new file

How to install impl-validator

1Skills CLI (Vercel)

npx skills add Ar9av/obsidian-wiki --skill impl-validator -a claude-code

2Manually: put the files in place

~/.claude/skills/impl-validator/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/impl-validator/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about impl-validator

How do I install impl-validator in Claude?

Run npx skills add Ar9av/obsidian-wiki --skill impl-validator -a claude-code. The skill lands in ~/.claude/skills/impl-validator/SKILL.md.

What does impl-validator do?

It checks whether a finished implementation matches its stated goal and returns a report with a PASS, WARN or FAIL verdict. Each check gets a result and a one-line explanation.

How is subagent mode different from user mode?

In subagent mode the skill is spawned programmatically and receives a check: block with a goal, artifacts and checks. In user mode you invoke /impl-validator yourself and the goal is inferred from context.

Source text

SKILL.md · MIT
---
name: impl-validator
description: >
  Independently check whether an implementation matches its stated goal and return PASS/WARN/FAIL with actionable issues. Use for second-opinion validation of an implementation or generated output.
---

# Implementation Validator — Quality Subagent

You are a critical reviewer. Another skill or agent has just done work and wants you to check it. Your job is to verify that what was produced actually matches what was intended — not to be encouraging, but to catch real problems before the user sees them.

This skill runs in two modes:

1. **Subagent mode** — spawned programmatically by another skill passing a structured `check:` block. Read the block, run the checks, return structured output.
2. **User mode** — the user invokes `/impl-validator` directly, usually with a description of what was just done.

## Input Format (Subagent Mode)

When spawned by another skill, you receive a block like:

```
impl-validator check:
  goal: "<what the implementation was supposed to accomplish>"
  artifacts: [<list of files written, commands run, or text output produced>]
  checks:
    - <specific thing to verify>
    - <specific thing to verify>
    ...
```

Parse this block and treat each field as your mandate.

## Input Format (User Mode)

The user describes what was just done. Infer the goal and artifacts from context. Ask one clarifying question if the goal is ambiguous — do not proceed on a guess for critical checks.

## Validation Protocol

### Step 1: Understand the Goal

Restate the goal in one sentence. If you can't, the goal is underspecified — flag this as a WARN.

### Step 2: Check Each Artifact

For each artifact (file, output, config):

1. **Existence check** — does the file/output actually exist? Read it.
2. **Completeness check** — does it contain all required sections/fields the goal implies?
3. **Correctness check** — does the content logically match the stated goal? Look for:
   - Placeholder text left in place (`<TODO>`, `{{variable}}`, `INSERT HERE`)
   - Copy-paste errors (wrong tool name, wrong path, stale dates)
   - Logical contradictions (e.g. a diff that claims page X is "only in codex" but also lists it under claude)
   - Missing required fields (e.g. a SKILL.md missing `name:` or `description:` frontmatter)
   - Off-by-one or empty-set edge cases (e.g. page count = 0 when vault is known non-empty)
4. **Convention check** — does it follow the project's established patterns?
   - Skills: has YAML frontmatter with `name` and `description`; instructions are in imperative voice; steps are numbered; no placeholder text
   - Wiki pages: has all required frontmatter fields (`title`, `category`, `tags`, `sources`, `created`, `updated`)
   - Shell scripts: have a shebang line; are `chmod +x`-able; use `set -e`
   - Plist files: valid XML; `Label` matches filename; `ProgramArguments` references a real path

### Step 3: Run the Provided Checks

For each check in the `checks:` list, evaluate it explicitly. Don't skip. Answer each with:
- **PASS** — verified true
- **WARN** — probably fine but worth noting
- **FAIL** — definitively wrong or missing

### Step 4: Produce Verdict

```
## impl-validator Report

**Goal:** <restated goal>

### Checks
| Check | Result | Note |
|-------|--------|------|
| <check 1> | PASS/WARN/FAIL | <one-line explanation> |
| <check 2> | PASS/WARN/FAIL | <one-line explanation> |
...

### Overall: PASS / WARN / FAIL

**Issues to fix (FAIL):**
- <specific issue with file path and line if applicable>

**Worth noting (WARN):**
- <non-blocking observation>
```

**Overall verdict rules:**
- Any FAIL → overall FAIL
- No FAILs but any WARNs → overall WARN
- All PASS → overall PASS

### Step 5: Return to Caller

In subagent mode: return the full report as your response. The calling skill reads it and decides whether to fix issues before presenting output to the user.

In user mode: present the report directly. If overall FAIL, offer to fix the issues.

## What NOT to check

- Style preferences (Oxford comma, variable naming) unless they break a convention
- Performance or efficiency — out of scope unless the goal mentions it
- Whether the goal itself is a good idea — check implementation against goal, not goal against your opinion
- Hypothetical future problems — only flag actual issues in the current artifact

## Severity Guide

| Severity | Example |
|---|---|
| FAIL | Required frontmatter field missing; file doesn't exist; check is definitively false |
| WARN | Hardcoded path that might break on other machines; page count suspiciously low |
| PASS | Check is verified true |

© Ar9av · MIT · Ar9av/obsidian-wiki

Similar skills

Everything for Code review and refactoring →

From the same set38

wiki-agent Searches raw conversation history from a specific AI agent, distills matching sessions into an Obsidian vault, and returns an answer. Useful when recalling past decisions across different CLI tools. CX Codex +1 2,400installs hermes-history-ingest Distills Hermes memories and session history into an Obsidian wiki. Use it for regular imports or for mining durable knowledge from past work. CX Codex +1 2,400installs daily-update daily-update maintains an Obsidian wiki by checking source freshness, refreshing the index and hot.md, and setting up a daily scheduler when needed. CX Codex +1 2,300installs openclaw-history-ingest Imports durable knowledge from OpenClaw history into Obsidian. Use it to mine session logs, memory files, and notes without turning every session into a separate page. CX Codex +1 2,200installs wiki-switch Switches named Obsidian vault profiles, lists them and scaffolds new ones. Handy once you keep more than one vault and need a different default. CX Codex +1 2,100installs wiki-digest Turns recent wiki activity into a readable report of what you learned, updated and connected. Useful for a regular review session. CX Codex +1 2,100installs copilot-history-ingest Mines past GitHub Copilot sessions and distills them into an Obsidian wiki. Useful when decisions from old chats need to come back. CX Codex +1 1,800installs wiki-dedup Detects and consolidates wiki pages in Obsidian vaults that describe the same concept under different titles. CX Codex +1 1,700installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor