$npx -y skills add jonathimer/devmarketing-skills --skill devrel-contentWhen the user wants to create technical content for developers including blog posts, tutorials, and documentation. Trigger phrases include "write a blog post," "technical article," "developer content," "tutorial," "devrel content," "dev blog," "technical writing," or "content for
| 1 | # DevRel Content |
| 2 | |
| 3 | This skill helps you create technical content that developers actually read: blog posts, tutorials, documentation, and thought leadership pieces that build trust and drive adoption. |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | ## Before You Start |
| 8 | |
| 9 | **Load your audience context first.** Read `.agents/developer-audience-context.md` to understand: |
| 10 | |
| 11 | - Who you're writing for (role, seniority, tech stack) |
| 12 | - Their pain points (what problems resonate) |
| 13 | - Verbatim language (how they describe things) |
| 14 | - Voice & tone (how formal/technical to be) |
| 15 | |
| 16 | If the context file doesn't exist, run the `developer-audience-context` skill first. |
| 17 | |
| 18 | --- |
| 19 | |
| 20 | ## The DevRel Content Framework |
| 21 | |
| 22 | ### Phase 1: Research & Validation |
| 23 | |
| 24 | Before writing anything, validate the topic is worth writing about. |
| 25 | |
| 26 | | Research Type | What to Do | |
| 27 | |--------------|------------| |
| 28 | | **Search intent** | Google your topic. What already ranks? What's missing? | |
| 29 | | **Community signals** | Search Reddit, HN, Stack Overflow. Are developers asking about this? | |
| 30 | | **Competitor gaps** | What have competitors written? What haven't they covered? | |
| 31 | | **Internal data** | Support tickets, Discord questions, GitHub issues about this topic | |
| 32 | | **Keyword research** | Use Ahrefs/SEMrush for search volume on technical terms | |
| 33 | |
| 34 | **Red flags** — Don't write if: |
| 35 | - You're the only one who cares about this topic |
| 36 | - 10 identical articles already exist |
| 37 | - The topic is too broad ("Introduction to JavaScript") |
| 38 | - The topic is too narrow (no search volume, no community interest) |
| 39 | |
| 40 | ### Phase 2: Content Type Selection |
| 41 | |
| 42 | Choose the right format for your goal: |
| 43 | |
| 44 | | Content Type | Best For | Structure | |
| 45 | |-------------|----------|-----------| |
| 46 | | **Tutorial** | Teaching a specific skill | Step-by-step, code-heavy | |
| 47 | | **Guide** | Covering a topic comprehensively | Sections, reference material | |
| 48 | | **Comparison** | Helping with decisions | Table-based, pros/cons | |
| 49 | | **Announcement** | Launching features/products | News lead, what/why/how | |
| 50 | | **Thought leadership** | Building authority | Opinion, predictions, takes | |
| 51 | | **Case study** | Social proof | Problem → Solution → Results | |
| 52 | | **Troubleshooting** | Solving specific errors | Error → Cause → Fix | |
| 53 | |
| 54 | ### Phase 3: Outline Structure |
| 55 | |
| 56 | Use this outline template: |
| 57 | |
| 58 | ```markdown |
| 59 | # [Title that promises specific value] |
| 60 | |
| 61 | ## Hook (2-3 sentences) |
| 62 | - State the problem or opportunity |
| 63 | - Establish credibility ("We migrated 10,000 repos...") |
| 64 | - Promise what the reader will learn |
| 65 | |
| 66 | ## Context (optional) |
| 67 | - Brief background if needed |
| 68 | - Link to prerequisites |
| 69 | |
| 70 | ## The Meat |
| 71 | ### Section 1: [First major concept] |
| 72 | - Explanation |
| 73 | - Code example |
| 74 | - Common pitfall |
| 75 | |
| 76 | ### Section 2: [Second major concept] |
| 77 | - Explanation |
| 78 | - Code example |
| 79 | - Real-world application |
| 80 | |
| 81 | ### Section 3: [Third major concept] |
| 82 | - Explanation |
| 83 | - Code example |
| 84 | - Advanced tip |
| 85 | |
| 86 | ## Putting It Together |
| 87 | - Complete example |
| 88 | - Working code |
| 89 | |
| 90 | ## What's Next |
| 91 | - Links to deeper content |
| 92 | - Call to action (try the product, join Discord, etc.) |
| 93 | ``` |
| 94 | |
| 95 | --- |
| 96 | |
| 97 | ## Writing Code Examples |
| 98 | |
| 99 | Code is the content. Get it right. |
| 100 | |
| 101 | ### The Copy-Paste Test |
| 102 | |
| 103 | Every code example must: |
| 104 | |
| 105 | | Requirement | Why It Matters | |
| 106 | |------------|----------------| |
| 107 | | **Run without modification** | Developers will copy-paste. If it fails, you lose trust. | |
| 108 | | **Include imports** | Don't assume they know which libraries to import. | |
| 109 | | **Show output** | What should they see when it works? | |
| 110 | | **Handle errors** | Real code has error handling. Show it. | |
| 111 | | **Use real values** | No `foo`, `bar`, `example.com` unless necessary. | |
| 112 | |
| 113 | ### Code Example Structure |
| 114 | |
| 115 | ```markdown |
| 116 | First, install the dependencies: |
| 117 | |
| 118 | \`\`\`bash |
| 119 | npm install your-library axios |
| 120 | \`\`\` |
| 121 | |
| 122 | Now create a file called `fetch-data.js`: |
| 123 | |
| 124 | \`\`\`javascript |
| 125 | // fetch-data.js |
| 126 | import { Client } from 'your-library'; |
| 127 | import axios from 'axios'; |
| 128 | |
| 129 | const client = new Client({ |
| 130 | apiKey: process.env.YOUR_API_KEY // Use environment variables |
| 131 | }); |
| 132 | |
| 133 | async function fetchUserData(userId) { |
| 134 | try { |
| 135 | const user = await client.users.get(userId); |
| 136 | console.log(`Fetched user: ${user.name}`); |
| 137 | return user; |
| 138 | } catch (error) { |
| 139 | console.error(`Failed to fetch user: ${error.message}`); |
| 140 | throw error; |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | // Example usage |
| 145 | fetchUserData('user_123') |
| 146 | .then(user => console.log(user)) |
| 147 | .catch(err => process.exit(1)); |
| 148 | \`\`\` |
| 149 | |
| 150 | Run it: |
| 151 | |
| 152 | \`\`\`bash |
| 153 | YOUR_API_KEY=sk_test_xxx node fetch-data.js |
| 154 | \`\`\` |
| 155 | |
| 156 | Expected output: |
| 157 | |
| 158 | \`\`\` |
| 159 | Fetched user: Jane Developer |
| 160 | { id: 'user_123', name: 'Jane Developer', email: 'jane@example.dev' } |
| 161 | \`\`\` |
| 162 | ``` |
| 163 | |
| 164 | ### Language-Specific Conventions |
| 165 | |
| 166 | | Language | Code Block | Package Install | Env Vars | |
| 167 | |----------|-----------|-----------------|----------| |
| 168 | | JavaScript/Node | `javascript` or `js` | `npm install` | |