content-write
Skill0 starsChanged 4 months agoMITView on GitHub
Write text from scratch in your configured style. Use with /content-write.
In this repository42 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- content-rewriteSkill
- core-auditSkill
- core-bootstrapSkill
- core-commitSkill
- core-explainSkill
- core-finalizeSkill
- core-orchestrateSkill
- core-pullSkill
- core-setupSkill
- core-updateSkill
- design-convertSkill
- design-shipSkill
- design-tokensSkill
- dev-inspectSkill
- dev-learnSkill
- dev-manualSkill
- dev-optimizeSkill
- dev-securitySkill
- dev-shipSkill
- dev-tweakSkill
- game-debugSkill
- game-optimizeSkill
- game-shipSkill
- game-tweakSkill
- marketing-contentSkill
- marketing-researchSkill
- marketing-screenshotsSkill
- project-addSkill
- project-appSkill
- project-memorySkill
- project-planSkill
- project-removeSkill
- project-researchSkill
- project-seedSkill
- project-syncSkill
- project-todoSkill
- project-tunnelSkill
- team-issuesSkill
- team-outsourceSkill
- team-reviewSkill
- team-verifySkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 7 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
If no argument: ask for text type and subject before continuing.
- Distinctive: line 32
Before presenting style options, discover available styles:
- Distinctive: line 41
If no styles are found, output:
- Distinctive: line 59
No match found? Present the discovered style names as options (read the first line of each style file as its description):
- Distinctive: line 211
Write the full text with all rules from the loaded style file strictly applied.
- Distinctive: line 220
Verify the draft before output.
- Distinctive: line 225
Every forbidden word from the style-specific anti-patterns list
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Write
Writing assistant that generates text in your configured style. Gathers context via questions, selects the appropriate guidance level automatically, and applies the chosen style strictly.
Styles are loaded dynamically from ~/.claude/styles/*.md. Add your own style files
there to make them available. See skills/shared/styles/style-example.md for the
format.
1. Parse Input
Analyze the argument for:
- Subject — what the text is about
- Text type — blog, post, note, README, docs, portfolio-page, etc.
- Context richness — how much has already been provided (see Step 3)
If no argument: ask for text type and subject before continuing.
2. Discover and Select Style
Before presenting style options, discover available styles:
# Primary: user-owned styles
ls ~/.claude/styles/*.md 2>/dev/null | xargs -I{} basename {} .md
# Fallback if directory is empty or doesn't exist:
ls "$CONFIG_REPO/skills/shared/styles/style-*.md" 2>/dev/null | xargs -I{} basename {} .md | sed 's/^style-//'If no styles are found, output:
"No styles configured. Add style files to
~/.claude/styles/— seeskills/shared/styles/style-example.mdfor the format." Then stop.
Try to auto-detect a style by matching keywords in the argument against the discovered style names and any keyword hints in each style file's ## When to use section. If a match is found, inform which style was detected and ask for confirmation:
header: "Style"
question: "Detected style: {X}. Is that correct?"
options:
- label: "Yes, use {X}"
description: ""
- label: "Choose a different style"
description: ""
multiSelect: falseNo match found? Present the discovered style names as options (read the first line of each style file as its description):
header: "Style"
question: "Which writing style?"
options:
- label: "{style-name}"
description: "{first non-header line from the style file}"
# … one entry per discovered style
multiSelect: false3. Determine Flow Level
Assess context richness of the argument based on how much is already known:
Sparse (< 5 content words, e.g. "blog about X"): → Ask flow level via AskUserQuestion:
header: "Guidance"
question: "How much guidance do you want?"
options:
- label: "Standard (Recommended)"
description: "Two short question rounds (audience + goal, then key points + angle), then straight to draft."
- label: "Quick"
description: "One question round (key points + length), draft immediately. For when you already know what you want."
- label: "Full"
description: "Two rounds + outline approval + iteration round afterwards. For important texts."
multiSelect: falseMedium (5–15 words with clear subject + angle or audience): → Default Standard, skip flow question.
Rich (15+ words with multiple context elements already filled in): → Default Quick, skip flow question.
Keyword-override (always applies):
- "detailed", "guided", "deep" in argument → force Full
- "quick", "short", "draft" in argument → force Quick
4. Gather Context
Quick
One AskUserQuestion block (can cover everything at once):
header: "Context"
question: "Fill in briefly so I can get started:"
options:
- label: "Key points + length"
description: "What must definitely be included? (3-5 points). How long? (short/medium/long)"
multiSelect: falseAlso accept free text via "Other". Proceed directly to Step 5 after answering.
Standard
Round 1 — AskUserQuestion:
header: "Audience"
question: "Who is the reader and what is the goal?"
options:
- label: "Audience + goal"
description: "Who reads this? Developers / managers / friends / everyone? Goal: inform / persuade / entertain?"
multiSelect: falseLength preference as a separate option or via "Other":
header: "Length"
question: "How long should the text be?"
options:
- label: "Short (< 300 words)"
description: ""
- label: "Medium (300–700 words)"
description: ""
- label: "Long (700+ words)"
description: ""
multiSelect: falseRound 2 — AskUserQuestion:
header: "Content"
question: "What must definitely be included?"
options:
- label: "Key points"
description: "3-5 things that must definitely appear in the text. Use 'Other' for a list."
- label: "Angle / perspective"
description: "Is there a specific angle, thesis, or message that should be central?"
multiSelect: trueProceed to Step 5 after both rounds.
Full
Same as Standard (Round 1 + 2) plus after context:
Outline phase:
Generate an outline: section headers + one sentence per section. Show to user and ask:
header: "Outline"
question: "Does the structure look right?"
options:
- label: "Good, write the draft"
description: ""
- label: "Adjust"
description: "Tell me what needs to change, I'll update the outline and ask again."
multiSelect: falseAdjust outline until approved, then proceed to Step 5.
Iteration phase (after draft):
header: "Draft"
question: "How is the draft?"
options:
- label: "Looks good"
description: ""
- label: "Iteration round"
description: "Tell me what needs to change. I'll adjust and show the new version."
multiSelect: false5. Write Draft
Load the style file for the selected style:
# Primary: user-owned styles
STYLE_FILE="$HOME/.claude/styles/style-{style}.md"
# Fallback:
STYLE_FILE="$CONFIG_REPO/skills/shared/styles/style-{style}.md"Read(resolved STYLE_FILE path)Write the full text with all rules from the loaded style file strictly applied.
Preserve:
- Language of the context input (NL → NL, EN → EN)
- Tech terms in English
5b. Self-Check
Verify the draft before output. Silently:
- Loop through the draft sentence by sentence. Flag:
- Sentences > 25 words
- Em dashes
- Every forbidden word from the style-specific anti-patterns list
- Three sentences of similar length in a row (no burstiness)
- Style-specific violations defined in the loaded style file
- Found violations: rewrite those sentences in place. Do not output the violations list.
- Repeat at most once if a rewrite introduces new problems. After two passes: accept remaining imperfection.
Self-check is silent. Output remains text-only (Step 6).
6. Output
Output ONLY the text. No commentary, no "here is your draft", no wrapping.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

