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)