Skip to content

docs(skill): default to full six-section template on issue creation (SMI-4344)#22

Merged
wrsmith108 merged 1 commit into
mainfrom
smi-4344-default-verbose-template
Apr 19, 2026
Merged

docs(skill): default to full six-section template on issue creation (SMI-4344)#22
wrsmith108 merged 1 commit into
mainfrom
smi-4344-default-verbose-template

Conversation

@wrsmith108

Copy link
Copy Markdown
Owner

Summary

  • Instruction-layer fix: SKILL.md now defaults to the full six-section template (Context → Problem → Proposal → Acceptance Criteria → Verification → Out of Scope) when Claude creates a Linear issue. Brevity is opt-in via trigger phrases ("quick issue", "one-liner", "just the AC", "brief", "terse", "minimum", "short").
  • buildIssueTemplate() returns the new six-section shape, so npm run ops -- create-issue --template prints the same skeleton SKILL.md teaches.
  • docs/issue-template.md adds a fully populated Full example (~350-char body) so Claude has a pattern to match, not just a rule to follow. Example body passes validate-description --stdin at exit 0.

No validator, exit-code, or API changes. Same tiered-enforcement model as the MCP gate: instructions + retroactive lint-issues audit.

Closes SMI-4344.

Why

The AC validator at scripts/lib/issue-description.ts enforces a floor (MIN_BODY_CHARS=120, MIN_AC_ITEMS=2, placeholder rejection) but not a target depth. Issues created via the CLI or MCP routinely land near that floor — just enough to pass — because Claude Code's default tone is terse. Reviewers then lack the Context, Problem, Proposal, Verification, and risk notes that older plan-driven issues carried.

Recent evidence: SMI-4326 and SMI-4327 both passed validate-description --stdin at exit 0, but read as brief. This PR makes detail the default and terseness explicit.

Test plan

In-session verification (done)

  • npm run build — typecheck + esbuild clean
  • npm test — 49/49 tests green (incl. updated buildIssueTemplate assertions)
  • npm run ops -- create-issue --template — prints the new six-section skeleton
  • Full example body piped to validate-description --stdin → exit 0

Clean-context verification (must run in a fresh Claude Code session after merge)

AC #3 of SMI-4344 requires a test issue created from a vague prompt without the word "detailed". This can only be validated honestly outside the session that designed the fix. Protocol after merge:

  • Start a fresh Claude Code session in this repo (no context from this PR)
  • Prompt: "create an issue for [small concrete task]" — do NOT use the words "detailed", "verbose", "full", or "template"
  • Assert the generated body contains ## Context, ## Proposal (or ## Problem), ## Acceptance Criteria, and ## Verification
  • Delete the test issue

If Claude produces only Context + AC (the old floor-passing shape), iterate on SKILL.md bullet #1 phrasing.

Risks

  1. Instruction drift — Claude ignores the new rule. Mitigations: (a) the inline template is the first thing Claude reads; (b) docs/issue-template.md has a populated Full example; (c) npm run lint-issues audits retroactively.
  2. Users who wanted brevity get verbose issues. Mitigation: seven explicit trigger phrases for brevity opt-in. Keep the list short — synonyms dilute the rule.
  3. Six sections feel ceremonial for trivial chores. Mitigation: depth rule explicitly permits collapsing Problem into Context and dropping Verification when AC is self-evidently testable — collapse deliberately, not by default.

Plan

Full plan at ~/.claude/plans/smi-4344-default-verbose.md (local to author; not checked in).

🤖 Generated with Claude Code

…SMI-4344)

The AC validator enforces a floor (120-char body, 2+ AC items) but not a
target depth, so issues often land near that floor. Shift the default depth
to the full template (Context → Problem → Proposal → Acceptance Criteria →
Verification → Out of Scope); brevity is opt-in via explicit user phrasing
("quick issue", "one-liner", "just the AC", etc.).

Changes are instruction-layer only — no validator, exit-code, or API changes:

- SKILL.md: depth-rule paragraph in bullet #1; inline template expanded to
  six sections; MCP callout notes depth ≠ validation
- docs/issue-template.md: six-section skeleton + populated Full example
- scripts/lib/issue-description.ts: buildIssueTemplate() returns six
  sections (drops Notes, adds Problem / Proposal / Verification)
- scripts/__tests__/issue-description.test.ts: assertions updated for new
  shape

Full-example body dogfooded through `validate-description --stdin` → exit 0.
All 49 tests pass.

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: Claude <noreply@anthropic.com>
@wrsmith108 wrsmith108 merged commit b0e5d03 into main Apr 19, 2026
2 checks passed
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 3.2.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@wrsmith108 wrsmith108 deleted the smi-4344-default-verbose-template branch April 19, 2026 20:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant