<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Olakunle&apos;s Blog</title>
    <description>Technical blog and notes by Olakunlevpn. Web development, Laravel, PHP, JavaScript, Vue, React, Node, and the cloud. Things I learn building software.
</description>
    <link>https://olakunlevpn.github.io/</link>
    <atom:link href="https://olakunlevpn.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 09 Jul 2026 12:46:15 +0000</pubDate>
    <lastBuildDate>Thu, 09 Jul 2026 12:46:15 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Ten rules for software that doesn&apos;t fall over</title>
        <description>&lt;p&gt;Most apps don’t break because of a bug. They break because they grew, and the design never planned for it. The query that was fine with ten rows crawls at ten million. The email that sent inline now makes every user wait. The controller that did one job quietly took on five. I kept hitting the same failures across projects, so I wrote them down and turned them into an agent skill.&lt;/p&gt;

&lt;p&gt;Scaling Discipline is ten principles for building systems that stay predictable under load. It’s language-agnostic on purpose. A queue is a queue whether it runs on Redis, SQS or Kafka. An N+1 query is an N+1 query in any ORM. The rules hold in Node, Python, Go, PHP, Ruby, whatever you reach for.&lt;/p&gt;

&lt;p&gt;The short version:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Dependencies aren’t productivity.&lt;/strong&gt; Master patterns, not packages.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;The data layer is a bottleneck, not a bucket.&lt;/strong&gt; Index, cache, kill N+1, profile before you guess.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Queues are oxygen.&lt;/strong&gt; If it can wait, make it async.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Events decouple logic.&lt;/strong&gt; Emit events, isolate side effects.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Telemetry is your radar.&lt;/strong&gt; Read the logs on a normal day, not during a fire.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Scalability isn’t speed.&lt;/strong&gt; Fast is a snapshot. Scalable is consistency under load you didn’t predict.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Design systems, not code.&lt;/strong&gt; Ask where a feature belongs before asking how to build it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mindset beats tools.&lt;/strong&gt; A bigger server postpones a design problem, it doesn’t fix it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Reuse before you build.&lt;/strong&gt; Check what already exists, follow DRY, and don’t over-engineer the other way.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Verify.&lt;/strong&gt; Trust nothing, prove everything, and don’t call it done below 0.9 confidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is the whole point. Systems fail less from missing code than from a false belief that they’re finished. So the skill makes the agent trace the real execution path and confirm every piece is wired before it signs off on anything.&lt;/p&gt;

&lt;p&gt;It installs in one line and runs across Claude Code, Cursor, Gemini and 40+ other agents:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-scaling-discipline
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can’t optimize your way to scale. You design for it, then you verify it.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-scaling-discipline&quot;&gt;olakunlevpn-scaling-discipline&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 09 Jul 2026 09:00:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/09/scaling-discipline.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/09/scaling-discipline.html</guid>
        
        <category>Architecture</category>
        
        <category>Scaling</category>
        
        <category>Skills</category>
        
        
      </item>
    
      <item>
        <title>Making AI write like a person</title>
        <description>&lt;p&gt;You can feel AI writing before you can name it. The em-dashes. The “delve” and “seamless” and “it’s worth noting.” Lists always in threes. Every sentence the same middling length. Human Writing strips all of it.&lt;/p&gt;

&lt;p&gt;The skill is a checklist built from the actual fingerprints of machine text. It kills the banned words, breaks the triads, varies sentence length on purpose, cuts the throat-clearing first line, and puts contractions and a bit of opinion back in. Then it runs a six-point pass before handing the draft over.&lt;/p&gt;

&lt;p&gt;Every post on this blog went through it, including this one. That’s the test I care about. If the skill can’t make my own writing sound like me, it isn’t done.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-human-writing
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-human-writing&quot;&gt;olakunlevpn-human-writing&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 12:35:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/human-writing.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/human-writing.html</guid>
        
        <category>Writing</category>
        
        <category>Skills</category>
        
        
      </item>
    
      <item>
        <title>One skill that gates done on evidence</title>
        <description>&lt;p&gt;I had two skills that belonged together. One enumerates what a build is supposed to do and audits it from seven angles. One proves a claim against real code before anyone touches it. Meta-Verify runs them as a single loop.&lt;/p&gt;

&lt;p&gt;Phase one builds the checklist and audits it. Phase two takes each item and proves it. A pass with no trace to code gets downgraded to unverified. A failure becomes a real investigation with an evidence ledger, not a guess. The run ends in a report with a confidence score, and any item still unproven means the verdict is not done.&lt;/p&gt;

