An Obsidian plugin that automatically creates pages from unresolved wikilinks when you move to a new line. No clicks, no modals, no interruptions.
You type [[People/Johnny Appleseed]] in a note. You press Enter. Link Forge:
- Detects the unresolved wikilink on the line you just left
- Creates
People/Johnny Appleseed.md(and any missing parent folders) - Shortens the link to
[[Johnny Appleseed]](if it resolves uniquely)
All silently, in the background, while you keep writing.
- Line-change detection — uses CodeMirror 6
EditorView.updateListenerto process links only when you leave a line (not on every keystroke) - Watched folders — only auto-creates for links targeting configured folders (empty by default = all folders)
- Folder creation — automatically creates missing parent directories
- Templater compatible — works with Templater's built-in "Trigger on file creation" for automatic folder templates
- Link shortening — rewrites
[[Folder/Name]]to[[Name]]when the basename resolves uniquely - Heading + alias preservation —
[[People/Name#Bio|Their Bio]]shortens to[[Name#Bio|Their Bio]]
- Open Obsidian Settings → Community Plugins
- Search for "Link Forge"
- Install and enable
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Create folder:
<your-vault>/.obsidian/plugins/link-forge/ - Copy the downloaded files into that folder
- Reload Obsidian and enable "Link Forge" in Settings → Community Plugins
Every release is built in GitHub Actions with build provenance attestation. You can verify any artifact:
gh attestation verify main.js --repo philpalmieri/obsidian-link-forgeThis proves the artifact was built from this repo's source code in CI, not locally tampered with.
Open Settings → Link Forge:
| Setting | Default | Description |
|---|---|---|
| Enabled | true |
Global toggle |
| Watched folders | (empty) | Only auto-create for links targeting these folders (comma-separated). Empty = all folders. |
| Shorten links after creation | true |
Rewrite to shortest unique path after file exists |
Link Forge works seamlessly with Templater. When Link Forge creates a new file, Templater's built-in "Trigger on file creation" feature automatically applies your configured folder templates. No additional configuration needed in Link Forge; just set up your folder templates in Templater's settings as usual.
Link Forge registers a CodeMirror 6 editor extension that fires when the cursor moves to a different line. When you leave a line:
- The plugin extracts all
[[wikilinks]]from that line - Filters to links targeting watched folders
- Checks each against
metadataCache.getFirstLinkpathDest()to see if the file exists - Creates missing files (with parent folders) via
vault.create() - Optionally shortens the link text
This means it only activates on line changes (Enter, arrow keys, mouse click to another line), not on every keystroke.
# Install dependencies
npm install --legacy-peer-deps
# Watch mode (rebuilds on change)
npm run dev
# Run tests
npm test
# Lint
npm run lint
# Typecheck
npm run typecheck
# Production build
npm run buildSymlink into your vault for live development:
ln -s /path/to/obsidian-link-forge/main.js <vault>/.obsidian/plugins/link-forge/main.js
ln -s /path/to/obsidian-link-forge/manifest.json <vault>/.obsidian/plugins/link-forge/manifest.jsonReload Obsidian with Cmd+R. Open the dev console with Cmd+Option+I to see [Link Forge] log messages.
- Bump version in
manifest.jsonandpackage.json - Update
versions.jsonwith the new version → minimum Obsidian version mapping - Commit and tag:
git tag <version>(e.g.1.0.3) - Push:
git push origin main --tags - CI validates, builds, attests, and creates the GitHub Release automatically
This plugin uses GitHub Artifact Attestations powered by Sigstore to provide verifiable build provenance for every release. This means:
- Every
main.jsin a release is cryptographically tied to a specific source commit - The build happened in GitHub Actions, not on a developer's local machine
- Anyone can independently verify this with
gh attestation verify
The Obsidian community plugin ecosystem currently has no verification mechanism for plugin builds. This is a small step toward supply chain security best practices, built by someone who works on these problems professionally.
MIT