{"owner":"VSCodeVim","repo":"Vim","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# VSCodeVim — Agent Instructions\n\nVSCodeVim is a VS Code extension (TypeScript) that emulates Vim modal editing. It targets both desktop and web VS Code environments.\n\n## Build & Test\n\n```bash\nyarn build-dev       # Fast dev build\nyarn build           # Production build\nyarn watch           # Rebuild on file changes\n\nyarn build-test && yarn test   # Run tests locally (close all VS Code instances first)\nnpx gulp test                  # Run tests in Docker (preferred)\nnpx gulp test --grep <REGEX>   # Run filtered tests in Docker\n\nyarn lint            # Check code style\nyarn lint:fix        # Auto-fix linting issues\nyarn prettier        # Format code\n```\n\n## Architecture\n\n**Event flow:** Key press → `extension.ts` → `ModeHandler.handleKeyEvent()` → action matching → `runAction()` → `updateView()`\n\nKey directories:\n\n- `src/actions/` — All command/motion/operator implementations; large consolidated files (e.g. `insert.ts`, `search.ts`) are intentional\n- `src/actions/plugins/` — Emulated Vim plugins (easymotion, surround, sneak, commentary, etc.)\n- `src/mode/modeHandler.ts` — Central state machine; one instance per open editor\n- `src/state/vimState.ts` — Per-editor state (cursor, registers, mode, history)\n- `src/state/recordedState.ts` — Transient state for the current operation; resets after each action\n- `src/cmd_line/` — Ex command (`:`) parsing and execution\n- `src/configuration/` — Settings loading and validation\n- `src/neovim/` — Optional Neovim process integration for Ex commands\n- `src/platform/node/` and `src/platform/browser/` — Platform-specific abstractions\n- `test/` — Mirrors `src/` structure; uses Mocha + Sinon + `@vscode/test-electron`\n\n**Three action base classes:**\n\n- `BaseMovement` — Updates cursor only; returns `Position` or `IMovement` (start+end for text objects)\n- `BaseCommand` — Modifies `VimState` beyond cursor movement\n- `BaseOperator` — Combines with a movement (e.g. `d{motion}`, `c{motion}`)\n\n## Conventions\n\n- TypeScript `strict: true` + `noImplicitOverride: true` — always use the `override` keyword when overriding parent methods\n- `IMovement` interface (not just `Position`) is required when a motion needs to return a range (e.g. text objects like `aw`, `i{`)\n- Platform abstraction via `/src/platform/` — never call Node.js APIs directly; use the abstraction layer so web VS Code works\n- Settings precedence: Ex-commands → user/workspace VS Code settings → defaults\n- `.vimrc` support is remaps-only — no full Vimscript execution\n- Actions are registered by decorating classes; see existing action files for the pattern\n\n## References\n\n- [CONTRIBUTING.md](.github/CONTRIBUTING.md) — Setup, architecture deep-dive, release process\n- [README.md](README.md) — All supported settings, emulated plugins, keybindings\n- `gulpfile.js` — Build/test/release automation tasks\n- `package.json` — Extension manifest, all configuration schema definitions (40+ settings)\n"},"files":{"AGENTS.md":"# VSCodeVim — Agent Instructions\n\nVSCodeVim is a VS Code extension (TypeScript) that emulates Vim modal editing. It targets both desktop and web VS Code environments.\n\n## Build & Test\n\n```bash\nyarn build-dev       # Fast dev build\nyarn build           # Production build\nyarn watch           # Rebuild on file changes\n\nyarn build-test && yarn test   # Run tests locally (close all VS Code instances first)\nnpx gulp test                  # Run tests in Docker (preferred)\nnpx gulp test --grep <REGEX>   # Run filtered tests in Docker\n\nyarn lint            # Check code style\nyarn lint:fix        # Auto-fix linting issues\nyarn prettier        # Format code\n```\n\n## Architecture\n\n**Event flow:** Key press → `extension.ts` → `ModeHandler.handleKeyEvent()` → action matching → `runAction()` → `updateView()`\n\nKey directories:\n\n- `src/actions/` — All command/motion/operator implementations; large consolidated files (e.g. `insert.ts`, `search.ts`) are intentional\n- `src/actions/plugins/` — Emulated Vim plugins (easymotion, surround, sneak, commentary, etc.)\n- `src/mode/modeHandler.ts` — Central state machine; one instance per open editor\n- `src/state/vimState.ts` — Per-editor state (cursor, registers, mode, history)\n- `src/state/recordedState.ts` — Transient state for the current operation; resets after each action\n- `src/cmd_line/` — Ex command (`:`) parsing and execution\n- `src/configuration/` — Settings loading and validation\n- `src/neovim/` — Optional Neovim process integration for Ex commands\n- `src/platform/node/` and `src/platform/browser/` — Platform-specific abstractions\n- `test/` — Mirrors `src/` structure; uses Mocha + Sinon + `@vscode/test-electron`\n\n**Three action base classes:**\n\n- `BaseMovement` — Updates cursor only; returns `Position` or `IMovement` (start+end for text objects)\n- `BaseCommand` — Modifies `VimState` beyond cursor movement\n- `BaseOperator` — Combines with a movement (e.g. `d{motion}`, `c{motion}`)\n\n## Conventions\n\n- TypeScript `strict: true` + `noImplicitOverride: true` — always use the `override` keyword when overriding parent methods\n- `IMovement` interface (not just `Position`) is required when a motion needs to return a range (e.g. text objects like `aw`, `i{`)\n- Platform abstraction via `/src/platform/` — never call Node.js APIs directly; use the abstraction layer so web VS Code works\n- Settings precedence: Ex-commands → user/workspace VS Code settings → defaults\n- `.vimrc` support is remaps-only — no full Vimscript execution\n- Actions are registered by decorating classes; see existing action files for the pattern\n\n## References\n\n- [CONTRIBUTING.md](.github/CONTRIBUTING.md) — Setup, architecture deep-dive, release process\n- [README.md](README.md) — All supported settings, emulated plugins, keybindings\n- `gulpfile.js` — Build/test/release automation tasks\n- `package.json` — Extension manifest, all configuration schema definitions (40+ settings)\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# VSCodeVim — Agent Instructions\n\nVSCodeVim is a VS Code extension (TypeScript) that emulates Vim modal editing. It targets both desktop and web VS Code environments.\n\n## Build & Test\n\n```bash\nyarn build-dev       # Fast dev build\nyarn build           # Production build\nyarn watch           # Rebuild on file changes\n\nyarn build-test && yarn test   # Run tests locally (close all VS Code instances first)\nnpx gulp test                  # Run tests in Docker (preferred)\nnpx gulp test --grep <REGEX>   # Run filtered tests in Docker\n\nyarn lint            # Check code style\nyarn lint:fix        # Auto-fix linting issues\nyarn prettier        # Format code\n```\n\n## Architecture\n\n**Event flow:** Key press → `extension.ts` → `ModeHandler.handleKeyEvent()` → action matching → `runAction()` → `updateView()`\n\nKey directories:\n\n- `src/actions/` — All command/motion/operator implementations; large consolidated files (e.g. `insert.ts`, `search.ts`) are intentional\n- `src/actions/plugins/` — Emulated Vim plugins (easymotion, surround, sneak, commentary, etc.)\n- `src/mode/modeHandler.ts` — Central state machine; one instance per open editor\n- `src/state/vimState.ts` — Per-editor state (cursor, registers, mode, history)\n- `src/state/recordedState.ts` — Transient state for the current operation; resets after each action\n- `src/cmd_line/` — Ex command (`:`) parsing and execution\n- `src/configuration/` — Settings loading and validation\n- `src/neovim/` — Optional Neovim process integration for Ex commands\n- `src/platform/node/` and `src/platform/browser/` — Platform-specific abstractions\n- `test/` — Mirrors `src/` structure; uses Mocha + Sinon + `@vscode/test-electron`\n\n**Three action base classes:**\n\n- `BaseMovement` — Updates cursor only; returns `Position` or `IMovement` (start+end for text objects)\n- `BaseCommand` — Modifies `VimState` beyond cursor movement\n- `BaseOperator` — Combines with a movement (e.g. `d{motion}`, `c{motion}`)\n\n## Conventions\n\n- TypeScript `strict: true` + `noImplicitOverride: true` — always use the `override` keyword when overriding parent methods\n- `IMovement` interface (not just `Position`) is required when a motion needs to return a range (e.g. text objects like `aw`, `i{`)\n- Platform abstraction via `/src/platform/` — never call Node.js APIs directly; use the abstraction layer so web VS Code works\n- Settings precedence: Ex-commands → user/workspace VS Code settings → defaults\n- `.vimrc` support is remaps-only — no full Vimscript execution\n- Actions are registered by decorating classes; see existing action files for the pattern\n\n## References\n\n- [CONTRIBUTING.md](.github/CONTRIBUTING.md) — Setup, architecture deep-dive, release process\n- [README.md](README.md) — All supported settings, emulated plugins, keybindings\n- `gulpfile.js` — Build/test/release automation tasks\n- `package.json` — Extension manifest, all configuration schema definitions (40+ settings)\n","category":"root","tokens":729}]}