Kevin Veen-BirkenbachandClaude Opus 5.5 34b434a744 feat(kvb-check-confidence, kvb-git-pr-label): declare 90/5 only after the quality gate
Operator rule of 2026-11-03: nothing is declared 90/5 (fix confidence of at least 90 %, break risk under 5 %) before the project's full quality gate passed on the exact head, make quality-high in infinito-nexus; until then the numbers are provisional and the missing gate is the residual. The 90/5 label follows the same gate, and a hotfix takes the next free gate slot. #1365 had the label after targeted tests only; #1357 before it left main red on a lint-only check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 17:07:23 +01:00
2026-11-03 16:18:09 +01:00

skills 🧠

GitHub Sponsors Patreon Buy Me a Coffee PayPal

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.

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]
  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]
  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]
  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.

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]
  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]
  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]
  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 -. 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):

make install

Copy the skills into a specific project (<repo>/.agents/skills and <repo>/.claude/skills):

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. 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:

make update

Validate skills-lock.json and shellcheck the scripts (also run by CI on every push and after every update):

make test

This collection is part of a wider toolset for managing IT and infrastructure:

  • alias — shell aliases for common commands.
  • package-manager — pkgmgr, a single command to install and manage these repositories.
  • infinito-nexus — automation platform for self-hosted infrastructure.

License 📜

MIT License, Copyright (c) 2026 Kevin Veen-Birkenbach.

Author 👤

Kevin Veen-Birkenbach kevin@veen.world

Thanks 🙏

Thanks to the #ai:infinito.nexus community, and especially to Paulinhx for the inspiration.

Donation ❤️

If these tools help you, consider supporting their development:

S
Description
No description provided
Readme MIT
1.2 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 96.4%
HTML 1.5%
Shell 1%
JavaScript 0.9%
Makefile 0.2%