<!--
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.

- [addressing-agent-comments](skills/addressing-agent-comments/SKILL.md): Finds
  `AGENT:` comments in code, gathers feedback, and carries out requested changes
- [ast-grep](skills/ast-grep/SKILL.md): have the LLM write ast-grep rules to
  perform structural code search and analysis using the AST
- [authoring-skills](skills/authoring-skills/SKILL.md): Creates
  well-structured Agent Skills following best practices. Use when
  writing new skills, reviewing existing skills, or when the user
  mentions skill authoring.
- [creating-tasks-through-lunatask](skills/creating-tasks-through-lunatask/SKILL.md):
  Creates tasks in Lunatask for todos, reminders, deferred work, and
  handoffs.
- [formatting-commits](skills/formatting-commits/SKILL.md): Creates
  commits strictly following Conventional Commits format via the
  `formatted-commit` CLI.
- [frontend-accessibility](skills/frontend-accessibility/SKILL.md):
  Generates accessible HTML, React, and frontend code following WCAG 2.2
  AA guidelines. Focuses on semantic HTML, keyboard accessibility, and
  screen reader compatibility.
- [handling-customer-data](skills/handling-customer-data/SKILL.md):
  Handles customer data responsibly by answering questions about data
  without ever seeing the data directly.
- [humanizer](skills/humanizer/SKILL.md): removes signs of AI-generated writing
  from text, making it sound more natural and human (initially copied from
  [blader/humanizer] then customised)
- [invoking-subagents](skills/invoking-subagents/SKILL.md): Invokes
  ad-hoc subagents to read through lots of data and extract relevant
  information. Useful for exploring repositories, reading git logs,
  reviewing large diffs.
- [managing-and-navigating-worktrees](skills/managing-and-navigating-worktrees/SKILL.md):
  Manages git worktrees and repos using the wt CLI. Use when cloning or
  creating new repos, adding worktrees, switching branches.
- [querying-documentation](skills/querying-documentation/SKILL.md):
  Spawns focused agents to search specific language/framework
  documentation and answer moderately complex queries.
- [resuming-work-through-lunatask](skills/resuming-work-through-lunatask/SKILL.md):
  Resumes previously deferred work from Lunatask. Use when user pastes a
  task note, shares a deep link, or references continuing earlier work.
- [resolving-secrets](skills/resolving-secrets/SKILL.md): Wraps shell
  commands to resolve secret references in environment variables.
- [reviewing-code](skills/reviewing-code/SKILL.md): Reviews code for
  correctness, security, reliability, performance, and quality. Use when
  asked to review code, a PR, a diff, or changes.
- [scripting-with-go](skills/scripting-with-go/SKILL.md): Creates
  executable Go scripts with shebang-like behavior for long-lived
  automation.
- [working-with-tmux](skills/working-with-tmux/SKILL.md): Lets the LLM create,
  manage, and capture output from tmux sessions/windows
