openpencil/packages/docs/development/contributing.md
Danila Poyarkov b0231927c5
docs: route contributors through per-domain guides and ship npm license text (#785)
Root AGENTS.md becomes a map plus cross-cutting rules; folder rules live in one AGENTS.md per package and top-level folder, checked by check:docs. CONTRIBUTING.md owns process; README and the docs page link to it. Release preparation copies the root LICENSE into every published package, Core, CLI, and MCP gain READMEs, and the release workflow test packs its fixture in-process instead of through npm.
2026-09-29 01:02:06 +04:00

1.8 KiB

Contributing

The root CONTRIBUTING.md is the source of truth for setup, pull-request requirements, validation, and commit expectations. The root AGENTS.md holds the repository map and cross-cutting conventions, and links the AGENTS.md guide inside each package or app domain. Read the root file and every guide on the path to the folder you change; coding agents pick them up the same way.

See Architecture for the system overview and Testing for test ownership, fixtures, and commands. Use the root AGENTS.md map when exact package ownership or paths matter; do not infer ownership from an older copied tree.

Quick start

bun install
bun run dev:portless # Editor at https://open-pencil.localhost
bun run docs:dev     # Docs at localhost:5173

The complete gate before a pull request is bun run check, bun run format, bun run test:unit, and bun run test. Rendering and other pixel-affecting changes require targeted visual coverage.

SDK documentation

VitePress is the canonical public documentation, while Storybook is the internal component-state workshop. Shared Vue demos live beside their SDK primitives and are embedded in both surfaces. The docs Tailwind entry scans these demos, so examples use the same utility-first styling in both environments.

Component API tables are extracted from Vue source and JSDoc with vue-component-meta. Keep descriptions next to public props, events, and slots instead of duplicating signatures in Markdown. VitePress processes SDK examples with Twoslash so imports and types stay aligned with the public package API.