> Workflow for working with Dan on changing how Obsidian looks using CSS snippets. Use this whenever Dan asks to restyle Obsidian, tune a vault's visual layout, adjust tabs, sidebars, note surfaces, properties, backlinks, graph panes, file explorer rows, icons, links, shadows, active states, or CSS snippets. Also use it when Dan says a visual CSS change did nothing, still looks wrapped, is not lifted, is unreadable, or needs to be refactored without changing the current appearance.
npx skills add https://github.com/Ar9av/obsidian-wiki --skill obsidian-layout-adjustment
This skill is for changing how Obsidian looks with CSS files while working with Dan's visual language.
Obsidian is always the same kind of environment: app frame, tab headers, side docks, view headers, pane shells, note surface, properties, file explorer, backlinks, graph, rendered markdown, and status bar. The vault, theme, snippets, plugins, and desired taste direction change, but the canvas stays Obsidian.
The core behavior is translation:
> Dan names a visible Obsidian object. Translate that phrase into the stable Obsidian layer/backend object, edit the active snippets safely, screenshot the result, and keep iterating without losing good states.
This is not a general CSS workflow and not a fixed-theme generator.
This skill should make live styling work faster, not turn every small request into a report.
In normal use:
Good normal update:
> "I’m treating 'tabs above the note' as workspace tab headers, not the arrows/book/dots view header. I’ll checkpoint active snippets, patch that selector family only, and screenshot the tab strip."
Do not write a long workflow report unless:
The value is in preventing bad CSS loops while still moving quickly.
Read references/workflow-reference.md when:
The reference is Obsidian-specific. Use it before treating the UI as an unknown web page.
<vault>/.obsidian/appearance.json.enabledCssSnippets as the active styling source of truth..obsidian/snippet-archive/, never into .obsidian/snippets, so the snippet picker stays clean.10. Reload/focus Obsidian and screenshot the exact affected area.
11. Use the screenshot and Dan's correction as evidence.
12. If it fails, inspect ownership or restore; do not keep piling CSS onto the same wrong target.
13. Refactor only after Dan accepts the visual state.
Dan will usually name what he sees, not the selector:
Before editing, map the phrase:
Dan phrase -> visible object -> Obsidian layer -> likely selector/settings surface -> change type -> owning layer
Say the mapping back when it could be ambiguous:
> "When you say the tabs above the note, I am treating that as the workspace tab headers, not the arrows/book/dots row inside the note pane."
This is the main mistake-prevention step. Most frustrating failures came from changing a plausible element that was not the object Dan meant, or changing a child when the wrapper/header/stage owned the visible shape.
Use this compact map first, then verify exact selectors in the live vault:
| Dan points at | Usually means |
| --- | --- |
| top-left white/native area | titlebar/native chrome or adjacent app header |
| tabs above note | workspace tab headers |
| plus next to tab | new tab control |
| green/top bar | app frame or tab header container |
| far-left icons | ribbon / side dock |
| selected side icon | active side-dock tab header plus icon state |
| buttons above file list | file explorer nav controls |
| left note/folder buttons | file explorer tree rows |
| vault name/footer | side dock profile/footer |
| arrows/book/dots above note | markdown view header |
| note/page/paper | markdown leaf, editor, or readable surface |
| note shadow/lift/edge | stage, shell, gutter, overflow, or pseudo-element relationship |
| properties | metadata container or Properties View workflow |
| links | internal link spans in reading/editing modes |
| right sidebar | right workspace split and utility leaves |
| linked mentions/backlinks | backlinks plugin result groups |
| graph | graph plugin leaf/canvas |
| bottom stats | status bar |
The visible object and backend layer should be treated as stable across Obsidian work. Exact class names can vary by theme/plugin/app version, so verify in the live vault before patching.
The same object needs different work depending on the request:
box-shadow.If a target needs two change types, do two passes. For example, make side-dock icons readable first, then tune the selected-state color.
Start with:
appearance.jsonAvoid changing first:
Ask for explicit confirmation before:
.obsidian/snippets or Obsidian settingsCSS validity is not visual success. The screenshot is product truth.
For every meaningful visual pass:
If another window covers Obsidian, retake the screenshot. Verify the verifier: confirm Obsidian is actually frontmost before trusting a capture (AppleScript can check the frontmost process). If the issue is tiny, capture just that region — screencapture -R<x,y,w,h> out.png — around the edge, icon, tab, row, or pane.
If the screenshot disproves the fix, keep working, restore, or say it failed. Do not close as if formatting proved success.
Dan's corrections are selector evidence:
If a direction fails twice, restore the last good checkpoint and change the ownership model.
Do not refactor during taste exploration.
When Dan likes the look:
.obsidian/snippets.CSS size is usually less dangerous than cascade confusion and a messy active snippet picker.
When done, keep the closeout short. Report:
Avoid explaining the whole workflow after every small pass. The workflow should be visible in the actions: checkpoint, scoped edit, screenshot, and evidence-based next step.
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally.
Take ar9av/obsidian-layout-adjustment from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.