&lt;p&gt;It’s the shortest honest answer to “is this finished?” Enumerate, prove each item, report. Nothing ships on assumption.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-meta-verify
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-meta-verify&quot;&gt;olakunlevpn-meta-verify&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 12:05:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/meta-verify.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/meta-verify.html</guid>
        
        <category>Verification</category>
        
        <category>Skills</category>
        
        <category>Workflow</category>
        
        
      </item>
    
      <item>
        <title>Prove the bug before you touch the code</title>
        <description>&lt;p&gt;Most bad fixes come from the same move. See a symptom, change something nearby, hope. Root-Cause Discipline stops that move cold.&lt;/p&gt;

&lt;p&gt;Before any edit, it makes the agent earn the right to edit. Understand what the code is supposed to do. Reproduce the failure. Trace the symptom to the exact line and prove the mechanism, not a hunch about it. Map every caller and consumer the change could touch. Then, and only then, make the smallest change that kills the cause. All of it goes into an evidence ledger, and a confidence gate blocks the edit until the proof holds. Under threshold, it stops and asks instead of guessing.&lt;/p&gt;

&lt;p&gt;I built this because a fix aimed at a symptom doesn’t remove a bug. It relocates it. This is the “before the change” half of my workflow, and it hands off to the verification skill once the fix is in.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-root-cause-skills
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-root-cause-skills&quot;&gt;olakunlevpn-root-cause-skills&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 11:35:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/root-cause-skills.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/root-cause-skills.html</guid>
        
        <category>Debugging</category>
        
        <category>Skills</category>
        
        <category>Discipline</category>
        
        
      </item>
    
      <item>
        <title>Seven reviewers on your build, none of them optimists</title>
        <description>&lt;p&gt;“It’s done” is the most expensive phrase in software. Meta-Cognitive Verification exists to test it.&lt;/p&gt;

&lt;p&gt;After a build, the skill runs the whole thing past seven perspectives: QA, Product, Project Manager, Tech Lead, Business Analyst, DevOps, and Stakeholder. Each one wants evidence. It traces data contracts field by field, so the camelCase the frontend reads actually matches the snake_case the backend sends. It hunts for dummy data, debug logs, half-built pages, missing auth. Nothing passes on a vibe.&lt;/p&gt;

&lt;p&gt;The output is a report with a confidence score and a verdict, not a thumbs up. Below the bar, it tells you what’s blocking and refuses to call the work done.&lt;/p&gt;

&lt;p&gt;This is the “after the change” half of how I work. The partner to it, root-cause, runs before the change. Both go across 40+ agents.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-meta-cognitive-verification
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-meta-cognitive-verification&quot;&gt;olakunlevpn-meta-cognitive-verification&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 11:05:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/meta-cognitive-verification.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/meta-cognitive-verification.html</guid>
        
        <category>Verification</category>
        
        <category>QA</category>
        
        <category>Skills</category>
        
        
      </item>
    
      <item>
        <title>No page gets built without a design</title>
        <description>&lt;p&gt;Here’s a failure I kept hitting. The agent invents a page from scratch, fills it with dummy data, and now the frontend matches neither the design nor the backend. Design-First Frontend Skills makes that impossible.&lt;/p&gt;

&lt;p&gt;The rule is blunt. Every page starts from a pre-built design folder. The agent checks for the design first and never assumes one doesn’t exist. Backend data is the source of truth, so dummy data gets pulled out and real data wired in. What you end up with is one consistent look across the whole app, not a dozen improvised pages that almost match.&lt;/p&gt;

&lt;p&gt;It’s the skill I reach for whenever a project has a real design system to honor. Runs on Claude Code, Cursor, Cline, Gemini and 40+ agents.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-frontend-first-skills
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-frontend-first-skills&quot;&gt;olakunlevpn-frontend-first-skills&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 10:35:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/frontend-first-skills.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/frontend-first-skills.html</guid>
        
        <category>Frontend</category>
        
        <category>Design</category>
        
        <category>React</category>
        
        
      </item>
    
      <item>
        <title>React standards so components stop fighting each other</title>
        <description>&lt;p&gt;React gives you ten ways to do everything, which is fine until a team uses all ten. State handled differently in every component, effects doing too much, types loosened to make an error go quiet. React &amp;amp; Next.js Skills settles those arguments before they start.&lt;/p&gt;

