Aiwg contract-validate

Validate that a chain of AIWG skills has all requires: inputs satisfied by upstream ensures: outputs before execution. Catches missing dependencies at wiring time rather than at runtime.

install
source · Clone the upstream repo
git clone https://github.com/jmagly/aiwg
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jmagly/aiwg "$T" && mkdir -p ~/.claude/skills && cp -r "$T/agentic/code/frameworks/sdlc-complete/skills/contract-validate" ~/.claude/skills/jmagly-aiwg-contract-validate-dd24a0 && rm -rf "$T"
manifest: agentic/code/frameworks/sdlc-complete/skills/contract-validate/SKILL.md
source content

Contract Validate Skill

Validate a skill chain before running it — check that every

requires:
input is satisfied by an upstream
ensures:
output or declared as an external input.

Triggers

  • "validate the contract chain for [skill1] → [skill2]"
  • "check if this workflow is wired correctly"
  • "will [skill] have everything it needs?"
  • "pre-flight check the skill chain"
  • "validate workflow contracts"

Parameters

Skills list (positional)

Ordered list of skill names to validate as a chain:

/contract-validate issue-planner address-issues
/contract-validate prose-detect prose-run

--workflow <file>
(optional)

Path to a YAML workflow definition listing the skill chain.

--external input1,input2
(optional)

Comma-separated names of inputs that will be provided by the calling workflow or user. Any

requires:
that matches an external input is treated as satisfied.

/contract-validate issue-planner address-issues --external objective,tracker

--strict
(optional)

Treat semantic matches as failures (require exact name matches). Default: semantic matches pass with warnings.

Behavior

Step 1: Resolve and Extract Contracts

Same as

contract-manifest
Step 1–2: resolve each skill, extract contract fields.

Step 2: Validate Each Requires:

For each skill's

requires:
entry:

  1. Satisfied by external input (
    --external
    list) → ✓ SATISFIED (external)
  2. Satisfied by exact match (upstream
    ensures:
    same name) → ✓ SATISFIED
  3. Satisfied by semantic match (upstream
    ensures:
    same meaning, different name) → ⚠️ WARN (semantic)
  4. Not satisfied (nothing provides it) → ❌ UNRESOLVED

Step 3: Determine Verdict

ConditionVerdict
All
requires:
satisfied (exact or external)
VALID
All
requires:
satisfied but some are semantic matches
VALID WITH WARNINGS
Any
requires:
unresolved
INVALID
No contract fields found on any skillNO CONTRACTS (cannot validate)

Step 4: Output Report

## Contract Validation Report

**Workflow**: issue-planner → address-issues
**Verdict**: VALID WITH WARNINGS

### Skill: issue-planner
| Requires | Source | Status |
|----------|--------|--------|
| objective | external | ✓ satisfied (external) |
| tracker | external | ✓ satisfied (external) |

### Skill: address-issues
| Requires | Source | Status |
|----------|--------|--------|
| issues | issue-planner.issues-filed | ⚠️ semantic match (name differs — verify intent) |
| tracker | issue-planner.tracker | ✓ satisfied (exact match) |

### Warnings (1)
- `address-issues.requires.issues` satisfied by `issue-planner.ensures.issues-filed` via semantic match.
  If these are not equivalent, rename one to match or add an explicit mapping.

### Errors (0)
None

### Recommendation
Workflow is likely correct. Confirm that `issue-planner.issues-filed` and `address-issues.issues` refer to the same thing. If so, rename one for an exact match to eliminate the warning.

Using in CI / Pre-Flight

Before running a multi-skill orchestration, validate the chain:

/contract-validate issue-planner address-issues --external objective tracker
# → VALID — safe to proceed
# → INVALID — check report before running

Relationship to contract-manifest

  • contract-manifest
    — generates a full manifest for human inspection
  • contract-validate
    — gives a pass/fail verdict for pre-flight checks

Use

contract-manifest
to understand a workflow; use
contract-validate
to gate its execution.

Model

Runs on Sonnet — contract matching is structural analysis, not complex reasoning.

References

  • @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/README.md — SDLC framework context and skill catalog
  • @$AIWG_ROOT/agentic/code/addons/aiwg-utils/rules/vague-discretion.md — Measurable validation verdicts and criteria
  • @$AIWG_ROOT/agentic/code/addons/aiwg-utils/rules/research-before-decision.md — Research-first for contract dependency resolution
  • @$AIWG_ROOT/docs/extensions/overview.md — Extension system and skill architecture
  • @$AIWG_ROOT/docs/cli-reference.md — CLI reference