Content creation framework for authoring consistent, academic-style blog posts and essays.
Install
mkdir -p .claude/skills/add-writing && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16693" && unzip -o skill.zip -d .claude/skills/add-writing && rm skill.zipInstalls to .claude/skills/add-writing
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Author a new long-form Writings post in the site's exact house style and journal-offprint formatting. Use when adding an essay or guide to _writings/ (e.g. "add a writing", "write a new blog post", "draft a Writings piece"). Enforces the writing style guide (no em-dashes, no contractions, simple formal academic wording) and the established typographic components.Key capabilities
- →Gather topic, sources, and shape of a writing piece
- →Verify factual claims against primary sources for process guides
- →Draft posts in the house style using a template
- →Format content with established typographic components
- →Optimize images and wire hero as social-card image
How it works
This skill guides the authoring of new long-form posts by gathering information, verifying facts, drafting content using a template, formatting with specific components, and optimizing images, all while adhering to a strict house style.
Inputs & outputs
When to use add-writing
- →Draft new blog post
- →Format academic essay
- →Apply house style to writing
- →Manage writing templates
About this skill
Add a Writing
You are helping author a new long-form post in the _writings/ collection of this academic site. Every piece must read as if written by the same person and be typeset with the same components as the existing posts. This skill encodes both.
Three companion documents are authoritative and must be followed:
WRITING-STYLE-GUIDE.md(repo root) governs voice, punctuation, and emphasis. Read it before drafting.references/components.md(in this skill folder) holds the exact copy-paste HTML for every formatting component. Read it before formatting.references/template.md(in this skill folder) is the canonical post skeleton. Copy it into_writings/<slug>.mdand fill it in; keep the section order so every post is consistent.
The supporting CSS already lives in _sass/_writings.scss (compiled to /css/writings.css, loaded only on Writings pages); do not add new styles. Reuse the existing classes so a new post looks identical to the first. Never style Writings work in css/main.scss or _sass/_layout.scss: Writings changes must not touch any other part of the website.
The Page Style (why every post looks the same)
Consistency is not optional; it is the point. Every Writings post is typeset as a modernized journal offprint (redesigned July 2026: an 18.5px serif body in a 640px column, hierarchy from scale and space rather than ornament) and shares one fixed visual system. Do not redesign per post. The system is:
- Family: IBM Plex Serif body, IBM Plex Sans for labels/kickers. One accent colour, deep crimson
#96172E, restricted to a small set of fixed jobs (link underlines, kicker marks, step numerals, timeline marks, aside rules, specimen labels). Warm off-white page. - Fixed page furniture (applied by the
postlayout and stylesheet, never hand-coded): the header stack (kicker row "Writings · <Month D, YYYY> · <N> min read", the serif title, an italic standfirst rendered fromsummary, closed by a hairline rule; no byline, since the site header identifies the author), a sticky "On this page" contents rail on wide screens, ink-coloured links with a quiet crimson underline, and heading rhythm from space alone. - A fixed component palette for everything else (numbered step headings, caveat aside, correspondence specimen, step/interval timeline, booktabs table, drawn-square checklist, revision history). Use these and only these; see
references/components.md. - What is banned, because it reads as generic or ornamental: emoji in the prose or components, coloured callout cards, sidebars, margin-note "Source" apparatus, drop caps, rules above headings, end-of-article marks, monospace transcripts, and any new bespoke styling. These were each tried and removed; do not reintroduce them.
If a post seems to need a component that does not exist, prefer restraint (plain prose) over inventing one. Raise it with the user before adding any new style to _sass/_writings.scss.
Task Overview
When invoked with /add-writing, you will:
- Gather the topic, sources, and shape of the piece
- Verify any process or factual claims against primary sources
- Draft the post in the house style, saved to
_writings/<slug>.md - Format it with the established components
- Optimize any images and wire the hero as the social-card image
- Build, verify style compliance, and open a PR
Step 1: Gather Information
Use AskUserQuestion to collect what you cannot infer. Ask only what you need:
- Topic and working title: what is the piece about?
- Type: is it a process/how-to guide (needs a caveat epigraph and a "last verified" posture, and its facts must be verified against primary sources) or a reflection/essay (no caveat needed)?
- Source material: does the user have notes, emails, a PDF, or links to draw from? These become the spine and the provenance. Ask them to point you to files or paste text.
- Hero image: is there one, should the user generate one, or none? If they want to generate one, offer detailed prompts (see Images below).
- Audience: who is it for? This sets how much to explain.
Do not ask about mechanics you can decide yourself (slug, date, file location).
Step 2: Verify Facts (process/guide posts)
If the piece states processes, deadlines, numbers, or institutional rules, verify each against the authoritative source with WebFetch before writing it down. Link that source inline in the prose. Never state a policy number from memory. Add a caveat epigraph ("checked against X as of <Month Year>") and keep the piece evergreen.
Provenance rule: attribution goes inline in the sentence, with a hyperlink to the source. Do not use margin notes, footnote apparatus, or "Source ·" labels; that approach was tried and removed.
Step 3: Start From the Template
Copy references/template.md into _writings/<slug>.md, where <slug> is short, kebab-case, and descriptive. The template already carries the front matter and the canonical section order; fill it in rather than composing structure from scratch. Front matter fields:
---
title: "Full Title in Sentence Case With Key Terms"
date: YYYY-MM-DD
summary: "One or two sentences. Shown on the /writings/ listing and used as the og:description and meta description. Follow the style guide here too (no em-dashes, no contractions)."
image: /resources/images/<slug>-hero.jpg # optional; enables the hero + social card
version: 1 # optional; arXiv-style, shown only in the revision-history block
---
The post layout is applied automatically (via _config.yml defaults), which renders the kicker row (date, reading time), the serif title, the standfirst from summary, and the "On this page" rail. You do not add those.
Step 4: Write in the House Style
Read WRITING-STYLE-GUIDE.md and follow it exactly. The non-negotiables:
- Simple formal academic wording. First person. Direct, not stilted ("I think", not "One might consider").
- No em-dashes. Use a comma, colon, period, or parentheses. En-dashes in numeric ranges (6–7 weeks) are fine.
- No contractions. Write "do not", "it is", "you are". Possessives ("the examiner's report") are correct and required.
- Mix short and long sentences. Bold only load-bearing facts, sparingly. Italics for a word you would stress aloud or a term used as a term.
- Trust the reader; do not explain the obvious, preach, or pad with generic advice. State uncertainty plainly.
- Never include confidential material (names under embargo, private deliberations, personal contact details of others).
Step 5: Format With the Components
Read references/components.md for exact, copy-paste HTML. The palette, in the order it typically appears:
- Hero figure (
figure.writing-hero) right after the front matter, before the first paragraph. Corners are rounded by the stylesheet. - Opening paragraph in plain prose; the header stack and contents rail above it are automatic. Write normally.
- Caveat aside (
div.post-epigraph) for process posts: a roman aside behind a thin crimson left rule, styled to be read. Replaces any "disclaimer" blockquote. - Body in
##/###sections. Plain headings; for a genuine sequence, use the numbered step overline (## <span class="step-num">Step 1</span> Heading text, note the space after</span>). - Correspondence specimen (
div.inbox-note) to quote an email or document verbatim: one uppercase source line (span.inbox-note-meta), then the transcript in the body serif. No emoji. - Step/interval timeline (
ul.exam-timeline) for a sequential chain with intervals between steps. (The class name is historical; reuse it for any timeline.) - Tables: plain Markdown tables, automatically styled as booktabs (horizontal rules only).
- Checklist: plain Markdown task list (
- [ ]), automatically rendered with drawn squares. - Revision history (
div.post-revisions) as end matter, linking to the post's real GitHub commit history. - Closing line: a direct invitation to email corrections, which fits the evergreen posture.
Provenance stays inline with links (Step 2). Do not reintroduce margin notes.
Step 6: Images
If a hero or figure image is provided:
- Optimize it into
resources/images/: roughly 1400px wide, JPEG quality ~82, target under ~200KB. Example:sips -s format jpeg -s formatOptions 82 --resampleWidth 1400 <src>.png --out resources/images/<slug>-hero.jpg - Set
image: /resources/images/<slug>-hero.jpgin the front matter so it becomes the hero and theog:/Twitter card. - Write descriptive alt text.
If the user wants an AI-generated image, offer detailed prompts: flat minimalist editorial illustration, warm off-white (#FDFDFD) background, deep crimson (#96172E) as the sole accent, muted greys, no text/letters/watermark in the image, 2:1 for a hero. Ask them to generate and drop the file in the repo; you place and optimize it. Do not use two similar images in one post.
Step 7: Verify
- Build:
bundle exec jekyll buildand confirm it completes cleanly. - Style check the rendered article body. Both counts must be zero:
- em-dashes:
grep -o "—" _site/writings/<slug>/index.html | wc -l - contractions:
grep -oE "’(t|re|ll|ve|s|m|d)\b|n’t" _site/writings/<slug>/index.html | wc -l(inspect any hits; possessive'sis allowed, contractions are not)
- em-dashes:
- Confirm the post appears on
/writings/and every link resolves.
Step 8: Publish
Follow the repo's git conventions (see CLAUDE.md):
- Branch:
add-writing-<slug>(or a short descriptive name). - Commit message: describe the post; never add "Generated with Claude Code" or "Co-Authored-By: Claude".
- Never add "Closes #XX" / "Fixes #XX" unless the user explicitly asks.
- Push and open a PR summarizing the piece and its components.
Note the Writings nav tab stays hidden until _writings/ holds at least 3 posts (threshold in `_includes/hea
Content truncated.
When not to use it
- →When the writing is not for the _writings/ collection
- →When the writing does not need to follow the site's house style
- →When adding new styles to _sass/_writings.scss without user approval
Limitations
- →Requires adherence to WRITING-STYLE-GUIDE.md and references/components.md.
- →Reuse existing CSS classes; do not invent new styles or components.
How it compares
This approach enforces a specific house style and component palette for academic writings, ensuring consistency across all posts, unlike general content creation.
Compared to similar skills
add-writing side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| add-writing (this skill) | 0 | 1mo | No flags | Intermediate |
| resume-builder | 53 | 3mo | No flags | Beginner |
| write-docs | 6 | 3mo | No flags | Beginner |
| wiki-changelog | 3 | 4mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
resume-builder
amruthpillai
Generate professional resumes that conform to the Reactive Resume schema. Use when the user wants to create, build, or generate a resume through conversational AI, or asks about resume structure, sections, or content. This skill guides the agent to ask clarifying questions, avoid hallucination, and produce valid JSON output for https://rxresu.me.
write-docs
tldraw
Writing SDK documentation for tldraw. Use when creating new documentation articles, updating existing docs, or when documentation writing guidance is needed. Applies to docs in apps/docs/content/.
wiki-changelog
microsoft
Analyzes git commit history and generates structured changelogs categorized by change type. Use when the user asks about recent changes, wants a changelog, or needs to understand what changed in the repository.
docs-changelog
google-gemini
Provides a step-by-step procedure for generating Gemini CLI changelog files based on github release information.
docs-writer
google-gemini
Always use this skill when the task involves writing, reviewing, or editing files in the `/docs` directory or any `.md` files in the repository.
document-writer
onmax
Use when writing blog posts or documentation markdown files - provides writing style guide (active voice, present tense), content structure patterns, and MDC component usage. Overrides brevity rules for proper grammar. Use nuxt-content for MDC syntax, nuxt-ui for component props.