Claude Code is a terminal-based coding agent that can automate the repetitive parts of your development workflow, not just generate code.
This article isn't about installation or basic usage. It's written for developers already using Claude Code who want to learn how to design Skills that deliver meaningful automation and consistency in real-world projects.
Among Claude Code's features, Skills are the main way to define how Claude should handle repeatable tasks and follow your project's engineering conventions. In this article, we'll look at how they keep code quality consistent across a team.
Updated July 2026 — The January version of this guide described Skills as single
.mdfiles in.claude/commands/. Skills have since become directory-based (.claude/skills/<name>/SKILL.md), adopted a formal frontmatter specification, and become an open standard at — save it as.claude/skills/code-review/SKILL.mdin your project. The directory name is what creates the/code-reviewcommand.
Claude Code already ships a bundled
/code-reviewskill. Adding your owncode-reviewskill at the personal or project level overrides the bundled version—which is exactly what I want here: a review driven by my rule files, not a generic one.
Why This Skill Is Powerful
- Rule-driven checklists — The skill loads
.claude/rules/dynamically instead of hardcoding policies, so the same skill works in every project and stays aligned with the current rule files.
- Severity Level definitions — CRITICAL/WARNING/SUGGESTION priorities prevent getting lost in minor issues.
- Explicit execution process — A five-step procedure makes the review process more consistent.
4. Example Output
Running
/code-reviewin the terminal produces results like this:
CODE> /code-review src/user/api/user_router.py
🔍 Reviewing: src/user/api/user_router.py
## Architecture Violations Found
### 🚨 CRITICAL (2)
**Line 45**: Direct Repository import detected
- Found: `from src.user.repositories.user_repository import UserRepository`
- Fix: Remove this import. Use Service layer instead.
**Line 78**: Business logic in API layer
- Found: `if user.age >= 18 and user.verified:`
- Fix: Move this validation to UserService.validate_user_eligibility()
### ⚠️ WARNING (1)
**Line 23**: Service manually instantiated
- Found: `service = UserService()`
- Fix: Use `service: UserService = Depends(get_user_service)`
### 💡 SUGGESTION (1)
**Line 12**: Consider adding return type hint
- Current: `async def get_user(user_id: int):`
- Suggested: `async def get_user(user_id: int) -> StandardResponse[UserResponse]:`
---
Summary: 2 critical, 1 warning, 1 suggestion
Run `/code-review --fix` to auto-fix applicable issues.
One command produces a repeatable first-pass architecture review based on your project's documented rules. It doesn't replace human review—but it catches routine violations before a pull request ever reaches another developer.
Security Note: Review Skills Before Trusting Them
The same two features that make skills powerful make them worth auditing. Skills are executable workflow definitions, not passive documentation:
allowed-toolspre-approves tool usage for the duration of the skill—no permission prompts.
- Dynamic context expressions like
!`command`run during preprocessing, before the rendered skill content ever reaches the model.
- A skill checked into an unfamiliar repository deserves a read before you accept workspace trust. (You can disable shell preprocessing entirely with the
disableSkillShellExecutionsetting.)
- Keep permissions narrow:
Bash(git *)beatsBash(*), and list only the tools the procedure actually needs.
5. Where Skills Provide the Most Value
① Consistent Code Quality
Human reviewers vary by mood and energy. A well-defined Skill applies the same checklist every time, reducing variation and making common omissions less likely.
② Encapsulating Complex Workflows
Tasks that touch multiple files (adding a new API endpoint requires Router, Service, Schema, and Test files) can be bundled into a single Skill, reducing the chance of missing a step.
③ Knowledge as an Asset
Embed your design philosophy into Skill files and share via Git. Junior developers can generate code that is consistently aligned with documented senior guidelines. And because Skills follow an open standard, the SOPs you encode aren't locked into one tool.
6. Practical Patterns
These are skills currently in my
~/.claude/skills/and project.claude/skills/directories—not hypotheticals:
Skill Command
What It Does
/code-review
Check architecture violations against .claude/rules/with severity levels and--fix
/commit-push
Stage, generate a conventional commit message, confirm, push
/create-post
Scaffold a new blog post following every content convention (slug rules, image folders, frontmatter schema)
/feature-image
Crop and convert cover images to 16:9 WebP under a size budget
/review-skill
The meta one: audit SKILL.mdfiles against the open standard, with--fix
Notice the pattern in the last row—once your process knowledge lives in files, you can write skills that maintain other skills.
7. Key Tips for Designing Skills
- Craft your description carefully — It's the primary signal Claude uses to decide when to load a Skill automatically. Describe both what the skill does and when to use it: "Review code for Clean Architecture compliance" beats "Code review."
- Link to Rules — Instead of duplicating policies inside the skill, load them:
.claude/rules/is the single source and the skill is the procedure that applies it.
- Make checklists explicit — "Review this code" produces inconsistent results. "Check these 5 things" delivers reliability.
- Define Severity Levels — Not all issues are equal. Include priority criteria in your Skill.
- Add verification steps — Always end with "verify the modified code builds" or "run lint" as a final check.
- Keep
SKILL.mdlean — Under ~500 lines. Move deep reference material toreferences/files that load on demand; the skill body occupies context for the whole session.
- Control the trigger — Side-effect workflows (deploy, commit, publish) get
disable-model-invocation: true. Guardrails belong in frontmatter, not in hope.
- Combine with MCP — If you have MCP servers connected to external tools (GitHub, databases), you can write instructions like "query the DB schema before writing code" for smarter automation.
Conclusion
Claude Code Skills turn repeated instructions into reusable, version-controlled workflows.
Their quality depends less on clever prompting than on how clearly you've defined the process Claude should follow.
If your team repeatedly explains the same conventions during code reviews, those conventions are good candidates for a Skill. Start with one narrow workflow, test it against real tasks, and refine it as your process changes.
In the next article, we'll explore Custom Agents—how to build AI that autonomously decides when to use which Skill.
Series:
- — Teaching AI when to act
Originally published at jamongx.com.
↗ Original-Artikel auf dev.to lesenVollständiger Original-BerichtAusführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
SOCIAL SHARE CARD GENERATOR