The skills
A short list so far, with more as I keep working alongside agents. Each is a set of house rules Claude applies on its own, written as prose you can follow by hand.
A skill is a folder of Markdown. Claude reads the description at the top of each
one and loads the whole file when what you are doing matches, so there is no command
to type and nothing to remember. Installing covers getting them onto your
machine.
Everything below is the exact file Claude loads, published as-is.
django
How I like a Django codebase written. Each convention is stated as a principle that holds anywhere, followed by a pointer to where a project keeps its own values.
These are my preferences for my own projects, not Django community consensus and not
a style anyone else has to adopt. When I contribute to someone else’s codebase, that
project’s conventions take precedence: its CLAUDE.md or AGENTS.md, its existing
code, and whatever its maintainers ask for. The skill says so in its own opening
lines, so an agent that loads it defers too.
Take it and make it yours. profile.json is where your stack goes,
which is usually the only file you need to touch, and every convention is
self-contained: delete the ones you disagree with, reword the ones you keep, add your
own. It is MIT licensed precisely so it can become your house style rather than mine.
Formatter and linter compliance · imports at module top, with real refactors for
circular imports · docstrings over comment blocks · maintained libraries over
hand-rolled code · coverage as a merge gate · permission gating through has_perm ·
secrets encrypted at rest · CSS in a stylesheet · session workflow · email as one
Markdown template · a portable container boot contract.
- The conventions
- Adapting it to your project, which is one file to edit
- profile.json, every project-specific value in one place
- The email pattern in full
- Deployment
git
Working practices for git and the forge around it, independent of what the repository contains. The recurring one: where a branch starts decides whether it merges, because a squash merge writes a new commit rather than moving yours, so a branch cut from an already-merged branch collides with its own work.
Creating a repository with the settings it should have had on day one · cut every
branch from a freshly fetched default branch · rebase rather than merge the default
branch back in, then --force-with-lease · verify mergeability before asking for
review · paired branches across sibling repositories · reset your position the moment
something merges · what never belongs in version control, led by environment and
secret files, and why a committed secret gets rotated rather than merely deleted ·
worktrees, for when you need two states at once.
A new repository is asked private or public first, because that answer decides what is possible: on GitHub Free, a private repository cannot have rulesets or branch protection at all. Then squash-only merges, delete the branch on merge, and a ruleset requiring the CI check, added last because a required check that nothing reports blocks every merge forever.
- The practices
- Creating a repository, end to end, with the ruleset body
- The ignore rules, including why
.gitignoredoes not untrack anything and which files people wrongly ignore - Paste-ready ignore blocks for Python, Django, Node,
Terraform, and
.dockerignore
Pointing an agent at one
The skills are written for an agent to load, so the useful question is where to send yours.
Best: install them. git clone plus ./install.sh and Claude Code picks the
right skill on its own, with nothing to remember and no URL to paste. See
Installing.
Without installing: hand your agent the raw Markdown. Every skill file is served verbatim, frontmatter and all, so reading it by URL gives the same text an installed skill provides:
https://claude-skills.mariatta.ca/raw/django/SKILL.md
https://claude-skills.mariatta.ca/raw/git/SKILL.md
Swap the filename for ADAPTING.md, profile.json, or anything under references/.
The rendered pages on this site are for people: they carry theme chrome and drop the
frontmatter that tells an agent when the skill applies, so send the raw file, not the
page.
Or point at the whole site. /llms.txt lists every skill, what each
is for, and the raw URL of every file, which is the one address to give an agent that
should work out the rest itself.
Adding one
The repo takes skills that apply across projects. Anything that describes one
codebase belongs in that codebase’s own .claude/skills/, where it is versioned with
the code it describes.
Then write it so a person can follow it by hand: state the rule, then the reason. A convention that works only because a machine is reading it is not finished.