<?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>AuDHD on ErrorZap</title><link>https://errorzap.com/tags/audhd/</link><description>Recent content in AuDHD on ErrorZap</description><image><title>ErrorZap</title><url>https://errorzap.com/og.png</url><link>https://errorzap.com/og.png</link></image><generator>Hugo</generator><language>en-US</language><copyright>ErrorZap</copyright><lastBuildDate>Mon, 02 Nov 2026 17:05:00 -0700</lastBuildDate><atom:link href="https://errorzap.com/tags/audhd/index.xml" rel="self" type="application/rss+xml"/><item><title>check-my-shit: The AI Command That Started as a Joke and Became a Real Closure Engine</title><link>https://errorzap.com/posts/check-my-shit/</link><pubDate>Mon, 02 Nov 2026 17:05:00 -0700</pubDate><guid>https://errorzap.com/posts/check-my-shit/</guid><description>I gave an AI the least corporate command name possible. It responded by helping me build the operational check I actually needed.</description><content:encoded><![CDATA[<p>Sometimes the best software feature starts with a sentence you would never put in a procurement deck.</p>
<p>I was working with AI on a system that could answer a deceptively simple question:</p>
<blockquote>
<p>What actually needs my attention right now?</p>
</blockquote>
<p>Not just whether a server responds to a ping. I mean <em>all of it</em>: outages, security alerts, backups, client requests, calendar deadlines, half-finished projects, unpaid work, messages I still owe someone, things somebody else promised me, and the task I was definitely going to remember without writing down.</p>
<p>The usual software-industry response would be to name this something like:</p>
<blockquote>
<p><strong>Unified Operational Intelligence and Remediation Coordination Platform</strong></p>
</blockquote>
<p>Then shorten it to <code>UOIRCP</code>, schedule six meetings about its dashboard, and forget why we built it.</p>
<p>Instead, I typed:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>check my shit
</span></span></code></pre></div><p>The AI did not object. It did not suggest a more professional brand. It did not ask whether I meant “digital assets” or “operational resources.”</p>
<p>It effectively said: <em>Good. That is the trigger, because it is what you will actually say.</em></p>
<p>That was the moment I lost it.</p>
<h2 id="the-joke-is-that-it-took-the-name-seriously">The joke is that it took the name seriously</h2>
<p>Later, I showed the exchange to ChatGPT and asked why it was so funny.</p>
<p>Its answer was dead-on: the AI treated <code>check-my-shit</code> like a perfectly respectable Unix command that had escaped from a sarcastic engineering team. Then it built real architecture around it.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>quick check my shit
</span></span></code></pre></div><p>Tell me if anything is on fire.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>check my shit
</span></span></code></pre></div><p>Give me the normal work-and-life command ledger.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>complete check my shit
</span></span></code></pre></div><p>Inventory everything. Reconcile every device, IP, domain, backup, project, promise, and open loop. Abandon hope, but bring evidence.</p>
<p>You can narrow it without inventing another tool:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>check my shit, security only
</span></span><span style="display:flex;"><span>check what I promised
</span></span><span style="display:flex;"><span>check home shit
</span></span><span style="display:flex;"><span>check everything, but do not change anything
</span></span></code></pre></div><p>The words after the command change the depth or scope. They do not create a competing queue.</p>
<p>That is legitimate software design attached to a command named <code>check-my-shit</code>, which is objectively funny.</p>
<h2 id="what-my-shit-actually-means">What “my shit” actually means</h2>
<p>The problem was never a shortage of dashboards.</p>
<p>There is a dashboard for monitoring, a dashboard for backups, another for endpoint security, another for tasks, another for billing, two inboxes, calendars, text messages, chat archives, project notes, bots, server consoles, camera systems, and several places where Future Me left Current Me a surprise.</p>
<p>Each system can be telling the truth while the overall picture is still wrong.</p>
<p>A backup dashboard can say <strong>success</strong> even though nobody has tested a restore. A task can say <strong>done</strong> while the client is still waiting to accept it. A service can be <strong>installed</strong> without being configured, reachable, healthy, useful, or trusted. An inbox can be quiet because the important message landed in the other inbox.</p>
<p>So <code>check-my-shit</code> is not another status page. It is a <strong>closure engine</strong>.</p>
<p>It collects current evidence from the places where reality lives, reconciles duplicates and contradictions, and turns the result into one ranked ledger:</p>
<ol>
<li><strong>Do now</strong></li>
<li><strong>Today</strong></li>
<li><strong>This week</strong></li>
<li><strong>Waiting</strong></li>
<li><strong>Decide</strong></li>
<li><strong>Closed since the last check</strong></li>
<li><strong>Coverage gaps</strong></li>
</ol>
<p>Every open item needs an owner, a next physical action, a due date or gate, an evidence time, source pointers, and a confidence level.</p>
<p>“Justin promised,” “somebody else promised,” and “the model inferred this might matter” are three different things. The tool is required to keep them different.</p>
<h2 id="three-depths-not-three-new-systems">Three depths, not three new systems</h2>
<p>The installed version has three modes:</p>
<table>
	<thead>
			<tr>
					<th>Mode</th>
					<th style="text-align: right">Required source lanes</th>
					<th>What it is for</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Quick</strong></td>
					<td style="text-align: right">10</td>
					<td>Is anything breached, down, unprotected, overdue today, or about to hurt?</td>
			</tr>
			<tr>
					<td><strong>Normal</strong></td>
					<td style="text-align: right">17</td>
					<td>What do I need to do across communications, promises, tasks, alerts, billing, home, and recent work?</td>
			</tr>
			<tr>
					<td><strong>Complete</strong></td>
					<td style="text-align: right">25</td>
					<td>Reconcile the full owned estate: projects, endpoints, devices, servers, domains, routes, certificates, backups, phones, bots, automations, and integrations.</td>
			</tr>
	</tbody>
