Skip to content

chore: replace stale agent docs with a headless-boundaries skill - #524

Merged
esmuellert merged 2 commits into
mainfrom
chore/refresh-agent-docs
Aug 28, 2026
Merged

chore: replace stale agent docs with a headless-boundaries skill#524
esmuellert merged 2 commits into
mainfrom
chore/refresh-agent-docs

Conversation

@esmuellert

Copy link
Copy Markdown
Owner

Summary

The agent docs described an E2E workflow that no longer exists. scripts/nvim-e2e.lua and tests/e2e/ were removed in 31510a9, which made the documented scenario format, the runner invocation, and the entire e2e.* 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 the git("add . && git commit") chaining that the docs elsewhere explicitly warn against
  • .github/agents/codediff-developer.agent.md (220 lines) — 66 lines of it documented e2e.* helpers that do not exist; module tree had drifted
  • CLAUDE.md — Claude Code is no longer used; the file only held symlink setup

Added

  • .agents/skills/nvim-headless/SKILL.md (101 lines) — headless boundaries, the three driving styles, and known traps

Fixed

  • AGENTS.md pointed at .github/copilot-instructions.md files that never existed
  • Two spec comments blamed a missing UI for WinScrolled not firing

Why .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 both copilot -p and pi -p discover the skill from a clean checkout.

On the WinScrolled comments

The two comments claimed headless has no UI, therefore WinScrolled does not fire. Measured against a real UI in a pty, both behave identically:

driving style headless real UI
synchronous in one chunk 0 0
synchronous + vim.wait 0 0
defer_fn chain 5 5
nvim_exec_autocmds 5 5

What matters is that synchronous spec code never returns to the main loop, so the deferred event is never dispatched. The nvim_exec_autocmds workaround 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 passed
  • tests/ui/view/view_spec.lua — 17 passed
  • Every repo-internal path referenced by the remaining agent docs verified to exist
  • No dangling references to CLAUDE.md, codediff-developer, nvim-e2e-workflow, or .github/agents

Docs only; no production code touched.

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.
@esmuellert
esmuellert requested a review from yanuoma as a code owner August 28, 2026 00:15
@esmuellert
esmuellert enabled auto-merge August 28, 2026 00:15
@esmuellert
esmuellert merged commit e697df7 into main Aug 28, 2026
19 of 20 checks passed
@esmuellert
esmuellert deleted the chore/refresh-agent-docs branch August 28, 2026 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant