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 `AGENT:` 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- [creating-tasks-through-lunatask](skills/creating-tasks-through-lunatask/SKILL.md):
37 Creates tasks and handoffs in [Lunatask] via [lune]. Tasks are just tasks.
38 Handoffs capture work to resume later across sessions without filling context
39 windows.
40- [formatting-commits](skills/formatting-commits/SKILL.md): Creates commits
41 following Conventional Commits format via [git-format].
42- [frontend-accessibility](skills/frontend-accessibility/SKILL.md): Strives to
43 generate accessible HTML, React, and frontend code following WCAG 2.2 AA.
44 Prioritizes semantic HTML over ARIA, keyboard navigation, and screen reader
45 compatibility.
46- [handling-customer-data](skills/handling-customer-data/SKILL.md): Queries
47 customer data responsiblyβthe agent answers questions about the data without
48 ever seeing it directly.
49- [humanizer](skills/humanizer/SKILL.md): Removes AI-generated patterns from
50 text like promotional fluff, weasel words, and mechanical sentence structures.
51 Based on Wikipedia's AI Cleanup research. Originally from [blader/humanizer].
52- [invoking-subagents](skills/invoking-subagents/SKILL.md): Spawns subagents
53 with restricted tool access for parallel tasks across repositories. Requires
54 [synu] and the `claude` CLI. Useful for summarizing git history or processing
55 large diffs without filling the main context window.
56- [managing-and-navigating-worktrees](skills/managing-and-navigating-worktrees/SKILL.md):
57 Manages git worktrees using [wt] with a bare repository structure. Each branch
58 lives in its own sibling directory. Requires [wt], git, and [gum].
59- [notifying-through-ntfy](skills/notifying-through-ntfy/SKILL.md): Sends push
60 notifications via [ntfy.sh] when requested, such as at the end of its turn.
61- [rebasing-with-git](skills/rebasing-with-git/SKILL.md): Manages git rebase
62 workflows from simple rebases to the drop-and-repick integration branch
63 pattern. Assumes `upstream` remote for forks and `rerere` enabled. Supports
64 worktrees including `wt`-managed repos.
65- [researching-with-rumilo](skills/researching-with-rumilo/SKILL.md): Dispatches
66 AI research subagents via [rumilo] for web search and repository exploration.
67 Research topics, look up library usage, or explore external codebases without
68 filling the main context window.
69- [resuming-work-through-lunatask](skills/resuming-work-through-lunatask/SKILL.md):
70 Resumes deferred work from [Lunatask] handoff notes via [lune].
71- [reviewing-code](skills/reviewing-code/SKILL.md): Reviews changes, commits,
72 PRs, and patches using Kodus, CodeRabbit, or Amp, preferring whichever is
73 available in that order.
74- [scripting-with-go](skills/scripting-with-go/SKILL.md): Creates executable Go
75 scripts using a shell trick (not a true shebang). For automation and tooling
76 outside of Go projects.
77- [working-with-tmux](skills/working-with-tmux/SKILL.md): Spawns and manages
78 background processes via tmux. Creates windows, sends commands, and captures
79 output without blocking the main session. Useful for servers and long tasks.
80- [writing-git-tags](skills/writing-git-tags/SKILL.md): Generates git tag
81 annotations from commit history following Semantic Versioning and Conventional
82 Commits via [git-format].
83- [writing-roc-lang](skills/writing-roc-lang/SKILL.md): Writes Roc code with
84 strong static types, helpful compiler errors, and functional programming.
85 Covers both full applications and one-off scripts.
86- [writing-rust](skills/writing-rust/SKILL.md): Writes idiomatic Rust with
87 strict quality gates: `cargo fmt`, `clippy -- -D warnings`, and required
88 tests. Enforces `thiserror` for libs, `anyhow` for apps, warns against common
89 anti-patterns.
90
91[blader/humanizer]: https://github.com/blader/humanizer
92[ast-grep]: https://github.com/ast-grep/ast-grep
93[git-format]: https://git.secluded.site/git-format
94[lune]: https://git.secluded.site/lune
95[Lunatask]: https://lunatask.app/
96[ntfy.sh]: https://ntfy.sh
97[rumilo]: https://git.secluded.site/rumilo
98[synu]: https://git.secluded.site/synu
99[wt]: https://git.secluded.site/wt
100[gum]: https://github.com/charmbracelet/gum
101
102## Installation
103
104If you're using [Amp], run `amp skill add
105https://git.secluded.site/agent-skills`. Otherwise, clone the repository, then
106install via `make` or manual symlinks.
107
108[Amp]: https://ampcode.com
109
110```sh
111git clone https://git.secluded.site/agent-skills
112cd agent-skills
113```
114
115### With Make
116
117Skills install to `~/.config/agents/skills/` by default. Override by
118setting `SKILL_DIR`. Tab completion works so you don't have to remember
119skill names or copy/paste.
120
121```sh
122# List available skills
123make list
124
125# Install all skills to default dir
126make all
127
128# Install specific skills to Claude Code
129SKILL_DIR=$HOME/.claude/skills make authoring-skills formatting-commits
130
131# Remove a specific skill from Amp
132make uninstall-authoring-skills SKILL_DIR=$HOME/.config/agents/skills
133
134# Remove all skills from Codex
135make uninstall SKILL_DIR=$HOME/.codex/skills
136```
137
138### With symlinks
139
140```sh
141# Install all skills
142for s in skills/*/; do ln -s "$PWD/$s" ~/.config/agents/skills/; done
143
144# Install specific skills
145ln -s "$PWD/skills/authoring-skills" ~/.config/agents/skills/
146
147# Remove a skill
148rm ~/.config/agents/skills/formatting-commits
149```
150
151### Agent skill directories
152
153| Agent | Dir |
154| --------------------------------------- | -------------------------- |
155| [Crush], [Octofriend], [Shelley], [Amp] | `~/.config/agents/skills/` |
156| [Pi] | `~/.pi/agent/skills/` |
157| Anthropic's Claude Code | `~/.claude/skills/` |
158| OpenAI's Codex | `~/.codex/skills/` |
159
160## Updating
161
162```sh
163cd ~/path/to/agent-skills
164git pull
165```
166
167Symlinked skills update automatically.
168
169## Contributions
170
171Patch requests are in [amolith/llm-projects] on [pr.pico.sh]. You don't need a
172new account to contribute, you don't need to fork this repo, you don't need to
173fiddle with `git send-email`, you don't need to faff with your email client to
174get `git request-pull` working...
175
176You just need:
177
178- Git
179- SSH
180- An SSH key
181
182```sh
183# Clone this repo, make your changes, and commit them
184# Create a new patch request with
185git format-patch origin/main --stdout | ssh pr.pico.sh pr create amolith/llm-projects
186# After potential feedback, submit a revision to an existing patch request with
187git format-patch origin/main --stdout | ssh pr.pico.sh pr add {prID}
188# List patch requests
189ssh pr.pico.sh pr ls amolith/llm-projects
190```
191
192See "How do Patch Requests work?" on [pr.pico.sh]'s home page for a more
193complete example workflow.
194
195[amolith/llm-projects]: https://pr.pico.sh/r/amolith/llm-projects
196[pr.pico.sh]: https://pr.pico.sh
197
198## Token stats
199
200Real token stats as reported by [Synthetic.new]'s [/messages/count_tokens]
201endpoint with [./skill-stats.go](./skill-stats.go).
202
203[Synthetic.new]: https://synthetic.new
204[/messages/count_tokens]: https://dev.synthetic.new/docs/anthropic/messages/count-tokens
205
206```
207=== addressing-agent-comments ===
208
209Token breakdown:
210 Name: 22 tokens
211 Description: 96 tokens
212 Body: 706 tokens (40 lines)
213 βββββββββββββββββββββββββββββββββββββββββββββββ
214 Total: 824 tokens
215
216=== ast-grep ===
217
218Token breakdown:
219 Name: 18 tokens
220 Description: 198 tokens
221 Body: 7503 tokens (469 lines)
222 References:
223 rule_reference.md 6814 tokens
224 βββββββββββββββββββββββββββββββββββββββββββββββ
225 Total: 14533 tokens
226 β οΈ Body exceeds recommended 5000 token budget!
227
228=== auditing-repositories ===
229
230Token breakdown:
231 Name: 20 tokens
232 Description: 140 tokens
233 Body: 2840 tokens (156 lines)
234 References:
235 llm-security.md 1138 tokens
236 βββββββββββββββββββββββββββββββββββββββββββββββ
237 Total: 4138 tokens
238
239=== authoring-skills ===
240
241Token breakdown:
242 Name: 20 tokens
243 Description: 86 tokens
244 Body: 2000 tokens (102 lines)
245 References:
246 checklist.md 806 tokens
247 patterns.md 2415 tokens
248 process.md 833 tokens
249 specification.md 3890 tokens
250 βββββββββββββββββββββββββββββββββββββββββββββββ
251 Total: 10050 tokens
252
253=== creating-tasks-through-lunatask ===
254
255Token breakdown:
256 Name: 30 tokens
257 Description: 108 tokens
258 Body: 1841 tokens (84 lines)
259 References:
260 cli.md 589 tokens
261 handoff.md 2769 tokens
262 installing-lune.md 176 tokens
263 βββββββββββββββββββββββββββββββββββββββββββββββ
264 Total: 5513 tokens
265
266=== formatting-commits ===
267
268Token breakdown:
269 Name: 22 tokens
270 Description: 98 tokens
271 Body: 992 tokens (43 lines)
272 References:
273 installing-git-format.md 64 tokens
274 βββββββββββββββββββββββββββββββββββββββββββββββ
275 Total: 1176 tokens
276
277=== frontend-accessibility ===
278
279Token breakdown:
280 Name: 20 tokens
281 Description: 140 tokens
282 Body: 2891 tokens (148 lines)
283 References:
284 antipatterns.md 3638 tokens
285 patterns.md 6233 tokens
286 βββββββββββββββββββββββββββββββββββββββββββββββ
287 Total: 12922 tokens
288
289=== handling-customer-data ===
290
291Token breakdown:
292 Name: 22 tokens
293 Description: 123 tokens
294 Body: 1983 tokens (107 lines)
295 βββββββββββββββββββββββββββββββββββββββββββββββ
296 Total: 2128 tokens
297
298=== humanizer ===
299
300Token breakdown:
301 Name: 15 tokens
302 Description: 84 tokens
303 Body: 8536 tokens (462 lines)
304 βββββββββββββββββββββββββββββββββββββββββββββββ
305 Total: 8635 tokens
306 β οΈ Body exceeds recommended 5000 token budget!
307
308=== invoking-subagents ===
309
310Token breakdown:
311 Name: 20 tokens
312 Description: 113 tokens
313 Body: 796 tokens (13 lines)
314 References:
315 installing-synu.md 140 tokens
316 βββββββββββββββββββββββββββββββββββββββββββββββ
317 Total: 1069 tokens
318
319=== managing-and-navigating-worktrees ===
320
321Token breakdown:
322 Name: 32 tokens
323 Description: 164 tokens
324 Body: 1912 tokens (96 lines)
325 βββββββββββββββββββββββββββββββββββββββββββββββ
326 Total: 2108 tokens
327
328=== notifying-through-ntfy ===
329
330Token breakdown:
331 Name: 25 tokens
332 Description: 93 tokens
333 Body: 2884 tokens (89 lines)
334 References:
335 ht.md 1063 tokens
336 httpie.md 1067 tokens
337 nodejs.md 1497 tokens
338 python.md 1468 tokens
339 wget.md 1216 tokens
340 βββββββββββββββββββββββββββββββββββββββββββββββ
341 Total: 9313 tokens
342
343=== rebasing-with-git ===
344
345Token breakdown:
346 Name: 22 tokens
347 Description: 188 tokens
348 Body: 6282 tokens (232 lines)
349 βββββββββββββββββββββββββββββββββββββββββββββββ
350 Total: 6492 tokens
351 β οΈ Body exceeds recommended 5000 token budget!
352
353=== researching-with-rumilo ===
354
355Token breakdown:
356 Name: 25 tokens
357 Description: 159 tokens
358 Body: 3133 tokens (111 lines)
359 βββββββββββββββββββββββββββββββββββββββββββββββ
360 Total: 3317 tokens
361
362=== resuming-work-through-lunatask ===
363
364Token breakdown:
365 Name: 30 tokens
366 Description: 113 tokens
367 Body: 1241 tokens (42 lines)
368 References:
369 cli.md 528 tokens
370 installing-lune.md 176 tokens
371 βββββββββββββββββββββββββββββββββββββββββββββββ
372 Total: 2088 tokens
373
374=== reviewing-code ===
375
376Token breakdown:
377 Name: 18 tokens
378 Description: 132 tokens
379 Body: 972 tokens (46 lines)
380 βββββββββββββββββββββββββββββββββββββββββββββββ
381 Total: 1122 tokens
382
383=== scripting-with-go ===
384
385Token breakdown:
386 Name: 20 tokens
387 Description: 120 tokens
388 Body: 1968 tokens (138 lines)
389 βββββββββββββββββββββββββββββββββββββββββββββββ
390 Total: 2108 tokens
391
392=== working-with-tmux ===
393
394Token breakdown:
395 Name: 22 tokens
396 Description: 84 tokens
397 Body: 1465 tokens (87 lines)
398 βββββββββββββββββββββββββββββββββββββββββββββββ
399 Total: 1571 tokens
400
401=== writing-git-tags ===
402
403Token breakdown:
404 Name: 22 tokens
405 Description: 101 tokens
406 Body: 2232 tokens (107 lines)
407 References:
408 installing-git-format.md 64 tokens
409 βββββββββββββββββββββββββββββββββββββββββββββββ
410 Total: 2419 tokens
411
412=== writing-roc-lang ===
413
414Token breakdown:
415 Name: 22 tokens
416 Description: 142 tokens
417 Body: 1846 tokens (117 lines)
418 References:
419 builtins-llms.md 67881 tokens
420 llms.md 11324 tokens
421 scripting.md 1722 tokens
422 βββββββββββββββββββββββββββββββββββββββββββββββ
423 Total: 82937 tokens
424
425=== writing-rust ===
426
427Token breakdown:
428 Name: 18 tokens
429 Description: 120 tokens
430 Body: 3628 tokens (139 lines)
431 References:
432 idioms.md 4605 tokens
433 βββββββββββββββββββββββββββββββββββββββββββββββ
434 Total: 8371 tokens
435
436============================================================
437SUMMARY
438============================================================
439
440Skills: 21
441Metadata: 3067 tokens
442Combined bodies: 57651 tokens
443Overall: 182834 tokens
444Validation errors: 0
445
446Largest skills (by total tokens):
447 1. writing-roc-lang 82937 tokens
448 2. ast-grep 14533 tokens
449 3. frontend-accessibility 12922 tokens
450 4. authoring-skills 10050 tokens
451 5. notifying-through-ntfy 9313 tokens
452```
453
454---
455
456Some other tools if these interested you
457
458- [wt](https://git.secluded.site/wt) - CLI for managing git worktrees
459- [git-format](https://git.secluded.site/git-format) - CLI that turns LLM input
460 into well-formatted conventional commits and tags
461- [garble](https://git.secluded.site/garble) - transform stdin with an LLM (fix
462 typos, translate, reformat)
463- [lune](https://git.secluded.site/lune) - CLI and MCP server for
464 [Lunatask.app](https://lunatask.app)