chore: replace stale agent docs with a headless-boundaries skill - #524
Merged
Conversation
The E2E workflow the agent docs described no longer exists: `scripts/nvim-e2e.lua` and `tests/e2e/` were removed in 31510a9, so the documented scenario format, the runner invocation, and the whole `e2e.*` helper API were fiction. The module tree and several file paths had also drifted. Replace all of it with `.agents/skills/nvim-headless/`, which documents what is observable in headless Neovim rather than an API surface that rots on the next refactor. - Delete `.github/agents/` and `.github/skills/nvim-e2e-workflow/` - Delete `CLAUDE.md` (Claude Code is no longer used; it only held symlink setup) - Use `.agents/skills/`, which Copilot, pi, Codex, Cursor and Gemini CLI all discover with no config, unlike `.github/skills/` which only Copilot reads - Fix `AGENTS.md`, which pointed at `.github/copilot-instructions.md` files that never existed Also correct two spec comments that blamed missing-UI for WinScrolled not firing. Headless and a real UI behave identically here; what actually matters is that synchronous spec code never returns to the main loop, so the event is never dispatched. The `nvim_exec_autocmds` workaround was right, the reason was not.
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 agent docs described an E2E workflow that no longer exists.
scripts/nvim-e2e.luaandtests/e2e/were removed in 31510a9, which made the documented scenario format, the runner invocation, and the entiree2e.*helper API fiction. An agent following those docs would fail on the first command.This replaces them with a skill that documents what is observable in headless Neovim rather than an API surface that rots on the next refactor.
Changes
Removed
.github/skills/nvim-e2e-workflow/(360 lines) — referenced the deleted runner; its 3 examples used thegit("add . && git commit")chaining that the docs elsewhere explicitly warn against.github/agents/codediff-developer.agent.md(220 lines) — 66 lines of it documentede2e.*helpers that do not exist; module tree had driftedCLAUDE.md— Claude Code is no longer used; the file only held symlink setupAdded
.agents/skills/nvim-headless/SKILL.md(101 lines) — headless boundaries, the three driving styles, and known trapsFixed
AGENTS.mdpointed at.github/copilot-instructions.mdfiles that never existedWinScrollednot firingWhy
.agents/skills/.github/skills/is read only by Copilot..agents/skills/is read by Copilot, pi, Codex, Cursor and Gemini CLI, with no config file or symlink. Verified locally that bothcopilot -pandpi -pdiscover the skill from a clean checkout.On the WinScrolled comments
The two comments claimed headless has no UI, therefore
WinScrolleddoes not fire. Measured against a real UI in a pty, both behave identically:vim.waitdefer_fnchainnvim_exec_autocmdsWhat matters is that synchronous spec code never returns to the main loop, so the deferred event is never dispatched. The
nvim_exec_autocmdsworkaround was correct; only the stated reason was wrong. This matters because it tells an agent it is not blocked by headless — it can switch driving style instead of giving up.Testing
tests/ui/explorer/explorer_scroll_independence_spec.lua— 3 passedtests/ui/view/view_spec.lua— 17 passedCLAUDE.md,codediff-developer,nvim-e2e-workflow, or.github/agentsDocs only; no production code touched.