From ywc-agent-toolkit
Stages, commits, and optionally pushes work-in-progress changes with discipline. Skips PRs and code review.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ywc-agent-toolkit:ywc-commitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Announce at start:** "I'm using the ywc-commit skill to stage and commit the current work."
Announce at start: "I'm using the ywc-commit skill to stage and commit the current work."
Use this skill when the user wants to commit (and optionally push) work-in-progress changes to the repository.
Keep the workflow disciplined and conservative. Only stage files that are clearly part of the current conversation's work.
When tempted to skip a rule, check this table first:
| Excuse | Reality |
|---|---|
| "These extra files probably belong here" | If you cannot point to a moment in this session when they were touched, they are OUT. Ask. |
| "git add . is faster" | Faster ≠ correct. Stage by explicit path every time. |
| "Hook failure is just noise, --no-verify is fine" | Hooks exist for a reason. Fix the cause or report it. |
| "User said push, so amend + force push is implied" | Push intent ≠ rewrite-history intent. Force only when explicitly asked. |
| "This is just main, one direct commit is OK" | Direct commits to main are almost always wrong. Confirm first. |
| "The summary message captures both refactor and feature" | Two purposes = two commits. Always. |
| "I will write a co-author trailer because this looks like a Claude project" | Only if the repo's recent commits already use one. Do not fabricate convention. |
| "The UL update adds noise to a small commit, skip it" | If docs/ubiquitous-language.md exists, the project has committed to keeping its glossary synchronized with code. A commit that introduces a new domain term without updating the glossary silently degrades every downstream LLM prompt that reads the file. Skip only when the caller already ran the update (signaled by --skip-ubiquitous-update) or the file does not exist. |
| "ywc-create-pr already runs UL update, mine would duplicate" | Correct — that is exactly why callers must pass --skip-ubiquitous-update when delegating. Without the flag, ywc-commit will re-run the update. Read $ARGUMENTS in Step 0 before deciding. |
Violating the letter of these rules is violating the spirit. If you find yourself rephrasing a rule to make an exception, stop and ask the user.
| Parameter | Format | Default | Description |
|---|---|---|---|
--skip-ubiquitous-update | flag | off | Skip Step 0.5 (Ubiquitous Language Update). Passed by callers that have already run ywc-ubiquitous-language themselves (e.g., ywc-create-pr, ywc-finish-branch) to prevent double invocation. |
All other behavior is controlled by the user's natural-language request (e.g., "push", "커밋만", "authentication 관련만"). The skill does not introduce extra flags beyond what is needed for delegation safety — keeping the surface minimal so direct users do not have to remember syntax.
--no-verify. Pre-commit and pre-push hooks must pass. If a hook fails, fix the root cause or report it to the user.main or master. This is almost always a mistake.git add . or git add -A. Always stage files by explicit path..env*, *.log, dist/, build/, node_modules/, .DS_Store, and large binaries unless the user explicitly added them. Report any such files found.Inspect $ARGUMENTS for the flags listed in the Arguments table. Store the parsed values for use in later steps:
--skip-ubiquitous-update → if present, skip Step 0.5 entirely.The skill remains fully usable without any flag — direct invocations (/ywc-commit, "커밋 해줘") proceed with all defaults.
Skip this step if --skip-ubiquitous-update is present in $ARGUMENTS. Callers that already invoked ywc-ubiquitous-language (e.g., ywc-create-pr Step 0.5, ywc-finish-branch Step 1.5) pass this flag to avoid duplicate work.
Check whether the project has established a ubiquitous language document:
test -f docs/ubiquitous-language.md
ywc-ubiquitous-language --mode update. Any resulting changes to docs/ubiquitous-language.md flow naturally into Step 2 (Classify changed files) as IN, since the file was modified during this session.ywc-ubiquitous-language itself when invoked directly.Rationale: Domain vocabulary drift is hard to detect after the fact. Catching it at the commit boundary keeps the glossary aligned with the codebase incrementally, rather than as a separate "vocabulary cleanup" effort later. The check is cheap when the file is absent (one test -f) and bounded when present (the skill's update mode produces no diff when nothing changed).
git status --short
git diff --stat
git log --oneline -15 # learn the project's commit style
git branch --show-current
main or master. If so, apply Rule 5.Classify every changed file into one of three categories:
| Category | Action |
|---|---|
| IN — created, modified, or discussed during this session | Stage for commit |
| UNKNOWN — unclear when or why it changed | Ask the user before staging |
| OUT — clearly unrelated to this session's work (other features, IDE files, local config) | Exclude. Inform the user: "These files looked unrelated and were excluded." |
If any file is UNKNOWN or OUT, show the user the classification table and get explicit approval before staging anything. Do not skip this step.
Group the IN files by logical unit and plan the commit sequence. Examples:
Use git add -p for hunk-level staging when a single file contains changes that belong to different logical units.
Show the user the planned commits (files + draft message for each) and get approval before proceeding. Approval can be skipped if there are only 1–2 files with a clearly single-purpose change.
Read git log --oneline -30 and match the project's exact style.
General format
<type>(<scope>): <summary>
<body — only when needed>
Types — use only what this repository already uses. Common types:
feat — new featurefix — bug fixrefactor — internal restructuring with no behaviour changeperf — performance improvementchore — build, config, or tooling changesdocs — documentation onlytest — test changes onlyIf the repository uses additional types (e.g., enhance, skill, ci), adopt them.
Scope — derive from the project's git log pattern. Common patterns:
web, api, cli)auth, dashboard, payment).claude/skills/), use the skill name as scopeSummary rules
Body rules
- ) when bundling multiple items into one commitCo-author trailer
Co-Authored-By: Claude <[email protected]>.# Stage only relevant files by explicit path
git add <path1> <path2> ...
# Or stage by hunk when one file has mixed changes
git add -p <path>
# Verify staged diff before committing
git diff --cached --stat
# Commit using heredoc to safely handle multi-line messages
git commit -m "$(cat <<'EOF'
<type>(<scope>): <summary>
<body>
EOF
)"
Repeat for each logical commit. After each commit, run git status to review remaining changes before proceeding to the next.
git log --oneline -<N> # N = number of commits just created
git status # confirm working tree is as expected
Report immediately if any commits are missing or if unexpected changes remain.
Push only when the user's message contains clear push intent:
git push
git push -u origin <branch> if no upstream is set.--force or --force-with-lease only when the user explicitly requests it. If a default push is rejected as non-fast-forward, explain the situation and present the options.After all commits are done, report concisely:
✅ N commit(s) created [+ pushed]
1. <hash> <type>(<scope>): <summary>
2. <hash> <type>(<scope>): <summary>
Excluded files: <list if any, omit if none>
git add . — stages unrelated files silently.env, lock files, or build artifacts without asking--no-verifydocs/ubiquitous-language.md exists and no --skip-ubiquitous-update flag was passed--skip-ubiquitous-update/ywc-commit커밋 해줘commit and push지금까지 한 작업 커밋푸쉬 ㄱㄱauthentication 관련 파일만 commit해줘/ywc-commit --skip-ubiquitous-update (delegated invocation from another skill that already ran the UL update)--no-verify is never used; root cause is reported to the user.ywc-ubiquitous-language --mode update; any resulting docs/ubiquitous-language.md changes are classified as IN in Step 2 and folded into the appropriate logical commit (typically the same commit as the domain-code change that introduced the new term).--skip-ubiquitous-update; Step 0.5 is skipped; no double invocation occurs.test -f; user is not prompted to create the file.npx claudepluginhub yongwoon/ywc-agent-toolkitGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.