All Posts

Skills - Embed Your Rules Into AI | Claude Code Series

January 2, 2026    10 min read

Skills - Embed Your Rules

Stop repeating yourself. Let Claude remember your standards.

Every company has rules. Every team has standards. Every person has preferences.

  • "We always include a risk assessment in project proposals"
  • "User stories must have acceptance criteria"
  • "Data exports need GDPR compliance checks"
  • "Emails to clients follow this tone..."

You repeat these rules constantly. To new team members. To AI assistants. To yourself when you forget.

What if you could write them down once, and Claude would apply them automatically - forever?

That's what Skills do.


What Are Skills?

Skills are markdown files that teach Claude specialized knowledge. You write your rules in a file. Claude reads it and applies those rules whenever relevant.

The key difference from commands:

  • Commands = You run them explicitly (/start_my_day)
  • Skills = Claude uses them automatically when they match your request

Ask Claude to "draft a client email" and it automatically applies your writing style skill. Ask to "review this data export" and it applies your GDPR compliance skill.

No reminders needed. The rules are embedded.


How Skills Work

+-----------------+    +-----------------+    +-----------------+
|   You create    | -> |  Claude loads   | -> |  Rules apply    |
|   SKILL.md      |    |  at startup     |    |  automatically  |
+-----------------+    +-----------------+    +-----------------+
  1. You write rules in a SKILL.md file
  2. Claude loads skill names and descriptions at startup
  3. When your request matches a skill's description, Claude asks to use it
  4. Claude follows the skill's instructions

Skill File Structure

Skills live in .claude/skills/ folders. Each skill is a directory containing a SKILL.md file:

.claude/
└── skills/
    ├── company-writing-style/
    │   └── SKILL.md
    ├── gdpr-compliance/
    │   └── SKILL.md
    └── meeting-standards/
        └── SKILL.md

Where to Put Skills

Location Path Who Gets It
Personal ~/.claude/skills/ Only you, all projects
Project/Team .claude/skills/ Everyone in the repo

Pro tip: Put team skills in the project folder and commit to git. Everyone gets the same standards automatically.


SKILL.md Format

Every skill needs a SKILL.md file with YAML frontmatter:

---
name: skill-name
description: What this skill does. When to use it.
---

# Your Rules Here

Write your instructions, checklists, templates...

The description is crucial - Claude uses it to decide when to apply the skill. Include keywords users would naturally say.


Real Examples for Smart Workers

Here are skills that match what we discussed - company rules, team standards, compliance checks.

1. Company Writing Style

Every company has a voice. Encode it once.

Path: ~/.claude/skills/company-writing-style/SKILL.md

---
name: company-writing-style
description: Apply company writing standards to emails, documents, and communications. Use when drafting emails, writing documents, or when user asks to write anything external.
---

# Company Writing Standards

## Our Voice
- Professional but human
- Clear over clever
- Confident, not arrogant
- Solution-focused

## Email Rules
- Subject line: Action + Topic (e.g., "Review needed: Q4 Budget")
- Greeting: "Hi [Name]," (never "Dear")
- First sentence: State the purpose immediately
- Body: Max 3 paragraphs
- Sign-off: "Best regards," for external, "Thanks," for internal
- Always include next steps or ask

## Words We Use
- "Challenge" not "problem"
- "Opportunity" not "issue"
- "Team" not "resources"
- "Invest" not "spend"

## Words We Avoid
- Jargon without explanation
- Passive voice when active works
- "ASAP" (give actual dates)
- "Per my last email" (just restate)

## Client Communication
- Always acknowledge their concern first
- Provide timeline for resolution
- End with commitment, not apology

## Example

**Before:**
> Per our discussion, I wanted to circle back regarding the deliverables. Please advise on next steps ASAP.

**After:**
> Following up on our call about the Q4 deliverables. Can you confirm the final requirements by Thursday so we can hit the Dec 15 deadline?

2. Team Meeting Standards

Consistent meetings, every time.

Path: .claude/skills/meeting-standards/SKILL.md

---
name: meeting-standards
description: Apply team meeting standards when creating agendas, taking notes, or processing meeting content. Use when user mentions meetings, agendas, meeting notes, or action items.
---

# Team Meeting Standards

## Agenda Format
Every meeting agenda must include:

## [Meeting Name]
Date: [Date] | Time: [Duration] | Location: [Room/Link]

### Attendees
- Required: [names]
- Optional: [names]

### Objectives
1. [What we need to decide/accomplish]

### Agenda Items
| Time | Topic | Owner | Type |
|------|-------|-------|------|
| 5 min | [Topic] | [Name] | Inform/Discuss/Decide |

