2026-07-10 11:23:51 +02:00
# skills 🧠
2026-07-10 10:32:19 +02:00
2026-07-10 12:54:47 +02:00
[](https://github.com/sponsors/kevinveenbirkenbach) [](https://www.patreon.com/c/kevinveenbirkenbach) [](https://buymeacoffee.com/kevinveenbirkenbach) [](https://s.veen.world/paypaldonate)
2026-07-10 10:32:19 +02:00
2026-07-10 12:54:47 +02:00
The agent skill collection of Kevin Veen-Birkenbach.
Every skill is pinned in `skills-lock.json` for reproducible installs.
First-party skills live under `skills/` and are layered on top of the locked ones at install time.
Compatible with Claude Code, Codex, Gemini CLI, Cursor, Copilot, Windsurf, Cline, and other agents.
2026-07-10 11:23:51 +02:00
2026-10-31 23:46:28 +01:00
## Naming 🏷️
2026-11-03 21:15:31 +01:00
Every first-party skill is named `kvb-<category>-<name>` with one of these categories: `think` , `create` , `code` , `ci` , `git` , `check` , `org` , `agent` , `skill` , `coach` : `think` thinks without producing a file, `create` produces an artifact, `code` works on code, `ci` on pipelines, `git` on history and forges, `check` analyses and reports findings, `org` coordinates agents, `agent` acts on one agent itself: its repository setup (code index, agent instructions) and its state (relax, sleep, wake up), `skill` works on skills themselves, `coach` serves the operator's wellbeing. Only `kvb-cleanup` , `kvb-coach` , `kvb-help` and the collectors `kvb-dream` , `kvb-optimize` and `kvb-transcend` stand without a category. Names use `a-z` , `0-9` and single hyphens, at most 64 characters, and equal their directory name. `tests/test_naming.py` enforces all of it, including that the organigram below lists every skill under its category.
2026-10-31 23:46:28 +01:00
## Organigram 🏛️
Every first-party skill under its category.
```mermaid
flowchart LR
kvb((kvb))
kvb --> think[think]
kvb --> create[create]
kvb --> code[code]
kvb --> ci[ci]
kvb --> git[git]
kvb --> check[check]
kvb --> org[org]
2026-11-03 21:07:50 +01:00
kvb --> agent[agent]
2026-11-03 13:08:31 +01:00
kvb --> skill[skill]
2026-11-03 15:40:50 +01:00
kvb --> coach[coach]
2026-10-31 23:46:28 +01:00
kvb --> none[no category]
think --> think_listen[kvb-think-listen]
think --> think_explain[kvb-think-explain]
think --> think_dialectic[kvb-think-dialectic]
think --> think_criticize[kvb-think-criticize]
2026-11-03 12:35:37 +01:00
think --> think_brainstorm[kvb-think-brainstorm]
think --> think_gaps[kvb-think-gaps]
2026-10-31 23:46:28 +01:00
create --> create_plan[kvb-create-plan]
2026-11-03 12:35:37 +01:00
create --> create_requirement[kvb-create-requirement]
2026-10-31 23:46:28 +01:00
code --> code_scope_guard[kvb-code-scope-guard]
2026-11-04 20:22:24 +01:00
code --> code_clean[kvb-code-clean]
2026-10-31 23:46:28 +01:00
code --> code_refactor[kvb-code-refactor]
code --> code_test[kvb-code-test]
code --> code_tune[kvb-code-tune]
2026-11-03 12:33:13 +01:00
code --> code_transcend[kvb-code-transcend]
2026-10-31 23:46:28 +01:00
ci --> ci_triage[kvb-ci-triage]
ci --> ci_artifacts[kvb-ci-artifacts]
ci --> ci_observe[kvb-ci-observe]
git --> git_commit_next[kvb-git-commit-next]
git --> git_commit_no_verify[kvb-git-commit-no-verify]
git --> git_merge_fix[kvb-git-merge-fix]
2026-11-03 21:00:53 +01:00
git --> git_issue_close[kvb-git-issue-close]
git --> git_issue_solve[kvb-git-issue-solve]
git --> git_pr_create[kvb-git-pr-create]
git --> git_pr_label[kvb-git-pr-label]
2026-11-03 16:50:32 +01:00
git --> git_update_branches[kvb-git-update-branches]
2026-10-31 23:46:28 +01:00
git --> git_branch_gc[kvb-git-branch-gc]
2026-11-04 19:58:10 +01:00
git --> git_orphans_find[kvb-git-orphans-find]
2026-10-31 23:46:28 +01:00
git --> git_changelog[kvb-git-changelog]
2026-11-04 09:03:15 +01:00
git --> git_hotfix[kvb-git-hotfix]
2026-10-31 23:46:28 +01:00
check --> check_legal[kvb-check-legal]
check --> check_security[kvb-check-security]
check --> check_principles[kvb-check-principles]
check --> check_confidence[kvb-check-confidence]
check --> check_break_risk[kvb-check-break-risk]
2026-11-03 23:58:24 +01:00
check --> check_gate[kvb-check-gate]
2026-11-04 17:07:06 +01:00
check --> check_efficiency[kvb-check-efficiency]
check --> check_speed[kvb-check-speed]
check --> check_score[kvb-check-score]
2026-10-31 23:46:28 +01:00
org --> org_organize[kvb-org-organize]
org --> org_split[kvb-org-split]
org --> org_coordinate[kvb-org-coordinate]
org --> org_perform[kvb-org-perform]
org --> org_matrix[kvb-org-matrix]
2026-11-01 00:47:00 +01:00
org --> org_rasci[kvb-org-rasci]
org --> org_artefacts[kvb-org-artefacts]
2026-11-01 01:48:06 +01:00
org --> org_wsjf[kvb-org-wsjf]
2026-10-31 23:46:28 +01:00
org --> org_robot[kvb-org-robot]
2026-11-03 13:21:46 +01:00
org --> org_operator[kvb-org-operator]
2026-11-03 21:04:21 +01:00
org --> org_priority[kvb-org-priority]
2026-11-03 21:15:31 +01:00
org --> org_evening[kvb-org-evening]
org --> org_sunset[kvb-org-sunset]
org --> org_sunrise[kvb-org-sunrise]
2026-11-04 17:48:42 +01:00
think --> think_choice[kvb-think-choice]
2026-11-04 16:54:20 +01:00
org --> org_radio[kvb-org-radio]
org --> org_queue[kvb-org-queue]
2026-11-03 21:07:50 +01:00
agent --> agent_optimize[kvb-agent-optimize]
2026-11-03 21:15:31 +01:00
agent --> agent_relax[kvb-agent-relax]
agent --> agent_sleep[kvb-agent-sleep]
agent --> agent_wakeup[kvb-agent-wakeup]
2026-11-03 13:08:31 +01:00
skill --> skill_tune[kvb-skill-tune]
skill --> skill_auto[kvb-skill-auto]
skill --> skill_essence[kvb-skill-essence]
skill --> skill_transcend[kvb-skill-transcend]
2026-11-03 13:17:05 +01:00
skill --> skill_compile[kvb-skill-compile]
2026-11-03 13:24:56 +01:00
skill --> skill_cleanup[kvb-skill-cleanup]
2026-11-03 23:22:46 +01:00
skill --> skill_silence[kvb-skill-silence]
2026-10-31 23:46:28 +01:00
none --> cleanup[kvb-cleanup]
none --> help[kvb-help]
2026-11-03 12:33:13 +01:00
none --> transcend_all[kvb-transcend]
2026-11-03 13:43:15 +01:00
none --> dream_all[kvb-dream]
none --> optimize_all[kvb-optimize]
2026-11-03 13:56:12 +01:00
none --> coach_all[kvb-coach]
2026-11-03 15:40:50 +01:00
coach --> coach_meditation[kvb-coach-meditation]
2026-10-31 23:46:28 +01:00
```
2026-10-30 17:35:27 +01:00
## Skill map 🗺️
2026-10-31 23:46:28 +01:00
How the first-party skills work together. A solid arrow means the skill invokes or relies on the other one; a dotted arrow means it fires automatically. Every skill that reports a result closes with the `kvb-check-confidence` block; those arrows are left out. The locked third-party skills (caveman, ponytail, archify) are not drawn.
2026-10-30 17:35:27 +01:00
```mermaid
flowchart LR
subgraph triggers [Triggers]
commit_req([commit request])
stage_req([staging or fix ready])
edit_hook([edit in a git worktree])
2026-11-03 13:43:15 +01:00
reminders([12 h agent hint, 17:00 GNOME popup])
2026-11-03 15:45:57 +01:00
full_hour([full hour])
2026-10-30 17:35:27 +01:00
code_task([code task])
2026-10-31 17:27:26 +01:00
spawn([subagent spawn])
2026-10-30 17:35:27 +01:00
end
2026-10-31 23:46:28 +01:00
subgraph cat_think [think]
active_listening[kvb-think-listen]
explain[kvb-think-explain]
dialectic[kvb-think-dialectic]
criticize[kvb-think-criticize]
2026-11-03 12:35:37 +01:00
brainstorm[kvb-think-brainstorm]
gaps[kvb-think-gaps]
2026-11-04 17:48:42 +01:00
choice[kvb-think-choice]
2026-10-30 17:35:27 +01:00
end
2026-10-31 23:46:28 +01:00
subgraph cat_create [create]
plan[kvb-create-plan]
2026-11-03 12:35:37 +01:00
requirement[kvb-create-requirement]
2026-10-30 17:35:27 +01:00
end
2026-10-31 23:46:28 +01:00
subgraph cat_code [code]
scope_guard[kvb-code-scope-guard]
2026-11-04 20:22:24 +01:00
clean[kvb-code-clean]
2026-10-31 23:46:28 +01:00
refactor[kvb-code-refactor]
test[kvb-code-test]
tune[kvb-code-tune]
2026-11-03 12:33:13 +01:00
code_transcend[kvb-code-transcend]
2026-10-30 17:35:27 +01:00
end
2026-10-31 23:46:28 +01:00
subgraph cat_ci [ci]
triage[kvb-ci-triage]
ci_artifacts[kvb-ci-artifacts]
observe[kvb-ci-observe]
2026-10-30 17:35:27 +01:00
end
2026-10-31 23:46:28 +01:00
subgraph cat_git [git]
commit_next[kvb-git-commit-next]
commit_no_verify[kvb-git-commit-no-verify]
merge_fix[kvb-git-merge-fix]
2026-11-03 21:00:53 +01:00
issue_close[kvb-git-issue-close]
issue_solve[kvb-git-issue-solve]
pr_create[kvb-git-pr-create]
pr_label[kvb-git-pr-label]
2026-11-03 16:50:32 +01:00
update_branches[kvb-git-update-branches]
2026-10-31 23:46:28 +01:00
branch_gc[kvb-git-branch-gc]
2026-11-04 19:58:10 +01:00
orphans_find[kvb-git-orphans-find]
2026-10-31 23:46:28 +01:00
changelog[kvb-git-changelog]
2026-11-04 09:03:15 +01:00
hotfix[kvb-git-hotfix]
2026-10-30 17:35:27 +01:00
end
2026-10-31 23:46:28 +01:00
subgraph cat_check [check]
advocate[kvb-check-legal]
medusa[kvb-check-security]
sceptic[kvb-check-principles]
confidence[kvb-check-confidence]
break_risk[kvb-check-break-risk]
2026-11-03 23:58:24 +01:00
gate[kvb-check-gate]
2026-11-04 17:07:06 +01:00
efficiency[kvb-check-efficiency]
speed[kvb-check-speed]
score[kvb-check-score]
2026-10-30 17:35:27 +01:00
end
2026-10-31 23:46:28 +01:00
subgraph cat_org [org]
democracy[kvb-org-organize]
funnel[kvb-org-split]
coordinate[kvb-org-coordinate]
subagent_model[kvb-org-perform]
status_matrix[kvb-org-matrix]
2026-11-01 00:47:00 +01:00
rasci[kvb-org-rasci]
artefacts[kvb-org-artefacts]
2026-11-01 01:48:06 +01:00
wsjf[kvb-org-wsjf]
2026-10-31 23:46:28 +01:00
robot[kvb-org-robot]
2026-11-03 13:21:46 +01:00
operator[kvb-org-operator]
2026-11-03 21:04:21 +01:00
priority[kvb-org-priority]
2026-11-03 21:15:31 +01:00
evening[kvb-org-evening]
sunset[kvb-org-sunset]
sunrise[kvb-org-sunrise]
2026-11-04 16:54:20 +01:00
radio[kvb-org-radio]
queue[kvb-org-queue]
2026-10-30 17:35:27 +01:00
end
2026-11-03 21:07:50 +01:00
subgraph cat_agent [agent]
agent_optimize[kvb-agent-optimize]
2026-11-03 21:15:31 +01:00
relax[kvb-agent-relax]
sleep[kvb-agent-sleep]
wakeup[kvb-agent-wakeup]
2026-11-03 21:07:50 +01:00
end
2026-11-03 13:08:31 +01:00
subgraph cat_skill [skill]
autotune[kvb-skill-tune]
autoskill[kvb-skill-auto]
essence[kvb-skill-essence]
skill_transcend[kvb-skill-transcend]
2026-11-03 13:17:05 +01:00
compile[kvb-skill-compile]
2026-11-03 13:24:56 +01:00
skill_cleanup[kvb-skill-cleanup]
2026-11-03 23:22:46 +01:00
silence[kvb-skill-silence]
2026-10-31 23:46:28 +01:00
end
subgraph cat_none [no category]
cleanup[kvb-cleanup]
help_skills[kvb-help]
2026-11-03 12:33:13 +01:00
transcend[kvb-transcend]
2026-11-03 13:43:15 +01:00
dream[kvb-dream]
optimize[kvb-optimize]
2026-11-03 13:56:12 +01:00
coach[kvb-coach]
2026-10-30 17:35:27 +01:00
end
2026-11-03 15:40:50 +01:00
subgraph cat_coach [coach]
meditation[kvb-coach-meditation]
end
2026-10-30 17:35:27 +01:00
commit_req -.-> commit_next
commit_req -.-> commit_no_verify
stage_req -.-> confidence
edit_hook -. council gate .-> democracy
reminders -.-> dream
2026-11-03 15:45:57 +01:00
full_hour -.-> coach
2026-11-04 20:22:24 +01:00
code_task -.-> clean
2026-10-30 17:35:27 +01:00
code_task -.-> scope_guard
2026-10-31 17:27:26 +01:00
spawn -.-> subagent_model
2026-10-30 17:35:27 +01:00
commit_next --> merge_fix
commit_next --> commit_no_verify
commit_next --> explain
commit_next --> dialectic
2026-11-03 21:00:53 +01:00
issue_close --> confidence
issue_solve --> issue_close
issue_solve --> funnel
issue_solve --> pr_create
pr_create --> issue_close
pr_create --> pr_label
pr_create -. push .-> operator
2026-11-03 16:50:32 +01:00
update_branches --> active_listening
update_branches -. conflicts .-> merge_fix
update_branches -. pushes .-> operator
2026-11-04 20:22:24 +01:00
commit_no_verify --> clean
commit_next --> clean
clean --> sceptic
clean --> refactor
2026-10-30 17:35:27 +01:00
commit_no_verify --> advocate
advocate --> dialectic
confidence --> break_risk
2026-11-03 23:58:24 +01:00
confidence --> gate
pr_label --> gate
2026-11-04 17:07:06 +01:00
stage_req -.-> score
score --> confidence
score --> break_risk
score --> efficiency
score --> speed
speed --> efficiency
efficiency -. heavy commands .-> queue
2026-11-03 23:58:24 +01:00
gate --> democracy
2026-11-04 09:03:15 +01:00
gate --> hotfix
triage --> hotfix
democracy --> hotfix
hotfix --> rasci
2026-10-30 17:35:27 +01:00
confidence -. objective .-> autotune
coordinate --> democracy
cleanup --> democracy
2026-11-04 19:58:10 +01:00
cleanup --> orphans_find
2026-10-31 17:30:24 +01:00
branch_gc --> democracy
2026-11-04 19:58:10 +01:00
orphans_find --> branch_gc
orphans_find --> choice
orphans_find --> operator
2026-10-30 17:35:27 +01:00
funnel --> democracy
funnel --> dialectic
2026-10-31 17:27:26 +01:00
funnel --> subagent_model
dialectic --> subagent_model
2026-10-30 17:35:27 +01:00
democracy --> merge_fix
2026-11-01 00:47:00 +01:00
democracy -. claim and release .-> rasci
funnel --> rasci
status_matrix --> rasci
cleanup --> artefacts
artefacts --> rasci
2026-11-01 01:48:06 +01:00
democracy --> wsjf
wsjf --> rasci
2026-11-03 21:04:21 +01:00
priority --> rasci
priority -. pins outrank .-> wsjf
2026-11-03 13:21:46 +01:00
operator --> rasci
2026-11-01 00:47:00 +01:00
dream --> rasci
2026-10-30 17:35:27 +01:00
observe --> triage
observe --> ci_artifacts
triage --> ci_artifacts
triage --> democracy
triage --> dialectic
triage --> funnel
triage --> tune
tune --> democracy
tune --> funnel
tune --> merge_fix
tune --> dialectic
dialectic --> active_listening
criticize --> dialectic
criticize --> active_listening
sceptic --> dialectic
2026-11-03 12:35:37 +01:00
gaps --> sceptic
gaps --> active_listening
gaps --> requirement
requirement --> active_listening
requirement --> brainstorm
requirement -. offer .-> plan
brainstorm --> dialectic
2026-10-30 17:35:27 +01:00
plan --> robot
plan --> active_listening
robot --> dialectic
dream --> dialectic
2026-11-03 13:43:15 +01:00
dream --> optimize
dream --> cleanup
2026-11-04 19:58:10 +01:00
dream --> orphans_find
2026-11-03 13:43:15 +01:00
optimize --> skill_cleanup
optimize --> transcend
optimize --> autoskill
optimize --> autotune
optimize --> compile
optimize --> essence
optimize --> refactor
optimize --> tune
2026-11-03 23:22:46 +01:00
optimize --> silence
silence -. peer protocol .-> democracy
2026-11-03 21:07:50 +01:00
optimize --> agent_optimize
2026-11-03 13:43:15 +01:00
optimize --> gaps
2026-11-03 21:07:50 +01:00
agent_optimize -. install .-> operator
agent_optimize -. domain graphs .-> rasci
2026-11-03 21:15:31 +01:00
evening -. message .-> relax
sunset -. message .-> sleep
sunrise -. message .-> wakeup
relax --> sleep
sunset -. hold and accept .-> operator
sunrise -. hold and accept .-> operator
sleep -. stops .-> robot
2026-11-03 13:56:12 +01:00
coach --> active_listening
coach --> operator
coach --> rasci
2026-11-03 15:40:50 +01:00
coach --> meditation
meditation --> active_listening
2026-10-30 17:35:27 +01:00
autoskill --> autotune
autotune --> essence
2026-11-03 13:08:31 +01:00
transcend --> skill_transcend
2026-11-03 12:33:13 +01:00
transcend --> code_transcend
2026-11-03 13:08:31 +01:00
skill_transcend --> active_listening
skill_transcend --> autotune
2026-11-03 12:33:13 +01:00
code_transcend --> active_listening
2026-11-03 13:08:31 +01:00
autotune -. own scripts .-> skill_transcend
2026-11-03 13:17:05 +01:00
autotune -. deterministic prose .-> compile
autoskill -. deterministic steps .-> compile
skill_transcend -. deterministic moves .-> compile
essence -. procedures .-> compile
compile --> active_listening
2026-11-03 13:24:56 +01:00
skill_cleanup --> operator
skill_cleanup -. unknown skills .-> transcend
2026-11-03 12:33:13 +01:00
tune -. measurements .-> code_transcend
2026-10-30 17:35:27 +01:00
test --> triage
test --> dialectic
2026-11-04 20:22:24 +01:00
test --> clean
refactor --> clean
2026-10-30 17:35:27 +01:00
```
2026-07-10 12:54:47 +02:00
## Requirements 📦
2026-07-10 11:23:51 +02:00
2026-07-10 12:54:47 +02:00
- Node.js (provides `npx skills` ).
- `jq` (only required for `make update` ).
2026-07-10 11:23:51 +02:00
2026-07-10 12:54:47 +02:00
## Installation 🚀
Install the skills globally into your home (`~/.agents/skills` and `~/.claude/skills` ):
```bash
make install
```
Copy the skills into a specific project (`<repo>/.agents/skills` and `<repo>/.claude/skills` ):
```bash
make project TARGET = /path/to/repo
```
2026-11-04 17:48:42 +01:00
Both commands also patch the target's `.claude/settings.local.json` — the machine-local, untracked file, so a project's reviewed `.claude/settings.json` is never rewritten by an install: the caveman and ponytail plugins are enabled so their modes auto-activate on session start, and two reminder hooks are registered — `kvb-dream` points each agent at `/kvb-dream` at most once every twelve hours (stamped per session in `~/.claude/.dream-stamps/` ), and `kvb-coach` runs its short form at the first prompt of every full hour, once across all agents (stamped in `~/.claude/.coach-hours/` ); the global install also enables the `kvb-dream-notify.timer` systemd user timer, which recommends `/kvb-dream` in a GNOME notification daily at 17:00 local time and catches up once after a missed run. A PreToolUse gate from the `kvb-org-organize` skill blocks edits to files in a git worktree until the session holds a claim (`skills/kvb-org-organize/scripts/council.py` ), and its resource watch (`skills/kvb-org-organize/scripts/watch.py` ) measures disk, Docker and caches, cleans up low-risk data and blocks new heavy jobs before the disk runs out; it stays inactive until `~/.config/agents-council/config.json` exists. The `kvb-org-radio` skill registers three hooks: its prompt hook delivers `broadcast` and `direct` items on the next prompt, a PostToolBatch hook delivers `security` , `pan-pan` and `mayday` items mid-turn, and an `asyncRewake` Stop hook wakes an idle session for a `mayday` or a `direct` item sent with `--wake` . The PreToolUse hook of the `kvb-org-queue` skill sends heavy commands through `queue.py hold` once the config sets `queue_enforce` . The global install also installs the MEDUSA security scanner with pipx for `kvb-check-security` , unless `medusa` is already on the PATH. Two hooks of the `kvb-org-perform` skill (`skills/kvb-org-perform/scripts/log.py` ) log every Agent spawn with its task class, model and effort, and store the quality feedback a sandboxed session prints, in `~/.local/state/agents-council/subagent-model.jsonl` . Existing settings are preserved.
2026-07-10 14:59:17 +02:00
2026-07-10 12:54:47 +02:00
Restart your agent afterwards so it loads the new skills.
## Maintenance 🔧
Refresh every skill to its latest version and rewrite `skills-lock.json` :
```bash
make update
```
Validate `skills-lock.json` and shellcheck the scripts (also run by CI on every push and after every update):
```bash
make test
```
## Related Tools 🧰
This collection is part of a wider toolset for managing IT and infrastructure:
- [alias ](https://github.com/kevinveenbirkenbach/alias ) — shell aliases for common commands.
- [package-manager ](https://github.com/kevinveenbirkenbach/package-manager ) — `pkgmgr` , a single command to install and manage these repositories.
- [infinito-nexus ](https://github.com/kevinveenbirkenbach/infinito-nexus ) — automation platform for self-hosted infrastructure.
## License 📜
MIT License, Copyright (c) 2026 Kevin Veen-Birkenbach.
2026-07-10 11:23:51 +02:00
## Author 👤
Kevin Veen-Birkenbach [kevin@veen.world ](mailto:kevin@veen.world )
2026-07-10 12:54:47 +02:00
## Thanks 🙏
Thanks to the [#ai:infinito.nexus ](https://matrix.to/#/%23ai:infinito.nexus ) community, and especially to [Paulinhx ](https://github.com/Paulinhx ) for the inspiration.
## Donation ❤️
If these tools help you, consider supporting their development:
- [GitHub Sponsors ](https://github.com/sponsors/kevinveenbirkenbach )
- [Patreon ](https://www.patreon.com/c/kevinveenbirkenbach )
- [Buy Me a Coffee ](https://buymeacoffee.com/kevinveenbirkenbach )
- [PayPal ](https://s.veen.world/paypaldonate )
- Bitcoin: [bc1qle7j8m9kvny2h2q3jzsnc64s4f5zme5re23pzc2lc2d7hhasc4dqachflp ](bitcoin:bc1qle7j8m9kvny2h2q3jzsnc64s4f5zme5re23pzc2lc2d7hhasc4dqachflp?message=%E2%9D%A4%EF%B8%8F%20Help%20Build%20the%20Future%20-%20Donation%20to%20Kevin%20Veen-Birkenbach. )