一键导入
author
Write a blog post draft from a validated outline; voice and audience come from project config, frontmatter from the active preset
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Write a blog post draft from a validated outline; voice and audience come from project config, frontmatter from the active preset
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | author |
| description | Write a blog post draft from a validated outline; voice and audience come from project config, frontmatter from the active preset |
Write the best version of the essay from the validated outline. Voice, audience, research sources, and output format all come from the project's Prospero configuration; this skill is a process, not a style sheet.
<drafts_dir>/<slug>/outline.md (typically after /interrogate and, usually, /critique) and is ready to draft.Do NOT use for:
/interrogate./critique./revise.Run these as a silent preflight. Do not narrate them to the user unless a check fails; a passing preflight should be invisible.
.prospero/config.toml must existIf .prospero/config.toml does NOT exist in the current working directory, invoke the prospero:init skill and follow it to completion. When init returns, resume at step 2 below. Do not proceed to drafting with an unconfigured project.
.prospero/voice.md and .prospero/audience.md must be filled inFor each of .prospero/voice.md and .prospero/audience.md, compute byte-for-byte equality against the plugin's corresponding template at <plugin-root>/templates/voice.md and <plugin-root>/templates/audience.md. Use the plugin-root resolution procedure defined in the init skill's "Resolving the plugin's templates directory" section. Do not abbreviate its failure handling: zero matches → ask the user; multiple matches → ask the user; match found but voice.md or audience.md missing → halt with the resolved path.
.prospero/<file> is missing. Run /init to restore it, then fill it in before /author.".prospero/<file> is the unmodified scaffold. Fill it in before running /author; this is the one thing Prospero cannot write for you."Additionally, check that .prospero/voice.md is substantive, not a one-liner. If voice.md is shorter than ~500 characters or contains fewer than three concrete rules (prohibitions, structural conventions, tonal directives), halt with: ".prospero/voice.md is too sparse to calibrate reliable drafting. The author needs concrete rules to follow — otherwise this skill will improvise a voice. Expand voice.md with at least three rules (tone / structure / prohibitions), then re-run /author."
Load .prospero/config.toml to get the preset name. Read the preset file at <plugin-root>/presets/<preset>.toml and extract all four of: drafts_dir, post_path_pattern, sample_posts_dir, frontmatter_template. Overlay any explicit overrides for these keys set directly in .prospero/config.toml. If no preset is named, default to plain.
If config.toml is unparseable, the named preset file is missing, or any of the four keys above is absent from both the preset and the config, halt with a message naming the specific missing key and suggesting /init to reconfigure. Do not silently fall back. The author cannot write a post without knowing where to write it, what frontmatter to use, where to read the outline from, or how to calibrate voice.
The author consumes an existing outline, so the slug must come from the user or the filesystem:
<drafts_dir>/. If exactly one exists, confirm with the author before proceeding. If multiple exist, ask which post to draft.<drafts_dir>/ is empty or does not exist, halt with: "No drafts found in <drafts_dir>/. Run /interrogate first."Once the slug is determined, confirm <drafts_dir>/<slug>/outline.md exists. If the directory exists but the outline does not, halt with: "No outline at <drafts_dir>/<slug>/outline.md. Run /interrogate to produce one before drafting."
Check the date. Verify today's date so you know what's current. Your training data may be stale; verify before assuming.
Re-read the outline. Read <drafts_dir>/<slug>/outline.md in full. The outline is a spine, not a transcript; you can reorder, merge, split, or restructure sections if the argument flows better. But do not silently drop claims or change the thesis. The thesis, antithesis, and synthesis must survive into the draft.
Read existing research. <drafts_dir>/<slug>/research.md is the project's accumulating research record. Interrogation initializes it with sources turned up during questioning; critique passes add prior art and counterarguments; prior author sessions (on revision) add what went into the current draft. Read the whole file. You are the phase that turns this research into a draft — starting from what is already on file is the point.
Read the audience definition. Read .prospero/audience.md for the target reader description and research sources. The audience definition informs tone calibration, how much background to supply, and what prior art to engage. Hold this context while drafting.
Read the voice guide. Read .prospero/voice.md in full. Follow every rule in it. That file is the canonical voice guide for this project; treat it as a hard contract, not a style suggestion.
Calibrate voice from samples. Enumerate posts in the resolved sample_posts_dir (files matching the preset's post pattern). Then:
Internalize rhythm, sentence structure, footnote usage, and section-header style. voice.md wins over samples if they conflict: samples calibrate rhythm and texture, but voice.md is the specification. If voice.md forbids something the samples use (em dashes, staccato lists, etc.), follow voice.md. Samples help you pick between two choices both allowed by voice.md.
If samples use inconsistent date formats or category vocabularies, ask the author which to use rather than picking silently.
Research — this is the primary research phase of the pipeline. Interrogation and critique persist what they turned up; you are the phase that grounds the actual claims in the draft. Start from what is already in research.md. For every claim the draft makes, verify it against what is on file, then fill gaps: find the specific source you are going to cite, the specific quote or statistic you are going to use. Use the sources listed in .prospero/audience.md's Research Sources section first; if you need broader web search, use it and note that in the post's citations. Append new findings to <drafts_dir>/<slug>/research.md under a section header like ## Author session YYYY-MM-DDTHH:MM (local time, to the minute, so multiple same-day sessions do not collide). Do not overwrite existing content. Create the file if missing. Do not fabricate URLs. If a claim cannot be substantiated, flag it for the author rather than inventing a source.
Resolve the destination path by substituting {slug} (and any other variables) into the preset's post_path_pattern. Write the post to that path.
Apply the preset's frontmatter_template to the top of the file. For every {variable} literal that appears in the template, substitute the resolved value. Do not leave any {variable} in the output; do not add fields the template does not name. After writing, re-read the frontmatter and confirm no unsubstituted {variable} literals remain. Leave the draft flag marking the post as unpublished (draft: true in the hugo and plain presets; the preset's equivalent in others, inferable from the template's default value) — the author does not unpublish.
<drafts_dir>/<slug>/ directory the outline came from.sample_posts_dir use — read a sample to confirm the format before writing.category is a variable in the frontmatter template, look at existing posts in sample_posts_dir to infer the project's category vocabulary. Use an existing category if one fits; propose a new one only if none do.## for major sections, ### for subsections.[^n] for asides that would break the flow., co-located in the post directory alongside index.md (or the equivalent file name the preset writes to).Read .prospero/voice.md in full. Follow every rule in it. That file is the canonical voice guide for this project; treat it as a hard contract, not a style suggestion. Do not substitute your own aesthetic judgment for the rules it lays out, and do not soften its prohibitions because a given sentence reads more naturally the prohibited way.
After the draft is written, tell the author it's ready for their editing pass. When they come back, the typical flow is not a single revise round: authors cycle between /critique in draft mode (to stress-test execution) and /revise (to polish prose and tighten structure), often multiple times, before publishing. Route based on what the author asks for and expect the loop to repeat. If they do not specify, offer both and let them pick.
Oppositional review of an outline or draft by an independent agent; loads piece-type rubric and audience context from project config
Socratic questioning to extract a dialectical outline for a new blog post
Dialectical blog-post pipeline. Use when the user expresses intent to write, outline, review, draft, or revise a blog post. Routes to the appropriate phase skill based on input and project state.
Structural and line-level feedback on a draft the author has edited; enforces voice.md rules and can optionally re-run /critique in draft mode
Scaffold .prospero/ in the current project. Detect the host CMS, propose a preset, and copy the voice and audience templates. Auto-invoked by /interrogate on first use; also callable directly for reconfiguration.