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