Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>ViewmarkNew to Visual Studio Code? Get it now.
Viewmark

Viewmark

David Y. Stephenson

| (0) | Free
Same-column WYSIWYG markdown editor for Cursor and VS Code.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Viewmark

Agent-led Athena project for the Viewmark Cursor / VS Code extension: markdown editing that fits a vertical one-column layout.

Viewmark is a same-column WYSIWYG markdown editor for Cursor and VS Code.

Markdown style for repo docs: STYLE.md.

Project relationships

Relationship Project Root
Parent Athena ~/athena/athena
Children N/A N/A

Pantheon context

Parent goddess: Athena. worship for this repo means advancing this project's work under Athena privacy boundaries. Whole-life context: /home/david/pantheon/PROFILE.md only when needed.

Why

Cursor’s built-in Preview | Markdown toggle and third-party markdown extensions did not meet the workflow needed here:

  • one intentional click
  • same editor column (no side split on a vertical monitor)
  • natural UI buttons, not palette-only or shortcut-only workflows

Viewmark owns that extension end to end.

Install

Install Viewmark from the VS Code Marketplace or Open VSX. That is the path for VS Code, Cursor, and other compatible editors.

On this machine during development, package a VSIX:

npm run package

Then install the VSIX locally:

cursor --install-extension viewmark-0.0.4.vsix

Reload the window after install. In Cursor, editor title actions stay under the ... menu until you turn them on. Open a markdown file, open ..., choose Configure Icon Visibility, and enable Viewmark: Toggle editor.

Spec and development

Viewmark follows strict SDD and TDD.

  1. UX.md is the sole source of truth for how the app works. It stores a human-friendly description of the user-facing interface, and nothing else. Necessary technical details go in this README. The spec is UX.md plus this entire README.
  2. Tests are generated from the spec, and nothing else
  3. Code is generated to make failing tests pass, and nothing else

Testing

Extension integration tests use @vscode/test-cli with @vscode/test-electron and Mocha. The test command is:

npx vscode-test

Tests compile to out/test/**/*.test.js. This runner launches VS Code Desktop, not Cursor. npx vscode-test asserts Viewmark behavior in VS Code, including that a WYSIWYG selection is forwarded to aichat.newchataction. That command is absent in VS Code Desktop, so the automated test spies on the executeCommand call. A manual Cursor check confirms Ctrl+L inserts that selection into agent chat. Cursor reads the active text-editor selection, so a WYSIWYG Ctrl+L may briefly reveal the code tab before returning to Viewmark. Edits in the Viewmark webview write back to the markdown TextDocument. Opening a remembered file with showTextDocument or vscode.open restores Viewmark.

Repository layout

New inbox and outbox items are named YYYY-MM-DD-HHMM-slug.md, or a folder of the same shape when the item is a bundle.

Path Owner Purpose
UX.md This project Sole source of truth for how the app works
src/ This project Extension TypeScript source
media/ This project Extension icons and webview assets
PLAN.md Agent (user requests edits) Extension build and ship plan
PLAYGROUND.md User Unstable, unsafe, or out of date scratch notes
outbox/ Shared queue Agent may create files, you own the queue. Named YYYY-MM-DD-HHMM-slug.md. Agent does not triage unprompted.
inbox/ User → agent Task briefs named YYYY-MM-DD-HHMM-slug.md
archive/ User Your scratch and legacy dumps at repo root
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft