Claude Code skill that transforms codebases into developer content. 5-phase gated workflow, 3 specialized agents, 13 slash commands. Generate blog posts, tutorials, Twitter threads, LinkedIn posts, READMEs, newsletters, video scripts, and conference talks—all grounded in actual c
SaferSkills independently audited code-to-content (Agent Skill) and scored it 92/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 2 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Transform codebases into compelling developer content through a mandatory 6-phase process with verification gates.
Core premise: when AI makes competent prose free, grounded-but-generic content gets ignored. The thing that wins is information only the builder knows, written the way only they would write it. This skill's evidence and readability machinery stops content from being bad; Phase 2 (Differentiation Discovery) and references/differentiation.md stop it from being generic. The governing test, applied at delivery: cover the logo, swap in a competitor's name — if it still reads fine, it failed.
This skill includes 3 specialized agents for parallel execution:
| Agent | Purpose | When to Launch |
|---|---|---|
content-explorer | Discovers story angles, analyzes codebase for content opportunities | Phase 1: Launch 2-3 in parallel with different focus areas |
format-specialist | Optimizes content for specific platforms and formats | Phase 4-5: Launch per format needed |
quality-reviewer | Validates against checklists, readability thresholds, evidence grounding, distinctiveness | Phase 6: Launch 2-3 in parallel with different review dimensions |
Phase 1 - Code Analysis:
Launch 3 content-explorer agents in parallel:
├── Agent 1: "Find performance and optimization story angles"
├── Agent 2: "Find architecture and design decision angles"
└── Agent 3: "Find developer experience and tooling angles"
Consolidate: Merge findings, deduplicate, select top 3-5 anglesPhase 6 - Quality Review:
Launch 4 quality-reviewer agents in parallel:
├── Agent 1: "Review structure and format compliance"
├── Agent 2: "Review readability and audience fit"
├── Agent 3: "Review evidence grounding and technical accuracy"
└── Agent 4: "Review distinctiveness — swap-the-name test + AI-tells blocklist"
Consolidate: Merge issues, prioritize by severity, address blocking itemsNEVER load all references at once. Load only what's needed for the current format:
| Format | Load These References |
|---|---|
| Blog Post | formats.md#blog, optimization.md#seo, optimization.md#storytelling, checklists.md#blog, code-snippets.md |
| Tutorial | formats.md#tutorial, cognitive-load.md, checklists.md#tutorial |
| Twitter/X Thread | formats.md#twitter, social-content.md, checklists.md#twitter, code-snippets.md |
| LinkedIn Post | formats.md#linkedin, social-content.md, checklists.md#linkedin, code-snippets.md |
| README | documentation.md#readme, checklists.md#readme |
| API Docs | documentation.md#api, checklists.md |
| Newsletter | newsletters.md, checklists.md#newsletter |
| Video Script | formats.md#video, checklists.md |
| Conference Talk | conference-talks.md, checklists.md#conference |
| Product Launch | product-launch.md, posting-plan.md |
| Build-in-Public | build-in-public.md, social-content.md |
| Cascade | content-cascade.md, social-content.md, code-snippets.md |
Always Load:
phase-gates.md — Gate verification criteria (required for all phases)differentiation.md — Swap-the-name test, the three moves, AI-tells blocklist (required for Phase 2 and Phase 6)readability-guide.md — Readability validation (required for Phase 6)Load On-Demand:
analysis-prompts.md — Only if running Claude-native analysis (Phase 1)project-analysis.md — Differentiation Discovery protocol + developer interview (Phase 2)audiences.md — Only if audience calibration needed (Phase 3)brand-voice.md — Founder-voice application; tech-stack fallback (Phase 3)cognitive-load.md — Only if complex content requiring progressive disclosure (Phase 5)diagram-templates.md — Only if visual assets required (Phase 5)code-snippets.md — Only if content includes code examples for social sharingconference-talks.md — Only if generating CFP or talk outlinedocumentation.md — Only if generating README, API docs, or architecture docsmcp-integration.md — Only if posting via MCP servers (Delivery)You MUST complete all 6 phases in order. Each phase has a gate that MUST pass before proceeding.
PHASE 1 ──[Gate]──> PHASE 2 ──[Gate + Confirm]──> PHASE 3 ──[Gate + Confirm]──> PHASE 4 ──[Gate]──> PHASE 5 ──[Gate]──> PHASE 6 ──[Gate]──> DELIVERY
Code Differentiation Audience & Content Optimization Verification
Analysis Discovery Format Generation & DeliveryPhase 2's founder interview is always offered, never blocking: if the user declines, proceed on code alone and carry a Distinctiveness: AT RISK flag to the Phase 6 report. See references/phase-gates.md for detailed gate verification criteria.
Phases 2 and 3 require explicit user confirmation before proceeding.
| After Phase | Present | Wait For |
|---|---|---|
| 2 | Project Brief + Differentiation Brief (WHY, spiky claim, roads not taken, voice, angles) | "Yes" / "Use angle #" / "Add context" |
| 3 | Audience Contract (audience, format, voice, thresholds) | "Yes" / "Change audience" / "Different format" |
The Phase 2 confirmation is also where the differentiation interview is offered. Skip confirmations when: User says "proceed without confirmations", using Quick Mode, or iterating on existing content. (Skipping confirmation does not skip the Phase 2 offer — it just doesn't wait; the offer can still be declined.)
You MUST complete this phase before any content generation. This phase mines the codebase for the WHAT — tech stack, architecture, story hooks. The WHY, opinion, and roads-not-taken come from the human in Phase 2.
Choose based on task complexity:
| Option | When to Use | Method |
|---|---|---|
| Agent-Parallel | Complex projects, multiple content types | Launch 2-3 content-explorer agents in parallel |
| Inline Analysis | Simple projects, single content piece | Follow inline protocol below |
Launch multiple content-explorer agents with different focus areas:
Agent 1: "Analyze [project] for performance and optimization story angles"
Agent 2: "Analyze [project] for architecture and design decision angles"
Agent 3: "Analyze [project] for developer experience and tooling angles"Consolidate agent outputs into unified Project Brief.
Follow references/analysis-prompts.md for Claude-native analysis:
## Project Brief: [Name]
### Tech Stack
- **Language:** [primary]
- **Framework:** [framework]
- **Architecture:** [pattern]
- **Voice Profile (fallback):** [precise/pragmatic/accessible/direct — replaced by founder voice if Phase 2 captures one]
### Content Angles (3+ Required)
1. [Angle with evidence: file:line or commit]
2. [Angle with evidence]
3. [Angle with evidence]
### Story Hooks
- [Hook 1 with source reference]
- [Hook 2 with source reference]You MUST verify before proceeding:
STOP if: No content-worthy insights found after analysis.
Proceed directly to Phase 2 (no user wait yet — confirmation happens after the Differentiation Brief is assembled).
The code told you WHAT. This phase gets the WHY, the opinion, and the roads not taken — the material a competitor could not republish. Load references/differentiation.md and references/project-analysis.md.
This phase always runs. Its founder interview is ALWAYS OFFERED and NEVER BLOCKING. If the user declines, proceed on code alone and set Distinctiveness: AT RISK.
"To make this unmistakably yours — something a competitor couldn't republish — I can (a) ask you 4–5 quick questions, (b) take raw material (a Slack thread, support tickets, a 2-minute voice-memo transcript, rough notes), or (c) polish a rough draft you write (write it ugly; I'll keep your voice). Or I can proceed from the code alone. Which do you want?"
project-analysis.md §4 for the full question set):Append to the Project Brief:
### Differentiation Brief
- **THE WHY:** [thesis to lead with]
- **THE SPIKY CLAIM:** [defensible opinion — or "none captured"]
- **ROADS NOT TAKEN:** [what they didn't build + trade-off — or "none captured"]
- **FOUNDER VOICE:** sounds like [anchor] · never [rejections] · source: [interview/transcript/draft/NONE]
- **RAW MATERIAL:** [slack/tickets/transcript/notes — or "none"]
- **DISTINCTIVENESS FORECAST:** [ON TRACK | AT RISK]You MUST verify before proceeding:
This gate never STOPS delivery. AT RISK is allowed — it just propagates a loud warning to Phase 6. Do not block on missing founder input.
Present the combined Project Brief + Differentiation Brief and WAIT for confirmation.
Display: tech stack, 3+ angles, the WHY, the spiky claim, roads not taken, recommended angle.
Ask: "Proceed with this analysis? [Yes / Use angle # / Add context]"
DO NOT proceed to Phase 3 until user confirms (unless confirmations are skipped).
You MUST declare audience and format before generating content.
| Audience | Assumed Knowledge | Jargon Tolerance |
|---|---|---|
| Beginner | Basic programming concepts | 2% max |
| Intermediate | Language proficiency, common patterns | 4% |
| Expert | Deep domain knowledge | 8% |
| Hiring Manager | Technical literacy, not expertise | 2% |
NONE (offer declined), fall back to the tech-stack heuristic — which is safe but swappable:| Stack | Voice (fallback only) |
|---|---|
| Rust | Precise, safety-conscious |
| JavaScript/TypeScript | Pragmatic, conversational |
| Python | Clear, accessible |
| Go | Direct, minimal |
| Infrastructure | Operational, cautious |
See references/audiences.md for full calibration rules and references/brand-voice.md for applying a captured founder voice.
You MUST verify before proceeding:
STOP if: Audience mixing detected or format incompatible.
Present the Audience Contract to user and WAIT for confirmation.
Display:
Ask: "Proceed with this targeting? [Yes / Change audience / Different format]"
DO NOT proceed to Phase 4 until user confirms.
This is the last confirmation before content generation begins.
You MUST ground all claims in project evidence — and lead with the Differentiation Brief.
assets/templates/none captured for these, do not invent them — generate honestly and let Phase 6 flag AT RISK.Each format has a dedicated template in assets/templates/:
| Format | Template | Structure |
|---|---|---|
| Blog Post | blog_post.md | WHY/Thesis → Problem → Journey → Roads Not Taken → Solution → Results |
| Tutorial | tutorial.md | Prerequisites → Steps (5-9) → Troubleshooting |
| Twitter/X | twitter_thread.md | Hook → Context → Insight → CTA |
| README | readme.md | Problem → Quick Start → Design Philosophy → Configuration |
linkedin_post.md | Hook → Story → Takeaways (800-1300 chars) | |
| Newsletter | newsletter.md | See also references/newsletters.md |
| Video Script | video_script.md | Hook → Sections → Recap |
| Conference Talk | — | See references/conference-talks.md |
Load the appropriate template and follow its structure.
You MUST verify before proceeding:
STOP if: Claims cannot be traced to evidence.
You MUST optimize for audience and platform.
| Complexity | Approach |
|---|---|
| Low (deps < 10) | Single-pass explanation |
| Medium (deps 10-30) | Concept first, then implementation |
| High (deps > 30) | Progressive disclosure with checkpoints |
references/diagram-templates.md for Mermaid templates)See references/optimization.md for full optimization rules.
You MUST verify before proceeding:
You MUST NOT deliver content that fails verification.
| Option | When to Use | Method |
|---|---|---|
| Agent-Parallel | Complex content, high-stakes delivery | Launch 2-3 quality-reviewer agents |
| Inline Validation | Simple content, quick delivery | Follow inline protocol below |
Launch multiple quality-reviewer agents with different focus areas:
Agent 1: "Review for structure and format compliance"
Agent 2: "Review for readability and audience fit"
Agent 3: "Review for evidence grounding and technical accuracy"
Agent 4: "Review for distinctiveness: run the swap-the-name test and AI-tells blocklist"Consolidate findings, address all Critical and High severity issues before delivery.
references/checklists.md. Universal checks: hook, single takeaway, audience depth, voice, code syntax.references/readability-guide.md. Thresholds: Beginner ≤8.0 grade/2% jargon, Intermediate ≤12.0/4%, Expert ≤16.0/8%.references/differentiation.md. Run the swap-the-name test, the AI-tells blocklist, and score the Distinctiveness Score (0–5).You MUST verify before delivery:
DO NOT DELIVER until the first four checks pass. Distinctiveness is reported, not gated — but if the Distinctiveness Score is 0–2, surface the AT RISK warning prominently and offer to run Phase 2 before publishing.
Include with final content:
## Quality Report
- **Audience:** [declared audience]
- **Format:** [format type]
- **Readability Grade:** [estimated grade] / [max for audience]
- **Jargon Density:** [percentage] / [max for audience]
- **Evidence Status:** All claims grounded
- **Checklist:** [X/X] items passed
- **Distinctiveness Score:** [N]/5 [(missing: ...)]
- **Swap-the-name test:** [PASS | AT RISK]
- **Founder input:** [used (source) | declined → AT RISK]
**Verdict:** APPROVED FOR DELIVERYSTOP and inform user when: No insights found (Phase 1), audience unclear or mixed (Phase 3), claims lack evidence (Phase 4), or readability fails (Phase 6). Do NOT stop when founder input is declined in Phase 2 — proceed on code alone and flag AT RISK.
Each phase output is required input for the next: Code Brief → Differentiation Brief → Audience Contract → Draft → Optimized Content → Verified Deliverable. You MUST NOT skip phases.
Load on-demand. Always load: phase-gates.md, differentiation.md, readability-guide.md
| Phase | Key References |
|---|---|
| 1 | analysis-prompts.md |
| 2 | differentiation.md, project-analysis.md |
| 3 | audiences.md, brand-voice.md |
| 4 | formats.md, templates in assets/templates/ |
| 5 | optimization.md, cognitive-load.md, diagram-templates.md |
| 6 | checklists.md, readability-guide.md, differentiation.md |
Format-specific: newsletters.md, social-content.md, conference-talks.md, documentation.md, product-launch.md, build-in-public.md, code-snippets.md, code-explainers.md, posting-plan.md, mcp-integration.md
| Mode | Commands | Description |
|---|---|---|
| Full | /c2c:blog, /c2c:tutorial, /c2c:twitter, /c2c:readme, /c2c:linkedin, /c2c:newsletter, /c2c:video-script, /c2c:conference-talk, /c2c:product-launch | All 6 phases |
| Quick | /c2c:quick-twitter, /c2c:quick-linkedin, /c2c:quick-blog, /c2c:quick-readme | Reduced phases for rapid generation |
| Cascade | /c2c:cascade | Multi-platform repurposing from source |
See references/commands.md for full usage details. Commands are in .claude/commands/c2c/.
See examples/ for input/output demonstrations:
blog-post/, twitter-thread/, readme/ — Positive examples with input and outputnegative/ — Gate failures with correctionsworkflow/ — Full 6-phase processTest skill with evaluation/evaluation.xml (18 QA pairs covering template structure, audience thresholds, voice calibration, and quality gates).
| Issue | Cause | Fix |
|---|---|---|
| Generic / swappable content | No WHY/opinion/roads — Phase 2 skipped or declined | Run Phase 2; apply differentiation.md swap-the-name test; lead with the thesis |
| Reads like AI | "We're excited to announce…", "not just X, it's Y", delve/seamless | Run the AI-tells blocklist in differentiation.md |
| Confusing tutorial | Multiple actions per step | One action per step with checkpoints |
| Weak blog hook | Starting with background | Open with the WHY/thesis, NEVER "In this article..." |
| Voice mismatch | Used tech-stack fallback when a founder voice existed | Apply captured FOUNDER VOICE from the Differentiation Brief; tech-stack table is fallback only |
When MCP servers (twitter-mcp, linkedin-mcp, buffer-mcp) are available, this skill can post directly to platforms. See references/mcp-integration.md for setup. Without MCP, templates include copy-ready format with character counts.
This skill supports automatic content validation via Claude Code hooks.
See references/hooks-guide.md for setup and customization.
All core analysis is Claude-native with no dependencies. Optional Python 3 for automatic hooks validation.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.