Add copilot, kiro, and antigravity tools; use each tool's native root instruction file#63
Merged
Merged
Conversation
cursor now targets .cursorrules (its documented project rules file) and opencode now targets AGENTS.md (its documented primary instruction file), replacing the previous CLAUDE.md fallback for both tools. Also generalizes isRootInstructionConflictPath to derive the set of root instruction paths from tool definitions rather than hardcoding, and updates all help text strings to accurately describe per-tool targets. https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
Cursor reads AGENTS.md (the VS Code-based agent instruction convention), not .cursorrules. Updates tool definition, removes the now-unused .cursorrules bundle-item alias, and corrects all help text and tests. https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
antigravity and copilot now target AGENTS.md at project level, following the principle that AGENTS.md is the first-class root instruction for any tool that supports it. GEMINI.md is preserved as a recognized bundle-item selector alias for Gemini CLI bundles, and .github/copilot-instructions.md alias is similarly retained. Bundle auto-detection for copilot is updated to look for AGENTS.md; bundle translation for antigravity now also writes to AGENTS.md. https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
In global mode, copilot targets .github/copilot-instructions.md and antigravity targets GEMINI.md, matching their tool-native global config conventions. Project-level targets remain AGENTS.md for both. Global apply without --agent now auto-selects all globally-capable tools the bundle supports (instead of requesting all tools upfront), so bundles that cover only a subset of globally-capable tools work without error. https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
Gemini CLI stores its global context file at ~/.gemini/GEMINI.md, not ~/GEMINI.md. Update the global tool definition to use the correct repo-relative path (.gemini/GEMINI.md). https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
…pilot/antigravity path collision Both copilot and antigravity use AGENTS.md at project level but remap to different global targets (.github/copilot-instructions.md and .gemini/GEMINI.md). The flat path-keyed remap Map caused the second entry to overwrite the first. The fix keys the remap by tool name and updates all three layers: - tool-mapping.ts: GLOBAL_REPO_REL_PATH_REMAP keyed by tool name; remapper returns (toolName, p) => string - bundle-materialization.ts: all repoRelPathRemapper signatures and call sites updated to pass toolName - root-instruction-state.ts: same signature update; global mode now collects per-tool so each tool independently remaps its project path to its own global target without clobbering others https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
…tigravity - cli.test.ts: fix stale comment saying cursor targets .cursorrules; it targets AGENTS.md - index.global.test.ts: add three end-to-end tests covering the new global tool paths: - copilot writes to ~/.github/copilot-instructions.md - antigravity writes to ~/.gemini/GEMINI.md - a bundle supporting both tools produces two separate files (no path collision) https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
Four files had formatter errors caught by `biome check` in CI: - bundle-auto-detection.test.ts: line-length wrapping in new test assertions - cli.test.ts: trailing whitespace from comment edit - index.global.test.ts: path.join and .toContain call wrapping - tool-mapping.test.ts: .toBe() wrapping for long strings No logic changes — pure formatting fixes. https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
1. mergeDesiredTools: switch from union to replace when re-applying without --agent, so tools dropped from the bundle are not left in desired state indefinitely. Controlled by a new replaceRequestedTools flag set when no explicit --agent filter is provided. 2. Warn instead of silently dropping tools that are in a bundle's manifest but not supported in global mode (e.g. kiro, cursor). The warning is emitted at the end of applyBundleGlobal. 3. Filter toolNames to globally-capable tools only before the per-tool content collection loop in collectRootInstructionContentByPath, so non-global tools that might appear in materialized state cannot write project-level paths (e.g. AGENTS.md) into the home directory. https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
Object.keys() returns string[] but supportedTools is ToolName[]; cast to string[] for the includes check so the compiler is satisfied. https://claude.ai/code/session_01TSCSufkV1y4vNjEKL8Apr7
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.
What changed
New tools: copilot, kiro, antigravity
Three tools are now fully supported alongside the existing claude-code, cursor, opencode, and codex:
AGENTS.md~/.github/copilot-instructions.md.github/skills.github/agentsAGENTS.md.kiro/skills.kiro/agentsAGENTS.md~/.gemini/GEMINI.md.agent/skills.agent/workflowsNative root instruction files per tool
Every tool now targets its own documented root instruction file rather than falling back to
CLAUDE.md:CLAUDE.md(unchanged)AGENTS.md(wasCLAUDE.md)AGENTS.md(wasCLAUDE.md)AGENTS.md(unchanged)AGENTS.md(new)AGENTS.md(new)AGENTS.md(new)Tool-aware global path remapper
Copilot and antigravity both use
AGENTS.mdat project level but remap to different global targets. The previous flat Map keyed by project path caused one entry to overwrite the other.GLOBAL_REPO_REL_PATH_REMAPis now keyed by tool name so each tool independently resolves its own global destination.Dynamic tool discovery
isRootInstructionConflictPathandselectRootInstructionSourcePathnow derive the full set of root instruction paths fromlistToolDefinitions()at runtime instead of hardcoding a tool list, so new tools are picked up automatically.Test coverage
buildGlobalRepoRelPathRemapperverify copilot and antigravity remap independently with no path collision~/.github/copilot-instructions.md, antigravity writes to~/.gemini/GEMINI.md, and a bundle supporting both tools produces two separate files