- [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.

[blader/humanizer]: https://github.com/blader/humanizer

## 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/crush/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/crush/skills/; done

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

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

### Agent skill directories

| Agent                   | Dir                        |
| ----------------------- | -------------------------- |
| Crush                   | `~/.config/crush/skills/`  |
| Amp                     | `~/.config/agents/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-agent-comments ===

Token breakdown:
  Name:           22 tokens
  Description:    96 tokens
  Body:          706 tokens (40 lines)
  ───────────────────────────────────────────────
  Total:         824 tokens

=== ast-grep ===

Token breakdown:
  Name:           18 tokens
  Description:   198 tokens
  Body:         7503 tokens (469 lines)
  References:
    rule_reference.md                         6814 tokens
  ───────────────────────────────────────────────
  Total:       14533 tokens
  ⚠️  Body exceeds recommended 5000 token budget!

=== authoring-skills ===

Token breakdown:
  Name:           20 tokens
  Description:    86 tokens
  Body:         2000 tokens (102 lines)
  References:
    checklist.md                               806 tokens
    patterns.md                               2415 tokens
    process.md                                 833 tokens
    specification.md                          3890 tokens
  ───────────────────────────────────────────────
  Total:       10050 tokens

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

Token breakdown:
  Name:           30 tokens
  Description:   108 tokens
  Body:         1927 tokens (88 lines)
  References:
    cli.md                                     589 tokens
    handoff.md                                2769 tokens
    installing-lune.md                         176 tokens
  ───────────────────────────────────────────────
  Total:        5599 tokens

=== formatting-commits ===

Token breakdown:
  Name:           22 tokens
  Description:    98 tokens
  Body:          965 tokens (43 lines)
  References:
    installing-formatted-commit.md             296 tokens
  ───────────────────────────────────────────────
  Total:        1381 tokens

=== frontend-accessibility ===

Token breakdown:
  Name:           20 tokens
  Description:   140 tokens
  Body:         2891 tokens (148 lines)
  References:
    antipatterns.md                           3638 tokens
    patterns.md                               6233 tokens
  ───────────────────────────────────────────────
  Total:       12922 tokens

=== handling-customer-data ===

Token breakdown:
  Name:           22 tokens
  Description:   123 tokens
  Body:         1983 tokens (107 lines)
  ───────────────────────────────────────────────
  Total:        2128 tokens

=== humanizer ===

Token breakdown:
  Name:           15 tokens
  Description:    84 tokens
  Body:         8536 tokens (462 lines)
  ───────────────────────────────────────────────
  Total:        8635 tokens
  ⚠️  Body exceeds recommended 5000 token budget!

=== invoking-subagents ===

Token breakdown:
  Name:           20 tokens
  Description:   113 tokens
  Body:          796 tokens (13 lines)
  References:
    installing-synu.md                         140 tokens
  ───────────────────────────────────────────────
  Total:        1069 tokens

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

Token breakdown:
  Name:           32 tokens
  Description:   110 tokens
  Body:         1912 tokens (96 lines)
  ───────────────────────────────────────────────
  Total:        2054 tokens

=== querying-documentation ===

Token breakdown:
  Name:           22 tokens
  Description:   132 tokens
  Body:          796 tokens (22 lines)
  References:
    dependencies.md                            108 tokens
  ───────────────────────────────────────────────
  Total:        1058 tokens

=== resolving-secrets ===

Token breakdown:
  Name:           20 tokens
  Description:   120 tokens
  Body:          259 tokens (10 lines)
  References:
    installing-opx.md                          125 tokens
  ───────────────────────────────────────────────
  Total:         524 tokens

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

Token breakdown:
  Name:           30 tokens
  Description:   113 tokens
  Body:         1241 tokens (42 lines)
  References:
    cli.md                                     528 tokens
    installing-lune.md                         176 tokens
  ───────────────────────────────────────────────
  Total:        2088 tokens

=== reviewing-code ===

Token breakdown:
  Name:           18 tokens
  Description:   125 tokens
  Body:         1880 tokens (121 lines)
  ───────────────────────────────────────────────
  Total:        2023 tokens

=== scripting-with-go ===

Token breakdown:
  Name:           20 tokens
  Description:   120 tokens
  Body:         1968 tokens (138 lines)
  ───────────────────────────────────────────────
  Total:        2108 tokens

=== working-with-tmux ===

Token breakdown:
  Name:           22 tokens
  Description:    84 tokens
  Body:         1465 tokens (87 lines)
  ───────────────────────────────────────────────
  Total:        1571 tokens

=== writing-roc-lang ===

Token breakdown:
  Name:           22 tokens
  Description:   142 tokens
  Body:         1846 tokens (117 lines)
  References:
    builtins-llms.md                         67881 tokens
    llms.md                                  11324 tokens
    scripting.md                              1722 tokens
  ───────────────────────────────────────────────
  Total:       82937 tokens

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

Skills: 17
Metadata: 2367 tokens
Combined bodies: 38674 tokens
Overall: 151504 tokens
Validation errors: 0

Largest skills (by total tokens):
  1. writing-roc-lang                         82937 tokens
  2. ast-grep                                 14533 tokens
  3. frontend-accessibility                   12922 tokens
  4. authoring-skills                         10050 tokens
  5. humanizer                                 8635 tokens
```

---

Some other tools if these interested you

- [wt](https://git.secluded.site/wt) - CLI for managing git worktrees
- [formatted-commit](https://git.secluded.site/formatted-commit) - CLI that turns LLM input into well-formatted Conventional Commits
- [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)
