|
2 | 2 | name: content-write-blog |
3 | 3 | description: Use when the operator wants to write a blog post, draft a blog article, start a new post for the Prisma blog, or publish to prisma.io/blog. |
4 | 4 | metadata: |
5 | | - version: "2026.7.8" |
| 5 | + version: "2026.7.9" |
6 | 6 | --- |
7 | 7 |
|
8 | 8 | # Write Blog Post |
@@ -146,10 +146,31 @@ End by giving the operator, in a short block: |
146 | 146 | - The path to the post file (within their checkout). |
147 | 147 | - The author profile path, if one was scaffolded. |
148 | 148 | - A reminder that the repository workflow is theirs: create a feature branch, commit the skeleton (and author profile), push, and open the pull request following the blog repo's contribution process. The pull request should be opened as a **draft** until the post is fleshed out. |
149 | | -- A clear next-step instruction: _"Edit the post to flesh out each section, keep it consistent with positioning and free of AI slop (see Writing quality), run the `content-seo-geo` skill in this repo to optimize the finished draft for search engines and AI answer engines, then branch, commit, push, and open a draft PR per the blog repo's contributing guide."_ |
| 149 | +- A clear next-step instruction: _"Edit the post to flesh out each section, keep it consistent with positioning and free of AI slop (see Writing quality), run the `content-seo-geo` skill in this repo to optimize the finished draft for search engines and AI answer engines, then complete Step 10 before opening any PR."_ |
150 | 150 |
|
151 | 151 | Do not claim the post is "done" or "ready" — it is a skeleton handed back to the operator. |
152 | 152 |
|
| 153 | +## Step 10: Adversarial review |
| 154 | + |
| 155 | +The final step of the process, and the gate to a pull request: once the skeleton has been fleshed into a finished draft and the `content-seo-geo` pass is done, the draft is reviewed by agents that did not write it, in separate context windows. The author (human or agent) wants the post to ship; a reviewer with a fresh context and a refutation mission does not share that bias. A blog post is a set of falsifiable claims — prices, version numbers, benchmark figures, API behaviors, links — and the reviewers' job is to falsify them. |
| 156 | + |
| 157 | +### How to run it |
| 158 | + |
| 159 | +Spawn one reviewer agent per applicable lens, every lens that applies, regardless of post length. The fact, reader, and positioning lenses apply to every post; the code lens applies whenever the post contains runnable code. Whether the reviewers run as plain subagents or as an orchestrated review workflow is an implementation choice, not a review-depth choice: a workflow's vote-counting and automated re-review loops pay off when findings are numerous, but the lenses and rules are identical either way. Rules that make the isolation real: |
| 160 | + |
| 161 | +1. **Reviewers receive only the draft file path and their mission.** Never include the writing conversation, the pitch, the outline, or any statement of what the post intends or why it is correct. A prompt that says "review this post, which correctly explains X" has already contaminated the reviewer. |
| 162 | +2. **Each reviewer gets a refutation mission, and skepticism is the default.** "Find reasons this is wrong" outperforms "check whether this is right." |
| 163 | +3. **Distinct lenses, one per reviewer** — diversity catches what redundancy misses. The lenses: |
| 164 | + - **Fact refuter**: attack every number, price, version, date, and named behavior. Verify each against the live primary source (vendor pricing page, official docs), not from memory. Report any claim whose source does not say what the post says. |
| 165 | + - **Code refuter** (posts with code): run every sample fresh against the stated versions. Report anything that does not compile, run, or produce the shown output. |
| 166 | + - **Reader skeptic**: where does the post confuse, overclaim, contradict itself, or read like marketing? Where would a knowledgeable reader stop trusting it? |
| 167 | + - **Positioning refuter**: report claims that contradict the positioning doc or overstate product status (GA claims, superlatives, unverified benchmarks). |
| 168 | +4. **The implementer fixes; reviewers re-review.** Findings come back to the authoring session, which applies fixes. Re-run the reviewers on the fixed draft. Repeat until a round produces no confirmed findings. The implementer never marks its own finding as resolved without a reviewer pass confirming it. |
| 169 | + |
| 170 | +### Completion criterion |
| 171 | + |
| 172 | +The draft is ready for the operator's PR when the most recent review round returned zero confirmed findings, and the operator has been given the final round's summary (findings found and fixed per round) so they can judge the review's depth, not just its verdict. |
| 173 | + |
153 | 174 | ## Writing quality |
154 | 175 |
|
155 | 176 | The lead you draft, and the prose the author later writes over your stubs, ship to prisma.io/blog as public content. Draft the lead to this bar, and name the same bar in the hand-off so the author holds it: |
|
0 commit comments