You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/wr-itil:manage-problem's SKILL.md documents commit-message convention examples in the shape docs(problems): P<NNN> <verb> — <summary> (with uppercase P first). Adopter projects that use @commitlint/config-conventional's default subject-case rule reject every commit that follows the SKILL example because the subject begins with an uppercase token (P<NNN> → pascal-case), which the rule disallows alongside sentence-case, start-case, and upper-case.
The working shape that consistently lands in @commitlint/config-conventional-defaulted adopter projects is docs(problems): <verb> P<NNN> — <summary> (lowercase verb first, then ticket ID). The verb-first shape passes subject-case because the subject starts with a lowercase verb token.
This is a SKILL-contract drift: the documented convention contradicts the convention every adopter project must use in practice. New adopters hit the rejection on their very first problem-ticket commit; established adopters work around it by agent-memory + project memory but the SKILL examples remain a stumbling block.
Symptoms
First commit attempt of any status-transition or capture commit that follows the SKILL's example shape (docs(problems): P<NNN> parked — ...) is rejected by commitlint's subject-case rule.
Error output from the pre-commit hook: ⚠ subject must not be sentence-case, start-case, pascal-case, upper-case [subject-case].
Recovery: reword the subject to docs(problems): park P<NNN> — ... (lowercase verb first); commit succeeds.
AFK orchestrators dispatching iter subprocesses via claude -p lose ~1 turn + 30 seconds wall-clock per affected commit on the rejection-and-retry cycle.
Workaround
Manually use the <verb> P<NNN> shape (lowercase verb first) for all problem-ticket commits regardless of what SKILL.md examples show. Project memory notes + repeated agent training reinforce the shape across sessions. The 8 successful commits in today's /wr-itil:work-problems AFK loop on a representative adopter project (dry-aged-deps) all use the <verb> P<NNN> shape (close P002, close P008, capture P009, park P004, park P007, park P005, transition P009, capture P010).
Affected plugin or component
@windyroad/itil
Frequency
Every time — fires on first commit attempt of any /wr-itil:manage-problem status-transition or capture commit in an adopter project using @commitlint/config-conventional defaults. Almost certain to recur for any new adopter following the SKILL examples verbatim.
Versions
Local plugin: @windyroad/itil@0.32.1 (latest installed; SKILL.md P<NNN> <verb> example shape unchanged from @windyroad/itil@0.29.0 — both versions documented in ~/.claude/plugins/cache/windyroad/wr-itil/<version>/skills/manage-problem/SKILL.md lines 681 + 882)
Upstream package: @commitlint/config-conventional (version dependent on adopter project; default subject-case rule is [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']])
Claude Code CLI: 2.1.143
Node: v22.17.1
OS: Darwin 25.3.0 x86_64
Evidence
Today's /wr-itil:work-problems AFK loop session on the dry-aged-deps adopter project produced 3 same-day park commits and several lifecycle commits that all confirm the <verb> P<NNN> working shape:
Iter 1 (P004 park): first commit attempt docs(problems): P004 parked — ... rejected by commitlint subject-case; reworded to docs(problems): park P004 — upstream-blocked on windyroad/agent-plugins#123 (commit b107ce1) succeeded.
Iter 2 (P007 park): iter-1 lesson applied pre-commit; docs(problems): park P007 — upstream-blocked on @windyroad/risk-scorer (commit 872821c) landed cleanly on first commit attempt.
Iter 3 (P005 park): same; docs(problems): park P005 — upstream-blocked on @windyroad/voice-tone (commit 5346d81) landed cleanly.
ADR-0013 supersession sequence (commits 6a081bc, a2eec5b, 4c50c64, 7a945b5, 0c82d50, ed5c0e4, 79dd8db) — all use lowercase-verb-first subjects per the working shape.
P009 verification trigger and P010 capture commit (b63b536) also use the <verb> shape.
Suggested fix (user-approved direction during the /wr-itil:work-problems Step 2.5 surfacing on 2026-05-17, AskUserQuestion answer "Approve + amend upstream SKILL"):
Flip the SKILL.md examples to docs(problems): <verb> P<NNN> — <summary> shape so adopter projects using @commitlint/config-conventional defaults do not hit subject-case rejection on every status transition.
Concrete examples to flip:
docs(problems): P<NNN> known error — <root cause summary> → docs(problems): mark P<NNN> known error — <root cause summary>
Apply consistently across both citation sites (lines 681 + 882-883).
Additional context
Downstream tracking: dry-aged-deps problem ticket P010 (docs/problems/010-skill-md-commit-message-convention-fails-commitlint-subject-case.open.md) at commit b63b536.
Adopter project repo: https://github.com/voder-ai/dry-aged-deps (commits cited above are local to this session and not yet pushed).
Possible alternative fix (smaller diff): rather than amend the SKILL examples, document the <verb> P<NNN> shape as the canonical convention in the SKILL's commit-message section AND ensure @windyroad/itil's own commitlint config matches the documented shape (the SKILL examples were authored against a relaxed commitlint config — the maintainer's own monorepo likely disables subject-case).
Description
/wr-itil:manage-problem's SKILL.md documents commit-message convention examples in the shapedocs(problems): P<NNN> <verb> — <summary>(with uppercasePfirst). Adopter projects that use@commitlint/config-conventional's defaultsubject-caserule reject every commit that follows the SKILL example because the subject begins with an uppercase token (P<NNN>→ pascal-case), which the rule disallows alongsidesentence-case,start-case, andupper-case.The working shape that consistently lands in
@commitlint/config-conventional-defaulted adopter projects isdocs(problems): <verb> P<NNN> — <summary>(lowercase verb first, then ticket ID). The verb-first shape passessubject-casebecause the subject starts with a lowercase verb token.This is a SKILL-contract drift: the documented convention contradicts the convention every adopter project must use in practice. New adopters hit the rejection on their very first problem-ticket commit; established adopters work around it by agent-memory + project memory but the SKILL examples remain a stumbling block.
Symptoms
docs(problems): P<NNN> parked — ...) is rejected by commitlint'ssubject-caserule.⚠ subject must not be sentence-case, start-case, pascal-case, upper-case [subject-case].docs(problems): park P<NNN> — ...(lowercase verb first); commit succeeds.claude -plose ~1 turn + 30 seconds wall-clock per affected commit on the rejection-and-retry cycle.Workaround
Manually use the
<verb> P<NNN>shape (lowercase verb first) for all problem-ticket commits regardless of what SKILL.md examples show. Project memory notes + repeated agent training reinforce the shape across sessions. The 8 successful commits in today's/wr-itil:work-problemsAFK loop on a representative adopter project (dry-aged-deps) all use the<verb> P<NNN>shape (close P002,close P008,capture P009,park P004,park P007,park P005,transition P009,capture P010).Affected plugin or component
@windyroad/itilFrequency
Every time — fires on first commit attempt of any
/wr-itil:manage-problemstatus-transition or capture commit in an adopter project using@commitlint/config-conventionaldefaults. Almost certain to recur for any new adopter following the SKILL examples verbatim.Versions
@windyroad/itil@0.32.1(latest installed; SKILL.mdP<NNN> <verb>example shape unchanged from@windyroad/itil@0.29.0— both versions documented in~/.claude/plugins/cache/windyroad/wr-itil/<version>/skills/manage-problem/SKILL.mdlines 681 + 882)@commitlint/config-conventional(version dependent on adopter project; defaultsubject-caserule is[2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']])2.1.143v22.17.1Darwin 25.3.0 x86_64Evidence
Today's
/wr-itil:work-problemsAFK loop session on thedry-aged-depsadopter project produced 3 same-day park commits and several lifecycle commits that all confirm the<verb> P<NNN>working shape:docs(problems): P004 parked — ...rejected by commitlint subject-case; reworded todocs(problems): park P004 — upstream-blocked on windyroad/agent-plugins#123(commitb107ce1) succeeded.docs(problems): park P007 — upstream-blocked on @windyroad/risk-scorer(commit872821c) landed cleanly on first commit attempt.docs(problems): park P005 — upstream-blocked on @windyroad/voice-tone(commit5346d81) landed cleanly.6a081bc,a2eec5b,4c50c64,7a945b5,0c82d50,ed5c0e4,79dd8db) — all use lowercase-verb-first subjects per the working shape.b63b536) also use the<verb>shape.SKILL.md sources cited:
~/.claude/plugins/cache/windyroad/wr-itil/0.32.1/skills/manage-problem/SKILL.md:Standalone transition commits (e.g. docs(problems): P<NNN> known error — <summary>).Known Error transition: docs(problems): P<NNN> known error — <root cause summary>Verification Pending transition: ... docs(problems): P<NNN> verification pending — <release marker>.Suggested fix (user-approved direction during the
/wr-itil:work-problemsStep 2.5 surfacing on 2026-05-17, AskUserQuestion answer "Approve + amend upstream SKILL"):docs(problems): <verb> P<NNN> — <summary>shape so adopter projects using@commitlint/config-conventionaldefaults do not hit subject-case rejection on every status transition.docs(problems): P<NNN> known error — <root cause summary>→docs(problems): mark P<NNN> known error — <root cause summary>docs(problems): P<NNN> verification pending — <release marker>→docs(problems): transition P<NNN> verification pending — <release marker>Additional context
dry-aged-depsproblem ticket P010 (docs/problems/010-skill-md-commit-message-convention-fails-commitlint-subject-case.open.md) at commitb63b536.https://github.com/voder-ai/dry-aged-deps(commits cited above are local to this session and not yet pushed)./wr-itil:work-problemsAFK loop surfaced three upstream-blocked items consecutively.<verb> P<NNN>shape as the canonical convention in the SKILL's commit-message section AND ensure@windyroad/itil's own commitlint config matches the documented shape (the SKILL examples were authored against a relaxed commitlint config — the maintainer's own monorepo likely disablessubject-case).