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