### Pre-read
- [Links to documents to review before]

### Notes
[To be filled during meeting]

## Meeting Notes Format

## Meeting Summary: [Name]
Date: [Date]

### Decisions Made
- [Decision]: [Rationale]

### Action Items
| Action | Owner | Due Date |
|--------|-------|----------|
| [Task] | [Name] | [Date] |

### Key Discussion Points
- [Topic]: [Summary of discussion]

### Parking Lot
- [Items to address later]

### Next Meeting
[Date/time if scheduled]

## Rules
- No meeting without agenda sent 24h before
- Action items must have owner AND due date
- Notes sent within 24h of meeting
- Standing meetings reviewed monthly for necessity

3. GDPR Compliance Checker

Data protection rules for every feature touching user data.

Path: .claude/skills/gdpr-compliance/SKILL.md

---
name: gdpr-compliance
description: Check GDPR compliance for features, data exports, or anything handling personal data. Use when user mentions GDPR, privacy, personal data, user data, data export, or compliance.
---

# GDPR Compliance Checker

## When This Applies
- Any feature collecting user data
- Data exports or reports with personal info
- Third-party integrations receiving user data
- User account features
- Analytics implementations

## Quick Checklist

### Data Collection
- [ ] What personal data is collected? (List specific fields)
- [ ] Lawful basis identified? (Consent/Contract/Legal/Vital/Public/Legitimate)
- [ ] Only necessary data collected? (Data minimization)
- [ ] Privacy notice updated?

### Data Storage
- [ ] Where is data stored? (EU/non-EU)
- [ ] Encryption at rest?
- [ ] Retention period defined?
- [ ] Deletion process exists?

### User Rights
- [ ] Can user access their data?
- [ ] Can user export their data? (Portability)
- [ ] Can user delete their data? (Erasure)
- [ ] Can user correct their data? (Rectification)

### Third Parties
- [ ] Data Processing Agreement signed?
- [ ] Sub-processors documented?
- [ ] Transfer mechanism for non-EU? (SCCs/Adequacy)

## Red Flags
Flag immediately if:
- Collecting data "just in case"
- No consent mechanism for marketing
- Storing data indefinitely
- Sharing with third party without DPA
- No way to delete user data
- Children's data without parental consent

4. User Story Standards (For POs)

Consistent user stories across the team.

Path: .claude/skills/user-story-standards/SKILL.md

---
name: user-story-standards
description: Apply user story standards when writing stories, refining backlog, or reviewing requirements. Use when user mentions user story, backlog, requirements, or acceptance criteria.
---

# User Story Standards

## Story Format

### [STORY-ID] Title

**As a** [user type]
**I want** [goal/action]
**So that** [benefit/value]

#### Acceptance Criteria
- [ ] Given [context], when [action], then [result]
- [ ] Given [context], when [action], then [result]

#### Notes
- [Technical considerations]
- [Dependencies]
- [Out of scope]

#### Story Points: [X]

## Rules

### Title
- Verb + Object format ("Add password reset", "Display order history")
- No technical jargon
- User benefit clear

### User Types
Use our defined personas:
- Customer (end user buying products)
- Admin (internal ops team)
- Manager (team leads with reports)
- System (automated processes)

### Acceptance Criteria
- Use Given/When/Then format
- One behavior per criteria
- Testable and specific
- Include edge cases
- Include error states

### Story Points
- 1: < 2 hours, no unknowns
- 2: Half day, minor unknowns
- 3: Full day, some complexity
- 5: 2-3 days, moderate complexity
- 8: Week, significant complexity
- 13: Too big - split it

5. Data Quality Rules (For Data Leads)

Standards for data exports and reports.

Path: .claude/skills/data-quality-rules/SKILL.md

---
name: data-quality-rules
description: Apply data quality standards when creating reports, data exports, or reviewing data pipelines. Use when user mentions data export, report, data quality, or dashboard.
---

# Data Quality Standards

## Report Requirements

Every report/export must include:

### Metadata Header
Report: [Name]
Generated: [Timestamp]
Period: [Date range]
Source: [System/Database]
Owner: [Team/Person]
Refresh: [Frequency]

### Data Quality Checks
Before delivery, verify:

- [ ] **Completeness**: No unexpected nulls in required fields
- [ ] **Uniqueness**: No duplicate records where not expected
- [ ] **Timeliness**: Data current as of expected timestamp
- [ ] **Validity**: Values within expected ranges
- [ ] **Consistency**: Totals match across related reports

### Standard Validations

| Check | Rule |
|-------|------|
| Row count | Within 20% of previous run |
| Null rate | < 5% for required fields |
| Date range | Matches requested period |
| Totals | Sum columns match header |

