Cover init command hint display#2776
Conversation
There was a problem hiding this comment.
Pull request overview
This PR makes user-facing Spec Kit command hints “integration-aware” by introducing an integration-owned display invocation API (prefix + separator) and routing template/script placeholder rendering and init guidance through it (notably enabling Codex-style $speckit-… hints while preserving existing slash-command behaviors).
Changes:
- Added
user_command_prefix+build_user_command_invocation()to integrations, and extendedresolve_command_refs()/process_template()to render integration-specific command hints. - Updated shared infra installation/refresh and presets/template processing to pass the active integration’s prefix/separator and safely escape
$speckit…in generated scripts. - Expanded test coverage across init output, template/script rendering, and Codex/Copilot behaviors.
Show a summary per file
| File | Description |
|---|---|
| tests/test_init_command_invocations.py | New regression tests asserting init “next steps” use the correct invocation syntax per integration. |
| tests/integrations/test_integration_subcommand.py | Updates expectations for Codex-switched template content to use $speckit-…. |
| tests/integrations/test_integration_state.py | Adds coverage for persisted command_prefix normalization and runtime invocation helpers. |
| tests/integrations/test_integration_codex.py | Verifies Codex display invocations and generated skills use $speckit-… consistently. |
| tests/integrations/test_integration_base_skills.py | Ensures skills integrations’ user-facing invocations remain consistent and hook-note logic aligns with new syntax. |
| tests/integrations/test_integration_base_markdown.py | Adds coverage that markdown integrations keep /speckit.<name> display hints. |
| tests/integrations/test_cli.py | Adds infra-level tests for custom prefix rendering/escaping in templates and scripts, plus end-to-end init coverage for Codex. |
| tests/integrations/test_base.py | Adds unit coverage for build_user_command_invocation() and new resolve_command_refs() capabilities. |
| templates/commands/*.md | Switches hook output examples to {command_invocation} and adds guidance for dot→hyphen conversion when needed. |
| src/specify_cli/shared_infra.py | Passes command_prefix through placeholder resolution and escapes $speckit in generated scripts. |
| src/specify_cli/presets.py | Resolves command refs using both invoke separator and command prefix from agent configs. |
| src/specify_cli/integrations/*/init.py | Sets integration-specific user_command_prefix and passes effective prefix/separator into template processing. |
| src/specify_cli/integrations/base.py | Introduces display invocation API (user_command_prefix, formatter, and command-ref rendering updates). |
| src/specify_cli/integration_state.py | Normalizes command_prefix in integration settings. |
| src/specify_cli/integration_runtime.py | Persists command_prefix and introduces helpers for resolving prefix/invocations from stored state. |
| src/specify_cli/extensions.py | Renders hook command invocations using integration-aware helpers when possible. |
| src/specify_cli/commands/init.py | Uses integration-owned display invocation for init “next steps” hints. |
| src/specify_cli/agents.py | Adds command_prefix to agent configs and uses it when resolving __SPECKIT_COMMAND_*__ in command bodies. |
| src/specify_cli/init.py | Threads command_prefix into shared infra install/refresh across install/switch/upgrade flows. |
| AGENTS.md | Documents user_command_prefix and notes build_user_command_invocation() behavior for skills mode. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 35/35 changed files
- Comments generated: 3
|
Please address Copilot feedback and resolve conflicts |
7872734 to
5212a54
Compare
mnriem
left a comment
There was a problem hiding this comment.
Please address Copilot feedback
|
Copilot feedback is addressed: the latest Agy comment was resolved by confirming |
|
I pushed an explicit Agy compatibility shim in |
64a8e8b to
b626ce0
Compare
|
Agentic follow-up completed and pushed in What changed after the prior update:
Verification on the rebased branch:
GitHub now reports the branch as mergeable and there are no unresolved review threads. The only remaining blocker I can see is the stale requested-changes review from the earlier Copilot feedback. Could you please re-review when available? |
b626ce0 to
e3e2657
Compare
|
Addressed the new Copilot feedback in Change:
Verification:
The Copilot thread is now resolved. |
|
Please rebase on main and run tests. |
35afa7f to
dd6a97a
Compare
|
Rebased on latest I also aligned the PR-added init tests with the current CLI after upstream removed Verification after rebase:
Current local/GitHub sweep: branch is mergeable and there are no unresolved review threads. GitHub checks have not appeared yet for the new SHA. |
|
OK I did a deeper dive and this is too many changes for what the title of the PR states. Can we dial it back to display only here? I realize I should have asked earlier, but this is touching way too many files. |
dd6a97a to
dac33db
Compare
|
Dialed this back to display-only as requested. Current diff:
What it covers:
Verification:
I also updated the PR title/body to match the reduced scope. |
Description
Adds regression coverage for the user-facing command hints printed by
specify init.This is intentionally display-only: it verifies Codex shows
$speckit-...in the init next-steps output, Copilot default mode keeps/speckit.<name>, and Copilot skills mode keeps/speckit-<name>. The broader template/script/hook/preset plumbing from the earlier version of this PR has been removed.Testing
AI Disclosure
Implemented with Codex assistance in this repository workspace.