Aiwg contract-manifest
Generate a human-readable manifest for a chain of AIWG skills, showing agent assignments, contract fields (requires:/ensures:), data flow between steps, and parallelization opportunities. Makes orchestration graphs debuggable and auditable.
git clone https://github.com/jmagly/aiwg
T=$(mktemp -d) && git clone --depth=1 https://github.com/jmagly/aiwg "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.agents/skills/contract-manifest" ~/.claude/skills/jmagly-aiwg-contract-manifest && rm -rf "$T"
.agents/skills/contract-manifest/SKILL.mdContract Manifest Skill
Generate a manifest showing how a chain of AIWG skills connects — mapping each skill's
ensures: outputs to the next skill's requires: inputs.
Triggers
- "show the contract manifest for [skill1] → [skill2] → [skill3]"
- "how does [workflow] wire together?"
- "generate manifest for this skill chain"
- "show data flow for [issue-planner] → [address-issues]"
- "what does [skill] produce and what does [skill] need?"
Parameters
Skills list (positional)
Ordered list of skill names or paths:
/contract-manifest issue-planner address-issues /contract-manifest prose-detect prose-run forme-manifest
--workflow <file>
(optional)
--workflow <file>Path to a YAML workflow definition:
# workflow.yaml name: Issue Planning Pipeline steps: - skill: issue-planner - skill: address-issues - skill: issue-sync
--mermaid
(optional)
--mermaidInclude a Mermaid LR diagram of the skill chain.
--json
(optional)
--jsonOutput the manifest as machine-readable JSON instead of Markdown.
Behavior
Step 1: Resolve Skills
For each skill name, find the canonical
SKILL.md:
- Check
agentic/code/frameworks/sdlc-complete/skills/{name}/SKILL.md - Check
agentic/code/addons/*/skills/{name}/SKILL.md - Check
.claude/skills/{name}/SKILL.md - If path given directly: read that file
Step 2: Extract Contracts
From each skill's YAML frontmatter, extract:
— inputs the skill needsrequires:
— outputs the skill commits to deliverensures:
— failure conditionserrors:
— always-true propertiesinvariants:
If a skill has no contract fields, note it as "contract not yet defined."
Step 3: Build Wiring Table
For each skill's
requires: entry, find the upstream source:
- Exact match: Another skill's
entry with the same name → direct wire ✓ensures: - Semantic match: Another skill's
entry that means the same thing (e.g.,ensures:
↔issues-filed
) → semantic wire ⚠️ (flag as warning)issues - External input: The workflow's own
(user provides it) → external →requires: - No match: Nothing upstream provides it → unresolved ❌
Step 4: Determine Execution Order
- Skills with only external inputs can execute first
- Skills depending on upstream
must wait for that skillensures: - Skills with no dependencies between them can execute in parallel
Step 5: Output Manifest
## Contract Manifest: {workflow name or skill list} ### Skills | Skill | Requires | Ensures | Errors | |-------|----------|---------|--------| | issue-planner | objective, tracker | issues-filed, research-brief | no-tracker-access, research-failed | | address-issues | issues, tracker | cycle-comments, aggregate-report | tracker-unavailable | ### Data Flow | Source Skill | Output | → | Target Skill | Input | Match | |-------------|--------|---|-------------|-------|-------| | (external) | objective | → | issue-planner | objective | ✓ exact | | issue-planner | issues-filed | → | address-issues | issues | ⚠️ semantic | | issue-planner | tracker | → | address-issues | tracker | ✓ exact | ### Execution Order 1. issue-planner (requires: external inputs only) 2. address-issues (requires: issue-planner.issues-filed, issue-planner.tracker) **Parallel groups**: [issue-planner] → [address-issues] ### Warnings - `issue-planner.issues-filed` → `address-issues.issues`: semantic match only (names differ; verify intent) ### Issues - None
Optional: Mermaid Diagram (--mermaid
)
--mermaidgraph LR Input[External Input] --> A[issue-planner] A -->|issues-filed| B[address-issues] A -->|tracker| B B --> Output[Aggregate Report]
Output Formats
| Flag | Format | Use Case |
|---|---|---|
| (default) | Markdown | Human review |
| JSON | Tooling, CI integration |
| Markdown + embedded Mermaid | Documentation |
Model
Runs on Sonnet — contract extraction and matching is structural analysis.
References
- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/README.md — SDLC framework context and skill catalog
- @$AIWG_ROOT/agentic/code/addons/aiwg-utils/rules/research-before-decision.md — Research-first approach for contract resolution
- @$AIWG_ROOT/agentic/code/addons/aiwg-utils/rules/diagram-generation.md — Mermaid diagram generation standards
- @$AIWG_ROOT/docs/extensions/overview.md — Extension system and skill architecture
- @$AIWG_ROOT/docs/cli-reference.md — CLI reference