victor50 downloadsScrivener-style corkboard view for Obsidian folders. Each folder gets an index.corkboard with cards for its markdown files.
Scrivener-style corkboard for Obsidian. Each folder gets a single
index.corkboard file that renders the folder's markdown notes as index
cards arranged in a flowing grid.
繁體中文:README_zh_TW.md
.md file in the folder..md files in the folder is reflected in the corkboard
immediately, even when the corkboard view is closed.Todo / Draft / Revision /
Done).Desktop only.
While the plugin isn't on the community plugin list yet, install manually:
main.js, manifest.json, styles.css).<your vault>/.obsidian/plugins/corkboard/.The fastest path to a working corkboard:
Either entry point creates an index.corkboard file in that folder
pre-populated with one card per existing .md file. The corkboard
opens in a new tab.
| Action | Result |
|---|---|
| Right-click empty area → New card | Creates a new Untitled-N.md file in the folder and adds a card |
| Right-click empty area → Add existing file… | Fuzzy-search a folder file that isn't on the board yet, add it as a card |
Create an .md directly in the file explorer |
Auto-syncs as a new card at the end |
fileManager.renameFile, so backlinks update.| Gesture | Result |
|---|---|
| Click a card | Select (blue outline) |
| Cmd/Ctrl-click | Add or remove from selection |
| Shift-click | Range-select from the previous anchor |
| Click empty area | Clear selection |
| Double-click a card body | Open the underlying .md in a new tab |
Drag any card and release on top of another to reorder. The new order
is persisted in index.corkboard.
If you right-click a card while multiple cards are selected, the menu applies to all selected cards — so you can change status / colour in batch, or remove several cards at once.
If you create / rename / delete / move a .md file via the file
explorer (or another tool, while Obsidian is open), the corkboard
catches up:
If the plugin was disabled when a file was deleted, the orphaned card is shown dimmed with a red ⚠ badge. Right-click → Remove from corkboard to clean up.
Settings → Community plugins → Corkboard → cog icon. The settings tab lets you rename the four status labels (the underlying status ids stay stable, so existing cards still display).
Each corkboard is a JSON file at <folder>/index.corkboard:
{
"version": 1,
"cardWidth": 280,
"cardHeight": 180,
"cards": [
{
"path": "novel/ch01-opening.md",
"synopsis": "Protagonist meets the antagonist.",
"status": "draft",
"color": "blue"
}
]
}
title is derived from path (no separate field). Synopsis lives in
the JSON; you can also push it into the file via right-click → Write
synopsis to file (insert as the first paragraph, after frontmatter).
index.corkboard.isDesktopOnly: true).Stack: TypeScript, esbuild, Preact (automatic JSX runtime), Vitest + jsdom + @testing-library/preact for tests.
npm install
npm run dev # esbuild watch mode
npm run build # type-check + production bundle
npm run test # run unit + component tests
npm run lint # eslint with obsidianmd plugin rules
Source layout:
src/
main.ts # plugin lifecycle, registrations
constants.ts, types.ts
data/
corkboardDocument.ts # parse / serialize / mutations
schema.ts # runtime validator (v1)
initialData.ts # build a fresh document from a folder's md files
state/
controller.ts # CorkboardController + VaultGateway interface
selectionStore.ts, dragStore.ts
sync/
vaultSync.ts # vault events ↔ controller registry
pathResolver.ts, synopsisInjector.ts
view/
CorkboardView.tsx # TextFileView + Preact mount + corrupt-JSON banner
components/
CorkboardApp.tsx, CardGrid.tsx, Card.tsx, SynopsisEditor.tsx,
Toolbar.tsx, ContextMenus.ts, AddCardModal.ts, DragLayer.tsx
settings/
settings.ts, settingsTab.ts
utils/
debounce.ts, filename.ts
The design spec and implementation plan live in docs/superpowers/.
The manual integration test plan is docs/superpowers/test-plan.md.
0BSD (matches the original Obsidian sample plugin scaffold this is built from).