From lets
This skill should be used when committing code changes - "commit", "git commit", "закоміть", "зроби коміт", "/lets:commit". Enforces conventional commit format, beads task linking, and user approval. In a LETS project, ALWAYS prefer this over generic commit skills (e.g. commit-commands:commit) — /lets:commit is authoritative. Triggers on any commit in any context.
How this skill is triggered — by the user, by Claude, or both
Slash command
/lets:commitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Standardized commit flow that enforces conventional format, beads task linking, and user approval.
Standardized commit flow that enforces conventional format, beads task linking, and user approval.
IMPORTANT: If the spec below invokes any deferred tool (e.g.
AskUserQuestion), you MUST load and call it as specified. Never skip the call, never substitute a default answer of your own — the tool invocation is part of the contract. This is critical.
Direct git commit skips task linking, format enforcement, and approval gates. This skill ensures every commit follows conventions whether invoked via /lets:commit or implicit "закоміть".
git status --short
git diff --stat
If no changes - inform user and exit.
Use the detect-task skill to find the active task (read ${CLAUDE_PLUGIN_ROOT}/skills/detect-task/SKILL.md and follow its detection flow).
If multiple tasks found: ask user via AskUserQuestion to pick, or "None".
If not found: commit without task link.
git diff
Summarize what changed:
Present the proposed commit summary as plain text (NOT in a code block or blockquote):
<type>: <description>
Then use AskUserQuestion:
AskUserQuestion(
questions=[{
question: "Commit with this message?",
header: "LETS",
options: [
{ label: "Commit", description: "Stage all changes and commit" },
{ label: "Cancel", description: "Don't commit, keep changes unstaged" }
],
multiSelect: false
}]
)
Handle response:
/lets:checkgit add -A
git status # Verify staging
git commit -m "<type>($TASK_ID): <description>
Task: $TASK_ID"
git status # Verify clean
If no active task detected: drop BOTH the ($TASK_ID) scope AND the Task: footer:
git commit -m "<type>: <description>"
<type>(<task-id>): <short description>
<optional body - why, not what>
Task: <task-id>
(No active task -> <type>: <subject>, no scope, no footer.)
Types:
feat - new featurefix - bug fixrefactor - code restructuredocs - documentationchore - maintenance, depstest - testsfeat(lets-abc): Add user authentication with JWT
Task: lets-abc
fix(proj-def): Resolve null pointer in PaymentService
Task: proj-def
(Ad-hoc commit with no active task — no scope, no footer:)
chore: bump goreleaser to 2.5
BAD: update stuff
BAD: fix bug
BAD: WIP
BAD: feat: Add user authentication system with JWT tokens and refresh logic and middleware (too long)
If active task detected, compare what was committed against the task scope:
bd show <task-id>
Brief assessment (2-3 lines max):
## Task Progress
Committed: {what this commit covers}
Remaining: {what's left from task description, or "nothing - task scope complete"}
/lets:done/lets:commit latergit status before and after commit(task-id) in the subject AND the Task: footer are both automatic when an active task is detected — don't ask the user about eitherAfter successful commit:
If task scope complete:
Committed: <hash> <message>
Files: X changed, Y insertions, Z deletions
Task: <task-id> (linked)
Task scope complete.
┌─ LETS ─────────────────────────┐
│ Done? /lets:done │
└────────────────────────────────┘
If work remains:
Committed: <hash> <message>
Files: X changed, Y insertions, Z deletions
Task: <task-id> (linked)
Remaining: {brief list}
┌─ LETS ─────────────────────────┐
│ Check? /lets:check │
│ End? /lets:end │
└────────────────────────────────┘
User-facing skill. Auto-triggers on "commit", "закоміть". Also invoked explicitly via /lets:commit.
See: grep -r "commit skill" commands/ for command references.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub restarter/lets-workflow --plugin lets