&lt;p&gt;It covers components, hooks, state, testing, performance, TypeScript patterns, server components, and project structure. The agent writes to those conventions, so a component I open next month reads like the one sitting next to it. That’s consistency I don’t have to police in review.&lt;/p&gt;

&lt;p&gt;It’s aimed at real React and Next work, not toy examples, and it runs across the AI agents I use.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-react-skills
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-react-skills&quot;&gt;olakunlevpn-react-skills&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 10:05:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/react-skills.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/react-skills.html</guid>
        
        <category>React</category>
        
        <category>NextJS</category>
        
        <category>Standards</category>
        
        
      </item>
    
      <item>
        <title>Deploys I don&apos;t have to think about</title>
        <description>&lt;p&gt;The scariest part of a small project is usually the deploy. A manual sequence, a step you forget, a site down while you try to remember it. Deployment Skills turns that into a script.&lt;/p&gt;

&lt;p&gt;It generates the deploy scripts for Laravel and Inertia apps: pull, install, migrate, cache, restart, in the right order, with logging and error handling so a failure tells you where it stopped instead of leaving you guessing. It sets up the cron for auto-deploy too. The sequence gets written once and runs the same way every time.&lt;/p&gt;

&lt;p&gt;Predictable beats clever here. I want deploys boring, and this makes them boring.&lt;/p&gt;

&lt;p&gt;Runs across Claude Code, Cursor, Cline, Gemini and 40+ agents.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-deployment-skills
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-deployment-skills&quot;&gt;olakunlevpn-deployment-skills&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 09:35:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/deployment-skills.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/deployment-skills.html</guid>
        
        <category>Deployment</category>
        
        <category>Laravel</category>
        
        <category>DevOps</category>
        
        
      </item>
    
      <item>
        <title>Commit messages that don&apos;t make me wince</title>
        <description>&lt;p&gt;“fix stuff.” “update files.” “changes.” Open an old repo and the log tells you nothing. Git Workflow Skills is my answer to that.&lt;/p&gt;

&lt;p&gt;It holds the agent to a real standard: Conventional Commits, a 50 character subject, the 72 rule for the body, imperative mood, one logical change per commit. No sneaking two changes into a message with an “and.” And no AI attribution, not once. My commits are mine.&lt;/p&gt;

&lt;p&gt;Small rules, but they add up. A clean history is the difference between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git log&lt;/code&gt; answering your question and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git log&lt;/code&gt; wasting your afternoon.&lt;/p&gt;

&lt;p&gt;It triggers on any git activity and runs across the same 40+ agents as the rest of the set.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-git-skills
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-git-skills&quot;&gt;olakunlevpn-git-skills&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 09:05:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/git-skills.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/git-skills.html</guid>
        
        <category>Git</category>
        
        <category>Workflow</category>
        
        <category>Standards</category>
        
        
      </item>
    
      <item>
        <title>Filament v5, built the same way every time</title>
        <description>&lt;p&gt;Filament is fast to build with and easy to build inconsistently. Two developers, two ways to wire a form, and the panel starts to feel stitched together. This skill pins down one way.&lt;/p&gt;

&lt;p&gt;Filament PHP v5 Skills covers 18 areas: resources, forms, tables, infolists, actions, widgets, panels, relation managers, multi-tenancy, testing, plugins. When the agent builds a resource, it follows the same structure as the last one. CRUD pages line up. Destructive actions get a confirmation step. The admin stops looking like a patchwork of whoever touched it last.&lt;/p&gt;

&lt;p&gt;I lean on Filament for the admin side of most projects, so consistency there pays back fast. Less to explain, less to fix, and no nasty surprise when I open a resource I wrote three months ago.&lt;/p&gt;

&lt;p&gt;Works with Claude Code, Cursor, Cline, Gemini and 40+ agents.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npx skills add olakunlevpn/olakunlevpn-filament-skills
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Repo: &lt;a href=&quot;https://github.com/olakunlevpn/olakunlevpn-filament-skills&quot;&gt;olakunlevpn-filament-skills&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jul 2026 08:35:00 +0000</pubDate>
        <link>https://olakunlevpn.github.io/2026/07/08/filament-skills.html</link>
        <guid isPermaLink="true">https://olakunlevpn.github.io/2026/07/08/filament-skills.html</guid>
        
        <category>Filament</category>
        
        <category>PHP</category>
        
        <category>Laravel</category>
        
        
      </item>
    
  </channel>
</rss>