</table>
<p>Quick mode is smaller, but it is not sloppier. It still has to account for every source its contract requires.</p>
<p>Complete mode is deliberately painful about inventory. If there are a few hundred registered endpoints, it does not get to inspect 20 and write “and the rest looked fine.” The numbers have to reconcile:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>expected = checked + unavailable + failed + not_applicable
</span></span></code></pre></div><p>That equation is boring.</p>
<p>It is also the difference between an audit and a vibe.</p>
<h2 id="the-non-sysadmin-translation">The non-sysadmin translation</h2>
<p>You do not need to know what a source lane, coverage receipt, or canonical action queue is to understand the idea.</p>
<p>Imagine asking one competent person to walk through your house and business before you leave town:</p>
<ul>
<li>Is anything actively leaking, smoking, blinking red, or making a noise it should not make?</li>
<li>Did the important deliveries arrive?</li>
<li>Did somebody leave a message that needs an answer?</li>
<li>Are the doors locked and the cameras working?</li>
<li>Did the bills get handled?</li>
<li>Is there something on tomorrow&rsquo;s calendar that requires preparation today?</li>
<li>Did you promise to call somebody back?</li>
<li>Is the person you are waiting on finally done?</li>
</ul>
<p>Now imagine that person is required to carry a checklist. If a locked room cannot be inspected, they have to write <strong>ROOM NOT CHECKED</strong> instead of assuming it is fine.</p>
<p>That is <code>check-my-shit</code>.</p>
<p>The servers, APIs, task queues, and message archives are implementation details. The human result should still be simple:</p>
<blockquote>
<p>Here is what matters. Here is what can wait. Here is what changed. Here is what I could not verify. Here is the next thing to do.</p>
</blockquote>
<p>If the output needs a certification course to understand, the command has failed—no matter how impressive the collection machinery was.</p>
<h2 id="the-most-important-result-might-be-i-could-not-check">The most important result might be “I could not check”</h2>
<p>AI assistants are very good at producing confident summaries. That is useful right up until a disconnected source silently disappears from the summary.</p>
<p>If personal email was unavailable, the tool cannot claim there were no urgent messages.</p>
<p>If the backup service could not be reached, it cannot claim backups are healthy.</p>
<p>If it can see incoming text notifications but not sent replies, it cannot claim the conversation was fully checked.</p>
<p><code>check-my-shit</code> makes access failure part of the result. Every expected source must end in one explicit state:</p>
<ul>
<li>checked</li>
<li>partial</li>
<li>unavailable</li>
<li>not configured</li>
<li>not applicable</li>
<li>failed</li>
</ul>
<p>Silence is not a pass.</p>
<p>The validator rejects missing sources, unreconciled inventories, and a falsely “complete” run that still has failed coverage.</p>
<p>This is less exciting than an animated green dashboard.</p>
<p>It is much more useful at 2:00 a.m.</p>
<h2 id="a-check-is-not-permission-to-touch-anything">A check is not permission to touch anything</h2>
<p>Another rule: the command defaults to read-only.</p>
<p>Asking what is broken does not authorize the AI to send email, close tasks, pay invoices, restart servers, deploy code, delete files, contact clients, or “fix” production.</p>
<p>Those are separate decisions.</p>
<p>The check can gather evidence, prepare reports, and tell me the exact next action. It cannot quietly turn an investigation into an incident.</p>
<p>This matters because the most dangerous automation is not the one that crashes loudly. It is the one that confidently does the wrong helpful thing.</p>
<h2 id="it-refuses-to-make-another-inbox">It refuses to make another inbox</h2>
<p>I already have enough places where obligations can hide.</p>
<p>The tool treats the task system as the canonical action queue. Email, calendar, chat, texts, monitoring, notes, bots, and billing systems are evidence and intake surfaces.</p>
<p>Before proposing a new task, it has to ask whether the obligation already exists. It matches by system, client, owner, due date, and evidence. Contradictions stay visible instead of being “cleaned up” into whichever answer is convenient.</p>
<p>The goal is not to generate a magnificent new backlog.</p>
<p>The goal is to close things.</p>
<h2 id="yes-i-actually-built-it">Yes, I actually built it</h2>
<p>This stopped being a joke on July 29, 2026.</p>
<p>The installed skill now has:</p>
<ul>
<li>10 required source lanes in quick mode</li>
<li>17 in normal mode</li>
<li>25 in complete mode</li>
<li>five tested behavior cases covering the main modes and scoped checks</li>
<li>a machine-readable coverage receipt</li>
<li>negative tests that prove it rejects missing coverage and false completion</li>
<li>complete Markdown and dark, phone-friendly HTML output for every run</li>
</ul>
<p>It is not omniscient. It can only check sources that are connected and working. The difference is that it has to tell me exactly what it could not see.</p>
<p>That is a feature, not an apology.</p>
<h2 id="peak-sysadmin-energy">Peak sysadmin energy</h2>
<p>In my head, the ideal run still looks like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ check-my-shit
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>✓ Servers responding
</span></span><span style="display:flex;"><span>✓ Cameras recording
</span></span><span style="display:flex;"><span>✓ Backups current
</span></span><span style="display:flex;"><span>✓ Security alerts reconciled
</span></span><span style="display:flex;"><span>✓ Client promises accounted for
</span></span><span style="display:flex;"><span>✓ Forgotten work dragged into daylight
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>! Steve unplugged something again
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Coverage: 17/17 sources accounted for
</span></span><span style="display:flex;"><span>Next action: plug Steve&#39;s thing back in
</span></span></code></pre></div><p>Steve is fictional.</p>
<p>Probably.</p>
<h2 id="the-best-interface-is-the-one-i-will-use">The best interface is the one I will use</h2>
<p>There is a serious reason the name survived.</p>
<p>“Run the unified operational reconciliation workflow” is technically respectable and mentally expensive.</p>
<p>“Check my shit” is three syllables, zero ambiguity, and exactly what my brain is trying to ask.</p>
<p>For an overloaded operator—or anyone whose attention does not arrive in neat enterprise-approved rows—the friction between remembering a command and not remembering it is the entire product.</p>
<p>Good UX is not always elegant.</p>
<p>Sometimes it is blunt, memorable, slightly unprofessional, and honest about what the software does.</p>
<p>The joke is that <code>check-my-shit</code> sounds ridiculous.</p>
<p>The better joke is that it may be the most accurately named tool I use.</p>
]]></content:encoded></item></channel></rss>