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