<!--
SPDX-FileCopyrightText: Amolith <amolith@secluded.site>

SPDX-License-Identifier: CC0-1.0
-->

# agent-skills

A collection of [Agent Skills]; structured markdown that extends LLM
agent capabilities through a standardised format.

[Agent Skills]: https://agentskills.io/

## Available Skills

Refer to [§ Token stats](#token-stats) for a detailed breakdown of each skill's
token count, plus overall metadata usage. I've used and tested them most with
[Crush], [Amp], and [Shelley], and to a lesser degree, [Octofriend] and [Pi].

[Crush]: https://github.com/charmbracelet/crush
[Amp]: https://ampcode.com
[Shelley]: https://github.com/boldsoftware/shelley
[Octofriend]: https://github.com/synthetic-lab/octofriend
[Pi]: https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent

- [addressing-agent-comments](skills/addressing-agent-comments/SKILL.md): Finds
  `CR:` comments in code, gathers feedback, and carries out requested changes.
- [ast-grep](skills/ast-grep/SKILL.md): Writes [ast-grep] rules for structural
  code search and modification.
- [auditing-repositories](skills/auditing-repositories/SKILL.md): Audits open
  source repositories for security, privacy, and unexpected behavior.
- [authoring-skills](skills/authoring-skills/SKILL.md): Creates and reviews
  Agent Skills following best practices. Covers skill structure, frontmatter,
  and progressive disclosure patterns.
- [backing-up-with-keld](skills/backing-up-with-keld/SKILL.md): Writes and
  manages keld configuration for restic backups. Covers TOML preset structure,
  split preset composition (`home@cloud`), config file discovery, environment
  variables, and systemd timer setup.
- [collaborating-through-pr-pico-sh](skills/collaborating-through-pr-pico-sh/SKILL.md):
  Collaborates on git patches via [pr.pico.sh], a minimal patchbin service.
  Covers both contributing and reviewing patch requests using `git format-patch`
  and `git am`.
- [creating-tasks-through-lunatask](skills/creating-tasks-through-lunatask/SKILL.md):
  Creates tasks and handoffs in [Lunatask] via [lune]. Tasks are just tasks.
  Handoffs capture work to resume later across sessions without filling context
  windows.
- [formatting-commits](skills/formatting-commits/SKILL.md): Detects a project's
  commit style from recent history and formats messages accordingly. Supports
  Conventional Commits and kernel-style imperative commits.
- [getting-a-code-review](skills/getting-a-code-review/SKILL.md): Gets an
  external code review of changes, commits, PRs, or patches via CLI tools like
  Amp, CodeRabbit, or Kodus.
- [frontend-accessibility](skills/frontend-accessibility/SKILL.md): Strives to
  generate accessible HTML, React, and frontend code following WCAG 2.2 AA.
  Prioritizes semantic HTML over ARIA, keyboard navigation, and screen reader
  compatibility.
- [handling-customer-data](skills/handling-customer-data/SKILL.md): Queries
  customer data responsibly—the agent answers questions about the data without
  ever seeing it directly.
- [humanizer](skills/humanizer/SKILL.md): Removes AI-generated patterns from
  text like promotional fluff, weasel words, and mechanical sentence structures.
  Based on Wikipedia's AI Cleanup research. Originally from [blader/humanizer].
- [ideating-with-bdd](skills/ideating-with-bdd/SKILL.md): Guides collaborative
  discovery of behaviour through structured conversation, iterating with the user
  to refine ideas into user stories and Gherkin scenarios. Works for any
  language or framework.
- [initialising-and-updating-agents-md](skills/initialising-and-updating-agents-md/SKILL.md):
  Analyses a codebase and creates or updates `AGENTS.md` to help future agents
  work effectively. Discovers commands, conventions, patterns, and gotchas from
  the project's source and config files.
- [invoking-subagents](skills/invoking-subagents/SKILL.md): Spawns subagents
  with restricted tool access for parallel tasks across repositories. Requires
  [the Pi coding agent][Pi]. Useful for summarizing git history or processing
  large diffs without filling the main context window.
- [maintaining-aur-packages](skills/maintaining-aur-packages/SKILL.md): Creates
  and updates AUR packages following Arch packaging standards. Covers PKGBUILDs
  for source, `-bin`, and `-git` package types, checksums with `updpkgsums`,
  linting with `namcap`, and `.SRCINFO` generation.
- [managing-and-navigating-worktrees](skills/managing-and-navigating-worktrees/SKILL.md):
  Manages git worktrees using [wt] with a bare repository structure. Each branch
  lives in its own sibling directory. Requires [wt], git, and [gum].
- [monitoring-with-munin](skills/monitoring-with-munin/SKILL.md): Deploys and
  manages Munin monitoring across servers. Sets up munin-node on hosts, writes
  plugins, configures masters, and handles alerts.
- [notifying-through-ntfy](skills/notifying-through-ntfy/SKILL.md): Sends push
  notifications via [ntfy.sh] when requested, such as at the end of its turn.
- [rebasing-with-git](skills/rebasing-with-git/SKILL.md): Manages git rebase
  workflows from simple rebases to the drop-and-repick integration branch
  pattern. Assumes `upstream` remote for forks and `rerere` enabled. Supports
  worktrees including `wt`-managed repos.
- [researching-with-rumilo](skills/researching-with-rumilo/SKILL.md): Dispatches
  AI research subagents via [rumilo] for web search and repository exploration.
  Research topics, look up library usage, or explore external codebases without
  filling the main context window.
- [resuming-work-through-lunatask](skills/resuming-work-through-lunatask/SKILL.md):
  Resumes deferred work from [Lunatask] handoff notes via [lune].
- [scripting-with-go](skills/scripting-with-go/SKILL.md): Creates executable Go
  scripts using a shell trick (not a true shebang). For automation and tooling
  outside of Go projects.
- [testing-with-gocuke-and-gherkin](skills/testing-with-gocuke-and-gherkin/SKILL.md):
  Drives BDD, red/green TDD, and property-based testing in Go projects using
  [gocuke] and Gherkin feature files.
- [updating-llm-client-model-lists](skills/updating-llm-client-model-lists/SKILL.md):
  Synchronizes model configurations across Zed, Crush, Octofriend, and Pi from
  Plexus' /v1/models endpoint.
- [using-exe-dev](skills/using-exe-dev/SKILL.md): Guides working with [exe.dev]
  VMs, which provide Linux VMs with persistent disks, instant HTTPS, and
  built-in auth via SSH.
- [using-jujutsu](skills/using-jujutsu/SKILL.md): Guides [jujutsu] (jj)
  workflows, covering commit selection, change creation, diff reading, and
  common pitfalls that trip up agents.
- [using-silverbullet](skills/using-silverbullet/SKILL.md): Manages notes in
  [SilverBullet] via the CLI and Space Lua. Covers searching, reading, writing,
  and editing pages, plus journal and task workflows.
- [working-with-zmx](skills/working-with-zmx/SKILL.md): Manages persistent
  terminal sessions for background processes, dev servers, and long-running tasks.
  Creates sessions, runs commands detached, checks output, and writes files into
  sessions over SSH.
- [writing-git-tags](skills/writing-git-tags/SKILL.md): Generates git tag
  annotations from commit history following Semantic Versioning and Conventional
  Commits via [git-format].
- [writing-roc-lang](skills/writing-roc-lang/SKILL.md): Writes Roc code with
  strong static types, helpful compiler errors, and functional programming.
  Covers both full applications and one-off scripts.
- [writing-rust](skills/writing-rust/SKILL.md): Writes idiomatic Rust with
  strict quality gates: `cargo fmt`, `clippy -- -D warnings`, and required
  tests. Enforces `thiserror` for libs, `anyhow` for apps, warns against common
  anti-patterns.

[blader/humanizer]: https://github.com/blader/humanizer
[ast-grep]: https://github.com/ast-grep/ast-grep
[git-format]: https://git.secluded.site/git-format
[gocuke]: https://github.com/tenntenn/gocuke
[lune]: https://git.secluded.site/lune
[Lunatask]: https://lunatask.app/
[ntfy.sh]: https://ntfy.sh
[rumilo]: https://git.secluded.site/rumilo
[synu]: https://git.secluded.site/synu
[wt]: https://git.secluded.site/wt
[gum]: https://github.com/charmbracelet/gum
[exe.dev]: https://exe.dev
[jujutsu]: https://jj-vcs.github.io/jj/latest/
[SilverBullet]: https://silverbullet.md

## Installation

If you're using [Amp], run `amp skill add
https://git.secluded.site/agent-skills`. Otherwise, clone the repository, then
install via `make` or manual symlinks.

[Amp]: https://ampcode.com

```sh
git clone https://git.secluded.site/agent-skills
cd agent-skills
```

### With Make

Skills install to `~/.config/agents/skills/` by default. Override by
setting `SKILL_DIR`. Tab completion works so you don't have to remember
skill names or copy/paste.

```sh
# List available skills
make list

# Install all skills to default dir
make all

# Install specific skills to Claude Code
SKILL_DIR=$HOME/.claude/skills make authoring-skills formatting-commits

# Remove a specific skill from Amp
make uninstall-authoring-skills SKILL_DIR=$HOME/.config/agents/skills

# Remove all skills from Codex
make uninstall SKILL_DIR=$HOME/.codex/skills
```

### With symlinks

```sh
# Install all skills
for s in skills/*/; do ln -s "$PWD/$s" ~/.config/agents/skills/; done

# Install specific skills
ln -s "$PWD/skills/authoring-skills" ~/.config/agents/skills/

# Remove a skill
rm ~/.config/agents/skills/formatting-commits
```

### Agent skill directories

| Agent                                   | Dir                        |
| --------------------------------------- | -------------------------- |
| [Crush], [Octofriend], [Shelley], [Amp] | `~/.config/agents/skills/` |
| [Pi]                                    | `~/.pi/agent/skills/`      |
| Anthropic's Claude Code                 | `~/.claude/skills/`        |
| OpenAI's Codex                          | `~/.codex/skills/`         |

## Updating

```sh
cd ~/path/to/agent-skills
git pull
```

Symlinked skills update automatically.

## Contributions

Patch requests are in [amolith/llm-projects] on [pr.pico.sh]. You don't need a
new account to contribute, you don't need to fork this repo, you don't need to
fiddle with `git send-email`, you don't need to faff with your email client to
get `git request-pull` working...

You just need:

- Git
- SSH
- An SSH key

```sh
# Clone this repo, make your changes, and commit them
# Create a new patch request with
git format-patch origin/main --stdout | ssh pr.pico.sh pr create amolith/llm-projects
# After potential feedback, submit a revision to an existing patch request with
git format-patch origin/main --stdout | ssh pr.pico.sh pr add {prID}
# List patch requests
ssh pr.pico.sh pr ls amolith/llm-projects
```

See "How do Patch Requests work?" on [pr.pico.sh]'s home page for a more
complete example workflow.

[amolith/llm-projects]: https://pr.pico.sh/r/amolith/llm-projects
[pr.pico.sh]: https://pr.pico.sh

## Token stats

Real token stats as reported by [Synthetic.new]'s [/messages/count_tokens]
endpoint with [./skill-stats.go](./skill-stats.go).

[Synthetic.new]: https://synthetic.new
[/messages/count_tokens]: https://dev.synthetic.new/docs/anthropic/messages/count-tokens

```
=== addressing-code-review-comments ===

Token breakdown:
  Name:            9 tokens
  Description:    40 tokens
  Body:          290 tokens (38 lines)
  ───────────────────────────────────────────────
  Total:         339 tokens

=== ast-grep ===

Token breakdown:
  Name:            7 tokens
  Description:    76 tokens
  Body:         2765 tokens (469 lines)
  References:
    rule_reference.md                         2515 tokens
  ───────────────────────────────────────────────
  Total:        5363 tokens

=== auditing-repositories ===

Token breakdown:
  Name:            8 tokens
  Description:    51 tokens
  Body:         1046 tokens (156 lines)
  References:
    llm-security.md                            427 tokens
  ───────────────────────────────────────────────
  Total:        1532 tokens

=== authoring-skills ===

Token breakdown:
  Name:            8 tokens
  Description:    32 tokens
  Body:          861 tokens (105 lines)
  References:
    checklist.md                               301 tokens
    patterns.md                                880 tokens
    process.md                                 311 tokens
    specification.md                          1441 tokens
  ───────────────────────────────────────────────
  Total:        3834 tokens

=== backing-up-with-keld ===

Token breakdown:
  Name:            9 tokens
  Description:    39 tokens
  Body:         1742 tokens (235 lines)
  References:
    config-examples.md                        1415 tokens
    installation.md                             19 tokens
  ───────────────────────────────────────────────
  Total:        3224 tokens

=== collaborating-through-pr-pico-sh ===

Token breakdown:
  Name:           12 tokens
  Description:    47 tokens
  Body:          521 tokens (43 lines)
  References:
    contributing.md                            162 tokens
    jujutsu.md                                 516 tokens
    reviewing.md                               406 tokens
  ───────────────────────────────────────────────
  Total:        1664 tokens

=== creating-tasks-through-lunatask ===

Token breakdown:
  Name:           12 tokens
  Description:    41 tokens
  Body:          741 tokens (88 lines)
  References:
    cli.md                                     218 tokens
    handoff.md                                1035 tokens
    installing-lune.md                          65 tokens
  ───────────────────────────────────────────────
  Total:        2112 tokens

=== formatting-commits ===

Token breakdown:
  Name:            8 tokens
  Description:    57 tokens
  Body:          310 tokens (34 lines)
  References:
    conventional-commits.md                    362 tokens
    installing-git-format.md                    22 tokens
    kernel-style.md                            526 tokens
  ───────────────────────────────────────────────
  Total:        1285 tokens

=== frontend-accessibility ===

Token breakdown:
  Name:            7 tokens
  Description:    52 tokens
  Body:         1080 tokens (148 lines)
  References:
    antipatterns.md                           1341 tokens
    patterns.md                               2279 tokens
  ───────────────────────────────────────────────
  Total:        4759 tokens

=== getting-a-code-review ===

Token breakdown:
  Name:            8 tokens
  Description:    98 tokens
  Body:          489 tokens (56 lines)
  ───────────────────────────────────────────────
  Total:         595 tokens

=== handling-customer-data ===

Token breakdown:
  Name:            9 tokens
  Description:    46 tokens
  Body:          718 tokens (107 lines)
  ───────────────────────────────────────────────
  Total:         773 tokens

=== humanizer ===

Token breakdown:
  Name:            6 tokens
  Description:    31 tokens
  Body:         3274 tokens (462 lines)
  ───────────────────────────────────────────────
  Total:        3311 tokens

=== ideating-with-bdd ===

Token breakdown:
  Name:            9 tokens
  Description:   133 tokens
  Body:         1582 tokens (177 lines)
  References:
    gherkin-reference.md                       984 tokens
  ───────────────────────────────────────────────
  Total:        2708 tokens

=== initialising-and-updating-agents-md ===

Token breakdown:
  Name:           12 tokens
  Description:    59 tokens
  Body:          850 tokens (63 lines)
  ───────────────────────────────────────────────
  Total:         921 tokens

=== invoking-subagents ===

Token breakdown:
  Name:            8 tokens
  Description:    42 tokens
  Body:          450 tokens (20 lines)
  ───────────────────────────────────────────────
  Total:         500 tokens

=== maintaining-aur-packages ===

Token breakdown:
  Name:            9 tokens
  Description:    58 tokens
  Body:         1439 tokens (103 lines)
  References:
    build-patterns.md                         1120 tokens
  ───────────────────────────────────────────────
  Total:        2626 tokens

=== managing-and-navigating-worktrees ===

Token breakdown:
  Name:           11 tokens
  Description:    60 tokens
  Body:          703 tokens (96 lines)
  ───────────────────────────────────────────────
  Total:         774 tokens

=== monitoring-with-munin ===

Token breakdown:
  Name:           10 tokens
  Description:    62 tokens
  Body:         1981 tokens (238 lines)
  References:
    writing-plugins.md                        1151 tokens
  ───────────────────────────────────────────────
  Total:        3204 tokens

=== notifying-through-ntfy ===

Token breakdown:
  Name:           10 tokens
  Description:    37 tokens
  Body:         1052 tokens (89 lines)
  References:
    ht.md                                      383 tokens
    httpie.md                                  385 tokens
    nodejs.md                                  541 tokens
    python.md                                  517 tokens
    wget.md                                    430 tokens
  ───────────────────────────────────────────────
  Total:        3355 tokens

=== rebasing-with-git ===

Token breakdown:
  Name:            8 tokens
  Description:    71 tokens
  Body:         2317 tokens (232 lines)
  ───────────────────────────────────────────────
  Total:        2396 tokens

=== researching-with-rumilo ===

Token breakdown:
  Name:           10 tokens
  Description:    60 tokens
  Body:         1217 tokens (112 lines)
  ───────────────────────────────────────────────
  Total:        1287 tokens

=== resuming-work-through-lunatask ===

Token breakdown:
  Name:           12 tokens
  Description:    44 tokens
  Body:          466 tokens (42 lines)
  References:
    cli.md                                     195 tokens
    installing-lune.md                          65 tokens
  ───────────────────────────────────────────────
  Total:         782 tokens

=== scripting-with-go ===

Token breakdown:
  Name:            8 tokens
  Description:    46 tokens
  Body:          727 tokens (138 lines)
  ───────────────────────────────────────────────
  Total:         781 tokens

=== testing-with-gocuke-and-gherkin ===

Token breakdown:
  Name:           14 tokens
  Description:    77 tokens
  Body:          633 tokens (67 lines)
  References:
    bdd-practices.md                           261 tokens
    gocuke-api.md                             1427 tokens
  ───────────────────────────────────────────────
  Total:        2412 tokens

=== updating-llm-client-model-lists ===

Token breakdown:
  Name:           13 tokens
  Description:    51 tokens
  Body:         1124 tokens (131 lines)
  ───────────────────────────────────────────────
  Total:        1188 tokens

=== using-exe-dev ===

Token breakdown:
  Name:            8 tokens
  Description:    32 tokens
  Body:          380 tokens (45 lines)
  ───────────────────────────────────────────────
  Total:         420 tokens

=== using-jujutsu ===

Token breakdown:
  Name:            9 tokens
  Description:    55 tokens
  Body:          735 tokens (92 lines)
  ───────────────────────────────────────────────
  Total:         799 tokens

=== working-with-zmx ===

Token breakdown:
  Name:            8 tokens
  Description:    58 tokens
  Body:          564 tokens (71 lines)
  ───────────────────────────────────────────────
  Total:         630 tokens

=== writing-git-tags ===

Token breakdown:
  Name:            7 tokens
  Description:    38 tokens
  Body:          821 tokens (107 lines)
  References:
    installing-git-format.md                    22 tokens
  ───────────────────────────────────────────────
  Total:         888 tokens

=== writing-roc-lang ===

Token breakdown:
  Name:            8 tokens
  Description:    53 tokens
  Body:          693 tokens (117 lines)
  References:
    builtins-llms.md                         25216 tokens
    llms.md                                   4253 tokens
    scripting.md                               614 tokens
  ───────────────────────────────────────────────
  Total:       30837 tokens

=== writing-rust ===

Token breakdown:
  Name:            7 tokens
  Description:    45 tokens
  Body:         1324 tokens (139 lines)
  References:
    idioms.md                                 1708 tokens
  ───────────────────────────────────────────────
  Total:        3084 tokens

============================================================
SUMMARY
============================================================

Skills: 31
Metadata: 1975 tokens
Combined bodies: 32895 tokens
Overall: 88383 tokens
Validation errors: 0

Largest skills (by total tokens):
  1. writing-roc-lang                         30837 tokens
  2. ast-grep                                  5363 tokens
  3. frontend-accessibility                    4759 tokens
  4. authoring-skills                          3834 tokens
  5. notifying-through-ntfy                    3355 tokens
```

---

Some other tools if these interested you

- [wt](https://git.secluded.site/wt) - CLI for managing git worktrees
- [git-format](https://git.secluded.site/git-format) - CLI that turns LLM input
  into well-formatted conventional commits and tags
- [garble](https://git.secluded.site/garble) - transform stdin with an LLM (fix
  typos, translate, reformat)
- [lune](https://git.secluded.site/lune) - CLI and MCP server for
  [Lunatask.app](https://lunatask.app)
