feat: use Claude Code's native AskUserQuestion for /clarify and /checklist#2191
feat: use Claude Code's native AskUserQuestion for /clarify and /checklist#21910xrafasec wants to merge 3 commits intogithub:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the /clarify and /checklist command templates to support Claude Code’s native AskUserQuestion structured picker by fencing the question-rendering blocks in the templates and post-processing them during Claude skill generation, while leaving non-Claude integrations functionally unchanged.
Changes:
- Added HTML comment fence markers around question-rendering sections in
clarify.mdandchecklist.md. - Extended
ClaudeIntegration.setup()to replace fenced blocks withAskUserQuestion-based instructions for the Claude-generated skills. - Added Claude integration tests covering replacement behavior, parity expectations, and basic downstream behavior preservation checks.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 8 comments.
| File | Description |
|---|---|
templates/commands/clarify.md |
Adds begin/end fence markers around the clarify question-rendering rules block. |
templates/commands/checklist.md |
Adds begin/end fence markers around the checklist question-formatting rules block. |
src/specify_cli/integrations/claude/__init__.py |
Adds fenced-block replacement logic and AskUserQuestion replacement instructions for clarify/checklist at skill generation time. |
tests/integrations/test_integration_claude.py |
Adds tests ensuring Claude output uses AskUserQuestion, and that non-Claude outputs do not. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| clarify_files = [ | ||
| f for f in created | ||
| if "clarify" in f.name.lower() or "clarify" in str(f.parent).lower() | ||
| ] |
mnriem
left a comment
There was a problem hiding this comment.
Please deliver this as a preset similar to how it was done for VSCode (see https://github.com/github/spec-kit/tree/main/presets and foto see how it was done for VSCode see https://github.com/fdcastel/spec-kit-presets/tree/main/vscode-ask-questions)
Delivers the /speckit.clarify and /speckit.checklist AskUserQuestion
integration as a stackable preset under presets/claude-ask-questions/
instead of modifying core templates or ClaudeIntegration.
- presets/claude-ask-questions/preset.yml registers command overrides
for speckit.clarify and speckit.checklist following the same pattern
as the bundled lean preset.
- Override commands replace the Markdown-table question-rendering
blocks with AskUserQuestion instructions. Option | Description maps
to {label, description} for clarify; Option | Candidate | Why It
Matters maps to {label: Candidate, description: Why It Matters} for
checklist. Recommended option is placed first with a
"Recommended — <reasoning>" prefix; a final "Custom"/"Short" option
preserves the free-form ≤5-word escape hatch.
- Registered in presets/catalog.json as a bundled preset.
Core templates, ClaudeIntegration, and the existing test suite are
left untouched, so non-Claude agents and users who do not install
this preset see no behavior change.
Closes github#2181
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9ddb174 to
64ea94d
Compare
|
Thanks @mnriem for the thoughtful review and the pointer to the VSCode preset pattern — that's a much cleaner fit than modifying core. I've reworked the PR from scratch as a preset: the in-core changes to
Core templates, Ready for another look when you have a moment. 🙏 |
|
Looks good, but we also would like you to host this on a GitHub repository of your own. As per https://github.com/github/spec-kit/blob/main/presets/PUBLISHING.md |
Per maintainer feedback on github#2191, presets should be hosted on the author's own GitHub repository and registered in catalog.community.json rather than bundled in spec-kit. Removes the bundled preset directory and its entry from the official catalog, and adds a community catalog entry pointing at the external repository and release archive. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the preset catalog timestamps and adds a new community preset entry (claude-ask-questions) to presets/catalog.community.json.
Changes:
- Bumped
updated_atinpresets/catalog.json. - Bumped
updated_atinpresets/catalog.community.json. - Added a new community preset entry:
claude-ask-questions(v1.0.0).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| presets/catalog.json | Updates the catalog updated_at timestamp. |
| presets/catalog.community.json | Updates the catalog updated_at timestamp and adds the claude-ask-questions preset metadata entry. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Thanks @mnriem — done. The preset now lives in its own repository and is submitted through
Changes in this PR (now scoped down to a single file):
PUBLISHING.md checklist:
Ready for another look whenever you have a moment 🙏 |
There was a problem hiding this comment.
Pull request overview
This PR updates the preset catalogs by adding a new community preset entry (claude-ask-questions) and bumping catalog timestamps, making the preset discoverable via the built-in community preset catalog.
Changes:
- Add
claude-ask-questionstopresets/catalog.community.json. - Bump
updated_atin bothpresets/catalog.community.jsonandpresets/catalog.json.
Show a summary per file
| File | Description |
|---|---|
| presets/catalog.json | Updates top-level updated_at timestamp. |
| presets/catalog.community.json | Updates top-level updated_at and adds the claude-ask-questions community preset entry. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 2/2 changed files
- Comments generated: 2
| { | ||
| "schema_version": "1.0", | ||
| "updated_at": "2026-04-10T00:00:00Z", | ||
| "updated_at": "2026-04-13T00:00:00Z", |
| "claude-ask-questions": { | ||
| "name": "Claude AskUserQuestion", | ||
| "id": "claude-ask-questions", | ||
| "version": "1.0.0", | ||
| "description": "Upgrades /speckit.clarify and /speckit.checklist on Claude Code from Markdown-table prompts to the native AskUserQuestion picker, with a recommended option and reasoning on every question.", | ||
| "author": "0xrafasec", | ||
| "repository": "https://github.com/0xrafasec/spec-kit-preset-claude-ask-questions", | ||
| "download_url": "https://github.com/0xrafasec/spec-kit-preset-claude-ask-questions/archive/refs/tags/v1.0.0.zip", | ||
| "homepage": "https://github.com/0xrafasec/spec-kit-preset-claude-ask-questions", | ||
| "documentation": "https://github.com/0xrafasec/spec-kit-preset-claude-ask-questions/blob/main/README.md", | ||
| "license": "MIT", |
mnriem
left a comment
There was a problem hiding this comment.
Please address Copilot feedback. Should be the latest thing I hope
Summary
Replaces the Markdown-table question rendering in
/clarifyand/checklistwith Claude Code's nativeAskUserQuestionstructured picker, while preserving the original table behavior for all other agents.Closes #2181
What changed
<!-- speckit:question-render:begin/end -->) around the question-rendering blocks inclarify.mdandchecklist.md. The markers are invisible to non-Claude agents — zero behavior change for them.setup()to post-process the fenced blocks at skill-generation time, following the same pattern used forargument-hint,user-invocable, anddisable-model-invocationinjection./clarify'sOption | Description→AskUserQuestion's{label, description}/checklist'sOption | Candidate | Why It Matters→{label: Candidate, description: Why It Matters}options[]withRecommended — <reasoning>prefix."Provide my own short answer (≤5 words)").Files changed
templates/commands/clarify.mdtemplates/commands/checklist.mdsrc/specify_cli/integrations/claude/__init__.pytests/integrations/test_integration_claude.pyTest results
main)AI assistance disclosure
This PR was developed with assistance from Claude Code (Claude Opus 4.6). I reviewed, tested, and verified all changes manually. The implementation strategy follows the approach proposed in #2181 and matches the existing
ClaudeIntegrationpost-processing patterns.Test plan
uv run python -m pytest tests/ -q)AskUserQuestionand not the original tablesAskUserQuestionreplace_question_render_block()(no-fence passthrough, basic replacement)/speckit.clarifyand/speckit.checklistinside Claude Code🤖 Generated with Claude Code