← Back to recipes

Build custom Claude Code skills for your charity

operationsintermediateemerging

The problem

You're using Claude Code to help with your charity's technical projects, but you find yourself repeatedly explaining the same context: your coding standards, deployment procedures, database conventions, or how your CRM integration works. Every time you start a new session, you re-explain the same organisational knowledge. This wastes time and means Claude Code can't build on what it's learned.

The solution

Create a SKILLS.md file in your project that encodes your charity's specific technical knowledge and conventions. Claude Code automatically reads this file and applies your standards when working on the project. Your SKILLS.md might include your deployment checklist, database naming conventions, API integration patterns, or testing requirements. Once set up, Claude Code consistently follows your processes without reminders.

What you get

A SKILLS.md file in your project root that captures your charity's technical standards and processes. When you or colleagues use Claude Code on the project, it automatically applies your conventions, follows your procedures, and produces consistent outputs that match how your organisation works.

Before you start

  • Claude Code installed and configured (see set-up-claude-code-on-your-computer recipe)
  • An existing project you want to add skills to
  • Clear understanding of your technical standards and conventions
  • Basic familiarity with Markdown syntax

When to use this

  • You have established coding standards Claude Code should follow
  • Multiple team members use Claude Code on the same project
  • You want consistent outputs that match your deployment or testing processes
  • You have specific conventions for database schemas, API patterns, or file structures
  • New developers (or Claude Code) need to understand how your project works

When not to use this

  • You don't have established technical standards yet
  • You're working on a one-off project with no reusable conventions
  • You're not using Claude Code (this doesn't apply to claude.ai web interface)

Steps

  1. 1

    Identify your repeating technical context

    List the things you repeatedly explain to Claude Code: your testing approach, deployment steps, database conventions, coding standards, or API patterns. Common examples: 'Always use TypeScript strict mode', 'Run tests before committing', 'Our API uses snake_case', 'Deployments go through staging first'.

  2. 2

    Create SKILLS.md in your project root

    Create a file called SKILLS.md in the root of your project (alongside package.json or similar). Claude Code automatically reads this file when working in the project directory.

  3. 3

    Document your coding standards

    Start with your core technical standards. Be specific: "Use async/await not callbacks", "All database columns use snake_case", "Error messages should be user-friendly". Write as if briefing a new developer who needs to match your existing codebase.

  4. 4

    Add your deployment and testing procedures

    Document your workflow: how to run tests, what checks must pass before commits, how deployments work. For example: 'Run npm test before committing. Deployments to production require PR approval and must go through staging first.'

  5. 5

    Include project-specific context

    Add context about your project's architecture: key directories, important files, external services you integrate with. This helps Claude Code understand where things live and how components connect.

  6. 6

    Document common tasks

    If there are tasks you frequently ask Claude Code to help with, document them: 'When adding a new API endpoint, create the route in /api, add validation in /validators, and add tests in /tests/api'. This creates consistent patterns.

  7. 7

    Test with Claude Code

    Start a new Claude Code session in your project. Ask it to do something covered by your SKILLS.md. Check that it follows your conventions. Ask 'What do you know about this project?' to verify it's read your skills file.

  8. 8

    Refine based on usage

    As you work with Claude Code, notice where it still needs reminders or gets things wrong. Update SKILLS.md to address these gaps. Good skills files evolve as you discover what Claude Code needs to know.

Example code

Example SKILLS.md for a charity website project

A complete skills file for a typical charity web project.

# Project Skills - Charity Website

## Project Overview

This is the main website for [Charity Name], a UK homelessness charity.
Built with Next.js 14, TypeScript, and Tailwind CSS.
Data stored in Firebase Firestore.

## Coding Standards

- **TypeScript**: Use strict mode. No `any` types without explicit comment explaining why.
- **Components**: Functional components with hooks. No class components.
- **Naming**:
  - Components: PascalCase (e.g., `DonationForm.tsx`)
  - Utilities: camelCase (e.g., `formatCurrency.ts`)
  - Database fields: snake_case (e.g., `created_at`)
- **Styling**: Use Tailwind classes. No inline styles or CSS modules.

## Testing Requirements

- Run `npm test` before committing
- New API routes need integration tests
- Components with logic need unit tests
- Aim for 80% coverage on new code

## Deployment Process

1. Create PR against `main` branch
2. Automated tests must pass
3. Preview deployment created automatically
4. Requires 1 approval before merge
5. Merging to `main` deploys to production

## Key Directories

- `/app` - Next.js app router pages
- `/components` - Reusable React components
- `/lib` - Utilities, Firebase config, helpers
- `/types` - TypeScript type definitions
- `/public` - Static assets

## External Services

- **Firebase**: Firestore for data, Auth for admin users
- **Stripe**: Donation processing (test mode: use `sk_test_` keys)
- **SendGrid**: Transactional emails

## Common Tasks

### Adding a new page
1. Create route in `/app/[route]/page.tsx`
2. Add to navigation in `/components/Navigation.tsx`
3. Update sitemap in `/app/sitemap.ts`

### Adding a new API endpoint
1. Create route in `/app/api/[endpoint]/route.ts`
2. Add request validation
3. Add rate limiting for public endpoints
4. Add tests in `/tests/api/`

## Data Protection

- Never log PII (names, emails, addresses)
- Anonymise data in error reports
- Beneficiary data must not be sent to external services without explicit consent

Minimal SKILLS.md for smaller projects

A simpler skills file for a basic project.

# Project Skills

## Tech Stack
- Python 3.11 with Flask
- SQLite database
- Deployed on Railway

## Standards
- Use type hints on all functions
- Format with Black before committing
- Tests in /tests, run with pytest

## Database
- Tables use singular names (donor, not donors)
- All tables have created_at and updated_at columns
- Use parameterised queries to prevent SQL injection

## Deployment
Push to main branch triggers automatic deployment.
Check Railway dashboard for deployment status.

Tools

Claude Codeservice · paid
Visit →
Text editorplatform · free · open source

Resources

At a glance

Time to implement
hours
Setup cost
free
Ongoing cost
low
Cost trend
stable
Organisation size
small, medium, large
Target audience
it-technical, data-analyst

The SKILLS.md file itself is free. You need an existing Claude Code subscription (via Claude Pro/Max/Team at £18-80/month) to use it.

Part of this pathway