<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ai | blog.kittenin.space</title><link>https://blog.kittenin.space/tags/ai/</link><description>A blog mostly about fiber crafts but also sometimes about tech.</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://blog.kittenin.space/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>Creating a Custom Obsidian Theme with AI</title><link>https://blog.kittenin.space/posts/creating-a-custom-obsidian-theme/</link><guid isPermaLink="true">https://blog.kittenin.space/posts/creating-a-custom-obsidian-theme/</guid><pubDate>Sat, 03 Oct 2026 15:07:53 -0400</pubDate><description>I missed having time to make custom themes for all my tools, so I decided to see what Claude could do.</description><content:encoded>&lt;p&gt;At some point in the past few years I have become painfully aware of the idea of time. Notably, that there is not enough of it in the day to do all the things I want to do, and possibly not enough of it in my life to craft the things I want to craft, write the books I want to write, and code the things I want to code, on top of doing the things one has to do to support the systems that make me as a human function; i.e., eat and workout and sleep.&lt;/p&gt;&#10;&lt;p&gt;Thus I have effectively stopped doing some things I used to love doing. Namely, making custom themes for every application I use that allows custom themes. Now, I &lt;em&gt;have&lt;/em&gt; gotten a taste of this in my own way &amp;ndash; &lt;a href="http://countrowsfromsheep.com/"&gt;Count Rows From Sheep&lt;/a&gt; has enough themes that I don&amp;rsquo;t remember the number off-hand (twenty-something?) and the ability to make custom themes. But this awareness of time also means that tools I use every day, like Obsidian and VS Code, languish in the realm of just having themes that are &amp;ldquo;good enough.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;The thing with themes, however, is that they generally are not that complex. An Obsidian theme is effectively a CSS file (and a manifest with metadata). Admittedly, it can be a &lt;em&gt;long&lt;/em&gt; CSS file, but it&amp;rsquo;s a CSS file all the same. Likewise, a VS Code theme is mostly just JSON. Again, a &lt;em&gt;lot&lt;/em&gt; of JSON, but just JSON. And while I was begrudgingly trying to make the beautiful Retroma Obsidian theme &lt;em&gt;just dark enough&lt;/em&gt; to please me (and failing), I had a bit of a realization:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Is this not what AI is good for? Templating things that keep to standard structures and follow basic rules?&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;And so I went out to see if I could create a fully custom Obsidian theme in Claude in an afternoon while finishing up the last details of my &lt;a href="https://www.ravelry.com/projects/Acanthae/everest-shawl"&gt;Everest Shawl&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;I began with what I, personally, would call &amp;ldquo;the fun part.&amp;rdquo; I came up with colors and rules. I knew I wanted a dark, witchy theme with little moon details and soft, rounded elements. I then picked some colors I liked and mapped them to places I thought they would work in the theme.&lt;/p&gt;&#10;&lt;p&gt;Next, I asked Claude (the chat) to write up a &lt;code&gt;CLAUDE.md&lt;/code&gt; file to give Claude (the code):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;I want to use Claude Code to create my own theme for Obsidian. I want it to be fairly minimal with round the UI elements, with the following dark, witchy colors:&#10;&#10;Background primary: #0D0A12&#10;Background secondary: #15101C&#10;Background elevated: #1D1628&#10;Borders/dividers: #2A2136&#10;&#10;Text normal: #E7E0EA&#10;Text muted: #B0A5B8&#10;Text faint: #8B8198&#10;&#10;Primary accent: #4E267B&#10;Accent hover: #69389D&#10;Links: #B596DA&#10;&#10;Success/botanical: #1D6A5C&#10;Info/cool accent: #285A8F&#10;Danger/dramatic: #7A2948&#10;Warm accent: #9A5B1A&#10;&#10;Rare moon accent: #CFC6D8&#10;Moonmetal detail: #B9B0C7&#10;&#10;The vibe should be:&#10;&#10;- moonlit crypt&#10;- witch’s study&#10;- gothic&#10;- botanical&#10;- quiet jewel tones&#10;- minimal&#10; &#10;Create a file I can provide to Claude Code to begin developing this theme.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Which it did, after attempting to tell me my color choices did not have enough contrast to be accessible &amp;ndash; which, fair, but I&amp;rsquo;m making this theme for &lt;em&gt;me&lt;/em&gt;, Claude, and my eyes can handle it. The resulting file, of course, was 300 lines of text, because Claude is a wordy boy who likes to talk to himself. Core to this was breaking up the design work into 8 phases, and having me verify and tweak theming elements at those points:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;1. **Setup** — repo layout, `manifest.json`, build/watch script, test vault, symlink instructions in README.&#10;2. **Tokens + variables** — palette block and full Obsidian variable mapping. Stop and let the owner review in Obsidian before continuing.&#10;3. **Shape** — radius scale, floating panes, tabs, ribbon, sidebar rows, buttons, inputs, modals, focus rings.&#10;4. **Markdown** — everything in section 5.&#10;5. **Enchantments** — moon divider, sidebar moon, title ornament, folder colors.&#10;6. **Style Settings** — settings block and wiring.&#10;7. **Plugin pass** — go through each plugin in section 8 using the test vault.&#10;8. **Polish** — mobile check, performance check, README with install and dev-loop instructions.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(Claude, as you may notice, also felt very influenced by my instructions with &lt;em&gt;Enchantments&lt;/em&gt; being the title of phase 5.)&lt;/p&gt;&#10;&lt;p&gt;That said, this worked surprisingly well, and most sections only needed me to run manual checks and give the okay. The biggest issue I encountered was with section 5, where we had some problems getting the folder card shaping correct, something that was remedied by me digging into the CSS of existing themes I liked and providing some general guidance.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="cycle-of-the-moon-dark.png" alt="Cycle of the Moon - Dark version, my ideal Obsidian theme"&gt;&lt;/p&gt;&#10;&lt;p&gt;Overall, I ended up with my perfect Obsidian theme in only a couple of hours, much of which I spent crocheting while Claude worked the CSS. It even came up with some little details I wasn&amp;rsquo;t expecting. Look at those little moons in the checkboxs! So cute.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="deskcrafts.jpg" alt="Crafting at my desk, albeit not the Everest Shawl I was originally working on"&gt;&lt;/p&gt;&#10;&lt;p&gt;And, emboldened by this turn of events, I &lt;em&gt;kept going&lt;/em&gt; and ended up asking Claude (the code) to write itself another &lt;code&gt;CLAUDE.md&lt;/code&gt; file for a different instance of itself to make a VS Code theme, which took even less time and almost no intervention from me, since you can only change color elements of VS Code and not the UI shaping.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="cycle-of-the-moon-dark-vscode.png" alt="The VS Code version"&gt;&lt;/p&gt;&#10;&lt;p&gt;I won&amp;rsquo;t lie and say I don&amp;rsquo;t miss the long afternoons in high school and college perfecting the CSS I needed to get my Tumblr theme &lt;em&gt;just so&lt;/em&gt; or fighting Adobe Photoshop to mock up the perfect look for Winamp. But I&amp;rsquo;m also glad I don&amp;rsquo;t have to choose between being genuinely happy with the appearance of my everyday tools and feeling like I am actually being productive. Sometimes, you can have both.&lt;/p&gt;&#10;</content:encoded><category>coding</category><category>ai</category><category>tech</category></item></channel></rss>