## Naming Conventions

### Files
[SYSTEM]_[REPORT]_[YYYYMMDD].[ext]
Example: CRM_CustomerExport_20260102.csv

### Columns
- snake_case for technical exports
- Title Case for business reports
- Include units: revenue_eur, weight_kg
- Include period: sales_mtd, users_ytd

6. AI Act Compliance (For AI Features)

EU regulation compliance for any AI feature.

Path: .claude/skills/ai-act-compliance/SKILL.md

---
name: ai-act-compliance
description: Check EU AI Act compliance for AI/ML features. Use when reviewing AI features, ML models, chatbots, or when user mentions AI Act, AI compliance, or AI risk assessment.
---

# EU AI Act Compliance

## Risk Classification

First, classify the AI system:

| Risk | Examples | Action |
|------|----------|--------|
| Unacceptable | Social scoring, manipulative AI | Banned |
| High | HR screening, credit decisions, medical diagnosis | Full compliance |
| Limited | Chatbots, emotion detection | Transparency required |
| Minimal | Spam filters, search, recommendations | No requirements |

## High-Risk Checklist

If classified as high-risk:

- [ ] Risk management system documented
- [ ] Training data documented (sources, prep, biases)
- [ ] Technical documentation complete
- [ ] Human oversight mechanism
- [ ] Accuracy/robustness metrics defined
- [ ] Bias testing performed
- [ ] Logging enabled for audits

## Transparency Requirements

For all AI (especially Limited risk):

- [ ] Users know they're interacting with AI
- [ ] AI-generated content is labeled
- [ ] Capabilities AND limitations documented
- [ ] Contact for human support available

## Timeline
- Feb 2025: Banned AI prohibited
- Aug 2025: High-risk rules apply
- Aug 2026: Full enforcement

7. Company Coding Standards (For Developers)

Same rules everywhere - Claude, pre-commit hooks, CI/CD.

Path: .claude/skills/coding-standards/SKILL.md

---
name: coding-standards
description: Apply company coding standards when writing code, creating branches, making commits, or reviewing code. Use when user mentions code, commit, branch, PR, or development.
---

# Company Coding Standards

## Branch Naming

Format: <type>/<ticket>-<description>

| Type | Use For |
|------|---------|
| feature/ | New features |
| bugfix/ | Bug fixes |
| hotfix/ | Production emergencies |
| release/ | Release branches |
| chore/ | Maintenance tasks |

Examples:
- feature/DS-142-add-user-auth
- bugfix/DS-156-fix-login-timeout

## Commit Messages

Format: <type>(<scope>): <TICKET> <description>

feat(auth): DS-142 add password reset flow

Users can now reset passwords via email.
Token expires after 1 hour.

### Types
- feat: New feature
- fix: Bug fix
- docs: Documentation
- style: Formatting
- refactor: Code restructure
- test: Adding tests
- chore: Maintenance

## Security Rules

**NEVER commit:**
- API keys or tokens
- Passwords or secrets
- Private keys (.pem, .key)
- Environment files (.env)
- Database credentials

**Use instead:**
- Environment variables
- Secret managers (Vault, AWS Secrets)
- .env.example with placeholders

Align Skills with Automation

The real power: same rules in Skills, hooks, and CI/CD. Claude knows the rules AND tooling enforces them.

Pre-commit Hooks

Install pre-commit:

pip install pre-commit

Create .pre-commit-config.yaml:

repos:
  # Branch name check
  - repo: local
    hooks:
      - id: branch-name
        name: Check branch name
        entry: bash -c '
          branch=$(git branch --show-current)
          if [[ ! "$branch" =~ ^(feature|bugfix|hotfix|release|chore)/[A-Z]+-[0-9]+-.*$ ]]; then
            echo "Branch name must be: <type>/<TICKET>-<description>"
            exit 1
          fi
        '
        language: system
        always_run: true
        pass_filenames: false

  # Commit message check
  - repo: https://github.com/commitizen-tools/commitizen
    rev: v3.13.0
    hooks:
      - id: commitizen
        stages: [commit-msg]

  # No secrets
  - repo: https://github.com/Yelp/detect-secrets
    rev: v1.4.0
    hooks:
      - id: detect-secrets

Install hooks:

pre-commit install
pre-commit install --hook-type commit-msg

CI/CD Pipeline (GitHub Actions)

Create .github/workflows/standards.yml:

name: Code Standards

on: [push, pull_request]

