deadhedd65 downloadsCreate portable Markdown shortcuts that open their target notes and follow target renames.
Portable Markdown shortcuts for Obsidian Desktop and Mobile. Symlink Notes keeps the shortcut itself as ordinary Markdown and leaves the target note as the single canonical copy of its content.
A shortcut is an ordinary note:
---
symlink: Problems/Weak Bedroom Wi-Fi.md
---
Opening it opens the target in the same tab. The plugin never copies or synchronizes note contents, and the shortcut remains readable Markdown even when the plugin is disabled.
Version 0.1.1 requires Obsidian 1.5.7 or newer.
Install Symlink Notes from the Obsidian Community plugins directory:
For the design rationale behind Markdown-level shortcuts rather than filesystem symlinks, see Symlink Notes: Portable Markdown Shortcuts for Obsidian.
Open a Markdown note and run Symlink Notes: Create symlink to active note from the command palette. Choose an existing folder, or / (vault root). The shortcut uses the active note's filename. Creation leaves the active note open and refuses to overwrite an existing file or folder. Paths in generated YAML are quoted to preserve special characters.
Renaming or moving a target, including moving its containing folder, updates the symlink property of incoming shortcuts. Other properties and the note body are preserved; Obsidian may reformat YAML during its frontmatter update. Moving a shortcut itself leaves its target unchanged. Targets must be moved while the plugin is enabled for automatic updates to occur.
Chains resolve at navigation time, with loop detection and a maximum of 20 redirects. Missing, invalid, non-Markdown, circular, and excessively deep targets produce a notice and leave the original shortcut open for repair. Empty or non-string properties and malformed YAML behave as ordinary notes. Deleting a target leaves its shortcuts intact.
To repair a broken shortcut, edit its frontmatter and reopen it. Working shortcuts redirect immediately; to edit one manually, temporarily disable the plugin or use an external editor. With the plugin disabled, every shortcut remains readable Markdown.
symlink. Backlinks, search, graph, File explorer, and Quick switcher use Obsidian's normal behavior../.. paths, attachments, and folder targets are unsupported.Public API reference: Obsidian TypeScript definitions.
npm ci
npm run check
npm run check is the canonical repository verification command. It runs strict TypeScript checking, the test suite, and the production build in that order. npm run dev watches and rebuilds main.js. npm run typecheck checks strict TypeScript independently.
For a repository-owned release artifact, run:
npm ci
npm run release:check
The release command runs the canonical repository check before creating
release/. It creates exactly main.js and manifest.json, then reports
the version, output directory, and lowercase SHA-256 hashes for both files. No
stylesheet or runtime npm dependencies are needed.
After npm run release:check succeeds, use the exact release/main.js and release/manifest.json it produced. Copy those files unchanged into a clean Desktop vault and a clean Mobile vault, then complete the smoke path in docs/release-verification/template.md. Copy the template to docs/release-verification/<version>.md, fill in the command output and test results, and check in the record even when a platform is Fail or Blocked. Stop if either recorded SHA-256 hash does not match the files under test.
Tests use Node's test runner with an in-memory Obsidian API mock and real YAML parsing. They cover resolution, creation, collisions, rename/move events, metadata/body preservation, restart reconstruction, invalid targets, loops, depth limits, background leaves, navigation races, unload, and write failures. They do not replace testing the plugin inside Obsidian.
Manual smoke test in a disposable desktop/mobile vault:
Problems/Target.md with some body text and a Household folder. Use the command to create Household/Target.md.Household; verify the existing shortcut is unchanged. Try the vault root as a destination.Symlink Notes is licensed under the MIT License.