Skills, hooks and automation: make Claude run your pipeline
Turn the things you ask for every week into one-word commands, trigger them automatically when a session ends, and use a panel of AI "experts" to sort material. How my content pipeline works.
- Claude Code skills
- hooks
- subagents
- headless mode
Once you've asked for the same thing three times, it should be a command. This is how my content pipeline turns every working session into Build Log, series and newsletter material without me doing anything extra.
Skills: saved procedures with a name
A skill is a folder with a SKILL.md file that tells Claude how to do one job. Project skills live in .claude/skills/<name>/SKILL.md:
---
name: make-newsletter
description: Assemble the next newsletter issue from this week's compiled items.
Use when the user says "make the newsletter" or "draft this week's issue".
---
# make-newsletter
1. Read every item in content/_pipeline/newsletter/ with status: new
2. Build the issue: Built this week · What broke · What I learned · One number
3. 350–600 words, first person, no em dashes
4. Mark the items used; report the subject line and word count
Type /make-newsletter and it runs. The description also lets Claude pick up the skill on its own when you ask for that job in plain words.
Split the work into stages
My pipeline has two stages, and each stage is a set of skills:
- Capture: a session becomes a neutral digest, then section material (build cards, series cards, newsletter items).
- Make: material becomes drafts (a case study, posts, an issue).
Capture never writes finished content; Make never reads raw sessions. Keeping the stages apart means each one is simple and can be re-run safely. /capture-all and /make-all chain them.
- SessionThe raw conversation
- CaptureA neutral digest
- Section materialBuild cards, series cards, newsletter items
- MakeDrafts, in my voice
- ReviewDrafts wait for me
A panel of experts
Deciding which of my five series a lesson belongs to is a judgement call, so one skill runs a panel of experts. Claude starts five subagents in parallel, one per series. Each gets only its own brief:
| Expert | Takes | Rejects |
|---|---|---|
| Build Log editor | this week's build: broke → fixed → learned | news, opinions |
| Production critic | a public demo tested to client standards | untested hype |
| Rebuild supervisor | an iconic shot remade with AI, with cost | any client work |
| Studio founder | earned lessons from running a studio | tech how-tos |
| Educator | a concept explained through creative work | dev-only content |
Each scores every item 0–10. Anything at 7 or above goes to that series, and every verdict goes in a log, so I can see why something was routed and tune the briefs.
Hooks: run things automatically
Hooks are commands Claude Code runs on events, like a session ending, a file being edited or a tool being used. They're configured in .claude/settings.json:
{
"hooks": {
"SessionEnd": [
{ "hooks": [{ "type": "command", "command": "node scripts/session-end-capture.mjs" }] }
]
}
}
My session-end script queues the finished session, then starts a background capture run.
Headless mode: Claude without the chat
claude -p "<prompt>" runs Claude Code non-interactively and exits. That's what the hook uses:
claude -p "/capture-all" --permission-mode acceptEdits \
--allowedTools "Read,Write,Edit,Glob,Grep,Agent"
Keep a command list
Once you have more than a few skills, keep a SKILLS.md at the project root listing every command, what it does and where it writes. You'll forget otherwise.
Automation checklist
- Anything asked for three times becomes a skill
- Stages kept separate: capture, then make
- Expert panels for judgement calls, with a verdict log
- Hooks for "when X happens, do Y"
- Tight limits on every background run
- A SKILLS.md command list
Next playbook3D and visuals with code: Blender scripts, scans and WebGL →
Bren Builds
What I built with AI this week, what broke, and what I learned. One email, weekly.