with one click
commit
// 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.
// 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.
| name | commit |
| description | 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. |
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.
verify subagent — Run fmt, typecheck, test, and lint. Delegate to this before committing to catch issues early.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 workflow
Create a task for each step below and mark them as completed as you go.
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?
HOOK_PATH=$(git rev-parse --git-path hooks/pre-commit)
test -f "$HOOK_PATH" && grep -q "pre-commit" "$HOOK_PATH" && echo "ACTIVE" || echo "INACTIVE"
pip install pre-commit so format/lint runs on every commit." Then continue (don't block)..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 --overwrite
Mention that you wired it up. Subsequent commits will run hooks automatically.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.
Run verify (MANDATORY — do NOT skip): Delegate to the verify subagent to run the full verification pipeline (rebase, format, typecheck, test, lint). It will fix any issues it finds. Wait for it to complete before proceeding. Do NOT proceed to step 4 until verify passes. If verify cannot fix the failures, stop and surface the errors to the user — do not commit. Do NOT substitute this with a partial check (e.g. running only the changed package's tests).
Stage files: Stage relevant files (prefer specific files over git add -A).
unused and rejects the commit.Commit: Write a commit message following the format above. If changes span multiple concerns, consider separate commits.
Write and run web E2E tests (Playwright) using TDD — locations, patterns, commands, and debugging.
Debug a running kandev development instance. Use when the user reports a bug, unexpected behavior, or asks to investigate an issue while kandev is running via `make dev`. Triages the bug class first (backend-logic → Go test, live-instance → /debug/export, UI → browser), launches an ISOLATED parallel instance when a running app is needed, and tears down only what it started.
Ensures UI feature work ships with desktop and mobile parity, responsive behavior, and mobile Playwright E2E coverage. Use when implementing, planning, reviewing, or testing any new feature, page, component, workflow, form, dialog, sidebar, navigation, dashboard, or visual UI change; if work touches frontend or user-facing UI, this skill must run even when user mentions only desktop or says "new feature".
Add debug logs (temporary console.log / structured Warn, or permanent namespaced loggers) to investigate or instrument runtime behaviour. Use whenever the user wants to add logs, log statements, console.logs, trace, instrument, or print runtime behaviour to debug a frontend or backend issue. Triggers include "add debug logs", "add some logs", "log this", "trace this", "instrument", "investigate why", "print", "console.log around". Temporary debug logs must be stripped before creating a PR; persistent ones (frontend `createDebugLogger`, backend tier-appropriate level) stay.
Commit, push, and create a PR. Default is ready-for-review with auto-fixup. Use --draft to skip review/fixup.
Wait for CI checks and automated reviews (CodeRabbit, Greptile, Claude, cubic) on a PR, fix failures and address comments, then push.