Repository navigation
fix(speckit-pro): install Codex skills in .agents/skills and keep .codex/skills as legacy - #635
Merged
Merged
Conversation
…dex/skills as legacy SpecKit writes Codex skills to .agents/skills (since v0.4.0, github/spec-kit#1906; the pinned v0.8.13 and 1.x do the same), but the install and upgrade skills named .codex/skills and the upgrade snapshot never backed up .agents/skills. - Install mirrors name .agents/skills/speckit-*/ as the primary Codex path, drop the redundant --integration-options="--skills" (skills mode is the Codex default), and treat .codex/skills/ as legacy. - Upgrade mirrors snapshot .agents/skills/ and dedupe against both skills paths. - The gh-stack trust roots add ~/.agents/skills next to the legacy ~/.codex/skills. - The first-run docs page and the Codex Layer 3 install and upgrade evals follow the dual path. - New Layer 1 and unit checks cover the dual-path wording and trust roots. Claude-Session: https://claude.ai/code/session_01TKYXGuzRL9QJFYPJrbHr5z
fgabelmannjr
marked this pull request as ready for review
September 24, 2026 20:45
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The changes consistently implement the primary/legacy Codex skills path behavior across skills, tests, evals, docs, and regenerated artifacts without introducing correctness or contract issues.
Review effort: Lite
Findings: None
What changed in this PR
No blocking issues. 0 important, 0 nits.
This PR corrects the Codex skills installation/upgrade guidance and related validation so it matches SpecKit’s actual Codex skills location (.agents/skills/), while continuing to support .codex/skills/ as a legacy path that Codex still reads.
Changes:
- Update install/upgrade skill instructions to treat
.agents/skills/as the primary Codex skills root and.codex/skills/as legacy. - Expand upgrade snapshot/dedupe guidance and eval expectations to handle both primary and legacy Codex skills paths.
- Extend gh-stack trusted user-skill roots to include
~/.agents/skills(alongside existing roots) and add/adjust tests and contracts accordingly.
| File | Description |
|---|---|
| tests/speckit-pro/unit/test-stack-manager-plan.py | Adds unit coverage for trusted Codex user skill roots (primary + legacy). |
| tests/speckit-pro/layer3-functional/codex-evals/speckit-upgrade-evals.json | Updates eval expectations for dual-path Codex skill backup/dedupe. |
| tests/speckit-pro/layer3-functional/codex-evals/speckit-install-evals.json | Updates eval expectations to prefer .agents/skills/ and allow legacy. |
| tests/speckit-pro/layer1-structural/validate-skill-contracts.py | Adds structural checks enforcing primary/legacy Codex skills wording and steps. |
| speckit-pro/speckit_pro_runner/speckit-pro-runner.sha256 | Refreshes runner hash for updated stack manager helper. |
| speckit-pro/speckit_pro_runner/speckit-pro-runner.manifest.json | Refreshes manifest sha256 for updated stack manager helper. |
| speckit-pro/speckit_pro_runner/helpers/stack_manager.py | Trusts ~/.agents/skills in addition to existing trusted skill roots. |
| speckit-pro/skills/speckit-upgrade/SKILL.md | Documents backing up/deduping Codex skills across primary + legacy paths. |
| speckit-pro/skills/speckit-install/SKILL.md | Documents .agents/skills/ as primary Codex skills path; legacy noted. |
| speckit-pro/codex-skills/speckit-upgrade/SKILL.md | Mirrors upgrade guidance for Codex-facing skill variant. |
| speckit-pro/codex-skills/speckit-install/SKILL.md | Mirrors install guidance for Codex-facing skill variant. |
| docs-site/src/content/docs/first-run.md | Updates Codex init command to the default skills-mode invocation. |
| dist/codex/speckit-pro/speckit_pro_runner/speckit-pro-runner.sha256 | Regenerated distribution artifact hash. |
| dist/codex/speckit-pro/speckit_pro_runner/speckit-pro-runner.manifest.json | Regenerated distribution manifest entry. |
| dist/codex/speckit-pro/speckit_pro_runner/helpers/stack_manager.py | Regenerated distribution helper output. |
| dist/codex/speckit-pro/skills/speckit-upgrade/SKILL.md | Regenerated distribution skill output. |
| dist/codex/speckit-pro/skills/speckit-install/SKILL.md | Regenerated distribution skill output. |
| dist/claude/speckit-pro/speckit_pro_runner/speckit-pro-runner.sha256 | Regenerated distribution artifact hash. |
| dist/claude/speckit-pro/speckit_pro_runner/speckit-pro-runner.manifest.json | Regenerated distribution manifest entry. |
| dist/claude/speckit-pro/speckit_pro_runner/helpers/stack_manager.py | Regenerated distribution helper output. |
| dist/claude/speckit-pro/skills/speckit-upgrade/SKILL.md | Regenerated distribution skill output. |
| dist/claude/speckit-pro/skills/speckit-install/SKILL.md | Regenerated distribution skill output. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The install and upgrade skills told operators that SpecKit puts Codex skills in
.codex/skills/. SpecKit writes them to.agents/skills/, and the upgradesnapshot never backed that directory up. This change makes
.agents/skills/the primary Codex skills path and keeps
.codex/skills/as a legacy path thatCodex still reads.
.agents/skills/speckit-*/as the Codexpath. Drop the redundant
--integration-options="--skills"option, becauseskills mode is the Codex default. Report a legacy
.codex/skills/directoryand leave it in place.
.agents/skills/as wellas
.claude/,.codex/, and.github/, so Codex skills are backed up fromwhichever path exists. The dedupe step checks both skills paths against the
legacy
.codex/prompts/speckit.*.mdfiles.~/.agents/skills/gh-stack/SKILL.md, the current Codex user skills root,next to
~/.claude/skillsand the legacy~/.codex/skills. The pinneddigest check is unchanged.
path. Expectation counts and order are unchanged, so the catalog mappings
still line up.
Evidence
.codex/to native skills in.agents/skills/("feat: migrate Codex/agy init to native skills workflow",feat: migrate Codex/agy init to native skills workflow github/spec-kit#1906, CHANGELOG
[0.4.0])..agents/skills/speckit-<name>/SKILL.md, and its--skillsoption defaults to true(
src/specify_cli/integrations/codex/__init__.py, lines 3, 33-39, and 65-69).v1.0.1 and v1.0.11 are the same.
.codex/skills/. Codex CLI itselfstill reads a project
.codex/skills/root (codex-rs/ext/skills/src/host_roots.rsin openai/codex), so the skills keep it as a legacy
location.
Testing
validate-skill-contracts.py: both install mirrorsname
.agents/skills/as primary, every.codex/skills/mention is markedlegacy, and both upgrade mirrors snapshot and dedupe both paths.
test-stack-manager-plan.pyfor the trusted skill roots.python3 scripts/refresh-release-artifacts.pyandpnpm --dir docs-site reference:generateregenerated the artifacts.Release note
https://claude.ai/code/session_01TKYXGuzRL9QJFYPJrbHr5z