- Knowledge
- technology
- OOP
- Tips
- Programming
- Tips
- Tutorial
- SEO
- Ranking
- Knowledge
- Special Day
- Seo
- Bug
- Data science
- Seo
- artificial intelligence
- Machine Learning
- Robotics
- happyNewYear2021
- newYearEve
- 2021
- Automation
- Smart Home
- Career
- Best Practices
- Git
- Logging
- Web Fundamentals
- DNS
- HTTPS
- Performance
- AI Tools
- ChatGPT
- Claude
- Gemini
- Laravel
- Eloquent
- MySQL
- HTTPS
- TLS
- Web Security
- Certificates
- Developer Life
- Debugging
- Docker
- DevOps
- Transactions
- Queues
- LLMs
- AI
- AI Coding
- Developer Tools
- React Native
- Expo
- Kate PMS
- Mobile Apps
- Laravel
- Authentication
- Sanctum
- Cookies
- API Design
- Payments
- Idempotency
- DeepSeek
- Open Source AI
- LLMs
- AI News
- Git
- Version Control
- AI Coding
- Prompting
- PHP
- Checklist
- MCP
- AI Agents
- OpenAI
- Architecture
- Microservices
- Modular Monolith
- Estimation
- Developer Life
- Project Planning
- Humour
- OAuth
- OpenID Connect
- Authentication
- Embeddings
- Vector Search
- RAG
- pgvector
- OpenAI
- GPT-4.1
- Codex CLI
- Events
- Testing
- Clean Code
- Maintainability
- Code Review
- Webhooks
- API
- Security
- Claude Code
- Workflow
- AI
- LLM
- Prompt Injection
- Mobile
- React
- Networking
- TCP
- UDP
- HTTP/3
- CLAUDE.md
- AWS
- Cloud Security
- Backups
- PHPUnit
- Software Engineering
- Leadership
- Communication
- RAG
- Embeddings
- AI Engineering
- IT Infrastructure
- Networking
- Access Control
- CI/CD
- GitHub Actions
- Gemini CLI
- Claude Code
- JavaScript
- Async/Await
- Node.js
- Promises
- Security
- Cryptography
- Passwords
- MySQL
- Database
- Vibe Coding
- Software Quality
- DNS
- Code Reading
- Onboarding
- Productivity
- Background Jobs
- Developer Humour
- Estimates
- Dev Life
- JWT
- o3-mini
- DeepSeek R1
- Rate Limiting
- Kate PMS
- E-Signing
- Audit Trail
- REST
- GraphQL
- API Design
- Laravel 12
- Upgrade Guide
- Open Source
- Self-Hosting
- Task Scheduling
- Cron
- Secrets
- CORS
- PHP
- PHP-FPM
- OPcache
- GitHub Copilot
- Software Architecture
- Engineering
- TypeScript
- JavaScript
- Type Safety
- AI Security
- React Native
- Product Design
- AI Agents
- Kiro
- Queues
- Redis
- RabbitMQ
- AWS SQS
- Nginx
- Apache
- GPT-5
- gpt-oss
- Clean Code
- Architecture
- Naming
- Documentation
- Career
- ADR
- Teamwork
- Supply Chain
- Kate HRM
- HR Software
- Permissions
- System Design
- Pagination
- SSH
- Linux
- Big O
- Databases
- Laravel Boost
- MCP
- Developer Skills
- Validation
- Databases
- Indexes
- Code Quality
- Deployment
- Developer Humour
- Feature Flags
- Code Review
- Pull Requests
- Docker
- Cursor
- Authorization
- RBAC
- Gemini
- Long Context
- PHP 8.4
- Caching
- Dependency Injection
- Web Performance
- Browser
- CSS
- Database
- Migrations
- ChatGPT
- AI for Developers
- Monitoring
- On-Call
- REST
- Backend
- SQL
- NoSQL
- Database Design
- Coding Agents
- Claude 4
- API Resources
- REST API
- Load Balancing
- Scaling
- AWS
- AI Tools
- Claude
- Sora 2
- CTE
- 2FA
- TOTP
- Programming Languages
- Prompts
- Developer Workflow
- API Gateway
- APIs
- Passport
- API Auth
- Learning
- Burnout
- Developer Growth
- Web Development
- SEO
- Kate Mall
- ChatGPT Atlas
- Agent Skills
- Middleware
- Laravel 12
- Collections
- Context Window
- Monitoring
- Commit Messages
- Self Review
- Growth
- Regex
- Programming Basics
- Text Processing
- Database Design
- Normalization
- Linux
- Server Security
- Linux Foundation
- Open Standards
- Legacy Code
- Documentation
- AI Workflow
- File Uploads
- Test Data
- Hashing
- Performance
- Caching
- Enums
- Scope Creep
- Estimation
- Codex
- Gemini CLI
- Timezones
- Carbon
- Bugs
- PHP 8.5
- Gemini 3
- GPT-5.1
- Data Integrity
- Event Loop
- Async
- Opus 4.5
- AI Models
- React
- Forms
- Frontend
- Backups
- AI Images
- DALL-E
- Midjourney
- Race Conditions
- Concurrency
- Legacy Code
- Refactoring
- Senior Engineer
- Scope
- LLM
- CDN
- Web
- Sub-Agents
- Soft Deletes
- Audit Log
- Concurrency
- AI Learning
- NestJS
- AI Evals
- Policies
- SPF DKIM DMARC
- Unicode
- UTF-8
- Knowledge Graph
- Value Objects
- Technical Debt
- Feature Flags
- Laravel Pennant
- Deployment
- Copilot
- Composer
- Dependencies
- Artisan
- Automation
- AWS S3
- Object Storage
- Cloud
- Small Language Models
- Ollama
- Production
- Sessions
- HTTP
- Mentoring
- SQL
- Virtual Machines
- Web Development
- HTTP/2
- QUIC
- Web Performance
- AI Integration
- LLM API
- SOLID
- OOP
- Hosting
- Serverless
- Merge Conflicts
- Temperature
- AI Development
- Reverse Proxy
- Nginx
- Infrastructure
- Verification
- Passkeys
- WebAuthn
- Teams
- Communication
- Stakeholders
- Monorepo
- CI/CD
- Versioning
- JSON Schema
- Livewire
- Inertia
- Meetings
- Distributed Systems
- Privacy
- Full-Stack
- T-Shaped Skills
- Money
- Notifications
- Web Security
- HTTP Headers
- CSP
- Function Calling
- Load Testing
- k6
- Data Extraction
- Debugging
- WebSockets
- SSE
- Real-Time
- Laravel Reverb
- Infrastructure as Code
- Terraform
- Side Projects
- Laravel Pint
- OpenAPI
- Swagger
- UX
- Multimodal
- Jest
- Pair Programming
- APIs
- Rate Limiting
- Resilience
- Dev Humour
- Design Tokens
- JWT
- API Keys
- Sessions
- PHPStan
- Rector
- Incidents
- Reporting
- Dashboards
- Zero Trust
- IAM
- Search
- Laravel Scout
- Junior Developers
- Mentoring
- Images
- WebP
- AVIF
- Bug Reports
- Let's Encrypt
- Design Docs
- Software Design
- Observers
- Replication
- Accountability
- Data Structures
- Reliability
- LLM Memory
- Error Handling
- Payments
- Payment Gateway
- Webhooks
- PCI DSS
- Observability
- OpenTelemetry
- Personal Brand
- Writing
- Conventions
- Dates
- Scheduling
- Disaster Recovery
- Compression
- Brotli
- Deadlines
- Developer Habits
- State Machines
- Tech Roles
- UUID
- ULID
- Horizon
- Planning
- Engineering Culture
- Ownership
- Soft Skills
- Socialite
- Cost Control
- Collations
- Unicode
- Octane
- PostgreSQL
Custom Skills for AI Coding Agents: Turning Repeat Work Into a Routine
About Post
For a while, I kept a notes file of prompts. "When writing a migration, remember…", "When I ask for a LinkedIn post, follow these rules…", "Before touching this codebase, check…". Every few days I'd copy one into Claude Code, tweak it, and paste it in.
It worked, but it was me doing the remembering. The agent was smart; the process around it was a pile of sticky notes.
Custom skills replaced most of that file. A skill turns "the way I like this task done" into something the agent can find and follow on its own. If you do any task with an AI agent more than a couple of times a week, it's worth knowing how they work.
What a skill actually is
Strip away the name and a skill is surprisingly plain: a folder with a Markdown file of instructions, optionally with scripts, templates or reference files next to it. Anthropic introduced Agent Skills in October 2025, and in Claude Code they live in .claude/skills/ in a project, or in your home directory for skills you want everywhere.
The clever part is how they load. At the start of a session, the agent only sees each skill's name and a one-line description. When a task matches a description, it reads the full instructions. When the instructions mention a script or a reference file, it opens that only if needed.
That means you can have many skills without stuffing all of them into every conversation. It's the difference between giving a new hire a 300-page manual on day one and giving them a shelf of short manuals with clear labels on the spines.
Anatomy of a skill
Here's a small, generic example, a skill for drafting release notes:
---
name: release-notes
description: Draft release notes from merged pull requests since the
last tag. Use when asked for release notes, a changelog or "what shipped".
---
# Release notes
1. Find the latest tag and list merged PRs since then.
2. Group them: Features, Fixes, Internal. Skip dependency bumps.
3. Write each line for users, not developers: what changed for them.
4. Flag anything that needs a migration or config change at the top.
5. Show me the draft. Never publish or tag anything yourself.
## Style
- One line per change, past tense, no PR numbers in the text.
Three things are doing the work here:
- The description is the trigger. It's what the agent reads to decide whether this skill applies. Say what it does and when to use it, in the words you'd actually type.
- Numbered steps. Agents follow a clear sequence much more reliably than a paragraph of good intentions.
- Explicit boundaries. "Never publish or tag anything yourself" is the kind of line you only think to write after you've thought about what could go wrong.
Two skills I use
A post-writing skill. I publish posts on LinkedIn regularly, and the routine has many small rules: facts about my work I'm allowed to use, things I never mention, a rotation of formats so it doesn't get repetitive, and an image for most posts. The skill holds all of that. It tells the agent to read a file of facts and rules first, look at recent posts to choose a different format and topic, write the post, generate the image with a script, and then look at the image to check nothing is cut off before handing it over. I still review and edit every post. The skill just makes sure the boring checks are never skipped.
A codebase knowledge-graph skill. This one builds a map of a codebase, its modules and how they connect, so the agent can answer "what's involved when X happens?" without exploring dozens of files first. I wrote about the idea in more detail earlier this year. As a skill, it's one command away whenever I start work in a large repository.
What they have in common: both are tasks I do often, both have rules I'd otherwise have to repeat, and both end with a verification step.
What makes a skill good
Write the rules you keep repeating
The best source material for a skill is your own corrections. Every time you tell the agent "no, not like that", that sentence belongs in a skill.
Let scripts do the deterministic parts
If a step has one right answer (rendering an image, running a linter, formatting a file), put it in a script the skill calls. Language models are great at judgement and wording; a script is better at doing the same thing identically every time.
End with a check
"Run the tests", "open the generated file and confirm it looks right", "re-read the output against the rules above". A skill that verifies its own work catches far more mistakes than one that stops at "done".
Keep it short
Long skills get followed loosely. If a skill grows, move details into separate reference files and point to them from the main instructions, so they're only read when relevant.
Skill, project instructions or sub-agent?
Claude Code gives you a few places to put knowledge, and they're easy to mix up:
| Use | For | Loaded |
|---|---|---|
CLAUDE.md | Rules that apply to everything in this project: conventions, commands, "never do X" | Every session |
| Skill | A specific, repeatable task with its own steps and rules | When the task comes up |
| Sub-agent | Delegating a piece of work to a separate context, often in parallel | When the main agent hands off |
Other tools have their own versions of the same ideas: Cursor has project rules, GitHub Copilot has custom instructions, and many tools read an AGENTS.md file. The names differ; the principle is the same. Write down how you work, once, where the agent can find it.
When to make a skill: the third time you paste the same instructions into an agent. Not before, because you don't know the task well enough yet. Not much later, because by then you've wasted the time a skill would have saved.
Start with one
Pick the task you repeat most: writing tests in your project's style, preparing a PR description, reviewing a migration, drafting release notes. Write ten lines of instructions, use it for a week, and add a line every time it gets something wrong. That's honestly the whole method.
If you've built a skill (or a rules file, or a prompt library), what's the task it handles? I'm always looking for repetitive work I haven't thought of automating yet.

Be first to comment it...