jobs:
  check-standards:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # Check branch naming
      - name: Check branch name
        if: github.event_name == 'pull_request'
        run: |
          BRANCH="${{ github.head_ref }}"
          if [[ ! "$BRANCH" =~ ^(feature|bugfix|hotfix|release|chore)/[A-Z]+-[0-9]+-.*$ ]]; then
            echo "Invalid branch name: $BRANCH"
            exit 1
          fi

      # Check for secrets
      - name: Detect secrets
        uses: trufflesecurity/trufflehog@main
        with:
          extra_args: --only-verified

The Complete Picture

+-----------------------------------------------------------+
|                SAME RULES EVERYWHERE                       |
+-----------------------------------------------------------+
|                                                            |
|   SKILL.md          Pre-commit         CI/CD              |
|   +---------+       +---------+       +---------+         |
|   | Claude  |       |  Local  |       | Server  |         |
|   | knows   |  -->  | enforces|  -->  | blocks  |         |
|   | rules   |       | on save |       | on push |         |
|   +---------+       +---------+       +---------+         |
|                                                            |
|   "Create branch    Validates        PR blocked if        |
|    for DS-142"      format before    rules violated       |
|    -> Claude uses   commit allowed                        |
|    correct format                                         |
|                                                            |
+-----------------------------------------------------------+

Why this matters:

  • Claude suggests correct format (knows the rules)
  • Pre-commit prevents mistakes locally (fast feedback)
  • CI/CD catches anything that slips through (safety net)
  • Everyone aligned, no debates about standards

Sharing Skills

Skills are shareable - this is one of their biggest benefits.

Share with Your Team (Git)

Put skills in project folder and commit:

your-project/
└── .claude/
    └── skills/
        ├── coding-standards/
        │   └── SKILL.md
        └── gdpr-compliance/
            └── SKILL.md
git add .claude/skills/
git commit -m "feat: add team coding standards skill"
git push

Now everyone who clones the repo gets the same skills. New team members automatically get your standards.

Share Across Organization

Options for company-wide skills:

Method How Best For
Git submodule Add skills repo as submodule Large orgs
Template repo Include in project template New projects
Copy Copy skills folder to projects Simple

Example with git submodule:

# Add company skills as submodule
git submodule add [email protected]:company/claude-skills.git .claude/skills

# Team members clone with submodules
git clone --recurse-submodules <repo>

Share Publicly (Plugins)

Skills can be bundled into plugins and shared:

  • Publish as npm package
  • Share via GitHub
  • Distribute through plugin marketplace

This lets anyone install your skills with one command.


Skills vs Other Options

Use This For Triggered By
Skills Rules Claude applies automatically Claude matches your request
Commands Actions you run explicitly You type /command
CLAUDE.md Always-on project context Every conversation

Simple rule:

  • Company/team rules -> Skills
  • Daily workflows -> Commands
  • Project setup info -> CLAUDE.md

Creating Your First Skill

  1. Create folder:
    mkdir -p ~/.claude/skills/my-rules
  2. Create SKILL.md:
    touch ~/.claude/skills/my-rules/SKILL.md
  3. Add your rules with frontmatter:
    ---
    name: my-rules
    description: When to use these rules. Keywords that trigger it.
    ---
    
    # Your rules here...
  4. Restart Claude Code
  5. Test it - ask something that matches your description

Tips for Good Skills

Description is key - Claude matches requests to descriptions. Include keywords:

  • Bad: "Helps with documents"
  • Good: "Apply when drafting client emails, proposals, or external communications"

Be specific - Vague rules = vague results

  • Bad: "Write good emails"
  • Good: "Subject line must be Action + Topic format"

Include examples - Show what good looks like

Keep it focused - One skill per domain. Don't mix writing style with data quality.


Quick Reference

+-----------------------------------------------------+
|              SKILLS QUICK REFERENCE                  |
+-----------------------------------------------------+
| Location:                                            |
|   ~/.claude/skills/[name]/SKILL.md  (personal)      |
|   .claude/skills/[name]/SKILL.md    (team)          |
+-----------------------------------------------------+
| Format:                                              |
|   ---                                                |
|   name: skill-name                                   |
|   description: When to use. Keywords.               |
|   ---                                                |
|   # Your rules here                                  |
+-----------------------------------------------------+
| TIP: Commit team skills to git - everyone gets      |
| the same standards automatically.                    |
+-----------------------------------------------------+

What's Next

In Part 5, we'll cover Automation - making Claude work while you sleep.

  • Cron jobs for daily digests
  • Birthday and anniversary reminders
  • Automated report generation
  • Weekly summaries that write themselves

Set it once, run forever.


Previous: Voice-First Workflow | Next: Automation


About this series: Part 4 of 5 in the Claude Code Series. Written for managers, product owners, data leads, and anyone who works smart.