Skip to content
Agentmart
Submit a tool

ObsidianActions

[DEPRECATED] Use /ObsidianCLI instead.

Skill by N4M3Z

IndexedEUPL-1.2★ 2
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/n4m3z-obsidianactions

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

[DEPRECATED] Use /ObsidianCLI instead. Obsidian Actions URI — atomic frontmatter props-set, rename with backlink updates, create notes, open notes. USE WHEN Obsidian Actions, actions URI, property set, rename note.

Use cases: productivity

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/obsidianactions

What's inside

Skill name
ObsidianActions
Description
[DEPRECATED] Use /ObsidianCLI instead. Obsidian Actions URI — atomic frontmatter props-set, rename with backlink updates, create notes, open notes. USE WHEN Obsidian Actions, actions URI, property set, rename note.
License
EUPL-1.2
Instructions
115 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Agent Skills spec issues

  • name: only lowercase letters, digits and single hyphens allowed

Files (2)

  • SKILL.md
  • SKILL.yaml

SKILL.md (first lines)

# ObsidianActions

> **Deprecated** — The official Obsidian CLI (1.12+) replaces this functionality with `property:set`, `rename`, `create`. See `/ObsidianCLI` for the current reference. This skill remains for users on Obsidian < 1.12.

Reference for the Obsidian Actions URI plugin. Communicates with Obsidian via URL schemes (`obsidian://actions-uri/...`). Fire-and-forget — sends commands, no response to the shell.

Best for atomic writes that Obsidian processes internally (property updates, renames with backlink tracking). Falls back to `safe-write` / Write tool when unavailable.

## Setup

1. Install: Obsidian Settings → Community Plugins → search "Actions URI"
2. Enable the plugin — no API key needed

## Wrapper Script

`Hooks/obsidian-uri.sh` wraps common operations. The vault name defaults to `Personal` (override with `OBSIDIAN_VAULT` env var).

### Set frontmatter properties

```bash
Hooks/obsidian-uri.sh props-set "vault/relative/path.md" '{"keywords": ["[[Security]]"], "related": ["[[Obsidian]]"]}'
```

Uses `mode=update` (merge) — existing properties are preserved, new ones are added/updated. Safe for append-only fields like `keywords:` and `related:`.

### Remove frontmatter keys

```bash
Hooks/obsidian-uri.sh props-remove "vault/relative/path.md" '["obsolete_key", "deprecated_field"]'
```

### Rename with backlink updates

```bash
Hooks/obsidian-uri.sh rename "old/path.md" "new/path.md"
```

Obsidian updates all `[[wikilinks]]` across the vault that pointed to the old name. This is the only way to rename with automatic backlink tracking — file-system `mv` breaks links.

### Create a note

```bash
Hooks/obsidian-uri.sh create "path/to/note.md" "Optional initial content"
```

### Open a note in Obsidian

```bash
Hooks/obsidian-uri.sh open "path/to/note.md"
```

### Check note existence

```bash
Hooks/obsidian-uri.sh exists "path/to/note.md"
```

**Warning**: This is unreliable — `open` on macOS always returns exit 0 regardless of whether the note exists. Use the REST API `GET /vault/{path}` (200 vs 404) for reliable existence checks, or the Glob tool as fallback.

## Raw URI Format

If the wrapper script is unavailable, construct URIs directly:

```bash
# URL-encode the path
FILE=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1], safe=''))" "path/to/note.md")
VAULT="${OBSIDIAN_VAULT:-Personal}"

# Set properties
open "obsidian://actions-uri/note-properties/set?vault=${VAULT}&file=${FILE}&properties=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1], safe=''))" '{"key":"value"}')&mode=update&silent=true"

# Rename
NEW=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1], safe=''))" "new/path.md")
open "obsidian://actions-uri/note/rename?vault=${VAULT}&file=${FILE}&new-filename=${NEW}&silent=true"
```

## When to Prefer Actions URI Over File I/O

| Scenario | Why Actions URI wins |
|----------|---------------------|
| Setting frontmatter on AMBER files | Atomic update — no read-modify-write cycle, no Linter race |
| Renaming notes | Obsidian updates all backlinks vault-wide |
| Creating notes that need Linter formatting | Obsidian applies Linter rules on creation |
| Rapid successive property updates | Each `props-set` is independent — no stale-file conflicts |

## Detecting Availability

```bash
if [ -f "${FORGE_USER_ROOT}/.obsidian/plugins/actions-uri/main.js" ]; then
  echo "Actions URI available"
else
  echo "Actions URI unavailable — falling back to safe-write"
fi
```

## Fallback

| Actions URI operation | File-system fallback |
|----------------------|---------------------|
| `props-set` | `safe-write edit` (read → modify YAML → write) |
| `props-remove` | `safe-write edit` |
| `rename` | `command mv` + manual backlink updates (lossy) |
| `create` | Write tool or `safe-write write` |
| `open` | No equivalent |

## Constraints

- Fire-and-forget — no return value, no error feedback to the shell
- Requires Obsidian desktop app to be running
- `exists` command is unreliable (always exit 0) — use REST API instead
- `mode=update` merges properties — use `mode=overwrite` only when intentionally replacing all properties
- URL encoding is required for all path and property arguments
- Does not work in headless/CI environments

From N4M3Z/forge-obsidian, EUPL-1.2.

More from N4M3Z/forge-obsidian

Signals

Stars
2
Forks
0
Open issues
1
Last commit (this folder)
Feb 26, 2026 (8 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
EUPL-1.2
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from N4M3Z

Cite this page

ObsidianActions skill. Agent Mart. https://agentmart.dev/skills/n4m3z-obsidianactions (last updated 2026-10-24)