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)