obsidian-clis
Control Obsidian notes from the terminal via the `obsidian` app CLI, with `notesmd-cli` as a headless fallback. Covers CRUD, search, vault structure (orphans, backlinks, unresolved links), tasks, properties, Bases, and plugin dev. Use when the user mentions Obsidian CLI, notesmd-cli, or shell automation of vault notes.
What this skill does
# Obsidian CLIs **CLIs** here means two terminal interfaces: the **Obsidian app CLI** (`obsidian`, primary) and **notesmd-cli** (filesystem fallback when `obsidian` is not available). There is no separate invocation mode—pick the binary that exists in the environment. ## Which binary to use 1. If `obsidian` is on PATH, use it for all workflows below (richer surface: links, Bases, tasks, plugin dev). 2. If `obsidian` is missing but `notesmd-cli` is on PATH, follow [notesmd-fallback.md](notesmd-fallback.md) for headless vault operations. 3. If neither is available, say so and fall back to direct file edits, MCP, or other vault tools the user provides. ## CLI availability Before relying on either tool, confirm install with `command -v obsidian` and `command -v notesmd-cli` (or `which`) when the environment is unknown. Do not assume either binary is present. --- ## Obsidian app CLI Run `obsidian <command>` to control a running Obsidian instance from the terminal. The app must be running for most commands; the first command will launch Obsidian if not open. Run `obsidian help` or `obsidian help <command>` for the canonical, always-up-to-date command reference. This skill documents common patterns and non-obvious behaviors. ### Targeting vaults and files - **Vault**: `vault=<name>` as first parameter. Default: cwd if it's a vault folder, else the active vault. - **File**: `file=<name>` resolves like a wikilink (name only, no path or extension needed). `path=<path>` for exact path from vault root. - **TUI**: Run `obsidian` with no args for interactive mode; omit the `obsidian` prefix inside. ### Parameters and flags - **Parameters**: `param=value`. Quote values with spaces: `content="Hello world"`. - **Flags**: Boolean, no value: `silent`, `overwrite`, `newtab`. - **Multiline content**: Use `\n` for newlines, `\t` for tabs in `content=`. ### Search, links, and structure ```bash obsidian search query="text" [path=folder] [limit=n] [format=text|json] [total] [case] obsidian search:context query="text" [path=folder] [limit=n] # includes surrounding context obsidian links [file=Note] [total] obsidian backlinks [file=Note] [counts] [total] obsidian outline [file=Note] [format=tree|md] obsidian orphans [total] [active] # notes with no links to or from them obsidian deadends [total] [active] # notes with no outgoing links obsidian unresolved [total] [counts] [verbose] # broken wikilinks obsidian tags [active] [file=Note] [total] [counts] [sort=count] obsidian tag name=project [total] [verbose] ``` ### Common patterns #### Notes and content To peek at a note without reading its full content, use `property:read` or `properties file=Note`. ```bash obsidian read file="Note" # Use this to read the content of a wikilink obsidian create name="Note" content="# Title\n\nBody" [template=Name] [overwrite] [silent] obsidian append file="Note" content="- [ ] Task" obsidian prepend file="Note" content="# Header\n" obsidian move file="Note" to=folder/newpath.md obsidian rename file="Note" name="New file name" obsidian delete file="Note" ``` #### Daily notes (Daily notes plugin) ```bash obsidian daily:read obsidian daily [paneType=tab|split|window] [open] obsidian daily:append content="- [ ] Buy groceries" [inline] [open] obsidian daily:prepend content="- [ ] Morning routine" [inline] # goes after frontmatter obsidian daily:path # returns expected path even if file doesn't exist yet ``` #### Tasks ```bash obsidian tasks [daily] [file=Note] [todo] [done] [status="x"] [total] [verbose] obsidian task ref=path:line [toggle] [done] [todo] [daily] ``` #### Properties and frontmatter ```bash obsidian properties [active] [file=Note] [total] [counts] [format=yaml|json|tsv] obsidian property:read name=status [file=Note] obsidian property:set name=status value=done [file=Note] obsidian property:remove name=status [file=Note] ``` #### Bases (Bases plugin) ```bash obsidian bases obsidian base:views [file=base.base] obsidian base:query [file=base.base] [view=name] [format=json|csv|tsv|md|paths] obsidian base:create name="Item" content="..." [open] [newtab] ``` ### Plugin development #### Develop/test cycle After making code changes to a plugin or theme, follow this workflow: 1. **Reload** the plugin to pick up changes: ```bash obsidian plugin:reload id=my-plugin ``` 2. **Check for errors** — if errors appear, fix and repeat from step 1: ```bash obsidian dev:errors ``` 3. **Verify visually** with a screenshot or DOM inspection: ```bash obsidian dev:screenshot path=screenshot.png obsidian dev:dom selector=".workspace-leaf" text ``` 4. **Check console output** for warnings or unexpected logs: ```bash obsidian dev:console level=error ``` #### Additional developer commands Run JavaScript in the app context: ```bash obsidian eval code="app.vault.getFiles().length" ``` Inspect CSS values: ```bash obsidian dev:css selector=".workspace-leaf" prop=background-color ``` Toggle mobile emulation: ```bash obsidian dev:mobile on ``` ### Quick reference (Obsidian app CLI) | Task | Command | |------|---------| | List commands | `obsidian help` | | Open daily note | `obsidian daily` | | Append to daily | `obsidian daily:append content="- [ ] Task"` | | Search vault | `obsidian search query="text"` | | Read active/specified file | `obsidian read` or `obsidian read file=Note` | | Create from template | `obsidian create name="Title" template=Name` | | List tags with counts | `obsidian tags counts` | | List tasks from daily | `obsidian tasks daily` | | Find broken wikilinks | `obsidian unresolved counts` | | Find orphan notes | `obsidian orphans` | For **notesmd-cli**, see [notesmd-fallback.md](notesmd-fallback.md). ### References - `obsidian help` — full command list (always up to date) - `obsidian help <command>` — help for a specific command
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.