<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cranius Maximus</title>
    <description>The latest articles on DEV Community by Cranius Maximus (@craniusmaximus).</description>
    <link>https://dev.to/craniusmaximus</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4064081%2Fa8fc173a-3050-4a6b-8d52-be16b0fcd3a0.png</url>
      <title>DEV Community: Cranius Maximus</title>
      <link>https://dev.to/craniusmaximus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/craniusmaximus"/>
    <language>en</language>
    <item>
      <title>The same $100 sale, three different tax answers</title>
      <dc:creator>Cranius Maximus</dc:creator>
      <pubDate>Wed, 12 Aug 2026 00:33:12 +0000</pubDate>
      <link>https://dev.to/craniusmaximus/the-same-100-sale-three-different-tax-answers-3a50</link>
      <guid>https://dev.to/craniusmaximus/the-same-100-sale-three-different-tax-answers-3a50</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Engineering post, not tax advice. I am a developer, not your accountant. Everything below is about &lt;em&gt;where the branch points are in your checkout code&lt;/em&gt; — confirm the actual numbers with someone qualified before you invoice anyone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You sell a $100 digital product. Same product, same price, same Stripe account. Three different buyers, three completely different correct answers — and only one of them is "add tax."&lt;/p&gt;

&lt;h2&gt;
  
  
  Buyer one: a person in Germany
&lt;/h2&gt;

&lt;p&gt;You are an Irish company. They are a consumer in Berlin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /decide?seller_country=IE&amp;amp;buyer_country=DE&amp;amp;product_type=digital

