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