React Router Release Notes Prep
remix-run/react-router
Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.
Stage and commit changes using Conventional Commits. An agent skill from kdlbs/kandev.
$ npx skills add kdlbs/kandev --skill commit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kdlbs/kandev commit --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/kdlbs/kandev.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/commit .claude/skills/commit && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "commit" agent skill from https://github.com/kdlbs/kandev/tree/main/.agents/skills/commit into .claude/skills/commit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kdlbs/kandev/tree/main/.agents/skills/commitType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kdlbs/kandev --skill commit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kdlbs/kandev commit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kdlbs/kandev.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/commit .agents/skills/commit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "commit" agent skill from https://github.com/kdlbs/kandev/tree/main/.agents/skills/commit into .agents/skills/commit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kdlbs/kandev --skill commit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kdlbs/kandev commit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kdlbs/kandev.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/commit .cursor/skills/commit && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "commit" agent skill from https://github.com/kdlbs/kandev/tree/main/.agents/skills/commit into .cursor/skills/commit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kdlbs/kandev.git --path .agents/skills/commit--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kdlbs/kandev --skill commit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kdlbs/kandev commit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kdlbs/kandev.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/commit .gemini/skills/commit && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "commit" agent skill from https://github.com/kdlbs/kandev/tree/main/.agents/skills/commit into .gemini/skills/commit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kdlbs/kandev commitInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kdlbs/kandev --skill commit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kdlbs/kandev.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/commit .github/skills/commit && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "commit" agent skill from https://github.com/kdlbs/kandev/tree/main/.agents/skills/commit into .github/skills/commit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kdlbs/kandev --skill commit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kdlbs/kandev commit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kdlbs/kandev.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/commit .opencode/skills/commit && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "commit" agent skill from https://github.com/kdlbs/kandev/tree/main/.agents/skills/commit into .opencode/skills/commit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
commitStage and commit changes using Conventional Commits. An agent skill from kdlbs/kandev.
Commit is an agent skill from kdlbs/kandev. Stage and commit changes using Conventional Commits. Use when there are dirty/staged files to commit, the user says "commit", or before pushing a PR.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Commit messages. It works with Git. The repository describes itself as: AI Kanban & Development Environment. Orchestrate multiple agents, review changes, open PRs. Multi-provider, self-hostable, no telemetry. The licence is AGPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit dabc68f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitpipmakepnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, pip and pnpm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Commit loads about 2.8k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 1,367 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from kdlbs/kandev at commit dabc68f, republished under its AGPL-3.0 licence (© kdlbs). 1,367 words, ~2,763 tokens.
.claude/skills/commit/SKILL.md (or your agent's skills folder).Stage and commit changes in the primary conversation after the task-defined
implementation checks pass. Do not add broad post-commit /verify before push
by default. Preserve the hook receipt as normal commit evidence.
Create a git commit following this project's Conventional Commits convention. These messages are used by git-cliff (cliff.toml) to auto-generate changelogs and release notes. PRs are squash-merged, so the PR title becomes the commit on main — CI validates it via pr-title.yml.
/pr-fixup — Use after the PR opens only for CI or actionable reviewer
findings.type: lowercase description| Type | Use for | In changelog? |
|---|---|---|
feat | New features | Yes (Features) |
fix | Bug fixes | Yes (Bug Fixes) |
perf | Performance improvements | Yes (Performance) |
refactor | Code refactoring | Yes (Refactoring) |
docs | Documentation changes | Yes (Documentation) |
chore | Maintenance, deps, configs | No |
ci | CI/CD changes | No |
test | Test-only changes | No |
feat(ui): add dialog is validfeat: add release notes (#295)! after type: feat!: remove legacy APIbody-max-line-length). Hard-wrap bullet points before committing; long URLs or prose lines that exceed 100 chars will fail the hook with body's lines must not be longer than 100 characters. If a HEREDOC body fails, re-wrap and create a new commit — do not amend.feat: add release notes dialog
fix: flaky test in orchestrator (#292)
refactor: extract session handler into separate module
chore: update dependencies
ci: add PR title linting workflowTrack these steps with an internal todo/checklist and mark them complete as you go. Do not create, update, or delete Kandev subtasks for this workflow unless the user explicitly requests task tracking.
Understand changes: Run git status and git diff to understand all changes. Review recent commits with git log --oneline -10 to match project style.
Ensure pre-commit hooks are wired up. This must work in worktrees too, where .git/ is a file (not a directory) and the real hooks path is shared with the main repo via core.hooksPath. Use git rev-parse --git-path so the check resolves correctly regardless:
# Is the framework on PATH?
pre-commit --version >/dev/null 2>&1 && echo "INSTALLED" || echo "NOT_INSTALLED"
# Is the hook actually wired into git's hook system?
PRE_COMMIT_HOOK_PATH=$(git rev-parse --git-path hooks/pre-commit)
COMMIT_MSG_HOOK_PATH=$(git rev-parse --git-path hooks/commit-msg)
test -f "$PRE_COMMIT_HOOK_PATH" && grep -q "pre-commit" "$PRE_COMMIT_HOOK_PATH" \
&& test -f "$COMMIT_MSG_HOOK_PATH" && grep -q "pre-commit" "$COMMIT_MSG_HOOK_PATH" \
&& echo "ACTIVE" || echo "INACTIVE"If NOT_INSTALLED, tell the user once: "⚠️ pre-commit is not on PATH. Install it with pip install pre-commit so format/lint runs on every commit." Then continue (don't block).
If installed but INACTIVE, install it yourself — the project ships .pre-commit-config.yaml and make doctor is a no-op-on-already-installed wrapper around the same command:
pre-commit install -t pre-commit -t commit-msg --overwriteMention that you wired it up. Subsequent commits will run hooks automatically.
If both checks pass, no output needed.
Before the first commit, ensure the worktree can run the commit-msg
dependency. If apps/node_modules/.bin/commitlint is absent, install it
from apps/ before committing:
cd apps && pnpm install --frozen-lockfileRetry the normal commit after the install; never bypass the hook.
After merging or rebasing the base branch, if apps/package.json or
apps/pnpm-lock.yaml changed and a hook reports
ERR_MODULE_NOT_FOUND even though apps/node_modules/.bin/commitlint
exists, refresh the workspace dependencies from apps/:
cd apps && pnpm install --frozen-lockfileRetry the normal commit without bypassing hooks.
Why this matters: a missing hook lets lint regressions slip past local commits and only surface in CI (e.g. funlen / cognitive complexity on backend Go code). The hook catches them in <1s at commit time. See Makefile's doctor target for the idempotent install command.
Capture the parent SHA and preserve hook evidence:
git rev-parse HEADNever use --no-verify, SKIP, or another hook-bypass option or
environment variable. A bypassed commit is allowed only when the user
explicitly requests it, and its receipt must say bypass: true; it never
qualifies as a successful hook receipt.
Stage files: Stage relevant files (prefer specific files over git add -A).
Before reviewing or committing, inspect every ?? path from git status --short; git diff omits untracked files. Stage each relevant path or read
it explicitly so new tests and helpers are not missed.
unused and rejects the commit.Commit: Write a commit message following the format above. If changes span multiple concerns, consider separate commits.
When MERGE_HEAD exists or a merge commit is being completed, use
git commit --no-edit so a non-interactive runner does not open an editor;
normal hooks still run. Confirm the merge commit exists and MERGE_HEAD is
gone before reporting success.
If a formatter changes files and prevents the commit, review and re-stage
those files, then create a new commit attempt; do not use --amend.
A failed hook can leave all intended changes staged. Keep the staged changes,
fix the reported lint issue, rerun the affected test, and retry the normal
commit; do not use --no-verify or amend to bypass the failure.
When editing harness files such as AGENTS.md, CLAUDE.md, or skills, run
the shared validation in
.agents/skills/harness-improvement/references/validation.md before
committing.
If full-repository spec lint fails on a pre-existing duplicate acceptance ID
while the active hook requires a clean result, confirm it is baseline-only,
make the smallest unique-ID correction needed for that hook, rerun the full
lint, and record the baseline correction in the implementation record. Do
not bypass the hook or leave the repository-wide failure unexplained.
If a JSX layout-only edit touches an element containing an existing
hardcoded user-facing literal, i18n-new-code may classify that literal as
changed copy and fail. Localize it and add matching en/pseudo catalog
entries before retrying; verify with cd apps/web && pnpm run i18n:check and
the normal hook receipt.
If the commit command returns an exec_command session_id, preserve the
full result and poll that same session until it is terminal; never start a
second commit attempt while the first is live. Retain the exact temporary
log path from that single attempt for the hook receipt. Capture the normal
hook stream in a temporary log while committing and use that log to record
each hook ID and result. RTK can condense rtk git commit
output, so use rtk proxy git commit when preserving raw hook output. Do not
infer hook results from a condensed launcher summary. For example:
COMMIT_LOG="$(mktemp "${TMPDIR:-/tmp}/kandev-commit.XXXXXX.log")"
set -o pipefail
rtk proxy git commit -m "type(scope): description" 2>&1 | rtk proxy tee "$COMMIT_LOG" >/dev/nullBoth the commit and tee stages must use raw-output mode when the log is
parsed; normal rtk git commit output may contain only ok <sha> and is not
hook evidence. Read the log to extract every hook ID/result and confirm the receipt still
says bypass: false, rather than printing the full stream again. Remove the
exact temporary file after copying the receipt into
the handoff:
unlink "$COMMIT_LOG"If a timed-out hook leaves a commit or linter process running, inspect
git status, git log, and only that attempt's processes before retrying.
Wait for or stop the owned process tree first; do not mistake a transient
parallel golangci-lint is running message for a second commit failure.
If the commit exits nonzero, preserve and print the full or bounded log
before cleanup so hook diagnostics are not lost. Remove the temporary log
only after copying a successful hook receipt or recording the failed output.
When extracting receipt lines from a nested shell, use shell-safe single-
quoted awk or sed expressions; a double-quoted sed range containing
$ can be expanded by the outer shell and hide the receipt. Record active
hooks that report Skipped or no files to check as skipped; do not infer
their result from the launcher's summary, and retain the log until both the
pre-commit and commit-msg results are recorded.
If a hook fails only because another worktree is already running
golangci-lint (for example, parallel golangci-lint is running), wait for
that run to finish and retry the same commit. Do not bypass hooks or change
code for this transient lock; verify the retry has a normal hook receipt and
a clean worktree.
If a hook fails with ENOSPC, load /verify's Disk-constrained runners
guidance: inspect df, preserve managed caches, relocate only the affected
cache to an explicit persistent agent-owned path, and never bypass hooks or
blindly delete shared caches.
Return a hook receipt: After a successful commit, report:
parent_sha: <pre-commit HEAD>
commit_sha: <new HEAD>
pre_commit_hook: active|inactive
commit_msg_hook: active|inactive
hook_results: <hook-id=passed|skipped, ...>
bypass: false|true
commit_result: pass
worktree: clean|dirtyverify may use the receipt only when both hooks are active, bypass is
false, the commit succeeded, the current HEAD still equals commit_sha,
and the worktree is clean. The commit worker does not run verification.
© kdlbs, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/commit of kdlbs/kandev.
Open the folder on GitHubat commit dabc68f
Commit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Commit this skillkdlbs/kandev | 903 | — | ~2.8k | Automated safety check: Pass | AGPL-3.0 | |
| React Router Release Notes Prepremix-run/react-router | 57k | — | ~1.1k | Automated safety check: Pass | MIT | |
| ToolJet Multi-Repo CommitToolJet/ToolJet | 41k | — | ~1.3k | Automated safety check: Pass | AGPL-3.0 | |
| Git Workflow and Versioningaddyosmani/agent-skills | 102k | 2 repos | ~3.5k | Automated safety check: Notes | MIT | |
| React Router Pull Request Creatorremix-run/react-router | 57k | — | ~2.5k | Automated safety check: Pass | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT |
remix-run/react-router
Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.
ToolJet/ToolJet
Commits changes across ToolJet's root repo and its server/ee and frontend/ee submodules, writing messages from the diffs and updating submodule pointers in order.
addyosmani/agent-skills
Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.
remix-run/react-router
Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
saleor/saleor
Commits changes in the Saleor codebase and works through pre-commit hook failures from ruff, mypy, the GraphQL schema check and the migrations check.
kdlbs/kandev
Generate a single-file HTML walkthrough that explains a PR's purpose, user impact, interface changes, compatibility risks, and implementation.
kdlbs/kandev
Diagnose Kandev bugs, running-instance issues, UI/browser failures, and runtime behavior.
kdlbs/kandev
Improve Kandev's AI harness from session learnings or explicit requests.
kdlbs/kandev
Create branded architecture, IT current-state, flowchart, sequence, state machine, ER/data model, timeline, swimlane, quadrant, radar/spider, polar chart (polar/radial lollipop), loop/flywheel…
kdlbs/kandev
Implement changes using Test-Driven Development (Red-Green-Refactor).
kdlbs/kandev
Run a broad local verification audit only when the user explicitly requests it or PR/CI remediation requires it.
Works with
Categories
Stage and commit changes using Conventional Commits. An agent skill from kdlbs/kandev. Commit is an agent skill from kdlbs/kandev. Stage and commit changes using Conventional Commits.
Commit fits situations like: there are dirty/staged files to commit; the user says commit; before pushing a PR.
Run `npx skills add kdlbs/kandev --skill commit -a claude-code`. Or copy the skill folder (.agents/skills/commit in kdlbs/kandev) into .claude/skills/commit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kdlbs/kandev --skill commit -a codex`. Or copy the skill folder (.agents/skills/commit in kdlbs/kandev) into .agents/skills/commit in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kdlbs/kandev --skill commit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/commit, .gemini/skills/commit, .github/skills/commit and .opencode/skills/commit in your project.
Going by SKILL.md and its folder, Commit needs the command-line tools its instructions call (git, pip, make and pnpm). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Commit is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Commit: React Router Release Notes Prep (remix-run/react-router, 57k stars), ToolJet Multi-Repo Commit (ToolJet/ToolJet, 41k stars), Git Workflow and Versioning (addyosmani/agent-skills, 102k stars) and React Router Pull Request Creator (remix-run/react-router, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kdlbs (a GitHub organization) maintains it in kdlbs/kandev, which has 903 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on October 7, 2026.
Source: kdlbs/kandev on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.