README.md

  1<!--
  2SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
  3
  4SPDX-License-Identifier: CC0-1.0
  5-->
  6
  7# agent-skills
  8
  9A collection of [Agent Skills]; structured markdown that extends LLM
 10agent capabilities through a standardised format.
 11
 12[Agent Skills]: https://agentskills.io/
 13
 14## Available Skills
 15
 16Refer to [Β§ Token stats](#token-stats) for a detailed breakdown of each skill's
 17token count, plus overall metadata usage. I've used and tested them most with
 18[Crush], [Amp], and [Shelley], and to a lesser degree, [Octofriend] and [Pi].
 19
 20[Crush]: https://github.com/charmbracelet/crush
 21[Amp]: https://ampcode.com
 22[Shelley]: https://github.com/boldsoftware/shelley
 23[Octofriend]: https://github.com/synthetic-lab/octofriend
 24[Pi]: https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent
 25
 26- [addressing-agent-comments](skills/addressing-agent-comments/SKILL.md): Finds
 27  `AGENT:` comments in code, gathers feedback, and carries out requested
 28  changes.
 29- [ast-grep](skills/ast-grep/SKILL.md): Writes [ast-grep] rules for structural
 30  code search and modification.
 31- [auditing-repositories](skills/auditing-repositories/SKILL.md): Audits open
 32  source repositories for security, privacy, and unexpected behavior.
 33- [authoring-skills](skills/authoring-skills/SKILL.md): Creates and reviews
 34  Agent Skills following best practices. Covers skill structure, frontmatter,
 35  and progressive disclosure patterns.
 36- [backing-up-with-keld](skills/backing-up-with-keld/SKILL.md): Writes and
 37  manages keld configuration for restic backups. Covers TOML preset structure,
 38  split preset composition (`home@cloud`), config file discovery, environment
 39  variables, and systemd timer setup.
 40- [collaborating-through-pr-pico-sh](skills/collaborating-through-pr-pico-sh/SKILL.md):
 41  Collaborates on git patches via [pr.pico.sh], a minimal patchbin service.
 42  Covers both contributing and reviewing patch requests using `git format-patch`
 43  and `git am`.
 44- [creating-tasks-through-lunatask](skills/creating-tasks-through-lunatask/SKILL.md):
 45  Creates tasks and handoffs in [Lunatask] via [lune]. Tasks are just tasks.
 46  Handoffs capture work to resume later across sessions without filling context
 47  windows.
 48- [formatting-commits](skills/formatting-commits/SKILL.md): Creates commits
 49  following Conventional Commits format via [git-format].
 50- [frontend-accessibility](skills/frontend-accessibility/SKILL.md): Strives to
 51  generate accessible HTML, React, and frontend code following WCAG 2.2 AA.
 52  Prioritizes semantic HTML over ARIA, keyboard navigation, and screen reader
 53  compatibility.
 54- [handling-customer-data](skills/handling-customer-data/SKILL.md): Queries
 55  customer data responsiblyβ€”the agent answers questions about the data without
 56  ever seeing it directly.
 57- [humanizer](skills/humanizer/SKILL.md): Removes AI-generated patterns from
 58  text like promotional fluff, weasel words, and mechanical sentence structures.
 59  Based on Wikipedia's AI Cleanup research. Originally from [blader/humanizer].
 60- [initialising-and-updating-agents-md](skills/initialising-and-updating-agents-md/SKILL.md):
 61  Analyses a codebase and creates or updates `AGENTS.md` to help future agents
 62  work effectively. Discovers commands, conventions, patterns, and gotchas from
 63  the project's source and config files.
 64- [invoking-subagents](skills/invoking-subagents/SKILL.md): Spawns subagents
 65  with restricted tool access for parallel tasks across repositories. Requires
 66  [synu] and the `claude` CLI. Useful for summarizing git history or processing
 67  large diffs without filling the main context window.
 68- [managing-and-navigating-worktrees](skills/managing-and-navigating-worktrees/SKILL.md):
 69  Manages git worktrees using [wt] with a bare repository structure. Each branch
 70  lives in its own sibling directory. Requires [wt], git, and [gum].
 71- [monitoring-with-munin](skills/monitoring-with-munin/SKILL.md): Deploys and
 72  manages Munin monitoring across servers. Sets up munin-node on hosts, writes
 73  plugins, configures masters, and handles alerts.
 74- [notifying-through-ntfy](skills/notifying-through-ntfy/SKILL.md): Sends push
 75  notifications via [ntfy.sh] when requested, such as at the end of its turn.
 76- [rebasing-with-git](skills/rebasing-with-git/SKILL.md): Manages git rebase
 77  workflows from simple rebases to the drop-and-repick integration branch
 78  pattern. Assumes `upstream` remote for forks and `rerere` enabled. Supports
 79  worktrees including `wt`-managed repos.
 80- [researching-with-rumilo](skills/researching-with-rumilo/SKILL.md): Dispatches
 81  AI research subagents via [rumilo] for web search and repository exploration.
 82  Research topics, look up library usage, or explore external codebases without
 83  filling the main context window.
 84- [resuming-work-through-lunatask](skills/resuming-work-through-lunatask/SKILL.md):
 85  Resumes deferred work from [Lunatask] handoff notes via [lune].
 86- [reviewing-code](skills/reviewing-code/SKILL.md): Reviews changes, commits,
 87  PRs, and patches using Kodus, CodeRabbit, or Amp, preferring whichever is
 88  available in that order.
 89- [scripting-with-go](skills/scripting-with-go/SKILL.md): Creates executable Go
 90  scripts using a shell trick (not a true shebang). For automation and tooling
 91  outside of Go projects.
 92- [testing-with-gocuke-and-gherkin](skills/testing-with-gocuke-and-gherkin/SKILL.md):
 93  Drives BDD, red/green TDD, and property-based testing in Go projects using
 94  [gocuke] and Gherkin feature files.
 95- [working-with-tmux](skills/working-with-tmux/SKILL.md): Spawns and manages
 96  background processes via tmux. Creates windows, sends commands, and captures
 97  output without blocking the main session. Useful for servers and long tasks.
 98- [writing-git-tags](skills/writing-git-tags/SKILL.md): Generates git tag
 99  annotations from commit history following Semantic Versioning and Conventional
100  Commits via [git-format].
101- [writing-roc-lang](skills/writing-roc-lang/SKILL.md): Writes Roc code with
102  strong static types, helpful compiler errors, and functional programming.
103  Covers both full applications and one-off scripts.
104- [writing-rust](skills/writing-rust/SKILL.md): Writes idiomatic Rust with
105  strict quality gates: `cargo fmt`, `clippy -- -D warnings`, and required
106  tests. Enforces `thiserror` for libs, `anyhow` for apps, warns against common
107  anti-patterns.
108
109[blader/humanizer]: https://github.com/blader/humanizer
110[ast-grep]: https://github.com/ast-grep/ast-grep
111[git-format]: https://git.secluded.site/git-format
112[gocuke]: https://github.com/tenntenn/gocuke
113[lune]: https://git.secluded.site/lune
114[Lunatask]: https://lunatask.app/
115[ntfy.sh]: https://ntfy.sh
116[rumilo]: https://git.secluded.site/rumilo
117[synu]: https://git.secluded.site/synu
118[wt]: https://git.secluded.site/wt
119[gum]: https://github.com/charmbracelet/gum
120
121## Installation
122
123If you're using [Amp], run `amp skill add
124https://git.secluded.site/agent-skills`. Otherwise, clone the repository, then
125install via `make` or manual symlinks.
126
127[Amp]: https://ampcode.com
128
129```sh
130git clone https://git.secluded.site/agent-skills
131cd agent-skills
132```
133
134### With Make
135
136Skills install to `~/.config/agents/skills/` by default. Override by
137setting `SKILL_DIR`. Tab completion works so you don't have to remember
138skill names or copy/paste.
139
140```sh
141# List available skills
142make list
143
144# Install all skills to default dir
145make all
146
147# Install specific skills to Claude Code
148SKILL_DIR=$HOME/.claude/skills make authoring-skills formatting-commits
149
150# Remove a specific skill from Amp
151make uninstall-authoring-skills SKILL_DIR=$HOME/.config/agents/skills
152
153# Remove all skills from Codex
154make uninstall SKILL_DIR=$HOME/.codex/skills
155```
156
157### With symlinks
158
159```sh
160# Install all skills
161for s in skills/*/; do ln -s "$PWD/$s" ~/.config/agents/skills/; done
162
163# Install specific skills
164ln -s "$PWD/skills/authoring-skills" ~/.config/agents/skills/
165
166# Remove a skill
167rm ~/.config/agents/skills/formatting-commits
168```
169
170### Agent skill directories
171
172| Agent                                   | Dir                        |
173| --------------------------------------- | -------------------------- |
174| [Crush], [Octofriend], [Shelley], [Amp] | `~/.config/agents/skills/` |
175| [Pi]                                    | `~/.pi/agent/skills/`      |
176| Anthropic's Claude Code                 | `~/.claude/skills/`        |
177| OpenAI's Codex                          | `~/.codex/skills/`         |
178
179## Updating
180
181```sh
182cd ~/path/to/agent-skills
183git pull
184```
185
186Symlinked skills update automatically.
187
188## Contributions
189
190Patch requests are in [amolith/llm-projects] on [pr.pico.sh]. You don't need a
191new account to contribute, you don't need to fork this repo, you don't need to
192fiddle with `git send-email`, you don't need to faff with your email client to
193get `git request-pull` working...
194
195You just need:
196
197- Git
198- SSH
199- An SSH key
200
201```sh
202# Clone this repo, make your changes, and commit them
203# Create a new patch request with
204git format-patch origin/main --stdout | ssh pr.pico.sh pr create amolith/llm-projects
205# After potential feedback, submit a revision to an existing patch request with
206git format-patch origin/main --stdout | ssh pr.pico.sh pr add {prID}
207# List patch requests
208ssh pr.pico.sh pr ls amolith/llm-projects
209```
210
211See "How do Patch Requests work?" on [pr.pico.sh]'s home page for a more
212complete example workflow.
213
214[amolith/llm-projects]: https://pr.pico.sh/r/amolith/llm-projects
215[pr.pico.sh]: https://pr.pico.sh
216
217## Token stats
218
219Real token stats as reported by [Synthetic.new]'s [/messages/count_tokens]
220endpoint with [./skill-stats.go](./skill-stats.go).
221
222[Synthetic.new]: https://synthetic.new
223[/messages/count_tokens]: https://dev.synthetic.new/docs/anthropic/messages/count-tokens
224
225```
226=== addressing-agent-comments ===
227
228Token breakdown:
229  Name:            8 tokens
230  Description:    36 tokens
231  Body:          271 tokens (40 lines)
232  ───────────────────────────────────────────────
233  Total:         315 tokens
234
235=== ast-grep ===
236
237Token breakdown:
238  Name:            7 tokens
239  Description:    76 tokens
240  Body:         2765 tokens (469 lines)
241  References:
242    rule_reference.md                         2515 tokens
243  ───────────────────────────────────────────────
244  Total:        5363 tokens
245
246=== auditing-repositories ===
247
248Token breakdown:
249  Name:            8 tokens
250  Description:    51 tokens
251  Body:         1046 tokens (156 lines)
252  References:
253    llm-security.md                            427 tokens
254  ───────────────────────────────────────────────
255  Total:        1532 tokens
256
257=== authoring-skills ===
258
259Token breakdown:
260  Name:            8 tokens
261  Description:    32 tokens
262  Body:          733 tokens (102 lines)
263  References:
264    checklist.md                               301 tokens
265    patterns.md                                880 tokens
266    process.md                                 311 tokens
267    specification.md                          1441 tokens
268  ───────────────────────────────────────────────
269  Total:        3706 tokens
270
271=== backing-up-with-keld ===
272
273Token breakdown:
274  Name:            9 tokens
275  Description:    39 tokens
276  Body:         1742 tokens (235 lines)
277  References:
278    config-examples.md                        1415 tokens
279    installation.md                             19 tokens
280  ───────────────────────────────────────────────
281  Total:        3224 tokens
282
283=== collaborating-through-pr-pico-sh ===
284
285Token breakdown:
286  Name:           12 tokens
287  Description:    47 tokens
288  Body:          521 tokens (43 lines)
289  References:
290    contributing.md                            162 tokens
291    jujutsu.md                                 516 tokens
292    reviewing.md                               406 tokens
293  ───────────────────────────────────────────────
294  Total:        1664 tokens
295
296=== creating-tasks-through-lunatask ===
297
298Token breakdown:
299  Name:           12 tokens
300  Description:    41 tokens
301  Body:          687 tokens (84 lines)
302  References:
303    cli.md                                     218 tokens
304    handoff.md                                1035 tokens
305    installing-lune.md                          65 tokens
306  ───────────────────────────────────────────────
307  Total:        2058 tokens
308
309=== formatting-commits ===
310
311Token breakdown:
312  Name:            8 tokens
313  Description:    37 tokens
314  Body:          361 tokens (43 lines)
315  References:
316    installing-git-format.md                    22 tokens
317  ───────────────────────────────────────────────
318  Total:         428 tokens
319
320=== frontend-accessibility ===
321
322Token breakdown:
323  Name:            7 tokens
324  Description:    52 tokens
325  Body:         1080 tokens (148 lines)
326  References:
327    antipatterns.md                           1341 tokens
328    patterns.md                               2279 tokens
329  ───────────────────────────────────────────────
330  Total:        4759 tokens
331
332=== handling-customer-data ===
333
334Token breakdown:
335  Name:            9 tokens
336  Description:    46 tokens
337  Body:          718 tokens (107 lines)
338  ───────────────────────────────────────────────
339  Total:         773 tokens
340
341=== humanizer ===
342
343Token breakdown:
344  Name:            6 tokens
345  Description:    31 tokens
346  Body:         3274 tokens (462 lines)
347  ───────────────────────────────────────────────
348  Total:        3311 tokens
349
350=== initialising-and-updating-agents-md ===
351
352Token breakdown:
353  Name:           12 tokens
354  Description:    59 tokens
355  Body:          850 tokens (63 lines)
356  ───────────────────────────────────────────────
357  Total:         921 tokens
358
359=== invoking-subagents ===
360
361Token breakdown:
362  Name:            8 tokens
363  Description:    42 tokens
364  Body:          227 tokens (16 lines)
365  ───────────────────────────────────────────────
366  Total:         277 tokens
367
368=== managing-and-navigating-worktrees ===
369
370Token breakdown:
371  Name:           11 tokens
372  Description:    60 tokens
373  Body:          703 tokens (96 lines)
374  ───────────────────────────────────────────────
375  Total:         774 tokens
376
377=== monitoring-with-munin ===
378
379Token breakdown:
380  Name:           10 tokens
381  Description:    62 tokens
382  Body:         1553 tokens (195 lines)
383  References:
384    writing-plugins.md                        1151 tokens
385  ───────────────────────────────────────────────
386  Total:        2776 tokens
387
388=== notifying-through-ntfy ===
389
390Token breakdown:
391  Name:           10 tokens
392  Description:    37 tokens
393  Body:         1052 tokens (89 lines)
394  References:
395    ht.md                                      383 tokens
396    httpie.md                                  385 tokens
397    nodejs.md                                  541 tokens
398    python.md                                  517 tokens
399    wget.md                                    430 tokens
400  ───────────────────────────────────────────────
401  Total:        3355 tokens
402
403=== rebasing-with-git ===
404
405Token breakdown:
406  Name:            8 tokens
407  Description:    71 tokens
408  Body:         2317 tokens (232 lines)
409  ───────────────────────────────────────────────
410  Total:        2396 tokens
411
412=== researching-with-rumilo ===
413
414Token breakdown:
415  Name:           10 tokens
416  Description:    60 tokens
417  Body:         1152 tokens (111 lines)
418  ───────────────────────────────────────────────
419  Total:        1222 tokens
420
421=== resuming-work-through-lunatask ===
422
423Token breakdown:
424  Name:           12 tokens
425  Description:    44 tokens
426  Body:          466 tokens (42 lines)
427  References:
428    cli.md                                     195 tokens
429    installing-lune.md                          65 tokens
430  ───────────────────────────────────────────────
431  Total:         782 tokens
432
433=== reviewing-code ===
434
435Token breakdown:
436  Name:            7 tokens
437  Description:    51 tokens
438  Body:          355 tokens (48 lines)
439  ───────────────────────────────────────────────
440  Total:         413 tokens
441
442=== scripting-with-go ===
443
444Token breakdown:
445  Name:            8 tokens
446  Description:    46 tokens
447  Body:          727 tokens (138 lines)
448  ───────────────────────────────────────────────
449  Total:         781 tokens
450
451=== testing-with-gocuke-and-gherkin ===
452
453Token breakdown:
454  Name:           14 tokens
455  Description:    73 tokens
456  Body:         1188 tokens (105 lines)
457  References:
458    bdd-practices.md                          1035 tokens
459    gherkin-reference.md                       984 tokens
460    gocuke-api.md                             1427 tokens
461  ───────────────────────────────────────────────
462  Total:        4721 tokens
463
464=== updating-llm-client-model-lists ===
465
466Token breakdown:
467  Name:           13 tokens
468  Description:    51 tokens
469  Body:          997 tokens (126 lines)
470  ───────────────────────────────────────────────
471  Total:        1061 tokens
472
473=== using-exe-dev ===
474
475Token breakdown:
476  Name:            8 tokens
477  Description:    32 tokens
478  Body:          380 tokens (45 lines)
479  ───────────────────────────────────────────────
480  Total:         420 tokens
481
482=== working-with-tmux ===
483
484Token breakdown:
485  Name:            8 tokens
486  Description:    32 tokens
487  Body:          548 tokens (88 lines)
488  ───────────────────────────────────────────────
489  Total:         588 tokens
490
491=== writing-git-tags ===
492
493Token breakdown:
494  Name:            7 tokens
495  Description:    38 tokens
496  Body:          821 tokens (107 lines)
497  References:
498    installing-git-format.md                    22 tokens
499  ───────────────────────────────────────────────
500  Total:         888 tokens
501
502=== writing-roc-lang ===
503
504Token breakdown:
505  Name:            8 tokens
506  Description:    53 tokens
507  Body:          693 tokens (117 lines)
508  References:
509    builtins-llms.md                         25216 tokens
510    llms.md                                   4253 tokens
511    scripting.md                               614 tokens
512  ───────────────────────────────────────────────
513  Total:       30837 tokens
514
515=== writing-rust ===
516
517Token breakdown:
518  Name:            7 tokens
519  Description:    45 tokens
520  Body:         1324 tokens (139 lines)
521  References:
522    idioms.md                                 1708 tokens
523  ───────────────────────────────────────────────
524  Total:        3084 tokens
525
526============================================================
527SUMMARY
528============================================================
529
530Skills: 28
531Metadata: 1599 tokens
532Combined bodies: 28551 tokens
533Overall: 82429 tokens
534Validation errors: 0
535
536Largest skills (by total tokens):
537  1. writing-roc-lang                         30837 tokens
538  2. ast-grep                                  5363 tokens
539  3. frontend-accessibility                    4759 tokens
540  4. testing-with-gocuke-and-gherkin           4721 tokens
541  5. authoring-skills                          3706 tokens
542```
543
544---
545
546Some other tools if these interested you
547
548- [wt](https://git.secluded.site/wt) - CLI for managing git worktrees
549- [git-format](https://git.secluded.site/git-format) - CLI that turns LLM input
550  into well-formatted conventional commits and tags
551- [garble](https://git.secluded.site/garble) - transform stdin with an LLM (fix
552  typos, translate, reformat)
553- [lune](https://git.secluded.site/lune) - CLI and MCP server for
554  [Lunatask.app](https://lunatask.app)