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