Phase 1 of mathias/skills extraction (infra#62 Track D — homelab next-step plan addendum). Imports ~/dev/.skills/ verbatim (19 skill dirs + SKILLS_INDEX.md) and adds the installation surface: - Taskfile.yml — install / update / list / release / check targets - install.sh — bootstrap installer for hosts without Task. Idempotent symlink wirer; default checkout at ~/.local/share/skills/ on every host; SKILLS_REF env var pins a tag (default: main). - .gitea/workflows/release.yml — auto-tag every push to main by Bump-Type footer (major/minor/patch, default patch). Skipped when commit contains [skip-release]. - README — usage, versioning, contribution flow, secret-hygiene rule. Phase 1 wires Claude Code only (~/.claude/skills/<name> global + <repo>/.claude/skills/<name> per-repo). Phase 2 adds Crush, opencode, antigravity, and gitea-resident agents (cobalt-dingo, agentsquad) once their skill conventions are researched. Public repo, markdown-only — no secrets, no client names. Verified via pre-push grep before initial push. [skip-release]
skills
Engineering skills library — markdown SKILL.md files that plug into any
project or AI-coding harness. Installed via task skills:install in
consumer projects, or directly by install.sh on hosts without Task.
What is a skill?
A skill is a single directory containing one or more markdown files. The
canonical entrypoint is <name>/SKILL.md. Additional reference material
lives alongside in the same directory (e.g.
clean-code/references/code-smells.md). Harnesses load skills on
demand — keep SKILL.md short and triggerable; push depth into
references.
See SKILLS_INDEX.md for the full catalogue with
descriptions and "use when" triggers.
Install (consumer project)
The expected pattern: each consumer project's Taskfile.yml has a
skills:install target that delegates here. From a project root:
task skills:install
Bare-shell fallback for hosts without Task installed:
curl -fsSL https://gitea.d-ma.be/mathias/skills/raw/branch/main/install.sh | bash
Both forms are idempotent and re-runnable. On every run they:
git clone(orgit pull) this repo into~/.local/share/skills/— the canonical local checkout on every host.- Wire per-skill symlinks into the harnesses found on the host (see Wired harnesses).
Re-run after git pull upstream to pick up new skills or version
changes. CI tags every change as a vX.Y.Z release (see
Versioning).
Wired harnesses
Phase 1 (current) wires Claude Code only:
- Global:
~/.claude/skills/<name>→~/.local/share/skills/<name> - Per-repo:
<repo>/.claude/skills/<name>(when invoked from a git repo) → same
Phase 2 will add: Crush, opencode, antigravity, gitea-resident agents
(cobalt-dingo, agentsquad). See mathias/infra issue infra#62
addendum for the roadmap.
Versioning
Every commit to main is auto-tagged as a semver release by the
.gitea/workflows/release.yml action. Bump direction follows the commit
footer:
Bump-Type: major→X.0.0Bump-Type: minor→0.Y.0- anything else →
0.0.Z(patch, the default)
Consumer projects can pin a version by setting SKILLS_REF=v0.1.0
before task skills:install; default is main for always-current.
Contributing a skill
- Add a directory
<short-kebab-name>/. - Create
<short-kebab-name>/SKILL.md— start with one-paragraph purpose, then triggers ("use when …"), then mechanics. - Add a row to
SKILLS_INDEX.md(description + use-when). - Commit directly to
main. Conventional-commit prefix (feat:/fix:/docs:). AddBump-Type: minorfooter when adding a new skill or expanding scope; default patch covers edits.
This repo is markdown-only and public — never include secrets, client names, or anything under NDA in a skill.