Thank you for your interest in contributing to vimee!
Please check out our good first issues or open a discussion if you need guidance.
We welcome and appreciate any form of contributions.
# Clone
git clone --recursive https://github.com/vimeejs/vimee.git
cd vimee
# Install
bun install
# Build
bun run build
# Test
bun run test
# Lint
bun run lint
# Format
bun run fmt
# Type check
bun run typecheckpackages/
core/ # @vimee/core β headless vim engine
react/ # @vimee/react β React useVim hook
plugin-textarea/ # @vimee/plugin-textarea β vim for any textarea
shiki-editor/ # @vimee/shiki-editor β editor component with Shiki
testkit/ # @vimee/testkit β test utilities for Vim operations
Use @vimee/testkit for Vim operation tests:
import { vim } from "@vimee/testkit";
const v = vim("hello\nworld");
v.type("dd");
expect(v.content()).toBe("world");See packages/testkit/README.md for the full API.
<type>(<scope>): <description>
- Types:
feat,fix,test,chore,ci,docs - Scope: package name (
core,react,plugin-textarea,shiki-editor,testkit) or omit for root - Examples:
feat(core): add mark jumping,chore: update deps
bun run testβ all tests must passbun run lintβ no lint errorsbun run fmtβ code formattedbun run typecheckβ no type errors
When using AI tools (including LLMs like ChatGPT, Claude, Copilot, etc.) to contribute:
- Please disclose AI usage to reduce maintainer fatigue
- You are responsible for all AI-generated issues or PRs you submit
- Low-quality or unreviewed AI content will be closed immediately
We encourage the use of AI tools to assist with development, but all contributions must be thoroughly reviewed and tested by the contributor before submission.
Please read our Code of Conduct before contributing.