一键导入
content-write-blog
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.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
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.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when adding a new docs section or product area, editing llms.ts / the llms.txt or llms/[...slug] / llms-full.txt routes / get-llm-text / skill.md / .well-known endpoints, or working on the "agent score", "llms.txt", or anything "agent-ready" in the docs and site apps. Explains the invariants the Mintlify agent-readiness audit measures and how to hold them.
Use when the operator wants a hero or meta image for a Prisma blog post; asks to create or generate a blog hero, cover, social card, Open Graph, or YouTube image; mentions cover art, a blog thumbnail, cover.svg/hero.svg/meta.png; references content-create-hero-image; or wants to interactively design cover imagery in Prisma's Eclipse house style. Produces an editable SVG hero plus a pixel-exact PNG meta image, and includes an interactive mode and a built-in design-review pass.
Optimize a prisma.io page for search engines and AI answer engines. Use when writing or reviewing blog posts, docs pages, or landing pages for SEO, GEO, AEO, AI citations, AI Overviews, ChatGPT/Perplexity visibility, featured snippets, metadata, or FAQ sections; when refreshing an existing page for freshness or rankings; or when asked why a page isn't ranking or being cited.
Use when writing, rewriting, or improving technical docs (quickstarts, how-tos, tutorials, concept pages, or API references).
| name | content-write-blog |
| 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. |
| metadata | {"version":"2026.7.9"} |
Produce a skeleton for a Prisma blog post — frontmatter, section headings, and short stubs — not a finished article. The human author writes the prose.
This skill produces content only. It does not check out, branch, commit, push, or open pull requests against the blog repository. The operator owns that workflow: they prepare the checkout, place the skeleton into it, and push and open the pull request following the repo's contribution process.
The blog is owned by DevRel but contributed to by everyone, so do not assume the operator is on the DevRel team or familiar with the blog repository. Treat first-time contributors as the default case.
assets/positioning.md — Prisma's internal positioning doc. It is not committed to this public repo (it's gitignored); obtain it from the internal positioning source and place it at assets/positioning.md before drafting. Read it before writing the lead and section stubs so the angle, framing, and product claims stay aligned with how Prisma describes itself. It is the source of truth for positioning, so do not contradict it. If it is absent, ask the operator for the current positioning before grounding the post.For a decision with a small set of options (which author, whether a proposal looks right, where the checkout lives), prefer a structured-choice question where the environment supports one; fall back to a plain question for freeform answers (a pitch, a slug, a bio). Bias toward reasonable defaults from context; ask only when multiple valid paths exist.
The operator must provide direction for the post. Valid inputs:
If nothing was provided, ask: "What's the blog post about? Share a pitch (angle, audience, key takeaway), or a path to a draft if you have one."
Do not proceed without input, and do not invent a pitch on the operator's behalf.
Read the positioning asset above. Note the product names, claims, and framing that the post must stay consistent with. If the pitch conflicts with positioning, surface the conflict to the operator before drafting — do not silently "correct" the pitch, and do not write copy that contradicts positioning.
The operator prepares and owns this checkout — this skill does not create it. Ask the operator for the path to their local checkout of the blog repository (the prisma/web repo, which contains the blog content).
Treat the checkout as read-and-write for content files only. Never perform repository-level operations (branching, committing, pushing, or opening pull requests) — those belong to the operator.
Do not hardcode conventions in this skill — discover them from the operator's checkout each time by reading files:
content/blog/, posts/, src/content/blog/, or similar).authors/, content/authors/, or referenced from a recent post's frontmatter). Note the author profile file shape and required fields.Briefly summarise to the operator what you found (one or two sentences) before continuing.
Ask the operator for their author slug (e.g. jane-doe).
If the operator is unsure which slug is theirs, list the existing author slugs and ask them to pick or confirm a new one.
Based on the pitch and the conventions from Step 4:
YYYY-MM-DD-slug.md, slug/index.mdx, slug.md).Present the proposal as a single block and confirm before writing any files. Do not proceed without confirmation.
Write the post file at the location decided in Step 6, inside the operator's checkout. The file contents:
## headings inferred from the pitch, each followed by a one-line italic stub: "Write about X here — touch on Y and Z."If you also scaffolded an author profile in Step 5, write that file too.
After writing, apply the repository's formatting / lint step (discovered in Step 4, if any) to the new files and fix violations, so the operator inherits clean files.
After the skeleton is written, enhance it with relevant links before handing it back to the operator. Add only links that genuinely help the reader — never pad the post with low-value or tangential references.
Scan the skeleton for opportunities to link to Prisma's own content. Only add a link when the post introduces a topic and the linked page lets the reader go meaningfully deeper:
https://www.prisma.io/docs/postgreshttps://www.prisma.io/docs/computehttps://www.prisma.io/docs/orm (Prisma Next is the next-generation Prisma ORM)postgres-bloom-index-the-overlooked-postgres-feature); a mention of LISTEN/NOTIFY should link to the post that covers it. These cross-links keep readers on the blog and strengthen internal SEO.prisma.io/docs when the skeleton mentions a feature, concept, or workflow beyond the three products above that the docs explain authoritatively.prisma.io/postgres, prisma.io/compute, prisma.io/orm) can fit better than docs. Prefer docs for technical mentions; use the product page only for whole-product framing.Discover available internal links from the blog repository checkout (Step 3). Inspect existing blog posts in the content directory for relevant earlier articles, matching on topic and tags. If the checkout includes docs or the operator can point to a docs checkout, inspect its structure for matching pages. For product pages, use Prisma's known site structure.
Scan the skeleton for mentions of external products, frameworks, libraries, languages, or standards. Add a link only when:
After adding links, compile a numbered list of every link added, split into two sections. Present this inventory to the operator so they can review and remove any links they consider unnecessary. Do not remove links unilaterally after presenting — the operator decides.
Format:
**Internal links added:**
1. [anchor text](url) — placed in "Section Heading", context: why this link is relevant
2. …
**External links added:**
1. [anchor text](url) — placed in "Section Heading", context: why this link is relevant
2. …
If fewer than three meaningful link opportunities exist, do not force links. A sparse but relevant link set is better than a dense one that reads like a link farm. Zero links is acceptable when the skeleton does not naturally invite any.
End by giving the operator, in a short block:
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."Do not claim the post is "done" or "ready" — it is a skeleton handed back to the operator.
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.
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:
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.
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: