Skip to content
Development
Skill

/prose-reader

Read and parse an OpenProse program file, extracting its contract (requires, ensures, strategies, errors, invariants) and services into a structured representation

From plugin
aiwg
176200 skills199 agents23 commands
Install
$ npx -y skills add jmagly/aiwg --skill prose-reader --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/prose-reader

Context preview

The summary Claude sees to decide when to auto-load this skill.

Read and parse an OpenProse program file, extracting its contract (requires, ensures, strategies, errors, invariants) and services into a structured representation

SKILL.md

prose-reader.SKILL.md
namespace: aiwg
name: prose-reader
description: Read and parse an OpenProse program file, extracting its contract (requires, ensures, strategies, errors, invariants) and services into a structured representation
version: 0.1.0
platforms: [all]

Prose Reader Skill

You read and parse OpenProse program files (`.md` with contract semantics), extracting the full contract specification into a structured, human-readable summary.

Triggers

  • "read prose program" / "parse prose file"
  • "what does [file] require and ensure"
  • "show me the contract for [file]"
  • "extract prose contract from [path]"
  • "what are the inputs and outputs of [program]"

Input

A path to a `.md` file that is an OpenProse program (has `requires:` and/or `ensures:` sections).

Behavior

Given a path to an OpenProse program file:

Step 0: Detect OpenProse Installation

Before any operation, run `/prose-detect` to locate the OpenProse installation and resolve `PROSE_ROOT`. `/prose-detect` handles the full detection chain (env var, AIWG config, AIWG-local install, project plugin manifest, user home, global CLI).

If `/prose-detect` reports no installation found, do NOT auto-clone. Inform the user:

OpenProse not found. Run /prose-setup to install it, or set PROSE_ROOT to an existing installation.

Step 1: Read the File

Read the target file using the Read tool.

Step 2: Parse Frontmatter

Extract YAML frontmatter fields:

  • `name` — program name
  • `kind` — `program`, `service`, `library`, or `test`
  • `services` — list of service component names (multi-service programs only)
  • `model` — preferred model if specified
  • Any other frontmatter fields

Step 3: Extract Contract Elements

Parse the markdown body for contract sections. Each section uses a specific keyword followed by a colon and a list:

| Section | Keyword | Format | Meaning | |---------|---------|--------|---------| | Inputs | `requires:` | `- name: description` | What the program needs to run | | Outputs | `ensures:` | `- name: description` | What the program commits to produce (obligation) | | Conditional behavior | `strategies:` | `- when condition: action` | How to handle specific situations | | Failure channels | `errors:` | `- condition description` | When the program cannot proceed | | Invariants | `invariants:` | `- property description` | Properties that always hold |

Step 4: Identify Services

If `kind: program` and `services:` is present in frontmatter:

  • List each service name
  • Check if corresponding `.md` file exists in the same directory
  • Note any missing service files

Step 5: Output Structured Summary

Format the extracted information as:

## Program: {name}

**Kind**: {kind}
**Services**: {services list or "single-component"}
**Model**: {model or "not specified"}

### Requires (Inputs)
| Name | Description |
|------|-------------|
| {name} | {description} |

### Ensures (Outputs — Obligations)
| Name | Description |
|------|-------------|
| {name} | {description} |

### Strategies
- when {condition}: {action}

### Errors
- {error condition}

### Invariants
- {invariant property}

### Services
| Service | File | Exists |
|---------|------|--------|
| {name} | {name}.md | {yes/no} |

Edge Cases

  • **No `requires:`**: Report as "No declared inputs (implicit)"
  • **No `ensures:`**: Flag as warning — all valid programs should have ensures
  • **Conditional ensures**: `ensures:` entries with `when` clauses — parse and display the condition
  • **Nested services**: If a service itself has `services:`, note the nesting
  • **Legacy `.prose` files**: Treat identically to `.md` files

Model

This skill runs on **Sonnet** — parsing and extraction don't require complex reasoning.

References

  • @$AIWG_ROOT/agentic/code/addons/prose-integration/README.md — prose-integration addon overview
  • @$AIWG_ROOT/agentic/code/addons/aiwg-utils/rules/research-before-decision.md — Run prose-detect before reading any program file
  • @$AIWG_ROOT/agentic/code/addons/aiwg-utils/rules/instruction-comprehension.md — Extract all contract fields; do not skip optional sections
  • @$AIWG_ROOT/docs/cli-reference.md — CLI reference for AIWG addon integration commands
Read more
Ships withaiwg

Multi-agent AI framework for Claude Code, Copilot, Cursor, Warp, and 6 more platforms 200+ agents, 109+ CLI commands, 400+ deployable agent/skill/command/rule artifacts, 8 core frameworks, 32 addons, and a 40-plugin Claude Code marketplace.

Get the whole plugin