npx claudepluginhub yixin0829/semantic-obsidian --plugin semantic-skillsThis skill uses the workspace's default tool permissions.
---
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Share bugs, ideas, or general feedback.
Find and replace standalone alias wikilinks with their full explicit format.
In Obsidian, notes can have aliases defined in YAML frontmatter:
aliases:
- LLM
- Large Language Models
Users often link to notes using these aliases: [[LLM]]. While Obsidian resolves these links correctly, they can cause issues:
[[LLM]] refers to a note named "LLM" or is an aliasThis skill converts standalone alias wikilinks to explicit format:
[[LLM]][[Large Language Model|LLM]]This makes the link explicit while preserving the display text.
Use the Python helper script at .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py:
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py <command> [args]
# Scan directory for alias links (dry-run, shows what would be changed)
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py scan <directory>
# Fix all alias links in directory
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py fix <directory>
# Check single file for alias links (dry-run)
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py check <file_path>
# Resolve alias links in single file
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py resolve <file_path>
# List all aliases indexed from directory
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py aliases <directory>
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py scan "02-SlipBox"
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py fix "."
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py check "02-SlipBox/Large Language Model.md"
uv run --with pyyaml .claude/skills/resolve-alias-links/scripts/resolve_alias_links.py aliases "."
A wikilink [[X]] is identified as an alias link if:
[[Note|X]])[[Note#Section]])The script outputs JSON with scan/fix results:
{
"total_aliases_indexed": 216,
"files_with_alias_links": 5,
"total_occurrences": 12,
"files": [
{
"file": "02-SlipBox/Large Language Model.md",
"count": 1,
"occurrences": [
{
"original": "[[LLM]]",
"alias": "LLM",
"actual_note": "Large Language Model",
"replacement": "[[Large Language Model|LLM]]"
}
]
}
]
}
| Format | Description | Handled |
|---|---|---|
[[Note]] | Direct link | Checked for alias match |
[[Note|Alias]] | Explicit alias | Skipped (already explicit) |
[[Note#Section]] | Section link | Skipped |
[[Note#Section|Text]] | Section with alias | Skipped |
--- delimiters) are also processedscan first to preview changes before using fix.claude, .obsidian, .trash, .git, node_modules