In Claude Code, run:
/plugin marketplace add officialunofficial/skills
/plugin install officialunofficial-skills@officialunofficial-skills
Or from any shell:
npx skills@latest add officialunofficial/skillsAgent skills for Official Unofficial, Inc. — small, composable slash commands and behaviors for doing real engineering with a coding agent (Claude Code, or any harness that loads skills). Each skill is a directory with a SKILL.md the agent reads to gain a capability; some carry sibling reference files and scripts.
The guiding idea: keep skills small, adaptable, and composable, and keep you in control of the process. They lean on software-engineering fundamentals — deep modules, tight feedback loops, red-green-refactor, a shared domain language — rather than owning your workflow end to end. Fork them, rename them, make them yours.
skills/
<category>/
<skill-name>/
SKILL.md # required: YAML header (name, description) + instructions
*.md # optional: reference disclosed from SKILL.md, loaded on demand
scripts/ # optional: deterministic helpers
A skill's name is the slash command that invokes it (/to-invariants). Skills split on one axis —
who can invoke them:
- User-invoked (
disable-model-invocation: true) — only you, by typing the name. These orchestrate; they cost no context and don't fire on their own. - Model-invoked — the agent can reach them autonomously when the task fits, and other skills can compose them. These hold the reusable discipline.
New here? Run /setup-skills once per repo, then /which-skill to route to the right tool.
Daily code work. The backbone is a single idea → ship flow — /which-skill maps it.
Flow and orchestration
| Skill | What it does | |
|---|---|---|
which-skill |
user | Router: picks the skill or flow that fits your situation. |
setup-skills |
user | Configure a repo for the engineering skills: issue tracker, triage labels, domain-doc layout. Run once. |
grill-with-docs |
user | Relentless interview that sharpens a plan while writing the domain model (CONTEXT.md, ADRs) down as you go. |
to-prd |
user | Turn the conversation into a PRD and publish it to the issue tracker — no interview. |
to-issues |
user | Break a plan, spec, or PRD into independently-grabbable issues via vertical slices. |
implement |
user | Build a piece of work from a PRD or issue, driving /tdd then /code-review. |
triage |
user | Move incoming issues and external PRs through a state machine of triage roles. |
Loops — cycles of work that repeat until a stop condition is met, instead of a single turn.
| Skill | What it does | |
|---|---|---|
designing-loops |
user | Reference for the four loop shapes (turn/goal/time/proactive), writing completion criteria, and managing token usage across a loop's lifetime. |
dependency-update-loop |
user | Recurring pass over automated dependency-bump PRs: rebase, relock, verify, report what's ready. |
stacked-pr-loop |
user | Recurring check-in on a stack of dependent PRs: rebase children, surface CI state, flag human-only gates. |
deploy-verify-loop |
user | Post-deploy loop: poll the rollout to healthy, then run one smoke check against a real user path. |
Verification — turn a design or spec into checks that keep an implementation honest. They compound: invariants become fuzz oracles; both sharpen the conformance suite.
| Skill | What it does | |
|---|---|---|
to-invariants |
model | Distil the properties that must always hold: system invariants plus enforceable ones, each mapped to a check or flagged as a GAP. |
to-fuzz |
model | Distil a fuzzing plan: the targets worth fuzzing, each with an entry point, input model, and failure oracle. |
to-conformance |
model | Distil a spec's normative requirements into implementation-independent conformance tests, with traceability. |
Design, build, and review
| Skill | What it does | |
|---|---|---|
tdd |
model | Test-driven development: a red-green-refactor loop, one vertical slice at a time. |
code-review |
model | Two-axis review of the diff since a fixed point: Standards and Spec, as parallel passes. |
diagnosing-bugs |
model | Diagnosis loop for hard bugs and regressions: reproduce → minimize → hypothesize → instrument → fix → regression-test. |
codebase-design |
model | Vocabulary and principles for designing deep modules: a lot of behavior behind a small interface. |
domain-modeling |
model | Build and refine a project's domain language; keep CONTEXT.md and ADRs current. |
improve-codebase-architecture |
user | Scan for deepening opportunities, present them as a visual report, then grill the one you pick. |
resolving-merge-conflicts |
model | Work through an in-progress git merge or rebase conflict. |
Standalone
| Skill | What it does | |
|---|---|---|
prototype |
model | Build a throwaway prototype to answer one design question: a runnable terminal app, or several UI variations. |
research |
model | Background agent that investigates a question against primary sources and leaves a cited Markdown file. |
Workflow tools, not code-specific.
| Skill | What it does | |
|---|---|---|
grill-me |
user | Relentless, one-decision-at-a-time interview that sharpens any plan or design. |
grilling |
model | The reusable interview primitive behind grill-me and grill-with-docs. |
handoff |
user | Compact the current conversation into a handoff document another agent can pick up. |
teach |
user | Teach a concept across sessions, using the current directory as a stateful workspace. |
technical-writing |
model | House style for docs, specs, release notes, and user-facing copy: clear, direct, specific. |
writing-great-skills |
user | Reference for writing and editing skills well: the vocabulary that makes a skill predictable. |
| Skill | What it does | |
|---|---|---|
git-guardrails-claude-code |
model | Install a Claude Code hook that blocks destructive git commands. |
setup-pre-commit |
model | Add a Husky pre-commit hook (lint-staged plus Prettier), type checking, and tests. |
scaffold-exercises |
model | Scaffold an exercise directory tree: sections, problems, solutions, explainers. |
migrate-to-shoehorn |
model | Convert as assertions in tests to @total-typescript/shoehorn helpers. |
Skills for mkit — the content-addressed, Ed25519-signed VCS. Two for using mkit, three for developing it.
| Skill | What it does | |
|---|---|---|
mkit |
model | Drive the mkit CLI: BLAKE3 object IDs, signed commits, transports — the parts that aren't git. |
mkit-attest |
model | Produce and verify in-toto/DSSE attestations on a commit against a trust-roots registry. |
new-mkit-spec |
model | Scaffold a SPEC-*.md in the repo's format, register it in the index, and wire git-parity. |
mkit-release |
model | Cut a signed, attested release — one v tag drives the GitHub, crates.io, and npm channels. |
mkit-ci-preflight |
model | Confirm a PR is genuinely green across the GitHub gates and the GCB mkit-*-pr checks before merge. |
In Claude Code, this repo is a plugin marketplace — add it once, then install the whole collection as a single plugin:
/plugin marketplace add officialunofficial/skills
/plugin install officialunofficial-skills@officialunofficial-skills
/plugin update officialunofficial-skills pulls new skills as they land.
Working in another agent, or want to pick individual skills instead of the whole set? Use the skills.sh installer — pick the skills and the agents (Claude Code, Cursor, Copilot, and more) to install them on:
npx skills@latest add officialunofficial/skillsFor the full engineering flow, include setup-skills and which-skill, then run /setup-skills
once in your agent to configure the issue tracker, triage labels, and doc layout.
Prefer to wire it up by hand? Clone the repo and symlink individual skills:
git clone git@github.com:officialunofficial/skills.git
ln -s "$PWD/skills/skills/engineering/to-invariants" ~/.claude/skills/to-invariantsThen invoke a skill by name (for example /to-invariants, optionally with an output path).
Every SKILL.md here follows the Agent Skills open standard, so the same
file works unmodified on other agents that support it — for Codex CLI, symlink into
.agents/skills/<name> (project-local) or ~/.agents/skills/<name> (personal) instead of
~/.claude/skills/<name>.
- Create the skill directory
skills/<category>/<name>/with aSKILL.mdinside. - The YAML header needs a
name(equal to the directory) and adescription. For a model-invoked skill, write the description in third person: the first sentence says what it does, then "Use when …" names the distinct triggers. For a user-invoked skill, setdisable-model-invocation: trueand keep the description to a one-line human summary. - Keep SKILL.md tight; disclose long reference into sibling .md files, loaded on demand.
- See
writing-great-skillsfor the craft, andtechnical-writingfor the prose style.
Releases use CalVer — vYYYY.M.MICRO (for example v2026.7.0, then v2026.7.1, then
v2026.8.0). MICRO resets to 0 each calendar month.
To cut one, run the release workflow from the Actions tab. It derives the next version from the date and the existing tags, generates notes from the conventional-commit history, bumps package.json, updates CHANGELOG.md, tags, and publishes a GitHub Release. Run it with the dry-run input first to preview the version and notes.
This project is dual-licensed under either of
at your option. Unless you state otherwise, you license any contribution you submit for inclusion under these same terms, without additional conditions.
Many of these skills are adapted from mattpocock/skills (MIT), with thanks.