{
  "chargeVat": true,
  "mechanism": "standard",
  "rate": 19,
  "buyerType": "consumer",
  "invoiceNote": "Charge DE VAT at 19% (customer's country) and report via the One-Stop Shop (OSS).",
  "legalBasis": "B2C electronically supplied services taxed where the customer belongs (Art. 58)"
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note the rate is &lt;strong&gt;German&lt;/strong&gt;, not Irish. For digital goods sold to EU consumers, the place of supply is where the &lt;em&gt;customer&lt;/em&gt; is. Your own country's rate is irrelevant. This is the one most homegrown checkouts get wrong — they apply the seller's rate because that is the single number someone hardcoded.&lt;/p&gt;

&lt;p&gt;That also means you do not need one VAT rate. You need twenty-seven, and they change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Buyer two: a company in Germany
&lt;/h2&gt;

&lt;p&gt;Same country. Same product. They type a VAT number into your checkout.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /decide?seller_country=IE&amp;amp;buyer_country=DE&amp;amp;buyer_vat_id=DE811907980&amp;amp;product_type=digital

{
  "chargeVat": false,
  "mechanism": "reverse_charge",
  "rate": 0,
  "buyerType": "business",
  "vatId": { "valid": true, "country": "DE", "prefix": "DE" },
  "invoiceNote": "No VAT charged. Reverse charge applies — the customer accounts for VAT in their country."
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One field in a form moved the tax from 19% to zero, and changed what has to be printed on the invoice. If your checkout has no VAT-number field, every EU business customer is being overcharged and every invoice you send them is wrong.&lt;/p&gt;

&lt;p&gt;Worth knowing: format-checking a VAT number is not the same as verifying it is real and active. That needs a VIES lookup. Treat the format check as a cheap first gate, not proof.&lt;/p&gt;

&lt;h2&gt;
  
  
  Buyer three: a person in the United States
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /decide?seller_country=IE&amp;amp;buyer_country=US&amp;amp;product_type=digital

{
  "chargeVat": false,
  "mechanism": "out_of_scope",
  "rate": 0,
  "invoiceNote": "No EU VAT charged — the customer is outside the EU (place of supply is where the customer belongs)."
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not zero-rated. &lt;strong&gt;Out of scope&lt;/strong&gt; — a different thing, and it lands differently on your return. "Zero" in your database is hiding at least three distinct states: taxed at 0%, exempt, and never in scope to begin with. If your schema stores a rate and nothing else, you have thrown away the reason, and the reason is what an audit asks for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one that surprises people
&lt;/h2&gt;

&lt;p&gt;Ask for the digital-goods rate in California:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /rate?country=US&amp;amp;region=CA&amp;amp;product_type=digital

{
  "country": "US", "region": "CA",
  "taxType": "sales_tax",
  "rate": 0,
  "taxable": false,
  "notes": [
    "Digital goods are generally NOT taxed...",
    "State-level rate only; local/city/district rates are out of scope. Confirm nexus and local rules with the state Department of Revenue."
  ]
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;California — the state everyone assumes is the aggressive one — generally does not tax digital goods. Meanwhile plenty of smaller states do. There is no rule of thumb here; product type and state interact, and guessing produces confident wrong answers in both directions.&lt;/p&gt;

&lt;p&gt;And note the second caveat, which is the one that actually bites US sellers: &lt;strong&gt;state rate is not the whole rate.&lt;/strong&gt; Local and district rates stack on top, and whether you owe anything at all depends on nexus — a question about your business, not about the buyer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for your code
&lt;/h2&gt;

&lt;p&gt;The useful takeaway is not a number, it is a shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tax is a decision, not a lookup.&lt;/strong&gt; The inputs are seller country, buyer country, buyer region, product type, and whether the buyer produced a valid business ID. A function that takes only "country" cannot be correct.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store the reasoning with the amount.&lt;/strong&gt; &lt;code&gt;mechanism: "reverse_charge"&lt;/code&gt; and a legal basis are what let you answer a question a year later. A bare &lt;code&gt;0.00&lt;/code&gt; is unfalsifiable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate the invoice line at decision time.&lt;/strong&gt; The wording differs between reverse charge and out of scope, and reconstructing it later means re-deriving the decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rates rot.&lt;/strong&gt; Whatever you use, know when it was last reviewed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The thing I built
&lt;/h2&gt;

&lt;p&gt;I kept rewriting this branch logic, so it is now a small self-contained API: EU-27 + UK VAT, US state-level sales tax, Canada GST/HST/PST, Australia GST. Runs on Cloudflare Workers, pure compute, no external calls, and returns the &lt;code&gt;legalBasis&lt;/code&gt; and &lt;code&gt;invoiceNote&lt;/code&gt; shown above.&lt;/p&gt;

&lt;p&gt;Free to hit, no key — every response in this post is a live call you can run right now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://checkout-tax-api.pages.dev/decide?seller_country=IE&amp;amp;buyer_country=DE&amp;amp;product_type=digital" rel="noopener noreferrer"&gt;https://checkout-tax-api.pages.dev/decide?seller_country=IE&amp;amp;buyer_country=DE&amp;amp;product_type=digital&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://checkout-tax-api.pages.dev/openapi.json" rel="noopener noreferrer"&gt;https://checkout-tax-api.pages.dev/openapi.json&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disclosure, since it is mine:&lt;/strong&gt; if you would rather run tax logic inside your own infrastructure than call someone else's service — a very reasonable thing to want for something this load-bearing — the source kit is $49: &lt;a href="https://craniusmaximus.gumroad.com/l/zxnvil" rel="noopener noreferrer"&gt;https://craniusmaximus.gumroad.com/l/zxnvil&lt;/a&gt;. The hosted API stays free regardless, and nothing here depends on buying anything.&lt;/p&gt;

&lt;p&gt;Whatever you use, including your own code: make it return &lt;em&gt;why&lt;/em&gt;. The rate is the easy half.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://dev-answers.pages.dev/" rel="noopener noreferrer"&gt;the same question answered for all 27 EU countries and all 50 US states&lt;/a&gt; — B2C rate, B2B reverse charge, and which states tax digital goods at all. Generated from live API calls, not written from memory.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>saas</category>
      <category>programming</category>
    </item>
    <item>
      <title>Adding three business days is harder than it looks</title>
      <dc:creator>Cranius Maximus</dc:creator>
      <pubDate>Wed, 12 Aug 2026 00:29:03 +0000</pubDate>
      <link>https://dev.to/craniusmaximus/adding-three-business-days-is-harder-than-it-looks-2hn8</link>
      <guid>https://dev.to/craniusmaximus/adding-three-business-days-is-harder-than-it-looks-2hn8</guid>
      <description>&lt;p&gt;Every codebase I have worked in eventually grows a function called something like &lt;code&gt;addBusinessDays&lt;/code&gt;. It usually starts as four lines, and it is usually wrong in a way nobody notices until a customer complains.&lt;/p&gt;

&lt;p&gt;Here is the four-line version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;addBusinessDays&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It skips Saturdays and Sundays. It is fine until December.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that bites
&lt;/h2&gt;

&lt;p&gt;Ask that function for three business days after Christmas Eve 2026 and it says &lt;strong&gt;28 December&lt;/strong&gt;, because it has never heard of Christmas. The real answer is &lt;strong&gt;30 December&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /add?date=2026-12-24&amp;amp;days=3&amp;amp;jurisdiction=US

{
  "date": "2026-12-30",
  "skipped": [
    { "date": "2026-12-25", "type": "holiday", "name": "Christmas Day" },
    { "date": "2026-12-26", "type": "weekend" },
    { "date": "2026-12-27", "type": "weekend" }
  ]
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two days off is not a rounding error when it is an SLA, a settlement date, or a promised delivery window.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that bites even after you add a holiday list
&lt;/h2&gt;

&lt;p&gt;This is the one I want to convince you about, because bolting a list of holidays onto the naive loop &lt;em&gt;feels&lt;/em&gt; like a fix and is not.&lt;/p&gt;

&lt;p&gt;US federal holidays move. When a fixed-date holiday lands on a weekend, the observed day shifts. In 2026, &lt;strong&gt;4 July falls on a Saturday&lt;/strong&gt;, so the holiday is observed on &lt;strong&gt;Friday 3 July&lt;/strong&gt; — a day that is not on anyone's "holidays are these dates" list, and a day your loop will happily count as a working day.&lt;/p&gt;

&lt;p&gt;One business day after 2 July 2026:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /add?date=2026-07-02&amp;amp;days=1&amp;amp;jurisdiction=US

{
  "date": "2026-07-06",
  "skipped": [
    { "date": "2026-07-03", "type": "holiday", "name": "Independence Day" },
    { "date": "2026-07-04", "type": "weekend" },
    { "date": "2026-07-05", "type": "weekend" }
  ]
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The answer is the following Monday. A naive loop with a hardcoded &lt;code&gt;07-04&lt;/code&gt; in it returns Friday 3 July — a federal holiday, and a day the banks are shut.&lt;/p&gt;

&lt;p&gt;Thanksgiving has the opposite shape: it is not a fixed date at all, it is the fourth Thursday, so any hardcoded date is wrong every year.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /add?date=2026-11-25&amp;amp;days=2&amp;amp;jurisdiction=US

{
  "date": "2026-11-30",
  "skipped": [
    { "date": "2026-11-26", "type": "holiday", "name": "Thanksgiving Day" },
    { "date": "2026-11-28", "type": "weekend" },
    { "date": "2026-11-29", "type": "weekend" }
  ]
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note what is &lt;em&gt;not&lt;/em&gt; in that list: &lt;strong&gt;27 November is not skipped.&lt;/strong&gt; The Friday after Thanksgiving is not a federal holiday, even though half the country behaves as though it is. If your rule says otherwise, that is a business policy and you should encode it deliberately rather than discovering it by accident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Return the reasoning, not just the answer
&lt;/h2&gt;

&lt;p&gt;The thing I would push hardest on, whatever you end up using: &lt;strong&gt;make the function explain itself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A date on its own is unfalsifiable. When support asks why a customer's refund landed on the 30th and not the 28th, &lt;code&gt;"2026-12-30"&lt;/code&gt; gives you nothing, and you end up re-deriving the calendar by hand in a Slack thread. A &lt;code&gt;skipped[]&lt;/code&gt; array answers the question in one paste, and it makes your tests readable — you assert on &lt;em&gt;why&lt;/em&gt; a day was excluded, not merely that the output changed.&lt;/p&gt;

&lt;p&gt;It is also the difference between a bug you can find and a bug you cannot. If a holiday list is stale, a plain date looks perfectly reasonable while being wrong. A reason array shows you the day it thought was Christmas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things worth deciding on purpose
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Whose calendar?&lt;/strong&gt; Federal, NYSE and your own office are three different answers. NYSE closes on Good Friday; the federal government does not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Half-days.&lt;/strong&gt; Markets close early on Christmas Eve and the day after Thanksgiving. If you are computing settlement, that may matter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which end counts.&lt;/strong&gt; Is "three business days from Monday" inclusive of Monday? Both conventions exist. Pick one, write it down, and put it in the function name if you can.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time zones.&lt;/strong&gt; A "date" that is really a UTC timestamp will silently be the wrong day for anyone west of Greenwich. Business-day math should take a plain calendar date.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  If you want to skip writing it
&lt;/h2&gt;

&lt;p&gt;I got tired of re-implementing this, so I built it as a small self-contained API. It runs on Cloudflare Workers, computes offline with no upstream holiday service, and returns the &lt;code&gt;skipped[]&lt;/code&gt; reasoning shown above. It has endpoints for business-day add, diff, next, holiday lookup, T+N settlement, and batch.&lt;/p&gt;

&lt;p&gt;It is free to hit and needs no key — the examples in this post are live calls you can run right now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bizcal-api.pages.dev/add?date=2026-12-24&amp;amp;days=3&amp;amp;jurisdiction=US" rel="noopener noreferrer"&gt;https://bizcal-api.pages.dev/add?date=2026-12-24&amp;amp;days=3&amp;amp;jurisdiction=US&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bizcal-api.pages.dev/openapi.json" rel="noopener noreferrer"&gt;https://bizcal-api.pages.dev/openapi.json&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disclosure, since it is mine:&lt;/strong&gt; if you would rather run it inside your own infrastructure than call somebody else's service — which is a very reasonable thing to want for date math this load-bearing — the full source kit is a paid product at $49: &lt;a href="https://craniusmaximus.gumroad.com/l/sijflxg" rel="noopener noreferrer"&gt;https://craniusmaximus.gumroad.com/l/sijflxg&lt;/a&gt;. The hosted API above stays free either way, and nothing in this post depends on buying anything.&lt;/p&gt;

&lt;p&gt;If you take one thing from this: whatever you use, make it return the reasons. The date is the easy half.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://dev-answers.pages.dev/" rel="noopener noreferrer"&gt;public holiday tables for 17 jurisdictions&lt;/a&gt;, each generated from the same live API — useful if you want to eyeball the dates your own implementation should be skipping.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>I wanted to leave Claude Code running without trusting a green checkmark</title>
      <dc:creator>Cranius Maximus</dc:creator>
      <pubDate>Tue, 11 Aug 2026 19:13:36 +0000</pubDate>
      <link>https://dev.to/craniusmaximus/i-wanted-to-leave-claude-code-running-without-trusting-a-green-checkmark-59l1</link>
      <guid>https://dev.to/craniusmaximus/i-wanted-to-leave-claude-code-running-without-trusting-a-green-checkmark-59l1</guid>
      <description>&lt;p&gt;Unattended Claude Code runs are tempting. They are also how you wake up to a fabricated "done" and a burned token budget.&lt;/p&gt;

&lt;p&gt;I built the Autonomy Pack because I wanted to see &lt;/p&gt;

&lt;h2&gt;
  
  
  What is in it
&lt;/h2&gt;

&lt;p&gt;Hooks and operator tooling so an unattended run is less likely to invent success, skip checks, or quietly do the expensive wrong thing. Pair it with session-tax if you also care what the session costs before it starts.&lt;/p&gt;

&lt;p&gt;I will not pretend this makes agents safe. It makes &lt;em&gt;my&lt;/em&gt; unattended runs less stupid. Your mileage will depend on how you work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to get it
&lt;/h2&gt;

&lt;p&gt;GitHub README (trusted link for forums that filter Pages URLs):&lt;br&gt;
&lt;a href="https://github.com/CraniusMaximus/claude-code-autonomy-pack" rel="noopener noreferrer"&gt;github.com/CraniusMaximus/claude-code-autonomy-pack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paid pack is $29. Bundle with session-tax is $39. Free session-tax plugin is listed there too if you only want the cost report.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest question
&lt;/h2&gt;

&lt;p&gt;Do you guys spend too many tokens on overtooling? Is it a concern you guys have?&lt;/p&gt;

</description>
      <category>claude</category>
      <category>devtools</category>
      <category>automation</category>
      <category>ai</category>
    </item>
    <item>
      <title>Claude Code already shows what I spent. I optimized the spending.</title>
      <dc:creator>Cranius Maximus</dc:creator>
      <pubDate>Wed, 05 Aug 2026 14:09:29 +0000</pubDate>
      <link>https://dev.to/craniusmaximus/claude-code-already-shows-what-i-spent-i-wanted-what-never-fired-4cnn</link>
      <guid>https://dev.to/craniusmaximus/claude-code-already-shows-what-i-spent-i-wanted-what-never-fired-4cnn</guid>
      <description>&lt;p&gt;Claude Code already has &lt;code&gt;/usage&lt;/code&gt; (same as &lt;code&gt;/cost&lt;/code&gt;). On a Pro or Max plan it will show session cost estimates, plan bars, and a recent breakdown of usage by skill, subagent, plugin, and MCP server. &lt;/p&gt;

&lt;p&gt;But, I wanted to optimize Claude, or have it optimize itself, rather than tell me. Skills I installed months ago were sitting idle, and contributing tokens each turn. &lt;code&gt;/usage&lt;/code&gt; is good at showing what &lt;em&gt;ran&lt;/em&gt; and what counted against the plan. It does not answer: what is installed, still loads, and has not fired once across the last stretch of my own transcripts?&lt;/p&gt;

&lt;p&gt;That is what session-tax is for.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually measures
&lt;/h2&gt;

&lt;p&gt;It reads your Claude Code session transcripts off disk on your machine. No network calls in the free script. Imports are &lt;code&gt;fs&lt;/code&gt;, &lt;code&gt;path&lt;/code&gt;, and &lt;code&gt;os&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Across a window you choose (default 90 days) it reports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how many tokens a session typically opens with, excluding your input (median and the worst tenth)&lt;/li&gt;
&lt;li&gt;installed skills versus skills that actually got invoked&lt;/li&gt;
&lt;li&gt;how many of those skills look dead (installed, not wired to an event, older than a fortnight, zero invocations in the window), and how many tokens their listings cost on every open&lt;/li&gt;
&lt;li&gt;counts for custom agents, connected servers, and hooks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dollar line is a rough guide. It prices opening context using the cache-read / cache-write mix it sees in your transcripts, and it says so. On a subscription you mostly pay this in overhead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free vs paid
&lt;/h2&gt;

&lt;p&gt;Free edition: the totals above. It will tell you &lt;em&gt;how many&lt;/em&gt; skills look dead and what that listing tax adds up to. It does not print the names.&lt;/p&gt;

&lt;p&gt;Paid ($19, one seat): names the dead skills, points at cold servers (connected but almost never called), machine-readable &lt;code&gt;--json&lt;/code&gt;, and &lt;code&gt;--home&lt;/code&gt; so you can audit a different profile. Shop link lives in the GitHub README on purpose. Some forums quietly filter &lt;code&gt;*.pages.dev&lt;/code&gt; URLs.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/CraniusMaximus/claude-code-autonomy-pack" rel="noopener noreferrer"&gt;github.com/CraniusMaximus/claude-code-autonomy-pack&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want to know
&lt;/h2&gt;

&lt;p&gt;Does it help? Is it a waste of time? Any inaccuracies?&lt;/p&gt;

</description>
      <category>claude</category>
      <category>devtools</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
