Hey, it's Jennie.
What do you Google when you're deploying to production? "Kamal deploy guide", "Rails production deployment", "Tailwind CSS Docker not working"... That's exactly how I started too.
Read the official docs, follow Stack Overflow answers, copy-paste from blog posts. Sounds reasonable, right?
But here's the thing.
I kept searching for the exact same stuff every single time I deployed. Tailwind CSS not working in production because of Apple Silicon, Docker cache getting corrupted, Kamal lock conflicts... Every time the same error hit, I'd search again, read again, try again. A single deploy was taking me 2-3 hours.
And that's just to get to "deploy successful." Without errors, it takes 10 minutes. But every time an error popped up, I'd fall into a search spiral.
The Limits of Web Search Guides
Let me use Kamal deployment as an example.
If you search "Kamal deploy Tailwind CSS not working" on Google, you get answers. But figuring out whether that answer actually fits your environment takes even more time.
| Problem | Web Search Result | My Actual Environment |
|---|---|---|
| Tailwind not working | "Run npm rebuild" | Apple Silicon + QEMU issue — needs a completely different fix |
| Docker build failing | "Clear cache" | .dockerignore was excluding the builds folder |
| Container won't start | "Check the logs" | OpenAI gem was auto-loading without an API key |
The search results weren't wrong. But connecting those answers to my specific project, my server, my environment — that was the mental work I had to do every single time.
So I Built Skills Instead
Claude Code has this concept called "Skills." You write a single markdown file and feed it an entire guide as rules.
My /deploy skill is a 671-line deployment automation agent. Here's what's inside:
1. Every error pattern I've ever encountered
🔴 CRITICAL: Tailwind CSS v4 + Apple Silicon QEMU issue
🔴 SQLite Database Locked
🔴 Development-only Gem LoadError
🟡 Docker build cache corruption
🟡 Kamal Lock conflicts
🟡 Optional Gem auto-loading failures
Every time I hit one of these errors, I wrote down the symptom → cause → fix directly into the skill file. Next time the same error fires, Claude pattern-matches and fixes it automatically.
2. Automated resolution pipeline
3. Human intervention — only when actually needed
SSH key issues, DNS settings, server permissions — Claude can't fix those. The skill only asks for help on those. Everything else gets handled automatically.
Before vs After
| Metric | Web Search | /deploy Skill |
|---|---|---|
| Deploy time (no errors) | ~10 min | ~10 min |
| Deploy time (with errors) | 2-3 hours | 15 minutes |
| Same error recurring | Search again | Auto-resolved |
| Apple Silicon handling | Remember every time | Pre-validation catches it |
| Post-deploy verification | Manual checks | Automated (including CSS size comparison) |
The key difference is what happens when errors hit. Web search restarts from zero every time. But the skill already knows the fix — it pattern-matches, applies the solution, and retries.
This Pattern Works for Every Type of Deploy
After seeing how well /deploy worked for web servers, I thought — why not do the same for every deployment?
App deployment is the same story. Search "iOS App Store deployment guide" and you get hundreds of results, but your project's certificate setup, provisioning profiles, and build number rules are different every time. Android is the same — signing keys, Google Play Console settings, build variants... search every time, get lost every time.
But when you build it into a skill? Your project's signing key path, your app's bundle ID, your CI/CD pipeline — it's all right there. /ios-deploy and you're done. /and-deploy and you're done.
Web search guides say "generally, do this." Skills say "for YOUR project, do this."
The Insight
Web search isn't bad. When you hit a problem for the first time, searching is the right move. But if you're Googling the same problem for the second time, that's the signal to turn it into a skill.
Write down the symptom, cause, and fix in a single markdown file. Next time, you won't need to search. The AI reads it, applies it, and verifies it — all automatically.
Search is a tool for discovering problems. Skills are a tool for eliminating them.
— Jennie
Get the Skills
Want to try these skills yourself? Here are the full source files:
- /deploy — Kamal deployment automation with 671 lines of error patterns and auto-recovery (web server)
- /and-deploy — Android AAB build + Google Play Console upload automation
- /ios-deploy — iOS IPA build + App Store Connect upload via Transporter
How to use
- Click Raw on the Gist page and copy the entire content
- Save it as a
SKILL.mdfile in your project:.claude/skills/{skill-name}/SKILL.md - Open Claude Code and type
/{skill-name}to run
Responses (0)