.claude/skills/eng-blog/ — workflow reference
Takes raw engineer rambles — voice transcripts, Slack threads, meeting notes —
and produces polished engineering blog posts published to Notion. Diagrams generated via Nano Banana 2.
Trigger with /eng-blog or any subcommand.
graph TD
IN["Raw Input
voice / transcript / slack"] --> ING["1. Ingest"]
ING --> SPL{"Multiple
topics?"}
SPL -->|Yes| SPLIT["2. Split
into separate posts"]
SPL -->|No| OUT_REF
SPLIT --> OUT_REF["3a. Reference Selection
pick 3 best-fit articles from 8"]
OUT_REF --> OUT_R["3b. Outline Generation
3 agents × 3 lenses × 3 outlines"]
OUT_R --> OUT_S["3c. Score + Mashup
rank 9 → pick best + create hybrid"]
OUT_S --> OUT_C{"User
approves?"}
OUT_C -->|Yes| DRF["4. Draft
voice rules + anti-slop"]
OUT_C -->|"No — show backups"| OUT_ALT["Show backup
outlines"]
OUT_ALT --> OUT_C
DRF --> DIA["5. Diagrams
Nano Banana 2"]
DIA --> REV["6. Review
6-dim rubric + scorecard"]
REV --> PASS{"Score >= 3.5?"}
PASS -->|Yes| SEO["7. SEO Brief
Ahrefs keywords + metadata"]
PASS -->|No| FAIL{"Anti-slop
3+ fails?"}
FAIL -->|Yes| DRF
FAIL -->|No| REV
SEO --> ASM["8. Assemble & Share
HTML review page + Cloudflare"]
SEO -.->|"skip SEO"| ASM
ASM --> CF[("Cloudflare Pages")]
ASM --> REVISE["9. Revise
process team comments"]
REVISE --> REVCHK{"3+ changes?"}
REVCHK -->|Yes| REV
REVCHK -->|No| PUB["10. Publish
to Notion"]
PUB --> BLOG[("Blog Drafts DB")]
ING -.-> IDEAS[("Idea Tracker DB")]
classDef inputNode fill:#0d737722,stroke:#0d7377,stroke-width:2px
classDef splitNode fill:#b5761422,stroke:#b57614,stroke-width:2px
classDef outlineNode fill:#2563eb22,stroke:#2563eb,stroke-width:2px
classDef draftNode fill:#1e3a5f22,stroke:#1e3a5f,stroke-width:2px
classDef diagramNode fill:#7c4dbd22,stroke:#7c4dbd,stroke-width:2px
classDef reviewNode fill:#be123c22,stroke:#be123c,stroke-width:2px
classDef seoNode fill:#d9770622,stroke:#d97706,stroke-width:2px
classDef assembleNode fill:#6366f122,stroke:#6366f1,stroke-width:2px
classDef reviseNode fill:#ea580c22,stroke:#ea580c,stroke-width:2px
classDef publishNode fill:#05966922,stroke:#059669,stroke-width:2px
classDef dbNode fill:#78716c22,stroke:#78716c,stroke-width:2px
classDef decisionNode fill:#b5761411,stroke:#b5761488,stroke-width:1px
class IN inputNode
class ING inputNode
class SPL,PASS,FAIL,OUT_C,REVCHK decisionNode
class SPLIT splitNode
class OUT_REF,OUT_R,OUT_S,OUT_ALT outlineNode
class DRF draftNode
class DIA diagramNode
class REV reviewNode
class SEO seoNode
class ASM assembleNode
class REVISE reviseNode
class PUB publishNode
class BLOG,IDEAS,CF dbNode
If the ramble covers multiple distinct topics, split into separate posts. Each topic gets its own draft pipeline. The user picks which to draft first.
[DIAGRAM: ...]delve groundbreaking revolutionary game-changing unprecedented.
Replace leverage with "use". No sandwich structure or zoom-out conclusions.