fix(agent-context): support multiple context files safely#2969
Draft
AustinZ21 wants to merge 1 commit into
Draft
fix(agent-context): support multiple context files safely#2969AustinZ21 wants to merge 1 commit into
AustinZ21 wants to merge 1 commit into
Conversation
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
This PR lets the bundled
agent-contextextension manage more than one coding-agent context file from the same Spec Kit run.The motivating workflow is a repo that uses Claude Code and Codex interchangeably and wants Spec Kit's generated context block synced to both
CLAUDE.mdandAGENTS.md. The implementation keeps the existing singularcontext_filebehavior, while adding an optionalcontext_fileslist for projects that intentionally keep multiple agent anchors in sync.What Changed
context_filessupport to the agent-context config template.context_filesis configured.context_filesduring integration switches...path segmentsspecify extension disable agent-contextas a full opt-out: disabled projects skip upsert/removal and ignore stalecontext_filesduring command rendering.Why
Today Spec Kit stores one managed context block target in
context_file. That works well for a single coding agent, but mixed-agent projects can need more than one context anchor. For example, Codex readsAGENTS.md, while Claude-oriented setups often useCLAUDE.md. Without first-class multi-file support, teams have to choose one anchor or maintain duplicate context manually.This change makes the multi-agent case explicit and configurable without hard-coding any specific agent names or file paths.
Safety Notes
The script and Python integration paths now enforce matching path constraints so a configured context file cannot escape the project root. The disabled-extension path also avoids validating stale config before the opt-out gate, so disabling
agent-contextremains a complete opt-out even if old config contains invalid paths.Validation
bash -n extensions/agent-context/scripts/bash/update-agent-context.shpython -m compileall -q src\specify_clipytest tests/extensions/test_extension_agent_context.py -q50 passedpytest tests/integrations/test_integration_codex.py::TestCodexInitFlow::test_plan_skill_references_configured_context_files tests/integrations/test_integration_codex.py::TestCodexInitFlow::test_plan_skill_ignores_context_files_when_agent_context_disabled -q2 passedpytest tests/test_agent_config_consistency.py -q28 passedspecify --helpcontext_files: [AGENTS.md, CLAUDE.md]update-agent-context.ps1 specs/123-test/plan.mdcontext_files: [AGENTS.md, CLAUDE.md]update-agent-context.sh specs/123-test/plan.mdKnown Existing Test Failure
The broader Codex integration slice still has two inventory failures:
TestCodexIntegration.test_complete_file_inventory_shTestCodexIntegration.test_complete_file_inventory_psBoth failures reproduce on a clean
upstream/mainworktree at1b0556c, before this PR's changes. They expect bundledagent-contextextension artifacts in the generated project, but the generated project does not include them. The focused tests added by this PR pass.AI Assistance Disclosure
I used Codex/ChatGPT to inspect the integration paths, draft the implementation, and generate test coverage. I reviewed the code paths and validated the behavior locally with automated and manual checks.