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