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