<?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/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Focused Systems</title><link>https://focused-systems.pages.dev/</link><description>Exploring modern cloud workflows. DevOps, APIs, Git, serverless architectures, pipelines, and software integrations, alongside personal tech solutions.</description><language>en</language><generator>Hugo</generator><image><url>https://focused-systems.pages.dev/images/social.png</url><title>Focused Systems</title><link>https://focused-systems.pages.dev/</link></image><lastBuildDate>Sun, 01 Mar 2026 09:00:00 +0000</lastBuildDate><atom:link href="https://focused-systems.pages.dev/tags/yaml/index.xml" rel="self" type="application/rss+xml"/><item><title>YAML Quick Look</title><link>https://focused-systems.pages.dev/yamlquicklook/</link><guid isPermaLink="true">https://focused-systems.pages.dev/yamlquicklook/</guid><pubDate>Sun, 01 Mar 2026 09:00:00 +0000</pubDate><dc:creator>Rod Christiansen</dc:creator><category>devops</category><category>macos</category><category>swift</category><category>yaml</category><description>QuickLook in the Mac doesn't support YAML files. All you get is the default app icon. I got tired of that and built a Quick Look extension.</description><content:encoded><![CDATA[<h2 id="a-native-macos-extension-for-yaml-files">A Native macOS Extension for YAML Files</h2><p>QuickLook on the Mac doesn&apos;t support previewing the contents of YAML files. You&apos;re digging through repos, config files, CI pipeline files, playbooks, terraform plan and you want to peek at a YAML file without opening it.</p><p>You hit Space.</p><p>Nothing. Just the generic document icon staring back at you.</p><p>QuickLook on the Mac supports text files, plists, JSON&#x2014;but YAML? Nothing out of the box. I fixed that with <a href="https://github.com/rodchristiansen/yamlquicklook">YAML Quick Look</a>.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="yamlQuickLook-2.png" width="1024" height="1024" loading="lazy" alt srcset="https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w600/2026/03/yamlQuickLook-2.png 600w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w1000/2026/03/yamlQuickLook-2.png 1000w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/2026/03/yamlQuickLook-2.png 1024w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="Finder-2026-03-02-11.56.05-1.png" width="1856" height="1922" loading="lazy" alt srcset="https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w600/2026/03/Finder-2026-03-02-11.56.05-1.png 600w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w1000/2026/03/Finder-2026-03-02-11.56.05-1.png 1000w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w1600/2026/03/Finder-2026-03-02-11.56.05-1.png 1600w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/2026/03/Finder-2026-03-02-11.56.05-1.png 1856w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="Screenshot-2026-03-02-at-11.56.20-1.png" width="1766" height="1400" loading="lazy" alt srcset="https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w600/2026/03/Screenshot-2026-03-02-at-11.56.20-1.png 600w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w1000/2026/03/Screenshot-2026-03-02-at-11.56.20-1.png 1000w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/size/w1600/2026/03/Screenshot-2026-03-02-at-11.56.20-1.png 1600w, https://storage.ghost.io/c/7d/ec/7dec1a6c-13d6-4927-b0f1-9d39fe1b152c/content/images/2026/03/Screenshot-2026-03-02-at-11.56.20-1.png 1766w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="what-it-does">What It Does</h2><p>It&apos;s a native macOS Quick Look extension that does two things:</p><ol><li><strong>Preview</strong>: Hit Space on any <code>.yaml</code> or <code>.yml</code> file, and you get a clean, scrollable plain-text view&#x2014;same experience as <code>.txt</code> or <code>.plist</code>.</li><li><strong>Thumbnails</strong>: Finder shows file content in the icon itself, so you can tell files apart without opening them.</li></ol><p>Dark mode works. Large files are handled (truncated at 10 MB so it doesn&apos;t eat your RAM). It uses a shared <code>YAMLFileReader</code> module backing both extensions, so the behaviour is consistent.</p><p>It&apos;s not a syntax highlighter&#x2014;that was a deliberate choice. Quick Look is for <em>glancing</em>, not editing. Plain text, monospace, scrollable. That&apos;s it.</p><h2 id="why-i-wrote-this">Why I Wrote This</h2><p>Honestly, it was scratching my own itch. I spend a lot of time in repos and Terraform configs, and the missing YAML preview was a small but consistent annoyance.</p><p>There are third-party alternatives, but most of them are either abandoned, use Homebrew, or are bundled inside larger editor apps. I wanted something clean, native, and deployable via a single pkg.</p><p>It&apos;s available on GitHub under MIT. It requires macOS 14 Sonoma or later.</p><h2 id="the-app">The App</h2><p>The app is three targets:</p><ul><li><code>YamlQuickLook</code> &#x2014; A lightweight container app. You open it once to register the extensions, then mostly ignore it. I added Status, Preview, and Settings tabs to make it feel like a real app rather than a hollow shell.</li><li><code>YamlQuickLookExtension</code> &#x2014; The Quick Look preview extension</li><li><code>YamlQuickLookThumbnailExtension</code> &#x2014; The thumbnail generator</li></ul><p>The shared module (<code>YamlQuickLookShared</code>) handles all the file reading logic, so both extensions stay thin. The test suite covers 38 cases across the reader&#x2014;everything from empty files to malformed YAML to files at the size limit.</p><h2 id="installing-it">Installing It</h2><p>The simplest path: grab the latest zip from <a href="https://github.com/rodchristiansen/yamlquicklook/releases">Releases</a>, move the app to <code>/Applications</code>, and run the post-install script to strip quarantine and activate the extension:</p><pre><code class="language-bash">xattr -cr /Applications/YamlQuickLook.app
pluginkit -a /Applications/YamlQuickLook.app/Contents/PlugIns/YamlQuickLookExtension.appex || true
pluginkit -a /Applications/YamlQuickLook.app/Contents/PlugIns/YamlQuickLookThumbnailExtension.appex || true
qlmanage -r
qlmanage -r cache
</code></pre><h2 id="building-with-code-signing">Building with Code Signing</h2><p>The release build isn&apos;t code-signed&#x2014;I don&apos;t have (yet) a Developer ID. You can sign and notarize with your own cert for your environment. I plan to release it onto the Mac App Store.</p><p>If you want a properly signed and notarized build&#x2014;which I&apos;d recommend for org-wide deploys&#x2014;clone the repo and configure signing in Xcode for all three targets:</p><pre><code class="language-bash">xcodebuild -scheme YamlQuickLook \
  -configuration Release \
  -derivedDataPath build \
  CODE_SIGN_IDENTITY=&quot;Developer ID Application: Your Name (TEAM_ID)&quot; \
  DEVELOPMENT_TEAM=&quot;TEAM_ID&quot; \
  clean build
</code></pre><p>Then notarize it with <code>xcrun notarytool</code> and staple the ticket. The <a href="https://github.com/rodchristiansen/yamlquicklook">README</a> has the full steps. A signed build skips the <code>xattr</code> step entirely and removes the quarantine friction for your users.</p><p>The Makefile also has a <code>make release</code> target that handles the signing and notarization flow if you&apos;ve set up your credentials in <code>.env</code>.</p><hr>
]]></content:encoded></item></channel></rss>