Installing
Ten lines of shell, once. After that the skills load themselves and a git pull keeps them current.
What you need
Claude Code, and git. Nothing else: the skills are Markdown files, with no runtime and no dependencies.
Install
git clone https://github.com/Mariatta/claude-skills.git
cd claude-skills
./install.sh
That is the whole thing. install.sh creates symlinks, so the files stay in the
clone and the copies in ~/.claude/ point back at them:
| What | Where it goes |
|---|---|
each directory in skills/ |
~/.claude/skills/<name> |
each commands/*.md |
~/.claude/commands/<name>.md |
The script never overwrites a real file. If something already exists at the target and is not a symlink, it says so and skips it, and you decide what to do.
Check that it worked
ls -l ~/.claude/skills/
You should see django and gitignore pointing into your clone. There is nothing to
type in Claude Code and no command to run: a skill loads on its own when what you are
doing matches its description. Open a Django project, ask for a change, and the
conventions apply.
If you want to confirm it is loaded, ask Claude which skills it has available.
Keep them current
cd claude-skills
git pull
./install.sh
Two different things happen there, and it is worth knowing which is which.
A skill you already have was updated. git pull alone is enough. Your
~/.claude/skills/django is a symlink into this clone, so the new text is live the
moment the pull finishes. Nothing to reinstall, and no second copy that can fall
behind.
A skill was added since you installed. git pull brings the files but nothing in
~/.claude/skills/ points at the new one yet, so it stays invisible to Claude until
you run ./install.sh again. The script is safe to re-run as often as you like: it
replaces symlinks it made, and skips anything that is a real file or directory.
Running both, every time, is the version worth remembering. ./install.sh on an
already-current clone does nothing except print what it checked.
Point the django skill at your project
The django skill separates portable principles from your project’s values.
The principles live in SKILL.md and need no editing. Everything specific, which
formatters you run, what your coverage gate is, where your email templates live, sits
in one file:
$EDITOR skills/django/profile.json
Adapting this skill to your Django project walks through what to change, section by section. The most common edit by far is swapping black, isort and flake8 for ruff.
Use one without installing
If you only want an agent to follow a skill once, point it at the raw file rather than installing:
https://claude-skills.mariatta.ca/raw/django/SKILL.md
Every skill file is served verbatim at /raw/<skill>/<file>, frontmatter included.
/llms.txt lists them all, and is the single URL to hand an agent that
should discover the rest for itself.
The trade-off: nothing loads automatically. You are asking your agent to read a document this time, rather than giving it a rule it applies unprompted from now on.
Install by hand instead
If you would rather not run the script, or want the files copied rather than linked:
mkdir -p ~/.claude/skills
cp -r skills/django ~/.claude/skills/
The trade-off is that copies do not follow the repo, so git pull no longer updates
them.
Use one in a single project only
A skill in ~/.claude/skills/ applies everywhere you run Claude Code. To scope one to
a single repository, put it in that repository instead:
mkdir -p /path/to/your-project/.claude/skills
cp -r skills/django /path/to/your-project/.claude/skills/
Claude Code picks up a project’s own .claude/skills/ when you work there. That is
also where a skill belongs if you change it to describe that codebase specifically, at
which point it is no longer generic and should not live in this repo.
Uninstall
ls -l ~/.claude/skills/ # confirm which are symlinks
rm ~/.claude/skills/django # remove one
rm ~/.claude/commands/<name>.md # same for a command
Removing the symlink is enough; nothing is left behind.