6 Commits

Author SHA1 Message Date
pablo-mano 22c5c8af83 Bump version to 1.1.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:52:12 +01:00
pablo-mano e30c0eb9cc Add template:insert error message to docs
Clarifies exact error returned when no file is active in Obsidian UI:
"Error: No active editor. Open a file first."

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:51:30 +01:00
pablo-mano 131c1654ee Bump version to 1.0.9
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:47:27 +01:00
pablo-mano 931a3a9517 Add template:insert warning to SKILL.md tips
Clarifies that template:insert targets the active Obsidian UI file,
not a CLI path. Points to create path= template= as the correct
CLI alternative.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:47:06 +01:00
pablo-mano e5c8b8e223 Bump version to 1.0.8
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:42:04 +01:00
pablo-mano 507ef7149b Apply live-test corrections to SKILL.md
- plugins table: add plugin:uninstall, themes versions, dev:debug
- search: remove matches flag (non-functional in v1.12); note format=json returns path strings
- tasks: correct no-args behavior (returns all tasks); add grep workaround for incomplete-only
- dev: note dev:screenshot requires vault-relative path; add dev:debug on as prereq for dev:console
- vault analytics example: use grep workaround for incomplete tasks
- jq example: fix .[].path -> .[] (search returns strings not objects)
- tips: clarify format=json is search-only; files command does not support JSON output

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:41:27 +01:00
6 changed files with 30 additions and 24 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "obsidian-cli",
"description": "Interact with Obsidian vaults using the official Obsidian CLI (v1.12+). Read, create, append, search, and manage notes, daily notes, properties, tags, tasks, bookmarks, templates, themes, sync, plugins, and links — all from the terminal.",
"version": "1.0.4",
"version": "1.1.0",
"author": {
"name": "pablo-mano"
},
@@ -1,7 +1,7 @@
{
"name": "obsidian-cli",
"description": "Interact with Obsidian vaults using the official Obsidian CLI (v1.12+). Read, create, append, search, and manage notes, daily notes, properties, tags, tasks, bookmarks, templates, themes, sync, plugins, and links — all from the terminal.",
"version": "1.0.4",
"version": "1.1.0",
"author": {
"name": "pablo-mano"
},
@@ -68,10 +68,10 @@ The CLI provides **100+ commands** across these groups:
| **links** | `backlinks`, `links`, `unresolved`, `orphans`, `deadends` | Graph and link analysis |
| **bookmarks** | `bookmarks` | Bookmark management |
| **templates** | `templates`, `template:read`, `template:insert` | Template listing, rendering, insertion |
| **plugins** | `plugins`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:reload` | Plugin management |
| **plugins** | `plugins`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:uninstall`, `plugin:reload` | Plugin management |
| **sync** | `sync`, `sync:status`, `sync:history`, `sync:read`, `sync:restore`, `sync:deleted` | Obsidian Sync operations |
| **themes** | `themes` | Theme management |
| **dev** | `dev:screenshot`, `eval`, `dev:console`, `dev:errors` | Developer/debugging tools |
| **themes** | `themes`, `themes versions` | Theme management |
| **dev** | `dev:screenshot`, `eval`, `dev:debug`, `dev:console`, `dev:errors` | Developer/debugging tools |
| **vault** | `vault`, `vaults`, `version` | Vault info and metadata |
| **other** | `outline`, `wordcount`, `recents`, `reload` | Utility commands |
@@ -104,8 +104,8 @@ obsidian daily:prepend content="## Morning Notes"
```bash
obsidian search query="project alpha"
obsidian search query="TODO" path="projects" limit=10
obsidian search query="meeting" format=json
obsidian search query="urgent" matches case
obsidian search query="meeting" format=json # Returns JSON array of file paths
obsidian search query="urgent" case
```
### Properties & Tags
@@ -122,18 +122,20 @@ obsidian tag name="project/alpha"
### Tasks
```bash
obsidian tasks # All incomplete tasks
obsidian tasks # All tasks (done + todo) — same as tasks all in v1.12
obsidian tasks all # All tasks (done + todo)
obsidian tasks done # Completed only
obsidian tasks daily # Tasks in today's daily note
obsidian task path="note.md" line=12 toggle
obsidian tasks | grep "\[ \]" # Workaround: filter to incomplete only
```
### Developer & Automation
```bash
obsidian eval code="app.vault.getFiles().length"
obsidian dev:screenshot path="screenshot.png"
obsidian dev:screenshot path="folder/screenshot.png" # Path must be vault-relative
obsidian dev:debug on # Required before dev:console
obsidian dev:console limit=20
obsidian dev:errors
```
@@ -178,7 +180,7 @@ obsidian daily:append content="- Started [[projects/new-feature|New Feature]]"
```bash
obsidian files total # Total file count
obsidian tags counts sort=count # Most used tags
obsidian tasks # Open tasks across vault
obsidian tasks | grep "\[ \]" # Incomplete tasks across vault
obsidian orphans # Notes needing integration
obsidian unresolved # Broken links to fix
```
@@ -186,7 +188,7 @@ obsidian unresolved # Broken links to fix
### Search and Extract for AI Processing
```bash
obsidian search query="meeting notes" format=json | jq '.[] | .path'
obsidian search query="meeting notes" format=json | jq '.[]'
obsidian read path="meetings/standup.md" | grep "Action item"
```
@@ -204,10 +206,11 @@ obsidian sync:restore path="important.md" version=3 # Rollback
2. **`create` paths omit `.md`** — the extension is added automatically.
3. **`move` requires full target path** including `.md` extension.
4. **Pipe-friendly** — plain text output works with `grep`, `awk`, `sed`, `jq`.
5. **JSON output** — use `format=json` on search and file commands for machine parsing.
5. **JSON output** — use `format=json` on `search` for a JSON array of file paths. The `files` command does not support JSON output.
6. **Stderr noise** — GPU/Electron warnings on headless are harmless; filter with `2>/dev/null`.
7. **`daily:prepend`** inserts content after frontmatter, not at byte 0.
8. **Use `eval`** to run arbitrary JavaScript against the Obsidian API (`app.*`).
9. **`template:insert`** inserts into the currently active file in the Obsidian UI — it does not accept a `path=` parameter. If no file is open, it returns `Error: No active editor. Open a file first.` To create a file from a template via CLI, use `obsidian create path="..." template="..."` instead.
## Troubleshooting
@@ -257,7 +257,7 @@ obsidian template:insert name="weekly-review" # Insert template into t
- `resolve` — Process template variables (`{{date}}`, `{{title}}`, etc.)
- Title and other variables can be passed as `key=value` for template rendering.
> **Note:** `template:insert` inserts into whichever file is currently active in the Obsidian UI — it does not accept a `path=` parameter. To create a new file from a template, use `obsidian create path="..." template="..."` instead.
> **Note:** `template:insert` inserts into whichever file is currently active in the Obsidian UI — it does not accept a `path=` parameter. If no file is open, it returns `Error: No active editor. Open a file first.` To create a new file from a template, use `obsidian create path="..." template="..."` instead.
---
+13 -10
View File
@@ -68,10 +68,10 @@ The CLI provides **100+ commands** across these groups:
| **links** | `backlinks`, `links`, `unresolved`, `orphans`, `deadends` | Graph and link analysis |
| **bookmarks** | `bookmarks` | Bookmark management |
| **templates** | `templates`, `template:read`, `template:insert` | Template listing, rendering, insertion |
| **plugins** | `plugins`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:reload` | Plugin management |
| **plugins** | `plugins`, `plugin:enable`, `plugin:disable`, `plugin:install`, `plugin:uninstall`, `plugin:reload` | Plugin management |
| **sync** | `sync`, `sync:status`, `sync:history`, `sync:read`, `sync:restore`, `sync:deleted` | Obsidian Sync operations |
| **themes** | `themes` | Theme management |
| **dev** | `dev:screenshot`, `eval`, `dev:console`, `dev:errors` | Developer/debugging tools |
| **themes** | `themes`, `themes versions` | Theme management |
| **dev** | `dev:screenshot`, `eval`, `dev:debug`, `dev:console`, `dev:errors` | Developer/debugging tools |
| **vault** | `vault`, `vaults`, `version` | Vault info and metadata |
| **other** | `outline`, `wordcount`, `recents`, `reload` | Utility commands |
@@ -104,8 +104,8 @@ obsidian daily:prepend content="## Morning Notes"
```bash
obsidian search query="project alpha"
obsidian search query="TODO" path="projects" limit=10
obsidian search query="meeting" format=json
obsidian search query="urgent" matches case
obsidian search query="meeting" format=json # Returns JSON array of file paths
obsidian search query="urgent" case
```
### Properties & Tags
@@ -122,18 +122,20 @@ obsidian tag name="project/alpha"
### Tasks
```bash
obsidian tasks # All incomplete tasks
obsidian tasks # All tasks (done + todo) — same as tasks all in v1.12
obsidian tasks all # All tasks (done + todo)
obsidian tasks done # Completed only
obsidian tasks daily # Tasks in today's daily note
obsidian task path="note.md" line=12 toggle
obsidian tasks | grep "\[ \]" # Workaround: filter to incomplete only
```
### Developer & Automation
```bash
obsidian eval code="app.vault.getFiles().length"
obsidian dev:screenshot path="screenshot.png"
obsidian dev:screenshot path="folder/screenshot.png" # Path must be vault-relative
obsidian dev:debug on # Required before dev:console
obsidian dev:console limit=20
obsidian dev:errors
```
@@ -178,7 +180,7 @@ obsidian daily:append content="- Started [[projects/new-feature|New Feature]]"
```bash
obsidian files total # Total file count
obsidian tags counts sort=count # Most used tags
obsidian tasks # Open tasks across vault
obsidian tasks | grep "\[ \]" # Incomplete tasks across vault
obsidian orphans # Notes needing integration
obsidian unresolved # Broken links to fix
```
@@ -186,7 +188,7 @@ obsidian unresolved # Broken links to fix
### Search and Extract for AI Processing
```bash
obsidian search query="meeting notes" format=json | jq '.[] | .path'
obsidian search query="meeting notes" format=json | jq '.[]'
obsidian read path="meetings/standup.md" | grep "Action item"
```
@@ -204,10 +206,11 @@ obsidian sync:restore path="important.md" version=3 # Rollback
2. **`create` paths omit `.md`** — the extension is added automatically.
3. **`move` requires full target path** including `.md` extension.
4. **Pipe-friendly** — plain text output works with `grep`, `awk`, `sed`, `jq`.
5. **JSON output** — use `format=json` on search and file commands for machine parsing.
5. **JSON output** — use `format=json` on `search` for a JSON array of file paths. The `files` command does not support JSON output.
6. **Stderr noise** — GPU/Electron warnings on headless are harmless; filter with `2>/dev/null`.
7. **`daily:prepend`** inserts content after frontmatter, not at byte 0.
8. **Use `eval`** to run arbitrary JavaScript against the Obsidian API (`app.*`).
9. **`template:insert`** inserts into the currently active file in the Obsidian UI — it does not accept a `path=` parameter. If no file is open, it returns `Error: No active editor. Open a file first.` To create a file from a template via CLI, use `obsidian create path="..." template="..."` instead.
## Troubleshooting
@@ -257,7 +257,7 @@ obsidian template:insert name="weekly-review" # Insert template into t
- `resolve` — Process template variables (`{{date}}`, `{{title}}`, etc.)
- Title and other variables can be passed as `key=value` for template rendering.
> **Note:** `template:insert` inserts into whichever file is currently active in the Obsidian UI — it does not accept a `path=` parameter. To create a new file from a template, use `obsidian create path="..." template="..."` instead.
> **Note:** `template:insert` inserts into whichever file is currently active in the Obsidian UI — it does not accept a `path=` parameter. If no file is open, it returns `Error: No active editor. Open a file first.` To create a new file from a template, use `obsidian create path="..." template="..."` instead.
---