From semantic-skills
Organize and clean up Obsidian daily notes over a configurable time range (default past 3 days). Fixes spelling, grammar, capitalization, and markdown structure; organizes loose text; resolves implicit mentions of project/slipbox/reference notes to wikilinks. When notes contain embedded images, use the image-metadata-from-cache skill to attach AI-generated image descriptions as context. Use when the user mentions cleaning up daily notes, organizing daily logs, tidying notes, fixing spelling, improving note formatting, entity linking, or making daily notes more readable.
npx claudepluginhub yixin0829/semantic-obsidian --plugin semantic-skillsThis skill is limited to using the following tools:
Clean up and organize Obsidian daily notes for improved readability and consistency. This skill fixes spelling, grammar, capitalization, and markdown structure while strictly preserving all content.
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.
Clean up and organize Obsidian daily notes for improved readability and consistency. This skill fixes spelling, grammar, capitalization, and markdown structure while strictly preserving all content.
Never delete information. The goal is to reorganize and polish, not to curate.
Daily notes live in 00-Inbox/YYYY-MM-DD.md. The expected section order is:
# YYYY-MM-DD
## Priority
(Rendered Preview — never modify this)
![[Top 3 Things]]
## Backlog
(task query code blocks — never modify these)
## Daily Log
(main content (Yixin's experience & learning): tasks, events, meetings, learnings, ideas)
### HH:MM Activity Title
(subsection for timed activities with significant content)
## Quick Notes
(optional ad-hoc captures: images, web links, ideas, quick reminders/todos, brainstorm sessions, etc.)
Work through these categories for each note. Not every note will have issues in every category — skip notes that are already clean.
Fix clear misspellings. Common patterns to watch for:
Capitalize product names, service names, and personal names consistently:
This is the most impactful category. Fix these structural issues:
Section ordering: If sections are out of order, rearrange them. The correct order is Priority > Backlog > Daily Log > Quick Notes.
Heading levels: Ensure proper hierarchy:
## for main sections (Priority, Backlog, Daily Log, Quick Notes)### for timed activities or major topics within Daily Log#### for sub-topics within activities##### for further nestingWhen restructuring, adjust all child headings to maintain relative depth. If a ## heading becomes ###, its ### children become ####.
Loose/floating text: Text that sits outside any section or bullet structure should be organized:
If you notice plaintext secrets, API keys, tokens, or passwords, flag them to the user in your summary. Do not delete them — the user may need them. Just note: "File X contains plaintext API keys/tokens that should be rotated if this vault is shared."
Resolve plain-text mentions of existing vault notes to wikilinks. Only add new links; never remove or change existing wikilinks (including placeholders to notes that don't exist yet).
Linkable notes: Notes in 01-Project/, 02-Slipbox/, and 03-Reference/. Use the note's filename (without path or .md) as the link target. Discover them by Glob (see workflow Step 2b).
When to link: Use context to decide when a span of text refers to a single existing note in those folders. Replace that span with [[Full Note Name]] (full note name only, no aliases). Match note titles as whole phrases with word boundaries; do not link substrings.
When not to link: Do not link if you are unsure (multiple possible notes, ambiguous mention, or no matching note). Do not modify or remove any existing wikilink. Do not link inside existing wikilinks, task blocks, code blocks, or embeds.
Unresolved mentions: When a mention could be an entity but cannot be resolved with confidence, do not add a link. Record it for the Step 6 report under "Unresolved entities" so the user can assist (e.g. create a note, add a link, or confirm leave as plain text). Include file, the mention snippet, and optionally possible matching notes.
Parse the user's request to determine the date range:
Use Glob to find all matching daily notes:
00-Inbox/YYYY-MM-DD.md
(If the vault uses a Daily subfolder, use 00-Inbox/Daily/YYYY-MM-DD.md.)
Glob for existing notes in the entity folders to build the set of linkable note titles (filename without path or .md):
01-Project/**/*.md02-Slipbox/**/*.md03-Reference/**/*.mdUse this list when applying entity linking in Step 5. Notes in other folders (e.g. 00-Inbox) are not linkable for this step.
Read all found notes simultaneously using parallel Read tool calls. This is important for efficiency — daily notes are typically short, so reading them all at once is faster than sequential reads.
Quickly scan each note and categorize:
Process notes in chronological order. For each note:
Image context (when the note has embedded images) — If the note contains embedded images (![[...]] or ), use the image-metadata-from-cache skill to retrieve cached title/keywords/description for each image. Run the skill’s script with the vault root and the note path (e.g. uv run python .cursor/skills/image-metadata-from-cache/scripts/get_image_metadata.py <vault_path> <note_path>); use the returned JSON as context when applying fixes below (e.g. entity linking, spelling, or structure) so you understand what the images represent. Do not modify the embeds themselves (embedded content is sacred).
Minor fixes — Use the Edit tool for each targeted change. Multiple independent edits to the same file should be done sequentially (each edit changes the file, so subsequent edits need the updated content).
Major restructuring — When section order needs to change or heading levels need systematic adjustment, use the Write tool to rewrite the entire file. This is cleaner than attempting many overlapping Edit operations. Carefully preserve every piece of content when rewriting.
Both minor and major — If a note needs both spelling/grammar fixes and structural changes, do a single Write pass that includes all fixes. Do not Edit first and then Write (the rewrite would overwrite the edits).
Entity linking — When applying any fixes to a note, also resolve plain-text mentions to wikilinks (category 7) using the linkable-entities list. Include new links in the same Edit or Write pass. Record unresolved mentions for the report.
After all edits are complete, provide a categorized summary grouped by change type:
[[Note]])This summary helps the user verify nothing was lost and understand what changed.
- [x], - [ ], - [/], - [-]), task metadata (dates, priorities), or task plugin syntax (#task, ⏫, 🛫, 📅, ✅).![[image]] embeds or ![[note]] transclusions.```tasks ``` code blocks.```base ``` → ```bash ```).