run-summary
Summarize the architecture of code generated by a single retort run. Produces module-level structure, interfaces, and control flow in a form suitable for cross-run comparison — not a full codebase-summary.
pinned to #14b3566updated yesterday
Ask your AI client: “install skills/run-summary”.
Requires the metahub MCP server installed in your client. Set up MCP.
mh install skills/run-summarymetahub onboarded this repo on the author's behalf.
If you own github.com/adrianco/retort on GitHub, claim the listing to take over publishing. Your claim preserves the existing eval history and badges; only the curator label is replaced with verified-publisher on your next publish.
Stars
195
Last commit
yesterday
Latest release
published
Evaluation report
WarningsAutomated checks the publisher passed at publish time — structure, docs, safety, and whether the artifact behaves as claimed.14b3566· yesterday
Structural
6 passed2 warningsVersion is semverwarn
"1.0" doesn't match MAJOR.MINOR.PATCH
Use semver — e.g. `0.1.0`, `1.2.3-beta.1`. The CLI sorts updates by semver.
Version is semverwarn
Version "1.0" is not semver.
Use MAJOR.MINOR.PATCH so consumers can reason about compatibility.
Repository is reachable
https://github.com/adrianco/retort @ 14b3566 — ★ 195 · Python · Apache-2.0 · last push today
Manifest detected
kind=skill slug=run-summary · path=skills/run-summary · source=SKILL.md
Slug is URL-safe
"run-summary" matches /^[a-z0-9][a-z0-9-]{0,62}$/
Slug is unique within kind
No collision found for skill/run-summary
Manifest present and parseable
Manifest found at SKILL.md.
Name declared and well-formed
Name "run-summary" is well-formed.
Release history
1- releasecurrent14b3566warnyesterday
Contents
Overview
Retort runs produce small, single-task codebases (one REST API, one CLI, one service). Full codebase-summary treatment is overkill — but a consistent lightweight summary per run is exactly what makes cross-run comparison useful.
This skill is an intentionally scoped-down adaptation of pourpoise's codebase-summary. It runs in seconds, not minutes, and emits only what's useful when comparing 48+ small generated projects.
Parameters
- codebase_path (required): The run directory (same as
evaluate-run'srun_dir) - output_dir (optional, default:
{codebase_path}/summary): Where to write the summary files
Steps
1. Infer the surface
Read TASK.md to understand what the code is supposed to do — the "surface" of the project. One paragraph, no judgments.
2. Map the modules
Generate {output_dir}/modules.md:
# Modules
| Path | Purpose | Entry points |
|------|---------|--------------|
| src/app.py | HTTP server, route handlers | `app`, `create_app()` |
| src/models.py | SQLAlchemy models | `Book`, `Base` |
| src/db.py | Connection + migrations | `get_engine()` |
| tests/test_app.py | API integration tests | 8 test functions |
Constraints:
- You MUST list every non-generated source file (skip
node_modules,target,__pycache__,.git, lock files, build artifacts). - The "Purpose" column is one line extracted from the code, not invented.
- The "Entry points" column is the publicly-named functions, classes, or exported symbols — not every local helper.
3. Describe the interfaces
Generate {output_dir}/interfaces.md covering what the code exposes:
- HTTP routes (method, path, short description)
- CLI commands (subcommand + flags)
- Library API (exported classes/functions)
- Data schemas (tables, message formats)
Example:
# Interfaces
## HTTP routes
| Method | Path | Returns | Handler |
|--------|------|---------|---------|
| GET | /books | `[Book]` | `app.py:list_books` |
| POST | /books | `Book` | `app.py:create_book` |
| GET | /books/{id} | `Book \| 404` | `app.py:get_book` |
## Data schema
`books` table: id (int, pk), title (str), author (str), year (int).
Constraints:
- You MUST grep / static-analyze the code rather than execute it to discover interfaces.
- You MUST NOT invent endpoints the code doesn't actually declare.
- If the code has none of the above categories, write
(none)under that heading.
4. Trace the dominant control flow
Generate {output_dir}/flow.md with one Mermaid diagram showing the happy-path request/response for the main feature, plus a one-paragraph narration.
# Flow
```mermaid
sequenceDiagram
Client->>app.py: GET /books
app.py->>db.py: get_session()
db.py-->>app.py: Session
app.py->>Book: query.all()
Book-->>app.py: [Book]
app.py-->>Client: 200 {json}
A request to GET /books opens a DB session via db.py:get_session(), queries all Book rows, and returns them as JSON. No pagination, no filtering.
Constraints:
- You MUST pick the single most representative flow — the one a user of the generated code would hit first.
- You MUST note deviations from common patterns ("no input validation", "no error handling", "synchronous DB access in async handler").
- The narration MUST be factual, not prescriptive.
### 5. Write the index
Generate `{output_dir}/index.md` linking to the other three files and giving a 3–4 bullet summary:
```markdown
# Summary: {cell_name} · rep {replicate}
- **Shape:** {one-line description — "Flask REST API with SQLAlchemy", "Go net/http CRUD with in-memory store", etc.}
- **Structure:** {n} modules, {n} test files
- **Interfaces:** {n} HTTP routes / {n} CLI commands / {n} exported functions
- **Notable:** {what stands out — simplest/most-complex approach seen, unusual library choice, etc.}
See [modules.md](modules.md), [interfaces.md](interfaces.md), [flow.md](flow.md).
Constraints Summary
- You MUST finish in under 90 seconds wall-clock. This is the fast-path summary.
- You MUST NOT read anything under
node_modules/,target/,__pycache__/,.git/,dist/,build/. - You MUST write exactly four files:
index.md,modules.md,interfaces.md,flow.md. No more, no less. - You MUST keep descriptions factual — no quality judgments (that's
evaluate-run's job). - Output files MUST be valid markdown that renders correctly in GitHub's viewer (Mermaid in a ```mermaid fenced block).
Troubleshooting
Code is unparseable / generated output is garbage
- Write the index.md with
**Shape:** unparseable — agent output did not produce a valid project. - Leave the other files near-empty with a one-line explanation.
- Exit 0 so
evaluate-runcan still complete.
Too many files to summarize
- This shouldn't happen in retort's small-task workspaces. If it does, cap the modules table at 50 rows and note the truncation in index.md.
Reviews
No reviews yet. Be the first.
Related
Verification Before Completion
Evidence before assertions, always
Writing Plans
Turn specs into phased implementation plans
Test-Driven Development
Red → green → refactor discipline for any feature or bugfix
mh install skills/run-summary