Lightweight Mentions

by amato21
5
4
3
2
1
Score: 50/100

Description

An Obsidian plugin for people who mention way more things than they want to turn into full notes.

Reviews

  • Adam Toffano
    Reviewed on Jul 19th, 2026
    Really handy for light markings it's really handy.

Stats

1
stars
98
downloads
0
forks
28
days
5
days
5
days
23
total PRs
0
open PRs
0
closed PRs
23
merged PRs
2
total issues
0
open issues
2
closed issues
53
commits

Latest Version

6 days ago

Changelog

Big thanks to @jlconlin for the extremely well-diagnosed bug report in #21, fix included — this release ships exactly what was suggested.

Fixed

  • Trigger re-firing inside its own link (#21): selecting a note whose name starts with the trigger character (e.g. a note named @Amato) inserted the correct link, but the plugin then mistook the @ inside its own [[@Amato]] for the start of a brand new mention, reopening the suggester and corrupting anything typed afterward. Fixed by recognizing a trigger character already followed by a closed ]] link.
  • Picking a template in the promotion picker could silently produce an empty note (no frontmatter, no template content) due to a timing issue in the picker's modal lifecycle.
  • Promoting with a template that has no {{content}} placeholder no longer discards whatever you'd written under the mention heading — it's now appended at the end of the note instead of lost.

Added

  • The mention suggester now matches a note's frontmatter aliases (alias/aliases), not just its filename. Picking an alias inserts [[Note|Alias]].

Documentation

  • Corrected the Templater note: Templater syntax in a template does get processed on promotion, as long as Templater's own "Trigger Templater on new file creation" setting is enabled.

See CHANGELOG.md for full details.

Install

Download main.js, manifest.json, and styles.css below and copy them into <vault>/.obsidian/plugins/lightweight-mentions/, or add as a beta plugin via BRAT using this repo's URL.

README file from

Github

Lightweight Mentions

An Obsidian plugin for people who mention way more things than they want to turn into full notes.

Type a trigger character (@ by default) followed by a name:

  • If a real note matches, it links straight to it.
  • If nothing matches yet, it appends a heading to a single shared stub file (Mentions.md by default) and links to that heading instead of forcing you to create — and later manage — a whole new note.
  • Whenever a stub deserves to become a real note, run Promote mention to full note: it extracts the heading into a new file (optionally picking a template from a folder of them) and rewrites every existing link across the vault to point at the new note instead of the old heading.

How to Install

Manually

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Copy them into <vault>/.obsidian/plugins/lightweight-mentions/.
  3. Reload Obsidian and enable Lightweight Mentions in Settings → Community plugins.

Via BRAT (beta builds)

  1. Install BRAT from the Community Plugins store.
  2. Add a Beta Plugin with this URL: https://github.com/Amato21/Lightweight-Mentions

This plugin isn't on the official Community Plugins list yet.


Usage

Mentioning something

Type @ (configurable) followed by a name and pick a suggestion:

  • An existing note → inserts [[Note]].
  • An existing note matched by one of its frontmatter aliases (alias or aliases, single string, comma-separated, or a YAML list) → inserts [[Note|Alias]].
  • An existing stub heading → inserts [[Mentions#Heading]].
  • Nothing found → Create "..." appends ## Name to the stub file and inserts [[Mentions#Name]].

Commands (Ctrl/Cmd + P)

  • Promote mention to full note — run with the cursor either on a [[Mentions#Heading]] link anywhere in the vault, or inside that heading's section in the stub file itself. It:

    1. If a template folder is configured and has at least one file in it, asks which template to apply (or none, via Esc).
    2. Creates a new note from the heading's content, through that template if one was picked.
    3. Removes the heading from the stub file.
    4. Rewrites every [[Mentions#Heading]] link across the vault to point at the new note.

    Templater note: this plugin doesn't call Templater itself — it just writes the chosen template's raw text into the new note (with {{title}}/{{content}} substituted first). In practice, Templater syntax in that text still gets executed: if Templater's "Trigger Templater on new file creation" setting is enabled, Templater watches for any newly created file (regardless of which plugin created it or whether it started empty) and processes any Templater syntax already present in its content.

  • Convert link to lightweight mention — for an existing [[Something]] link that's never had a matching note (mentioned for months, never written up), run this with the cursor on that link. It adds/reuses a heading for it in the stub file, then rewrites every occurrence of that link across the whole vault to point at the new heading — not just the one under the cursor. Links with a #heading component aren't supported yet.

  • Convert unresolved links to lightweight mentions... — the bulk version: opens a list of every distinct unresolved link in the vault (via Obsidian's own unresolved-links index, so it's instant even on a large vault), each with how many times it's used and a checkbox, so you can convert many at once instead of running the command above one link at a time.

Configuration

Go to Settings → Lightweight Mentions:

  • Trigger character — what you type to open the mention suggester (default @).
  • Stub file — vault path of the shared file storing lightweight mentions as headings (default Mentions.md).
  • Promoted notes folder — where new notes land when a mention is promoted (defaults to the stub file's own folder).
  • Template folder — optional folder of templates; promoting a mention asks which one (if any) to apply, with {{title}} and {{content}} placeholders.

Data access

To power the mention suggester, this plugin reads the list of every markdown file in your vault (file names, not their content) plus the headings of the stub file, on every keystroke while the suggester is open. It never reads any other file's content, and nothing ever leaves your vault — no network requests are made.


Plugin review notes

Findings from the Obsidian plugin review, and how each was addressed:

Finding Status
Release name must include the manifest.json version Fixed — release titles now include the version (e.g. "0.2.1 — ...").
Unawaited promise (main.ts, command callback) Fixed — wrapped with void.
Unsafe any assignment (loadData() into typed settings) Fixed — result is cast to Partial<LightweightMentionsSettings> | null before merging.
EditorSuggest.selectSuggestion returned Promise<void> instead of void Fixed — split into a sync void method that fires a private async helper.
builtin-modules package flagged for replacement Fixed — swapped for Node's own module.builtinModules.
Vault enumeration (vault.getMarkdownFiles, etc.) Documented, not changed — see "Data access" above; required for the mention suggester to work.

Known limitations

  • One global stub file — no per-topic/per-folder stub files yet.
  • Heading matching for promotion is by exact text + heading level, so renaming a stub heading by hand before promoting can break the link rewrite.

Changelog

See CHANGELOG.md for the full version history.

Development

npm install
npm run dev    # watch build
npm run build  # production build (main.js)