The Plain-Text Workspace Where Humans and AI Collaborate Free. Local-first. Format-aware. VMark is the plain-text workspace where humans and AI collaborate.
$ npx -y skills add xiaolai/vmark --agent claude-code
Repo: xiaolai/vmark
What's inside
The Plain-Text Workspace Where Humans and AI Collaborate
Free. Local-first. Format-aware.
VMark is the plain-text workspace where humans and AI collaborate. Both parties read and write the same artifacts โ Markdown, YAML, JSON, TOML, Mermaid, SVG, HTML, code โ directly, with no translation layer. When the file is a known artifact (GitHub Actions workflow, Cargo.toml, package.json, pyproject.toml), VMark renders the right view, not a generic JSON tree.
Download ยท Documentation ยท Formats ยท Features
$EDITOR..github/workflows/ci.yml opens with a workflow-graph view. Cargo.toml, package.json, and pyproject.toml open with a dependency-tree view. Generic JSON / YAML / TOML get a navigable tree.F5), Source Mode (F6, CodeMirror 6)Mod + D to select next match, Alt + Click to add cursors, Mod + Alt + โโ for vertical cursorsSee the full feature list at vmark.app/guide/features.
macOS (Homebrew):
brew install xiaolai/tap/vmark
Manual: Download from the Releases page.
VMark_x.x.x_aarch64.dmgVMark_x.x.x_x64.dmgWindows & Linux: Pre-built binaries on the Releases page. macOS is the primary platform; other builds are best-effort.
VMark speaks MCP natively. Settings โ Integrations โ Install โ one click per assistant.
Supported: Claude Desktop, Claude Code, Codex CLI, Gemini CLI.
See the MCP Setup Guide.
VMark is vibe-coded โ written entirely by AI under human supervision. We welcome issues (bug reports, feature requests) but cannot safely merge external PRs.
When you file an issue, AI fixes it with full context of the project's conventions, test suite, and architecture.
Prerequisites: Node.js 20+, pnpm 10+, Rust (stable), Tauri v2 prerequisites
git clone https://github.com/xiaolai/vmark.git
cd vmark
pnpm install
pnpm tauri dev # Development
pnpm tauri build # Production
pnpm check:all # Lint + test + build
Tech Stack: Tauri v2 (Rust), React 19, TypeScript, Zustand v5, Tiptap, CodeMirror 6, Tailwind CSS v4
AI-Assisted Development: The repo ships with full configuration for Claude Code, Codex CLI, and Gemini CLI. See AGENTS.md for conventions and .claude/ for rules, skills, and subagents.
ISC License โ free to use, copy, modify, and distribute. See the license page for details.
.cc-suite/
.cc-suite.md
audits/
audit-fix-20260805-findings.md
audit-fix-20260806-findings.md
audit-fix-20260807-120600-findings.md
audit-fix-20260807-193000-findings.md
audit-fix-20260809-224525-findings.md
audit-fix-20260809-debt-paydown-findings.md
.claude/
agents/
auditor.md
impact-analyst.md
implementer.md
manual-test-author.md
planner.md
release-steward.md
spec-guardian.md
test-runner.md
verifier.md
commands/
bump.md
feature-workflow.md
fix-issue.md
fix.md
merge-prs.md
repo-clean-up.md
test-guide.md
docs-guardian/
config.json
hooks/
gha-tdd-guard.mjs
gha-tdd-guard.test.mjs
multi-format-tdd-guard.mjs
multi-format-tdd-guard.test.mjs
loc-guardian.local.md
plugins/
.claude-plugin/
marketplace.json
vmark-lsp/
.claude-plugin/
plugin.json
README.md
README.md
rules/
00-engineering-principles.md
10-tdd.md
20-logging-and-docs.md
21-website-docs.md
22-comment-maintenance.md
30-ui-consistency.md
31-design-tokens.md
32-component-patterns.md
33-focus-indicators.md
34-dark-theme.md
40-version-bump.md
41-keyboard-shortcuts.md
50-codebase-conventions.md
60-ai-governance.md
settings.json
skills/
ai-coding-agents/
references/
claude-code-advanced.md
codex-advanced.md
comparison-and-edge-cases.md
SKILL.md
css-design-tdd/
SKILL.md
mcp-dev/
references/
paths.md
scripts/
scan_mcp.sh
SKILL.md
mcp-server-manager/
scripts/
scan_mcp_servers.py
SKILL.md
plan-audit/
SKILL.md
plan-verify/
SKILL.md
planning/
SKILL.md
templates/
TEMPLATE.md
react-app-dev/
references/
paths.md
scripts/
scan_react_usage.sh
SKILL.md
release-gate/
scripts/
run_release_gate.sh
SKILL.md
rust-tauri-backend/
references/
paths.md
scripts/
list_commands.sh
SKILL.md
shortcut-audit/
references/
paths.md
SKILL.md
tauri-app-dev/
references/
bundling.md
commands-and-ipc.md
patterns.md
plugins.md
security.md
SKILL.md
tauri-mcp-test-runner/
references/
flows.md
SKILL.md
tauri-mcp-testing/
references/
debugging.md
ipc-testing.md
session-management.md
webview-testing.md
SKILL.md
tauri-v2-integration/
references/
paths.md
scripts/
scan_ipc.sh
SKILL.md
tiptap-dev/
references/
commands-and-api.md
examples.md
extensions.md
input-paste-rules.md
react-integration.md
schema.md
SKILL.md
tiptap-editor/
references/
examples.md
patterns.md
SKILL.md
translate-docs/
SKILL.md
workflow-audit/
SKILL.md
tdd-guardian/
audit-20260731-branch-findings.md
audit-20260801-phase1-findings.md
config.json
decisions-20260803.md
design-20260731-source-structure-service.md
plan-20260731-113906.md
plan-20260803-161713.md
plan-20260809-debt-paydown.md
plan-20260809-followups.md
state.json
tests-20260803-161713.md
.codex/
config.toml
hooks.json
prompts/
.gitkeep
.dependency-cruiser-known-violations.json
.dependency-cruiser.cjs
.githooks/
pre-commit
pre-push
.github/
actions/
setup-node-pnpm/
action.yml
setup-tauri-deps/
action.yml
cost-reports/
ledger.json
dependabot.yml
ISSUE_TEMPLATE/
bug_report.yml
feature_request.yml
pull_request_template.md
workflows/
baseline-review.yml
ci.yml
claude-audit.yml
claude-cost-report.yml
claude.yml
deploy-website.yml
gate-liveness.yml
mutation.yml
release.yml
rust-cache-warm.yml
rust-coverage.yml
soak.yml
star-history.yml
tier0-e2e.yml
update-homebrew.yml
.gitignore
.jscpd.json
.mcp.json
.npmrc
.size-limit.cjs
.stylelintrc.json
.tokenize/
config.json
ignore
AGENTS.md
CLAUDE.md
CONTRIBUTING.md
e2e/
journeys/
01-boot-editor-ready.mjs
02-scratch-tab-roundtrip.mjs
03-mode-switch.mjs
04-tab-lifecycle.mjs
05-formatting-bold.mjs
06-undo-redo.mjs
07-find-bar.mjs
08-outline-toggle.mjs
09-open-from-disk.mjs
10-save-to-disk.mjs
11-d1-d4-roundtrip.mjs
12-nonmd-format-dispatch.mjs
13-workflow-split-pane.mjs
14-multi-doc-save-integrity.mjs
15-dirty-file-close-guard.mjs
16-autosave-persists-to-disk.mjs
17-terminal-workspace-cwd.mjs
18-terminal-workspace-cd-sync.mjs
19-line-ending-preservation.mjs
20-failed-save-preserves-document.mjs
21-external-change-reloads-clean-doc.mjs
22-browser-tab-lifecycle.mjs
23-browser-chrome-controls.mjs
24-browser-occlusion.mjs
25-editor-ime-composition.mjs
27-browser-disabled-refuses.mjs
28-browser-open-read-act.mjs
29-browser-ssrf-policy.mjs
30-browser-approval-scoping.mjs
31-browser-no-bridge.mjs
32-browser-redirect-ssrf.mjs
33-browser-approval-invalidation.mjs
34-browser-session-roundtrip.mjs
lib/
artifacts.mjs
bridge.mjs
browser.mjs
browserApproval.mjs
config.mjs
disk.mjs
fixtures.mjs
fixtureServer.mjs
terminal.mjs
vmark.mjs
vmarkMcp.mjs
workspace.mjs
README.md
run-ime.mjs
run-journeys.mjs
smoke.mjs
wait-ready.mjs
eslint.config.js
index.html
knip.json
LICENSE
package.json
pnpm-lock.yaml
pnpm-workspace.yaml
public/
dictionaries/
de.aff
de.dic
en.aff
en.dic
es.aff
es.dic
fr.aff
fr.dic
ko.aff
ko.dic
tauri.svg
vite.svg
README.md
scripts/
__tests__/
i18nIdenticalAllowlist.test.ts
add-language-card.mjs
apply-translations.mjs
arch-graph.mjs
arch-metrics.mjs
baseline-review-schedule.json
baselineRatchetManifest.mjs
baselineRatchetModes.mjs
baselineRatchetSpecLedgers.mjs
baselineRatchetTsAllowlist.mjs
bespoke-buttons-baseline.json
build-translation-tasks.mjs
bump-version.sh
change-size-policy.json
check-ai-nav-phase.sh
check-ai-nav-plan.sh
check-baseline-ratchet-spec-ledgers.test.mjs
check-baseline-ratchet.mjs
check-baseline-ratchet.test.mjs
check-bespoke-buttons.mjs
check-bespoke-buttons.test.ts
check-browser-automation-phase.sh
check-browser-e2e-phase.selftest.sh
check-browser-e2e-phase.sh
check-browser-phase.sh
check-browser-shell-phase.sh
check-change-size.mjs
check-change-size.test.mjs
check-coherence-phase.sh
check-coherence-runtime-phase.sh
check-command-error-ratchet.mjs
check-command-error-ratchet.test.mjs
check-comment-headers.sh
check-context-menu-phase.sh
check-cross-target.sh
check-deleted-names.mjs
check-deleted-names.test.mjs
check-design-tokens.mjs
check-design-tokens.test.ts
check-eager-chunks.mjs
check-eager-chunks.test.ts
check-emdash-spacing.mjs
check-ext-sync.sh
check-extension-budget.mjs
check-file-size.mjs
check-file-size.test.ts
check-followups-phase.sh
check-followups-phase.test.mjs
check-gate-liveness.mjs
check-gate-liveness.test.mjs
check-gha-phase.sh
check-hooks-react-purity.mjs
check-i18n-keys.ts
check-index-barrels.mjs
check-index-barrels.test.ts
check-keybinding-manifest.mjs
check-knip-baseline.mjs
check-merge-drops.mjs
check-mock-boundaries.mjs
check-mock-boundaries.test.mjs
check-multi-format-phase.sh
check-mutants-config-path.mjs
check-mutants-config-path.test.mjs
check-new-deps.sh
check-paydown-phase.sh
check-paydown-phase.test.mjs
check-plugin-store-coupling.mjs
check-plugin-store-coupling.test.ts
check-pnpm-version-source.test.mjs
check-review-schedule.mjs
check-review-schedule.test.mjs
check-rust-cache-parity.test.mjs
check-scripts-parity.test.mjs
check-selection-styles.mjs
check-shell-slots.mjs
check-shell-slots.test.ts
check-slidev-kb-phase.sh
check-split-view-phase.sh
check-tag-green.sh
check-tag-green.test.mjs
check-tauri-versions.mjs
check-tauri-versions.test.ts
check-terminal-edge-phase.sh
check-terminal-gaps-phase.sh
check-terminal-input-phase.sh
check-terminal-phase.sh
check-test-timer-isolation.mjs
check-theme-names.sh
check-wi-linkage.sh
check-wi-linkage.test.mjs
check-wrcs-phase.sh
clean-dev.sh
clean-dev.test.mjs
command-error-baseline.json
compare-bench.mjs
compare-bench.test.ts
css-quick-check.sh
depcruise-sensitivity.test.mjs
dev-disk.mjs
dev-disk.test.mjs
e2e-bridge-client.test.ts
extension-budget.json
extract-menu-ids.ts
fetch-gha-fixtures.sh
file-size-baseline.json
find-untranslated.mjs
fixtures/
stryker-canary/
src/
calc.canary.js
... 1600 moreShowing a partial view of a very large repo.
FAQ
vmark is a Claude Code plugin with 19 hand-picked skills for agent orchestration work, indexed on Flowy. Install it with the command on its page. It includes ai-coding-agents, css-design-tdd, mcp-dev. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.