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