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)