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