draft-article
Skill0 starsChanged 2 months agoMITView on GitHub
Takes a crafted story and drafts a long-form blog post. Reads the vault, picks hook + structure from Amplify, writes the full article using the narrative arc, and saves an article.md to the story folder. Use when the user asks to write a blog post, article, or long-form piece from a story, or says "turn this into an article", "write the blog post", or "make this a long-form post".
2 other projects use a version of this.
Adopted by
Most recently taken up by
- danielrosehill/AI-Evaltheir own version, first seen Nov 8, 2026
- flexim-io/seo-writerstheir own version, first seen Oct 9, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- danielrosehill/AI-Eval★ 4same name
- flexim-io/seo-writers★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- remotion-best-practicesSkill
- add-inspirationSkill
- brandSkill
- craft-contentSkill
- draft-carouselSkill
- draft-diagramSkill
- draft-imagesSkill
- draft-videoSkill
- heygen-avatarSkill
- heygen-videoSkill
- humanizerSkill
- ingestSkill
- initSkill
- linkedin-postSkill
- lintSkill
- listenSkill
- meetingSkill
- voiceSkill
- wikiSkill
- youtube-descriptionSkill
- youtube-shortSkill
- youtube-uploadSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
28 rules. About 0 are common, 15 are distinctive, and 13 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈15
Distinctive · estimate
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
When the user runs /draft-article, optionally followed by a story slug:
- Distinctive: line 19
Read the config and resolve the vault path.
- Very specific: line 21
Read {vaultPath}/{paths.voice} (Voice.md) if it exists.
- Very specific: line 23
Read {vaultPath}/{paths.brand}/Brand.md if it exists.
- Very specific: line 27
If the user provided a slug (e.g., /draft-article why-we-rebuilt-onboarding), read directly from {stories}/{slug}/story.md and …
- Very specific: line 29
If no slug, scan {vaultPath}/{paths.stories}/ for story folders.
- Very specific: line 31
Read the chosen story.md and raw.md.
- Very specific: line 45
Read all hook files from {vaultPath}/{paths.amplifyHooks}/
- Very specific: line 46
Read all structure files from {vaultPath}/{paths.amplifyStructures}/
- Very specific: line 47
Read the persuasion glossary from {vaultPath}/{paths.amplifyPersuasion}/Persuasion-Glossary.md
- Very specific: line 49
Use buildAmplifyContext(config) if available, or read the files directly.
- Distinctive: line 75
Ask: "Are there links, images, screenshots, or data visualizations to embed?
- Distinctive: line 77
If yes, ask which should appear above the fold vs.
- Distinctive: line 79
If no, move on.
- Distinctive: line 83
Ask: "What do you want people to do after reading this?"
- Distinctive: line 86
Leave a comment with their experience
- Distinctive: line 88
Read a related piece you've written
- Distinctive: line 107
Ask: "Where will this be published?" (Medium, Substack, LinkedIn article, personal blog, not sure)
- Distinctive: line 115
Not sure: Default to 1200 words, clean structure that adapts to any platform.
- Distinctive: line 121
Ask one or two questions at a time.
- Distinctive: line 122
Use their words from raw.md and story.md.
- Distinctive: line 125
If the user seems eager to see a draft, compress 3b-3e into one turn: "Before I write: any media to embed, what's the CTA, and where is …
- Very specific: line 138
Write the full article prose, not just an outline.
- Distinctive: line 142
Hook opens cold: No heading. First line grabs.
- Distinctive: line 146
The article IS the story: Not a summary, not a listicle.
- Very specific: line 168
Write {stories}/{slug}/article-{hook}-{slug}-{YYYY-MM-DD}.md (e.g., article-curiosity-gap-why-we-rebuilt-onboarding-2026-03-01.md) with …
- Very specific: line 242
After saving, emit an article_created signal to {vaultPath}/{paths.signals}/signals.json:
- Distinctive: line 285
Run a humanizer pass on all article prose.
≈ “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
Draft Article
Instructions
When the user runs /draft-article, optionally followed by a story slug:
Step 0: Load Context
Find the .amplifyrc config file. Check these locations in order:
.amplifyrcin the current working directory.amplifyrcat the path specified byVAULT_PATHenvironment variable
Read the config and resolve the vault path.
Read {vaultPath}/{paths.voice} (Voice.md) if it exists. This shapes tone, phrasing, and the article's voice.
Read {vaultPath}/{paths.brand}/Brand.md if it exists. Use the brand visual style when suggesting header images, pull quotes, or visual callouts.
Step 1: Find the Story
If the user provided a slug (e.g., /draft-article why-we-rebuilt-onboarding), read directly from {stories}/{slug}/story.md and {stories}/{slug}/raw.md.
If no slug, scan {vaultPath}/{paths.stories}/ for story folders. List stories that have a story.md with craft-status: drafting or craft-status: workshopped or craft-status: told. Present the list and let the user pick.
Read the chosen story.md and raw.md. Extract:
transformation(before/after/change)fiveSecondMomentopeningScenetheStakestheTurnstheQuestiontheStory
Validate the story has at minimum: transformation, 5-second moment, and turns. If missing, tell the user: "This story needs more development. Run /craft-content first to fill in the missing pieces."
Step 2: Read Amplify Toolkit
Load the Amplify context from the vault:
- Read all hook files from
{vaultPath}/{paths.amplifyHooks}/ - Read all structure files from
{vaultPath}/{paths.amplifyStructures}/ - Read the persuasion glossary from
{vaultPath}/{paths.amplifyPersuasion}/Persuasion-Glossary.md
Use buildAmplifyContext(config) if available, or read the files directly.
Step 3: Creative Brief
A multi-turn conversation that builds the creative direction before you write a word. Ask one or two questions at a time. Never dump all sub-steps in a single message.
Step 3a: Hook Exploration
Present all 8 hooks as a numbered menu. For each hook, write 1-2 example opening lines tailored to THIS story (use its transformation, 5-second moment, protagonist). Include one sentence per hook explaining WHY it works, naming the persuasion principle at play.
Example format:
1. **Curiosity Gap** — "Every team tracks velocity. Almost none track whether it mattered."
Opens a gap the reader needs closed. (Information-gap theory: withholding the answer creates pull.)
2. **Bold Claim** — "Your agent's safety benchmarks are measuring the wrong thing."
Stakes a position that demands proof. (Commitment bias: a strong claim earns the chance to back it up.)
3. ...End with: "Which pulls you in? You can pick one, combine ideas from two, or give me a direction and I'll draft something new."
Step 3b: Media & Visual Assets
Ask: "Are there links, images, screenshots, or data visualizations to embed? Blog posts with 2-3 visual breaks hold attention longer."
If yes, ask which should appear above the fold vs. further down.
If no, move on.
Step 3c: Call to Action
Ask: "What do you want people to do after reading this?"
Present 4-5 concrete examples:
- Leave a comment with their experience
- Subscribe to your newsletter
- Read a related piece you've written
- Try something specific based on the article
- Share it with someone who needs to read it
Reference the story's natural question from theQuestion and ask if they want to use it or something more specific.
Step 3d: Structure Recommendation
NOW recommend 2-3 structures. This comes after hook, media, and CTA are decided so reasoning can reference all three. For each structure:
- How it organizes the story beats (reference specific story elements)
- Why it fits the chosen hook (the transition from hook to body)
- Which persuasion principles it activates (by name, one sentence why)
- What it does well and what it sacrifices
Label one as Recommended, one as Alternative, optionally a third as Dark horse. Ask which feels right.
Step 3e: Platform Guidance
Ask: "Where will this be published?" (Medium, Substack, LinkedIn article, personal blog, not sure)
Give platform-specific guidance:
- Medium: 1000-1500 words. Strong opening line (no heading). Subheadings every 200-300 words. Lists and pull quotes break up text. Kicker line at the end.
- Substack: 1200-2000 words. More personal, more room to breathe. Readers expect depth. Opening can be slower. Footnotes and asides work well.
- LinkedIn article: 800-1200 words. Professional but not corporate. Short paragraphs (2-3 sentences). Bold key phrases. End with a question to drive comments.
- Personal blog: Flexible length. Match existing blog voice and structure. Ask about typical post length if unknown.
- Not sure: Default to 1200 words, clean structure that adapts to any platform.
Creative Brief Tone
- Have opinions. Say which hook you'd pick and why. Let the user override.
- Build on answers. Reference what they said in 3a when asking 3b.
- Ask one or two questions at a time. Never all 5 sub-steps at once.
- Use their words from raw.md and story.md.
- Be direct about trade-offs.
- Skip steps when the user already answered.
- If the user seems eager to see a draft, compress 3b-3e into one turn: "Before I write: any media to embed, what's the CTA, and where is this going?"
Step 4: Build the Article
Map story elements to sections:
- Hook line from selected hook type -> section 1 (no heading, cold open). First line grabs.
transformation.before+openingScene-> section 2 (setup). The "before" world.- Turns from story -> sections 3-4 (tension, building). Each turn earns its own section.
fiveSecondMoment-> section near the climax (no heading, let the moment land without introduction).transformation.after-> section on the shift. What changed and why.- Key insight -> takeaway section. What this means beyond the story.
theQuestion-> CTA (closing question, no heading). End with a genuine question.
Write the full article prose, not just an outline. Use Voice.md to match the user's style. Pull language from raw.md and story.md.
Section Rules
- Hook opens cold. No heading. First line grabs. The hook type determines the opening move.
- Headings are optional. Some beats land harder without a heading (hook, 5-second moment, CTA). Use
heading: ""to indicate no heading. - Word targets guide pacing. Setup needs room (150-250 words). The 5-second moment should be short and sharp (80-150 words). CTA is brief (50-100 words).
- Total word count: 800-2000 words depending on story complexity. Default ~1200.
- The article IS the story. Not a summary, not a listicle. It uses the narrative arc from craft-content, adapted to long-form.
- Use the user's words. Pull language from
raw.mdandstory.md. The article should sound like them, not like a content mill. - Subheadings create breathing room. But don't over-section. 4-6 headings for a 1200-word piece.
- No thesis statement up front. The reader discovers the point through the story.
- Apply humanizer rules to all prose.
Step 5: Present and Edit
Show the full article with frontmatter. Then ask: "Read through it. What do you want to change?"
Options the user can request:
- Edit specific sections
- Rewrite a section from scratch
- Rethink the structure
- Change the hook
- Tighten or expand word count
- Approve as-is
Loop until the user approves.
Step 6: Save Article
Write {stories}/{slug}/article-{hook}-{slug}-{YYYY-MM-DD}.md (e.g., article-curiosity-gap-why-we-rebuilt-onboarding-2026-03-01.md) with this format:
---
title: "Why Your AI Agent Needs Character, Not Just Guardrails"
type: article
status: draft
source: "[[Amplify/Stories/slug/story.md]]"
hook: curiosity-gap
structure: i-used-to-believe
persuasion: [contrast-principle, narrative-transportation]
platform: blog
wordCount: 1200
creativeBrief:
hookExplored: true
mediaAssets: []
cta: "What character traits would you want in your agent?"
platformTarget: "medium"
sections:
- id: 1
beat: hook
heading: ""
wordTarget: 80
- id: 2
beat: setup
heading: "The Agent That Passed Every Test"
wordTarget: 200
- id: 3
beat: tension
heading: "Then Someone Asked the Wrong Question"
wordTarget: 250
- id: 4
beat: five-second-moment
heading: ""
wordTarget: 150
- id: 5
beat: transformation
heading: "Character vs Compliance"
wordTarget: 200
- id: 6
beat: takeaway
heading: "What This Means for Anyone Building Agents"
wordTarget: 200
- id: 7
beat: cta
heading: ""
wordTarget: 100
---
Every team tracks velocity. Almost none track whether it mattered. That gap cost us two quarters.
## The Sprint That Hit Every Target
Two quarters ago we shipped every ticket on the board...
## Then Someone Asked the Wrong Question
...
It didn't refuse. It didn't deflect. It said: "I don't think that's who I want to be."
...
## Character vs Compliance
...
## What This Means for Anyone Building Agents
...
What character traits would you want in your agent? I'm genuinely asking.After saving, emit an article_created signal to {vaultPath}/{paths.signals}/signals.json:
{
"id": "sig-[timestamp]-[random6hex]",
"type": "article_created",
"timestamp": "[ISO timestamp]",
"data": {
"slug": "[story-slug]",
"storySource": "[[Amplify/Stories/slug/story.md]]",
"hook": "[hook-type]",
"structure": "[structure-name]",
"platform": "blog",
"wordCount": 1200
}
}Log to session memory at {vaultPath}/{paths.memory}/sessions/YYYY-MM-DD.md:
- **HH:MM** — article_created: Wrote [N]-word article for "[title]" (blog)Step 7: Hand Off
Report what was saved:
Article saved: {stories}/{slug}/article-{hook}-{slug}-{date}.md
Sections: {N} ({headingCount} with headings, {noHeadingCount} cold)
Word count: ~{wordCount}
Platform: blog
Where to publish:
- Medium: paste as-is, add a cover image
- Substack: paste as-is, the headings translate well
- LinkedIn article: paste the body, use the title as headline
- Personal blog: drop the markdown file directlyHumanizer
Run a humanizer pass on all article prose. No AI vocabulary (delve, landscape, crucial, leverage, robust, innovative). No filler phrases. Vary sentence length. Be specific. Preserve the user's voice from Voice.md.
The article should sound written by a person with opinions, not assembled by a system. Read each paragraph. If it sounds like a blog post template, rewrite it.
Story Folder Structure
{stories}/{slug}/
raw.md <- free write + interview (craft-content)
story.md <- pure narrative (craft-content)
video-{hook}-{slug}-{date}.md <- video timeline (draft-video)
carousel-{hook}-{slug}-{date}.md <- carousel cards (draft-carousel)
article-{hook}-{slug}-{date}.md <- blog post (draft-article)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.

