| namespace | aiwg |
| name | forme-manifest |
| description | Read a multi-service OpenProse program directory, analyze all service contracts, and generate the Forme wiring manifest for inspection and debugging |
| version | 0.1.0 |
| platforms | ["all"] |
| requires | ["program-dir: path to directory containing a multi-service OpenProse program (index.md with kind: program and services: list)"] |
| ensures | [{"wiring-manifest":"human-readable manifest showing service contracts, dependency graph, and execution order"},{"mermaid-diagram":"visual dependency graph in Mermaid LR format"},{"issues":"list of unwired dependencies, unused outputs, or circular dependency errors"}] |
| errors | [{"prose-not-found":"OpenProse installation not detected; run /prose-detect for guidance"},{"not-multi-service":"target is a single-component program; wiring manifest not applicable"},{"circular-dependency":"services form a dependency cycle; execution order cannot be determined"}] |
| invariants | ["no program execution occurs — forme-manifest is a static analysis tool","ambiguous wiring (multiple possible sources for one requires:) is reported, not silently resolved"] |
Forme Manifest Skill
You analyze a multi-service OpenProse program directory by reading all service contracts and generating the wiring manifest that the Forme Container would produce — without executing the program.
Triggers
- "show forme manifest" / "generate wiring manifest"
- "how does this prose program wire together"
- "forme manifest [path]"
- "show dependency graph for [program]"
- "what's the wiring for [program]"
Input
A path to a directory containing a multi-service OpenProse program (must have an index.md with kind: program and a services: list).
Behavior
Step 0: Detect OpenProse Installation
Run /prose-detect to locate the OpenProse installation and resolve PROSE_ROOT. The Forme Container spec at $PROSE_ROOT/forme.md drives the wiring semantics used in this analysis. If not found, stop and report:
OpenProse not found. Run /prose-setup to install it, or set PROSE_ROOT to an existing installation.
Step 1: Read Entry Point
Read index.md (or the specified entry file) in the directory. Extract:
- Program name
- Services list
- Program-level
requires: (external inputs)
- Program-level
ensures: (final outputs)
Step 2: Read All Service Contracts
For each service in the services: list:
- Read
{service-name}.md from the same directory
- Extract
requires: (what this service needs)
- Extract
ensures: (what this service produces)
- Extract
strategies: (conditional behavior)
Step 3: Build Dependency Graph
Match outputs to inputs by semantic understanding:
For each service's requires: entry:
- Check if it matches the program's
requires: (external input)
- Check if it matches another service's
ensures: (internal wiring)
- If no match found: flag as unwired dependency
For each service's ensures: entry:
- Check if it's consumed by another service's