Skip to main content

ponylang-prose-review

Ensemble review of ponylang blog and Last Week in Pony prose. Runs lens personas in parallel — house voice, agency, narrative, reader-orientation, tightness, content-honesty, plus a conditional accuracy lens — checks the draft against the AGENTS.md editorial guidelines and the craft rules, and returns Fix/Park findings. Self-contained: no dependency on any other skill. Load after a draft exists, before the post PR.

Zur Installation springen

Quellinformationen

Repository
ponylang/ponylang-website
Letzte Quellaktivität
2. August 2026 um 00:16
Erkannte Sprache von SKILL.md
Englisch
Sterne
160
Forks
54

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
9 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
ponylang-prose-review
description
Ensemble review of ponylang blog and Last Week in Pony prose. Runs lens personas in parallel — house voice, agency, narrative, reader-orientation, tightness, content-honesty, plus a conditional accuracy lens — checks the draft against the AGENTS.md editorial guidelines and the craft rules, and returns Fix/Park findings. Self-contained: no dependency on any other skill. Load after a draft exists, before the post PR.
# Review for ponylang prose The review that applies the ponylang Last Week in Pony house style and the craft rules to a draft with fresh, decorrelated eyes. A single generic copy-editor pass collapses every concern into "looks fine" and misses the failures that matter — enumeration instead of narrative, prose reproduced from a linked source, an invented framing, an unearned promise, a fabricated characterization, a wrong technical claim. This decomposes the review so each gets its own lens. This skill is **self-contained** — it loads no other skill. All the ensemble mechanics it needs are inlined below; nothing comes from `pony-ensemble` / `pony-synthesize` or any personal skill. A contributor with only this repo's `.claude/` can run it. ## When to run After a draft of ponylang prose exists, before it ships: - Last Week in Pony posts (the main case). - Other ponylang blog posts. - The Pony Development Sync issue comment produced by `dev-sync-summary`, if you want more than its built-in self-review. ## Two rulebooks this skill reads - **The AGENTS.md "Last Week in Pony" section** — the house voice (tone, em-dash frugality, backtick technical terms, Office Hours singular, `owner/repo` naming, conversational not clipped). The House-voice persona reads it. - **`references/craft-rules.md`** (alongside this skill) — narrative, reader-orientation, tightness, content-honesty/source-fidelity. The other craft personas read the relevant sections. ## Mode selection by size Count the draft's **prose paragraphs**: blank-line-separated blocks of running prose. Do not count fenced code blocks, YAML front matter, headings, or list items. ``` PARAGRAPH_THRESHOLD = 2 ``` - **> 2 prose paragraphs → full review.** The six-lens ensemble below — seven when the draft has code or technical claims, where the conditional Accuracy lens joins. A post is always full. - **≤ 2 prose paragraphs → cheap inline pass.** No subagents. The orchestrator reads the draft once against the AGENTS.md house style and the content-honesty section of `craft-rules.md` (pulling the source bundle if a claim needs checking), plus the mechanical pre-check, and returns Fix/Park findings directly. `PARAGRAPH_THRESHOLD` is one line on purpose — move it when the size heuristic misjudges an artifact. ## Source bundle The content-honesty and tightness personas can only catch fabricated claims, flattened source voice, and reproduced-source if they have the source. Assemble it per artifact and hand it to **both** of those personas (the house-voice, narrative, and orientation personas work from the draft and their rulebook): | Artifact | Source bundle | |---|---| | LWIP post | the rotated issue + all its comments; linked prior posts; release notes (`gh release view`); linked PRs/issues (`gh`) | | other blog post | linked posts; release notes / `gh release view`; the originating discussion or issue | | dev-sync comment | the raw summary; the linked PRs/issues/RFCs (`gh`) | A raw meeting summary and machine-generated recaps are leads to verify, not copy — pull facts from them, never trust their wording or their number-to-title mapping. ## Mechanical pre-check (scripted, not an agent) Run before spawning personas; feed results to synthesis. LWIP and blog posts live in this repo's buildable, cspell'd site, so all of these apply: - **cspell** over the file. - **`mkdocs build --strict`** (set up the venv per the project README/CLAUDE.md if needed). - **em-dash count** (flag heavy use). - **link-target sanity** — does each link's text match what it points at? For a dev-sync issue comment (not a repo file): em-dash count + link sanity only. ## Full process 1. **Identify the artifact and assemble the source bundle** (tables above). 2. **Run the mechanical pre-check.** Capture results. 3. **Make an evidence dir:** `~/tmp/prose-review-<timestamp>/`. Each persona writes its detailed evidence to a file there; pass the path in the prompt. 4. **Spawn the lens personas in parallel**, each a fresh-context subagent on your most capable model. Six always run: House-voice, Agency, Narrative, Orientation, Tightness, Content-honesty. A seventh, **Accuracy**, joins **only when the draft has code or makes technical/behavioral claims about a system** (compiler internals, an API, a release); skip it otherwise. Each prompt includes: - The persona document, read from `personas/<lens>.md`. - Its rulebook slice: the **House-voice** persona gets the AGENTS.md "Last Week in Pony" section and 2–3 recent posts from `docs/blog/posts/` for calibration; the Narrative, Orientation, Tightness, and Content-honesty personas get the relevant sections of `references/craft-rules.md`. The **Agency** persona needs no rulebook slice — its rule is self-contained in its persona doc, and it works from the draft alone. The **Accuracy** persona reads the actual source instead. - The draft in full. - For the **Content-honesty** and **Tightness** personas: the full source bundle. - For the **Accuracy** persona: the source the draft describes (the repo/files, release notes, the version it targets). - The shared persona output format (below). - "You are an ensemble agent — return findings to the orchestrator, take no external actions, edit nothing." 5. **Triage persona outputs** — confirm each addressed the actual draft and stayed on its lens. Drop nothing silently. Hold the **enumerative lenses to a higher bar**: the Agency lens must return its subject–verb table for the whole draft, and the Narrative lens the numbered idea-sequence for each section. A holistic verdict from either — "no anthropomorphizing," "reads fine" — with no enumeration behind it is not a pass; it is a lens that skipped the work. Re-run it and demand the enumeration. 6. **Synthesize** (inlined below). 7. **Triage into Fix / Park** and act (below). ## Shared persona output format Include in every persona prompt. Each persona produces two artifacts. **Evidence file** (written to the provided path): every finding with the exact quoted text from the draft, what's wrong, the rule it violates, and the concrete rewrite. **Summary** (returned to the orchestrator): - **Findings**, ordered by severity (Blocking > Should-fix > Minor). Each: - **Quote**: the exact span from the draft. - **Lens**: this persona. - **Problem**: what's wrong (concise — full reasoning is in the evidence file). - **Fix or Park**: is the right change obvious (Fix), or does it need the author's judgment (Park)? With the suggested rewrite (Fix) or the question (Park). - **Passes**: key things checked that read true. Brief. - **Uncertainties**: anything the persona couldn't judge without the author or more source. **Enumerative lenses must show their work.** Agency and Narrative are enumeration lenses, not judgment lenses. Their summary carries the enumeration itself — Agency's subject–verb table for the whole draft, Narrative's numbered idea-sequence for each section — even when the verdict is clean. "None found" is credible only with the enumeration that proves every subject, and every section's order, was actually looked at. A summary without it goes back. ## Synthesis (inlined) The synthesizer is a fresh-context agent (or the orchestrator) given all persona summaries and the mechanical-check results, with these instructions: **Job:** integrate the persona findings into one deduplicated list. You are not averaging opinions — you are assembling the strongest, non-redundant set of findings. **Focus:** - **Don't drop anything.** Every persona finding appears in the output or is explicitly merged into another. A review that surfaces a real problem and then loses it has wasted the discovery. - **Cross-persona corroboration is high-confidence.** When two personas flag the same span from different angles, merge them into one finding marked high-confidence — never let each assume the other owns it and drop both. - **Clusters signal structure.** Several small findings in one section often mean the section's shape is wrong (an enumeration, a reproduced source, a missing on-ramp). Call out the structural problem, not just the symptoms. - **Severity stands.** If one persona says Blocking with evidence and another didn't mention it, it's Blocking. Don't soften by consensus. ## Fix / Park triage Categorize every finding. Nothing is silently dropped. - **Fix** — the right change is obvious: a misspelling, an unclear antecedent, a term used before it's introduced, an enumeration to reweave, prose reproduced from the linked source, an unbackticked technical term, an em-dash glut, a fabricated characterization to cut. Apply these directly. - **Park** — needs the author: a framing or thesis the draft asserts that no source supports, a thematic hook, a tone call, a metaphor to keep or cut. **Never ship a parked call as final.** Batch parked items and present them as questions. When run inside the `lwip` pipeline: apply the Fix items, list the Park items for the author, and proceed. When run standalone: return both lists. ## Output format ``` ## Prose review — <artifact> (<full | inline pass>, N findings) ### Applied (Fix) - <quote> → <change> [lens] ... ### Raise with the author (Park) - <quote> — <the question> [lens] ... ### Mechanical - cspell: <clean | issues> build: <pass | fail> em-dashes: <count> links: <ok | …> ### Passes - <brief confidence notes> ``` ## The lenses | Persona | Catches | |---|---| | `house-voice.md` | ponylang LWIP house style: tone (Hemingway, conversational not clipped), em-dash frugality, backtick technical terms, Office Hours singular, `owner/repo` naming, AI tells, clipped-imperative cadence. Reads the AGENTS.md guidelines; calibrates on recent posts. | | `agency.md` | the enumerative anthropomorphizing pass: every clause whose subject is not a person, tabled and judged person / literal-op / AGENCY. Catches a library, release, change, or version given an action it can't take, and a machine given cognition. Deliverable is the table, not a verdict. | | `narrative.md` | enumeration vs story, at section **and** prop level (a snippet/line-count/parenthetical can be dead cargo inside a good section); **and idea-order within each section** — a conclusion before its setup, a paragraph doubling back, a stranded sentence. Deliverable includes each section's numbered idea-sequence. | | `orientation.md` | concept-before-use, unclear antecedents, missing on-ramps, offloaded context, compressed recaps that strip framing, missing prerequisites. | | `tightness.md` | reproduced linked source, props that don't earn their place, filler, wrong altitude for the artifact. **Gets the source bundle.** | | `content-honesty.md` | unsourced or fabricated claims, invented framing, invented quantitative characterizations, unearned promises, flattened source personality, lifted wording from unvetted sources, authorship/tense honesty. **Gets the source bundle.** | | `accuracy.md` | **conditional** — runs only when the draft has code or technical/behavioral claims. Verifies code, API signatures, behavior and version claims, PR/issue numbers and titles against the actual source. |
Auf GitHub ansehen