mirror of
https://github.com/ZSeven-W/openpencil.git
synced 2026-05-31 19:04:29 +07:00
The `op export` command was removed in 0.7.x but the README still advertised it (#116). The pen-mcp README also documented an `npx @zseven-w/pen-mcp` quick-start that never worked because the package ships TypeScript source against workspace-only deps with no `bin` entry (#117). - Strip `op export` references from all 15 root and 15 cli READMEs - Sync AGENTS.md, CLAUDE.md, apps/cli/CLAUDE.md to match the codegen- pipeline reality (no standalone export command anymore) - Rewrite pen-mcp README's quick-start: explain the package ships as part of the OpenPencil app and external clients connect over HTTP Closes #116 Closes #117
2.3 KiB
2.3 KiB
apps/cli/ — OpenPencil CLI
The op command-line tool controls the OpenPencil desktop app or web server from the terminal.
Structure
apps/cli/
├── src/
│ ├── index.ts Entry point — arg parsing, command dispatch, help text
│ ├── connection.ts WebSocket connection to running app instance
│ ├── launcher.ts Auto-detect and launch desktop app or web dev server
│ ├── output.ts JSON output formatting (--pretty support)
│ └── commands/
│ ├── app.ts start, stop, status
│ ├── design.ts design, design:skeleton, design:content, design:refine
│ ├── document.ts open, save, get, selection
│ ├── codegen.ts codegen:plan, codegen:submit, codegen:assemble, codegen:clean
│ ├── import.ts import:svg, import:figma
│ ├── install.ts install, uninstall (openpencil-skill for AI agents)
│ ├── layout.ts layout, find-space
│ ├── nodes.ts insert, update, delete, move, copy, replace
│ ├── pages.ts page list/add/remove/rename/reorder/duplicate
│ └── variables.ts vars, vars:set, themes, themes:set, theme:save/load/list
├── dist/ Compiled output (openpencil-cli.cjs)
├── package.json @zseven-w/openpencil, bin: { op }
└── README.md
Commands
- Compile:
bun run cli:compile(esbuild todist/openpencil-cli.cjs) - Dev run:
bun run cli:dev(run from source via Bun)
Key Patterns
- Input methods: Commands accepting JSON/DSL support inline string,
@filepath, or-(stdin) - Connection: WebSocket to running app instance (desktop or web server)
- Launcher: Auto-detects installed desktop app paths per platform (macOS, Windows, Linux)
- Skill bundle:
bun run cli:bundle-skillpre-generatesskill-bundle.jsonfrom../openpencil-skill/, embedded into the binary by esbuild. Falls back to git clone at runtime if the bundle is empty. - esbuild: Compiles with
--alias:@=srcto resolve web app imports,--external:canvas --external:paper - Output: All commands output JSON;
--prettyflag for human-readable formatting - Global flags:
--file <path>(target .op file),--page <id>(target page)