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