← All skills
obsidian-official-cli
97 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By hashgraph-online/awesome-codex-plugins (GitHub) · coding · 1,563 stars · scanned at commit 6d2e63f
Use this skill when the user wants local Obsidian note or metadata work done primarily through documented official desktop `obsidian` CLI commands, with limited local vault filesystem support when needed for parent folders, path checks, ambiguity resolution, verification, or safe vault structure operations. Best for local vault search, Obsidian Markdown authoring, reviewed section revisions, exact-path note updates, backlinks, tasks, properties, templates, and local history. Do not use it for r…
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README. Expected for a coding skill.
Found in 28 places.
Show 17 more
- plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/scripts/cli.py, line 93
except subprocess.TimeoutExpired: - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_authoring.py, line 145
result = subprocess.run(['/bin/sh', '-c', recorder + launch[-1]], capture_output=True, check=True) - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_authoring.py, line 184
with patch('cli.sys.stdin', io.StringIO(json.dumps(request))), contextlib.redirect_stdout(output), patch('cli.subprocess.Popen', side_effect=launch), patch('cli - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_authoring.py, line 189
result = subprocess.CompletedProcess([], 0, b'Command line interface is not enabled.', b'') - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_authoring.py, line 197
code, report = self.run_main({'argv': ['append']}, subprocess.TimeoutExpired('obsidian', 30, output=b'partial')) - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_authoring.py, line 205
with patch('cli.sys.stdin', io.StringIO(json.dumps(request))), contextlib.redirect_stdout(io.StringIO()), patch('cli.subprocess.Popen') as run: - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_regressions.py, line 26
return subprocess.run(args, input=json.dumps(request, ensure_ascii=False).encode('utf-8'), - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_regressions.py, line 74
result = subprocess.run([sys.executable, '-B', '-c', source], - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_regressions.py, line 111
patch('cli.subprocess.Popen', side_effect=FileNotFoundError('not installed') if failure else None, - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_regressions.py, line 119
process.communicate.side_effect = subprocess.TimeoutExpired('stub', 30, output=b'partial') - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_regressions.py, line 125
patch('cli.subprocess.Popen', side_effect=launch), contextlib.redirect_stdout(output): - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_regressions.py, line 179
result = subprocess.run([shutil.which('patch'), str(note), str(change)], - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_transport_safety.py, line 32
patch('cli.subprocess.Popen') as launch, contextlib.redirect_stdout(output): - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_transport_safety.py, line 47
result = subprocess.run([sys.executable, '-B', '-c', source], - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_transport_safety.py, line 84
f'subprocess.Popen([sys.executable,"-c",{descendant!r}]); time.sleep(10)') - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_transport_safety.py, line 89
'real_popen=subprocess.Popen', - plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli/tests/test_transport_safety.py, line 104
' raise subprocess.TimeoutExpired(args[0],timeout)',
and 8 more places
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'obsidian-official-cli' ] || [ -L ~/.agents/skills/'obsidian-official-cli' ]; then echo 'A skill folder named obsidian-official-cli already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/hashgraph-online/awesome-codex-plugins' "$d" && git -C "$d" checkout --quiet '6d2e63f73f845eb5dd94c1debba627d4b6e32fba' -- 'plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli' && mkdir -p ~/.agents/skills && cp -R "$d"/'plugins/greg-asher/codex-obsidian/skills/obsidian-official-cli' ~/.agents/skills/'obsidian-official-cli' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'obsidian-official-cli' ~/.claude/skills/'obsidian-official-cli' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for hashgraph-online/awesome-codex-plugins shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/hashgraph-online/awesome-codex-plugins/)
Score history
| Date | Version | Score |
|---|
| 2026-11-12 | 6d2e63f | 97 |
| 2026-11-11 | 4070676 | 97 |
| 2026-11-10 | f620aba | 97 |
| 2026-11-09 | 3062ea3 | 97 |
| 2026-11-08 | 057d789 | 97 |
| 2026-11-06 | e012fe1 | 97 |