https://github.com/bguthrie/prospero
A dialectical pipeline for blog-post writing: interrogate, critique, author, revise.
https://github.com/bguthrie/prospero
claude-code skill
Last synced: 5 days ago
JSON representation
A dialectical pipeline for blog-post writing: interrogate, critique, author, revise.
- Host: GitHub
- URL: https://github.com/bguthrie/prospero
- Owner: bguthrie
- License: mit
- Created: 2026-04-29T13:32:40.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-29T21:16:06.000Z (about 2 months ago)
- Last Synced: 2026-04-29T23:23:54.557Z (about 2 months ago)
- Topics: claude-code, skill
- Language: Shell
- Homepage:
- Size: 44.9 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Prospero
A dialectical pipeline for blog-post writing: interrogate, critique, author, revise.
## What is Prospero?
Prospero is a Claude Code plugin that turns a rough topic into a published blog post through four explicit phases. Each phase has one job, produces one artifact, and hands off. The point is to externalize the parts of writing a blog post that are boring to do in your head: naming the counterargument, checking prior art, calibrating voice, and critiquing your own draft.
Prospero is deliberately agnostic about where your blog lives. Voice, audience, and project layout are project-local files you own. A small preset system handles the layout differences between Hugo, Jekyll, Ghost, and plain markdown. Nothing Prospero knows about your writing is hardcoded into the plugin.
## Pipeline overview
1. **Interrogate** — Socratic questioning extracts the argumentative spine of the post: thesis, antithesis, synthesis, entry point, section-level claims and objections. Produces `drafts//outline.md` and initializes `drafts//research.md` with sources the questioning turned up.
2. **Critique** — An independent oppositional reader challenges the outline. Reads the existing `research.md` first and only runs new web searches for gaps it identifies; flags weak evidence and missing counterarguments. Can also run on a draft. Appends its findings to `research.md`.
3. **Author** — The primary research phase. Reads the outline, existing research, voice guide, audience, and sample posts; grounds the draft's claims against what is already on file and fills specific gaps. Writes the post at the resolved path (e.g. `content/post//index.md`).
4. **Revise** — Collaborative line-level and structural feedback on a draft you have already edited. Can re-invoke the critic in draft mode; running `/critique` on the same draft multiple times across revise rounds is the expected path, not an exception.
Each phase is its own slash command; a router skill (`prospero`) picks the right phase when you describe intent without naming one.
## Installation
Install as a Claude Code plugin from the marketplace:
```
/plugin marketplace add bguthrie/prospero
/plugin install prospero@prospero
```
Or install from this repository directly if you are developing against it.
## Quickstart
1. Install the plugin (above).
2. In your blog's project directory, start a post:
```
/interrogate "why slugs beat dates for blog URLs"
```
3. On first run in an unconfigured project, Prospero will invoke `/init` to scaffold `.prospero/config.toml`, `.prospero/voice.md`, and `.prospero/audience.md`. Fill in the voice and audience files with your own rules and reader description, then answer the interrogator's Socratic questions.
The outline lands at `drafts//outline.md`, alongside a `research.md` that the pipeline accumulates across phases. From there: `/critique` the outline, `/author` the draft, then iterate with `/critique` (in draft mode) and `/revise` — typically several passes before publishing, not a single linear step.
A worked example lives at [`examples/sample-post/`](examples/sample-post/). It shows the artifacts a single post produces at each stage. A bare Hugo project before and after running `/init` is at [`tests/fixtures/hugo/`](tests/fixtures/hugo/).
## Configuration
Prospero reads three project-local files from `.prospero/`:
- **`config.toml`** — names the active preset and any explicit key overrides.
- **`voice.md`** — your voice guide. Read verbatim by `/author` and `/revise`. You fill this in; Prospero never rewrites it.
- **`audience.md`** — reader description plus a Research Sources catalog. Read by `/interrogate`, `/critique`, and `/author` to calibrate framing and ground research.
Presets live in the plugin at `presets/.toml`. They define `posts_dir`, `post_path_pattern`, `drafts_dir`, `sample_posts_dir`, and `frontmatter_template`:
- **`hugo`** — reference implementation; actively maintained.
- **`plain`** — default for non-CMS projects. Plain markdown with minimal frontmatter.
- **`jekyll`** — skeleton; needs refinement from a Jekyll user.
- **`ghost`** — skeleton; needs refinement from a Ghost user.
To override a single preset value, set it directly in `.prospero/config.toml`:
```toml
preset = "hugo"
drafts_dir = "_drafts"
```
## Piece types
Prospero ships three piece-type rubrics in `templates/types/`:
- **`argued-essay`** — a thesis that must survive challenge. The critic runs the full rubric.
- **`opinion-polemic`** — the value is in saying it well. Critic review is lighter, focused on "is this interesting?"
- **`explainer`** — teaching something. Critic focuses on clarity, accuracy, and whether the reader actually learns what was promised.
The interrogator asks which type you are writing as its first question; the choice propagates through the pipeline. New piece types are a good contribution target — they are small, local, and composable.
## Status
v0.2, extracted from the tooling behind [brianguthrie.com](https://brianguthrie.com). The Hugo preset is what the author uses and is the best-tested path. The `plain` preset is adequate for most non-CMS projects. The `jekyll` and `ghost` presets are scaffolds that need someone who uses those platforms to shake them out.
Still on the roadmap: refinement of the Jekyll and Ghost presets, additional piece types, and better handling of multi-post series.
## License
MIT. See [LICENSE](LICENSE).
## Contributing
Pull requests welcome, particularly for:
- Refining the Jekyll and Ghost presets against real projects.
- New piece-type rubrics under `templates/types/`.
- Fixes and clarifications to the skill prompts.
The core phase skills are the primary thing Prospero owns; changes there need a clear rationale tied to an actual workflow problem. Preset and piece-type contributions are lower-risk and can move faster.