🧪 Test / 🧪 Lock + lint (push) Waiting to run
kvb-check-efficiency measures a change against its base: tokens.py counts skill text tokens and listing words, measure.py runs one command in a base worktree and the working tree (one run per side, the mean of five over 100, an estimate marked ~ when other processes load the CPU). kvb-check-speed reads wall time from the same run and is not relevant for skills. kvb-check-score prints fix, break, efficiency, speed and the product score with emojis plus a gate line: below 90/5 it reports, over 100 it requires asking the operator before the commit. Every skill that reported confidence and break risk now shows the score block; the 90/5 bar adds efficiency and speed at most 100. Commit blocks and the commit call's approval prompt name worktree, branch, diff stat and the score values, also for merges. 24 descriptions were shortened to keep the skill listing within its budget. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
430 lines
16 KiB
Markdown
430 lines
16 KiB
Markdown
# skills 🧠
|
|
|
|
[](https://github.com/sponsors/kevinveenbirkenbach) [](https://www.patreon.com/c/kevinveenbirkenbach) [](https://buymeacoffee.com/kevinveenbirkenbach) [](https://s.veen.world/paypaldonate)
|
|
|
|
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.
|
|
|
|
## Naming 🏷️
|
|
|
|
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.
|
|
|
|
## 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]
|
|
kvb --> agent[agent]
|
|
kvb --> skill[skill]
|
|
kvb --> coach[coach]
|
|
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]
|
|
think --> think_brainstorm[kvb-think-brainstorm]
|
|
think --> think_gaps[kvb-think-gaps]
|
|
create --> create_plan[kvb-create-plan]
|
|
create --> create_requirement[kvb-create-requirement]
|
|
code --> code_scope_guard[kvb-code-scope-guard]
|
|
code --> code_no_defaults[kvb-code-no-defaults]
|
|
code --> code_no_comments[kvb-code-no-comments]
|
|
code --> code_refactor[kvb-code-refactor]
|
|
code --> code_test[kvb-code-test]
|
|
code --> code_tune[kvb-code-tune]
|
|
code --> code_transcend[kvb-code-transcend]
|
|
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]
|
|
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]
|
|
git --> git_update_branches[kvb-git-update-branches]
|
|
git --> git_branch_gc[kvb-git-branch-gc]
|
|
git --> git_changelog[kvb-git-changelog]
|
|
git --> git_hotfix[kvb-git-hotfix]
|
|
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]
|
|
check --> check_gate[kvb-check-gate]
|
|
check --> check_efficiency[kvb-check-efficiency]
|
|
check --> check_speed[kvb-check-speed]
|
|
check --> check_score[kvb-check-score]
|
|
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]
|
|
org --> org_rasci[kvb-org-rasci]
|
|
org --> org_artefacts[kvb-org-artefacts]
|
|
org --> org_wsjf[kvb-org-wsjf]
|
|
org --> org_robot[kvb-org-robot]
|
|
org --> org_operator[kvb-org-operator]
|
|
org --> org_priority[kvb-org-priority]
|
|
org --> org_evening[kvb-org-evening]
|
|
org --> org_sunset[kvb-org-sunset]
|
|
org --> org_sunrise[kvb-org-sunrise]
|
|
org --> org_radio[kvb-org-radio]
|
|
org --> org_queue[kvb-org-queue]
|
|
agent --> agent_optimize[kvb-agent-optimize]
|
|
agent --> agent_relax[kvb-agent-relax]
|
|
agent --> agent_sleep[kvb-agent-sleep]
|
|
agent --> agent_wakeup[kvb-agent-wakeup]
|
|
skill --> skill_tune[kvb-skill-tune]
|
|
skill --> skill_auto[kvb-skill-auto]
|
|
skill --> skill_essence[kvb-skill-essence]
|
|
skill --> skill_transcend[kvb-skill-transcend]
|
|
skill --> skill_compile[kvb-skill-compile]
|
|
skill --> skill_cleanup[kvb-skill-cleanup]
|
|
skill --> skill_silence[kvb-skill-silence]
|
|
none --> cleanup[kvb-cleanup]
|
|
none --> help[kvb-help]
|
|
none --> transcend_all[kvb-transcend]
|
|
none --> dream_all[kvb-dream]
|
|
none --> optimize_all[kvb-optimize]
|
|
none --> coach_all[kvb-coach]
|
|
coach --> coach_meditation[kvb-coach-meditation]
|
|
```
|
|
|
|
## Skill map 🗺️
|
|
|
|
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.
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
subgraph triggers [Triggers]
|
|
commit_req([commit request])
|
|
stage_req([staging or fix ready])
|
|
edit_hook([edit in a git worktree])
|
|
reminders([12 h agent hint, 17:00 GNOME popup])
|
|
full_hour([full hour])
|
|
code_task([code task])
|
|
spawn([subagent spawn])
|
|
end
|
|
subgraph cat_think [think]
|
|
active_listening[kvb-think-listen]
|
|
explain[kvb-think-explain]
|
|
dialectic[kvb-think-dialectic]
|
|
criticize[kvb-think-criticize]
|
|
brainstorm[kvb-think-brainstorm]
|
|
gaps[kvb-think-gaps]
|
|
end
|
|
subgraph cat_create [create]
|
|
plan[kvb-create-plan]
|
|
requirement[kvb-create-requirement]
|
|
end
|
|
subgraph cat_code [code]
|
|
scope_guard[kvb-code-scope-guard]
|
|
no_defaults[kvb-code-no-defaults]
|
|
refactor[kvb-code-refactor]
|
|
test[kvb-code-test]
|
|
tune[kvb-code-tune]
|
|
comments_clean[kvb-code-no-comments]
|
|
code_transcend[kvb-code-transcend]
|
|
end
|
|
subgraph cat_ci [ci]
|
|
triage[kvb-ci-triage]
|
|
ci_artifacts[kvb-ci-artifacts]
|
|
observe[kvb-ci-observe]
|
|
end
|
|
subgraph cat_git [git]
|
|
commit_next[kvb-git-commit-next]
|
|
commit_no_verify[kvb-git-commit-no-verify]
|
|
merge_fix[kvb-git-merge-fix]
|
|
issue_close[kvb-git-issue-close]
|
|
issue_solve[kvb-git-issue-solve]
|
|
pr_create[kvb-git-pr-create]
|
|
pr_label[kvb-git-pr-label]
|
|
update_branches[kvb-git-update-branches]
|
|
branch_gc[kvb-git-branch-gc]
|
|
changelog[kvb-git-changelog]
|
|
hotfix[kvb-git-hotfix]
|
|
end
|
|
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]
|
|
gate[kvb-check-gate]
|
|
efficiency[kvb-check-efficiency]
|
|
speed[kvb-check-speed]
|
|
score[kvb-check-score]
|
|
end
|
|
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]
|
|
rasci[kvb-org-rasci]
|
|
artefacts[kvb-org-artefacts]
|
|
wsjf[kvb-org-wsjf]
|
|
robot[kvb-org-robot]
|
|
operator[kvb-org-operator]
|
|
priority[kvb-org-priority]
|
|
evening[kvb-org-evening]
|
|
sunset[kvb-org-sunset]
|
|
sunrise[kvb-org-sunrise]
|
|
radio[kvb-org-radio]
|
|
queue[kvb-org-queue]
|
|
end
|
|
subgraph cat_agent [agent]
|
|
agent_optimize[kvb-agent-optimize]
|
|
relax[kvb-agent-relax]
|
|
sleep[kvb-agent-sleep]
|
|
wakeup[kvb-agent-wakeup]
|
|
end
|
|
subgraph cat_skill [skill]
|
|
autotune[kvb-skill-tune]
|
|
autoskill[kvb-skill-auto]
|
|
essence[kvb-skill-essence]
|
|
skill_transcend[kvb-skill-transcend]
|
|
compile[kvb-skill-compile]
|
|
skill_cleanup[kvb-skill-cleanup]
|
|
silence[kvb-skill-silence]
|
|
end
|
|
subgraph cat_none [no category]
|
|
cleanup[kvb-cleanup]
|
|
help_skills[kvb-help]
|
|
transcend[kvb-transcend]
|
|
dream[kvb-dream]
|
|
optimize[kvb-optimize]
|
|
coach[kvb-coach]
|
|
end
|
|
subgraph cat_coach [coach]
|
|
meditation[kvb-coach-meditation]
|
|
end
|
|
|
|
commit_req -.-> commit_next
|
|
commit_req -.-> commit_no_verify
|
|
stage_req -.-> confidence
|
|
edit_hook -. council gate .-> democracy
|
|
reminders -.-> dream
|
|
full_hour -.-> coach
|
|
code_task -.-> no_defaults
|
|
code_task -.-> scope_guard
|
|
spawn -.-> subagent_model
|
|
|
|
commit_next --> merge_fix
|
|
commit_next --> commit_no_verify
|
|
commit_next --> explain
|
|
commit_next --> dialectic
|
|
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
|
|
update_branches --> active_listening
|
|
update_branches -. conflicts .-> merge_fix
|
|
update_branches -. pushes .-> operator
|
|
commit_no_verify --> comments_clean
|
|
commit_no_verify --> advocate
|
|
advocate --> dialectic
|
|
confidence --> break_risk
|
|
confidence --> gate
|
|
pr_label --> gate
|
|
stage_req -.-> score
|
|
score --> confidence
|
|
score --> break_risk
|
|
score --> efficiency
|
|
score --> speed
|
|
speed --> efficiency
|
|
efficiency -. heavy commands .-> queue
|
|
gate --> democracy
|
|
gate --> hotfix
|
|
triage --> hotfix
|
|
democracy --> hotfix
|
|
hotfix --> rasci
|
|
confidence -. objective .-> autotune
|
|
|
|
coordinate --> democracy
|
|
cleanup --> democracy
|
|
cleanup --> branch_gc
|
|
branch_gc --> democracy
|
|
funnel --> democracy
|
|
funnel --> dialectic
|
|
funnel --> subagent_model
|
|
dialectic --> subagent_model
|
|
democracy --> merge_fix
|
|
democracy -. claim and release .-> rasci
|
|
funnel --> rasci
|
|
status_matrix --> rasci
|
|
cleanup --> artefacts
|
|
artefacts --> rasci
|
|
democracy --> wsjf
|
|
wsjf --> rasci
|
|
priority --> rasci
|
|
priority -. pins outrank .-> wsjf
|
|
operator --> rasci
|
|
dream --> rasci
|
|
|
|
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
|
|
sceptic --> no_defaults
|
|
gaps --> sceptic
|
|
gaps --> active_listening
|
|
gaps --> requirement
|
|
requirement --> active_listening
|
|
requirement --> brainstorm
|
|
requirement -. offer .-> plan
|
|
brainstorm --> dialectic
|
|
|
|
plan --> robot
|
|
plan --> active_listening
|
|
robot --> dialectic
|
|
|
|
dream --> dialectic
|
|
dream --> optimize
|
|
dream --> cleanup
|
|
dream --> branch_gc
|
|
optimize --> skill_cleanup
|
|
optimize --> transcend
|
|
optimize --> autoskill
|
|
optimize --> autotune
|
|
optimize --> compile
|
|
optimize --> essence
|
|
optimize --> refactor
|
|
optimize --> tune
|
|
optimize --> silence
|
|
silence -. peer protocol .-> democracy
|
|
optimize --> agent_optimize
|
|
optimize --> gaps
|
|
agent_optimize -. install .-> operator
|
|
agent_optimize -. domain graphs .-> rasci
|
|
evening -. message .-> relax
|
|
sunset -. message .-> sleep
|
|
sunrise -. message .-> wakeup
|
|
relax --> sleep
|
|
sunset -. hold and accept .-> operator
|
|
sunrise -. hold and accept .-> operator
|
|
sleep -. stops .-> robot
|
|
coach --> active_listening
|
|
coach --> operator
|
|
coach --> rasci
|
|
coach --> meditation
|
|
meditation --> active_listening
|
|
autoskill --> autotune
|
|
autotune --> essence
|
|
transcend --> skill_transcend
|
|
transcend --> code_transcend
|
|
skill_transcend --> active_listening
|
|
skill_transcend --> autotune
|
|
code_transcend --> active_listening
|
|
autotune -. own scripts .-> skill_transcend
|
|
autotune -. deterministic prose .-> compile
|
|
autoskill -. deterministic steps .-> compile
|
|
skill_transcend -. deterministic moves .-> compile
|
|
essence -. procedures .-> compile
|
|
compile --> active_listening
|
|
skill_cleanup --> operator
|
|
skill_cleanup -. unknown skills .-> transcend
|
|
tune -. measurements .-> code_transcend
|
|
|
|
test --> triage
|
|
test --> dialectic
|
|
test --> no_defaults
|
|
test --> comments_clean
|
|
refactor --> comments_clean
|
|
```
|
|
|
|
## Requirements 📦
|
|
|
|
- Node.js (provides `npx skills`).
|
|
- `jq` (only required for `make update`).
|
|
|
|
## 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
|
|
```
|
|
|
|
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`. 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.
|
|
|
|
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.
|
|
|
|
## Author 👤
|
|
|
|
Kevin Veen-Birkenbach [kevin@veen.world](mailto:kevin@veen.world)
|
|
|
|
## 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.)
|