<?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: Toruk Makto</title>
    <description>The latest articles on DEV Community by Toruk Makto (@torukmakto2992).</description>
    <link>https://dev.to/torukmakto2992</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%2F3882131%2F2995d75a-09c8-4a9f-af76-d045020f28cc.jpg</url>
      <title>DEV Community: Toruk Makto</title>
      <link>https://dev.to/torukmakto2992</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/torukmakto2992"/>
    <language>en</language>
    <item>
      <title>Your AI Coding Agent Already Leaves an Audit Trail. I Built a Desktop App to Read It</title>
      <dc:creator>Toruk Makto</dc:creator>
      <pubDate>Tue, 21 Jul 2026 19:30:35 +0000</pubDate>
      <link>https://dev.to/torukmakto2992/your-ai-coding-agent-already-leaves-an-audit-trail-i-built-a-desktop-app-to-read-it-180b</link>
      <guid>https://dev.to/torukmakto2992/your-ai-coding-agent-already-leaves-an-audit-trail-i-built-a-desktop-app-to-read-it-180b</guid>
      <description>&lt;p&gt;I use more than one AI coding tool.&lt;/p&gt;

&lt;p&gt;A task might begin in Claude Code, move through Codex, involve a few delegated agents, and finish with a manual cleanup in the editor.&lt;/p&gt;

&lt;p&gt;At the end, every tool can tell me that tokens were used.&lt;/p&gt;

&lt;p&gt;None of them could answer the questions I actually had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which project consumed them?&lt;/li&gt;
&lt;li&gt;Which sessions became expensive?&lt;/li&gt;
&lt;li&gt;Did the expensive model produce better results?&lt;/li&gt;
&lt;li&gt;How much work went into a particular pull request?&lt;/li&gt;
&lt;li&gt;How much was spent retrying or reworking the same files?&lt;/li&gt;
&lt;li&gt;Are my subscription plans keeping up with my real usage?&lt;/li&gt;
&lt;li&gt;What happened in delegated subagent sessions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The data needed to answer many of these questions already existed on my machine. It was just scattered across JSONL files, SQLite databases, editor storage, agent transcripts, and provider-specific caches.&lt;/p&gt;

&lt;p&gt;That became CodeBurn.&lt;/p&gt;

&lt;p&gt;CodeBurn is an open-source, local-first tool that reads this existing session data and turns it into a desktop application, terminal dashboard, local web dashboard, CLI, and MCP server.&lt;/p&gt;

&lt;p&gt;This post focuses on the desktop app and what the different screens are actually useful for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F770wc4gt4d8b7tv8znn1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F770wc4gt4d8b7tv8znn1.png" alt="CodeBurn desktop overview" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The overview is meant to answer “what happened?” before making you dig through individual sessions.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the shape of your usage
&lt;/h2&gt;

&lt;p&gt;A monthly API bill is one number. It tells you almost nothing about how it happened.&lt;/p&gt;

&lt;p&gt;The Overview screen breaks activity down by day and shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total estimated spend&lt;/li&gt;
&lt;li&gt;Number of sessions and calls&lt;/li&gt;
&lt;li&gt;Model usage&lt;/li&gt;
&lt;li&gt;Daily changes&lt;/li&gt;
&lt;li&gt;Expensive sessions&lt;/li&gt;
&lt;li&gt;Potential waste&lt;/li&gt;
&lt;li&gt;Recent workflow activity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The expensive-session list is often more useful than the total.&lt;/p&gt;

&lt;p&gt;A normal day can contain ten small sessions and one agent run that quietly consumed most of the budget. Seeing that session immediately gives you somewhere concrete to investigate.&lt;/p&gt;

&lt;p&gt;This is also where differences between tools become visible. You may discover that one provider handles quick fixes cheaply while another dominates longer planning or refactoring sessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  A session list is more useful when it has context
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcexl0w96spo4ahxs99d5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcexl0w96spo4ahxs99d5.png" alt="AI coding sessions with project and cost context" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Sessions screen is a searchable history of actual agent work.&lt;/p&gt;

&lt;p&gt;Instead of presenting raw transcript identifiers, CodeBurn tries to retain useful context such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session title&lt;/li&gt;
&lt;li&gt;Project&lt;/li&gt;
&lt;li&gt;Provider&lt;/li&gt;
&lt;li&gt;Models used&lt;/li&gt;
&lt;li&gt;Start and end time&lt;/li&gt;
&lt;li&gt;Number of turns and calls&lt;/li&gt;
&lt;li&gt;Estimated cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps when a number on the Overview page looks suspicious.&lt;/p&gt;

&lt;p&gt;If Tuesday was unusually expensive, you can move from the daily total to the sessions responsible for it. From there, you can distinguish a genuinely large implementation from a short task that got stuck repeating itself.&lt;/p&gt;

&lt;p&gt;The goal is not to judge a session because it was expensive. Some difficult tasks should be expensive. The useful part is being able to connect the cost to the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attribute agent work to pull requests
&lt;/h2&gt;

&lt;p&gt;The feature I wanted most was pull-request attribution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6a0j15ahz46m3lce657r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6a0j15ahz46m3lce657r.png" alt="Pull request spend with models and agent runs" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Pull Requests screen groups work around the PR where it happened.&lt;/p&gt;

&lt;p&gt;For each pull request, it can show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Attributed spend&lt;/li&gt;
&lt;li&gt;Models used&lt;/li&gt;
&lt;li&gt;Linked sessions&lt;/li&gt;
&lt;li&gt;API calls&lt;/li&gt;
&lt;li&gt;Active dates&lt;/li&gt;
&lt;li&gt;Work-category breakdown&lt;/li&gt;
&lt;li&gt;Delegated subagent runs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This becomes interesting when agents delegate work.&lt;/p&gt;

&lt;p&gt;A parent session might use one model for orchestration while several subagents use other models for investigation, testing, or implementation. Looking only at the parent makes the PR appear cheaper than it actually was and hides the models that performed most of the work.&lt;/p&gt;

&lt;p&gt;CodeBurn folds linked subagent activity into the parent turn that launched it. Nested agent runs are included as well, while safeguards prevent the same work from being counted twice.&lt;/p&gt;

&lt;p&gt;Attribution happens at turn level. If one long session works on multiple PRs, each turn is associated with the PR it was working on rather than charging the entire session to every PR.&lt;/p&gt;

&lt;p&gt;It also correlates cross-provider work where enough local Git and session context exists. That matters when one tool starts the work and another tool continues it in the same repository.&lt;/p&gt;

&lt;p&gt;The result is a much more useful question than “What did AI cost this month?”&lt;/p&gt;

&lt;p&gt;It becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What did AI-assisted work on this change actually involve?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Spend is not only about models
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvsmfic5qbsjbz0cojeoi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvsmfic5qbsjbz0cojeoi.png" alt="AI coding spend broken down by project and activity" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Spend view provides several different lenses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Activity categories&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;MCP servers&lt;/li&gt;
&lt;li&gt;Subagents&lt;/li&gt;
&lt;li&gt;Model-to-project flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These breakdowns expose patterns that a model-only report misses.&lt;/p&gt;

&lt;p&gt;For example, a project may be expensive because it genuinely contains most of your work. But it might also be expensive because the agent repeatedly searches the repository, runs a failing command, or revisits the same files.&lt;/p&gt;

&lt;p&gt;Tool and MCP breakdowns can also reveal how an agent is approaching the task. Two sessions with similar token totals can represent very different workflows: one may spend most of its time editing and testing, while another spends it searching and rereading context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure retries instead of guessing about quality
&lt;/h2&gt;

&lt;p&gt;Cost alone does not tell us whether a model was effective.&lt;/p&gt;

&lt;p&gt;CodeBurn classifies work into categories such as coding, debugging, testing, planning, documentation, review, and research. For edit-oriented work, it also tracks file-aware retry cycles.&lt;/p&gt;

&lt;p&gt;A retry is not simply “the agent used the Edit tool twice.”&lt;/p&gt;

&lt;p&gt;It is closer to this pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Edit a file&lt;/li&gt;
&lt;li&gt;Run a command&lt;/li&gt;
&lt;li&gt;Return to the same file&lt;/li&gt;
&lt;li&gt;Edit it again&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Editing several different files during an implementation is normal. Repeatedly returning to the same file after validation failures is a stronger signal that the first attempt did not work.&lt;/p&gt;

&lt;p&gt;From that, CodeBurn can calculate a one-shot rate: how often an edit succeeded without needing another correction cycle.&lt;/p&gt;

&lt;p&gt;It is not a perfect software-quality metric. It is a workflow signal.&lt;/p&gt;

&lt;p&gt;But it makes model comparisons more meaningful than comparing token prices alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compare models using the work they performed
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7pkuryc0x9i2kdf66vkk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7pkuryc0x9i2kdf66vkk.png" alt="Model usage and task performance comparison" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Models and Compare screens answer questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which models are used most often?&lt;/li&gt;
&lt;li&gt;Which tasks are they being used for?&lt;/li&gt;
&lt;li&gt;What is their average cost per session?&lt;/li&gt;
&lt;li&gt;How often do their edits succeed without retries?&lt;/li&gt;
&lt;li&gt;Is a cheaper model actually cheaper after correction cycles?&lt;/li&gt;
&lt;li&gt;Is an expensive model being used for work a smaller model handles well?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where I often find the most practical changes.&lt;/p&gt;

&lt;p&gt;The conclusion is rarely “always use the cheapest model” or “always use the strongest model.”&lt;/p&gt;

&lt;p&gt;It is usually something narrower:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This model is fine for documentation but struggles with debugging.&lt;/li&gt;
&lt;li&gt;This expensive model is being used for simple edits.&lt;/li&gt;
&lt;li&gt;This cheaper model needs enough retries that the saving disappears.&lt;/li&gt;
&lt;li&gt;Planning is cheap, but implementation is creating most of the cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is information you can use when choosing models or configuring routing rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Find work that did not survive
&lt;/h2&gt;

&lt;p&gt;The Optimize screen looks for signs of avoidable work, including reworked files and reverted or abandoned changes.&lt;/p&gt;

&lt;p&gt;This is deliberately presented as evidence rather than a magical optimization score.&lt;/p&gt;

&lt;p&gt;A reverted edit is not automatically waste. Developers explore ideas, test alternatives, and deliberately throw work away. But repeated patterns can still be useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same file is rewritten several times&lt;/li&gt;
&lt;li&gt;A costly session ends with most changes reverted&lt;/li&gt;
&lt;li&gt;A model repeatedly fails a particular task category&lt;/li&gt;
&lt;li&gt;A large amount of spend never reaches the final result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The screen gives you places to investigate. You decide whether the work was necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track subscription pacing
&lt;/h2&gt;

&lt;p&gt;Many developers no longer pay only per API token. We also use Claude, ChatGPT, Cursor, and other subscription plans.&lt;/p&gt;

&lt;p&gt;The Plans screen lets you configure provider-specific monthly plans and compare usage against their cost.&lt;/p&gt;

&lt;p&gt;This does not pretend to know hidden provider limits. Vendors generally do not publish exact token allowances for consumer subscriptions.&lt;/p&gt;

&lt;p&gt;Instead, it helps answer a simpler question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Based on how I am using these tools, is this subscription still making sense for me?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The app does not require a separate CLI installation
&lt;/h2&gt;

&lt;p&gt;The packaged desktop app includes its own CodeBurn CLI.&lt;/p&gt;

&lt;p&gt;The Electron process uses that bundled CLI to parse and aggregate local data. There is no daemon to configure and no local HTTP server required for the desktop interface.&lt;/p&gt;

&lt;p&gt;The application is available for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS on Apple Silicon&lt;/li&gt;
&lt;li&gt;macOS on Intel&lt;/li&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;Linux as AppImage or Debian package&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Downloads are available from the desktop release:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/getagentseal/codeburn/releases/tag/desktop-v0.9.19" rel="noopener noreferrer"&gt;https://github.com/getagentseal/codeburn/releases/tag/desktop-v0.9.19&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/getagentseal/codeburn" rel="noopener noreferrer"&gt;https://github.com/getagentseal/codeburn&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What “local-first” means here
&lt;/h2&gt;

&lt;p&gt;CodeBurn reads session data directly from the files and databases created by supported tools.&lt;/p&gt;

&lt;p&gt;Depending on the provider, that may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON or JSONL transcripts&lt;/li&gt;
&lt;li&gt;SQLite databases&lt;/li&gt;
&lt;li&gt;Editor workspace storage&lt;/li&gt;
&lt;li&gt;Token-count events&lt;/li&gt;
&lt;li&gt;Tool-call records&lt;/li&gt;
&lt;li&gt;Git branches and working directories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It does not require you to route AI calls through a proxy or wrapper. It also does not need your provider API keys just to analyze existing local sessions.&lt;/p&gt;

&lt;p&gt;Pricing data is taken from LiteLLM and cached locally. When a provider exposes exact token counts, CodeBurn uses them. When it does not, the result may be estimated.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  The limitations are real
&lt;/h2&gt;

&lt;p&gt;This kind of tool is only as accurate as the underlying data.&lt;/p&gt;

&lt;p&gt;Different providers expose different levels of detail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some store exact input, output, and cache token counts&lt;/li&gt;
&lt;li&gt;Some store only cumulative counters&lt;/li&gt;
&lt;li&gt;Some require token estimation from message content&lt;/li&gt;
&lt;li&gt;Some expose file operations but not precise model usage&lt;/li&gt;
&lt;li&gt;Some do not retain enough Git context for PR attribution&lt;/li&gt;
&lt;li&gt;Local models and proxies may require custom pricing rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CodeBurn tries to make these cases explicit instead of presenting every number as equally precise.&lt;/p&gt;

&lt;p&gt;Supporting many tools also means parsers can break when providers change their storage formats. That is one reason the project is open source: every provider integration can be inspected, tested, corrected, or extended.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I’m sharing it here
&lt;/h2&gt;

&lt;p&gt;I think AI coding observability is still an unsolved developer-tooling problem.&lt;/p&gt;

&lt;p&gt;We have increasingly capable agents, but very little shared understanding of how to evaluate their work beyond “the code eventually passed.”&lt;/p&gt;

&lt;p&gt;Token totals are only one part of the picture. Sessions, retries, tools, projects, PRs, abandoned work, and model choices provide much more useful context.&lt;/p&gt;

&lt;p&gt;CodeBurn is our attempt to make that context visible using data developers already have.&lt;/p&gt;

&lt;p&gt;If you try it, I would be interested in hearing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which coding agents do you use together?&lt;/li&gt;
&lt;li&gt;What would make PR attribution more useful?&lt;/li&gt;
&lt;li&gt;Which workflow signals do you trust?&lt;/li&gt;
&lt;li&gt;Where do the current numbers feel misleading?&lt;/li&gt;
&lt;li&gt;Which provider should be supported or improved next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is open source:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/getagentseal/codeburn" rel="noopener noreferrer"&gt;https://github.com/getagentseal/codeburn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>observability</category>
      <category>tokenusage</category>
      <category>claude</category>
    </item>
    <item>
      <title>Your agent burned millions of thinking tokens you never saw.</title>
      <dc:creator>Toruk Makto</dc:creator>
      <pubDate>Fri, 03 Jul 2026 11:05:43 +0000</pubDate>
      <link>https://dev.to/torukmakto2992/your-agent-burned-millions-of-thinking-tokens-you-never-saw-4k4b</link>
      <guid>https://dev.to/torukmakto2992/your-agent-burned-millions-of-thinking-tokens-you-never-saw-4k4b</guid>
      <description>&lt;p&gt;Codeburn context opens the black box. Every block in the window, counted: reasoning, injected meta, compactions, the real context from API usage.&lt;/p&gt;

&lt;p&gt;try npx codeburn context&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>observability</category>
      <category>productivity</category>
    </item>
    <item>
      <title>You pay for Claude, Codex, and Cursor every month.</title>
      <dc:creator>Toruk Makto</dc:creator>
      <pubDate>Sat, 27 Jun 2026 11:18:16 +0000</pubDate>
      <link>https://dev.to/torukmakto2992/you-pay-for-claude-codex-and-cursor-every-month-564i</link>
      <guid>https://dev.to/torukmakto2992/you-pay-for-claude-codex-and-cursor-every-month-564i</guid>
      <description>&lt;p&gt;The bill gives you one number. It never tells you that half of it went to conversation instead of code.&lt;/p&gt;

&lt;p&gt;CodeBurn does. Every token and dollar, by task, model, and project. 30 AI tools, one screen, all local.&lt;/p&gt;

&lt;p&gt;npx codeburn&lt;/p&gt;

</description>
      <category>ai</category>
      <category>analytics</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I turned 14 business books into Claude Code skills that auto-trigger based on your question</title>
      <dc:creator>Toruk Makto</dc:creator>
      <pubDate>Wed, 29 Apr 2026 02:08:28 +0000</pubDate>
      <link>https://dev.to/torukmakto2992/i-turned-14-business-books-into-claude-code-skills-that-auto-trigger-based-on-your-question-1567</link>
      <guid>https://dev.to/torukmakto2992/i-turned-14-business-books-into-claude-code-skills-that-auto-trigger-based-on-your-question-1567</guid>
      <description>&lt;p&gt;&lt;strong&gt;why this exists&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;been using claude for almost all my business planning - pricing, customer interviews, marketing strategy, sales calls. the problem is claude knows these books from training data but only surface level. ask it about The Mom Test and it'll say "ask open-ended questions." ask it to actually score your customer conversation and it makes up random criteria every time.&lt;/p&gt;

&lt;p&gt;wanted something structured. actual decision trees, scoring rubrics, templates that work the same way every time. started with The Mom Test after someone recommended it to me. turned it into a skill. then couldn't stop. 14 books later here we are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;what's actually inside each skill&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;every skill follows the same structure:&lt;/p&gt;

&lt;p&gt;a decision tree at the top that tells you whether this is even the right framework for your problem. half the time founders think they have a messaging problem when it's actually distribution or pricing. the skill catches that before you waste time.&lt;/p&gt;

&lt;p&gt;scored checklists you can use in real situations. the mom test skill scores your customer conversations on 10 specific criteria. spin selling has a call planning worksheet. $100M offers has an offer scoring rubric.&lt;/p&gt;

&lt;p&gt;honest limitations. every skill tells you what the book got wrong, what's outdated, and when to stop using it. the lean startup skill flags that innovation accounting barely works outside software. crossing the chasm warns you the bowling alley model is mostly theoretical.&lt;/p&gt;

&lt;p&gt;conflict resolution between books. storybrand says position yourself as the guide. obviously awesome is more product-centric. the skills map exactly where two frameworks disagree and how to resolve it depending on your situation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;who this actually helps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;you're about to do customer interviews → mom test skill gives you exact questions to ask and a scoring rubric to evaluate answers&lt;/p&gt;

&lt;p&gt;you're pricing a new product → monetizing innovation walks you through willingness-to-pay research before you build&lt;/p&gt;

&lt;p&gt;you're writing your landing page → storybrand gives you a fill-in brandscript template so you stop talking about yourself and start talking about the customer's problem&lt;/p&gt;

&lt;p&gt;your marketing isn't converting → the skill figures out whether it's messaging (storybrand), positioning (obviously awesome), channels (traction), or your offer itself ($100M offers)&lt;/p&gt;

&lt;p&gt;you're preparing for a B2B sales call → spin selling gives you a call planner with situation, problem, implication, and need-payoff questions mapped out&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;how to use&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;clone the repo and symlink into claude code - skills auto-trigger based on your question. or just paste any SKILL.md into chatgpt/gemini/cursor as context. works the same way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/getagentseal/founder-playbook" rel="noopener noreferrer"&gt;https://github.com/getagentseal/founder-playbook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;free and open source. genuinely curious what books you'd want added next.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>agentskills</category>
      <category>ai</category>
      <category>founder</category>
    </item>
    <item>
      <title>Reading your AI coding logs: cache hits, retry loops, and other signals</title>
      <dc:creator>Toruk Makto</dc:creator>
      <pubDate>Thu, 16 Apr 2026 09:58:49 +0000</pubDate>
      <link>https://dev.to/torukmakto2992/reading-your-ai-coding-logs-cache-hits-retry-loops-and-other-signals-2o9p</link>
      <guid>https://dev.to/torukmakto2992/reading-your-ai-coding-logs-cache-hits-retry-loops-and-other-signals-2o9p</guid>
      <description>&lt;p&gt;Last week I checked my AI coding spend and it was higher than my AWS bill. I'm paying for Claude Code, Codex, Cursor, the occasional Opus burst, and I had no visibility into where any of it went. Just a number going up.&lt;/p&gt;

&lt;p&gt;Turns out every AI coding tool already writes session data to disk. Claude Code drops JSONL into &lt;code&gt;~/.claude/projects/&lt;/code&gt;. Codex writes to &lt;code&gt;~/.codex/sessions/YYYY/MM/DD/&lt;/code&gt;. Cursor uses a SQLite database. OpenCode uses SQLite. Pi uses JSONL. All of it is sitting there waiting to be read.&lt;/p&gt;

&lt;p&gt;I started reading mine and the patterns are obvious once you look.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the data shows
&lt;/h2&gt;

&lt;p&gt;This is one week of my actual AI coding usage:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/your-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/your-screenshot.png" alt="codeburn dashboard showing $1274 weekly cost, 13634 calls across 1821 sessions, 98.3% cache hit, broken down by project, model, activity, tools, and shell commands" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few things jumped out immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache hit rate matters more than I thought.&lt;/strong&gt; Claude prices cache reads at 1/10th the cost of fresh input. Opus came in at 98.8% cache hits, which sounds great until I noticed Sonnet 4.6 was at 77.1%. That gap is real money. If your system prompt or the first few files in context are unstable, you're paying full price for the same tokens every turn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool counts tell you the agent's mood.&lt;/strong&gt; 2,126 Bash calls, 990 Reads, 742 Edits in a week. The Read:Edit ratio is roughly 1.3, which is fine. If Read had been 4x higher, I'd know the agent was spelunking instead of executing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One-shot rate is brutal honesty.&lt;/strong&gt; Coding shows 88% one shot. The other 12% needed retries (Edit → Bash → Edit). That's where time and tokens leak silently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model mix reveals overspending.&lt;/strong&gt; Opus 4.6 cost $1219 this week. Sonnet 4.6 cost $38. Some of those Opus turns were small Q&amp;amp;A that Sonnet would have handled fine. I haven't run the experiment of routing them yet, but the gap suggests there's real money on the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Patterns worth watching for
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What it usually means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cache hit &amp;lt; 80%&lt;/td&gt;
&lt;td&gt;System prompt or context unstable, caching not configured&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lots of Read calls per session&lt;/td&gt;
&lt;td&gt;Agent re-reading files, missing context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low one-shot rate (Coding &amp;lt; 30%)&lt;/td&gt;
&lt;td&gt;Retry loops, agent struggling with edits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus dominating cost on small turns&lt;/td&gt;
&lt;td&gt;Overpowered for the task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;dispatch_agent&lt;/code&gt; heavy&lt;/td&gt;
&lt;td&gt;Sub-agent fan-out, expected or excessive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No MCP usage&lt;/td&gt;
&lt;td&gt;Either you don't use MCP, or your config is broken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bash dominated by &lt;code&gt;git status&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Agent exploring instead of executing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conversation category dominant&lt;/td&gt;
&lt;td&gt;Agent talking instead of doing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These aren't verdicts, just starting points. A 60% cache hit on a one-off experiment is fine. A persistent 60% across weeks is a config issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I'm reading this data
&lt;/h2&gt;

&lt;p&gt;There's a tool called &lt;code&gt;codeburn&lt;/code&gt; that reads all the session formats and renders this dashboard in your terminal. It supports Claude Code, Codex, Cursor, OpenCode, and Pi. No proxy, no API keys just reads the local files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codeburn report &lt;span class="nt"&gt;--period&lt;/span&gt; week
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/AgentSeal/codeburn" rel="noopener noreferrer"&gt;https://github.com/AgentSeal/codeburn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Open source, MIT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;We obsess over model choice and pricing tier. We argue about Opus vs Sonnet vs GLM. The discussion online is almost entirely about which model to use, never about what your agent is actually doing once it's running.&lt;/p&gt;

&lt;p&gt;The session files have the answer. Every retry, every redundant Read, every cache miss, every misrouted model,it's all there. Looking at it once a week takes ten minuts and tells you more about your spend than any pricing comparison.&lt;/p&gt;

&lt;p&gt;Try reading your own sessions for a week. Even if you don't use any tool, just &lt;code&gt;cat&lt;/code&gt; a few JSONL files and look at the usage blocks. You'll spot at least one pattern you didn't expect.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>cli</category>
    </item>
    <item>
      <title>Where do your AI coding tokens actually go?</title>
      <dc:creator>Toruk Makto</dc:creator>
      <pubDate>Thu, 16 Apr 2026 09:49:05 +0000</pubDate>
      <link>https://dev.to/torukmakto2992/where-do-your-ai-coding-tokens-actually-go-3ggg</link>
      <guid>https://dev.to/torukmakto2992/where-do-your-ai-coding-tokens-actually-go-3ggg</guid>
      <description>&lt;p&gt;Last week I checked my AI coding spend and it was higher than my AWS bill. I'm paying for Claude Code, Codex, Cursor, the occasional Opus burst, and I had no visibility into where any of it went. Just a number going up.&lt;/p&gt;

&lt;p&gt;Turns out every AI coding tool already writes session data to disk. Claude Code drops JSONL into &lt;code&gt;~/.claude/projects/&lt;/code&gt;. Codex writes to &lt;code&gt;~/.codex/sessions/YYYY/MM/DD/&lt;/code&gt;. Cursor uses a SQLite database. OpenCode uses SQLite. Pi uses JSONL. All of it is sitting there waiting to be read.&lt;/p&gt;

&lt;p&gt;I started reading mine and the patterns are obvious once you look.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the data shows
&lt;/h2&gt;

&lt;p&gt;This is one week of my actual AI coding usage:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/your-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/your-screenshot.png" alt="codeburn dashboard showing $1274 weekly cost, 13634 calls across 1821 sessions, 98.3% cache hit, broken down by project, model, activity, tools, and shell commands" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few things jumped out immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache hit rate matters more than I thought.&lt;/strong&gt; Claude prices cache reads at 1/10th the cost of fresh input. Opus came in at 98.8% cache hits, which sounds great until I noticed Sonnet 4.6 was at 77.1%. That gap is real money. If your system prompt or the first few files in context are unstable, you're paying full price for the same tokens every turn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool counts tell you the agent's mood.&lt;/strong&gt; 2,126 Bash calls, 990 Reads, 742 Edits in a week. The Read:Edit ratio is roughly 1.3, which is fine. If Read had been 4x higher, I'd know the agent was spelunking instead of executing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One-shot rate is brutal honesty.&lt;/strong&gt; Coding shows 88% one shot. The other 12% needed retries (Edit → Bash → Edit). That's where time and tokens leak silently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model mix reveals overspending.&lt;/strong&gt; Opus 4.6 cost $1219 this week. Sonnet 4.6 cost $38. Some of those Opus turns were small Q&amp;amp;A that Sonnet would have handled fine. I haven't run the experiment of routing them yet, but the gap suggests there's real money on the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Patterns worth watching for
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What it usually means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cache hit &amp;lt; 80%&lt;/td&gt;
&lt;td&gt;System prompt or context unstable, caching not configured&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lots of Read calls per session&lt;/td&gt;
&lt;td&gt;Agent re-reading files, missing context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low one-shot rate (Coding &amp;lt; 30%)&lt;/td&gt;
&lt;td&gt;Retry loops, agent struggling with edits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus dominating cost on small turns&lt;/td&gt;
&lt;td&gt;Overpowered for the task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;dispatch_agent&lt;/code&gt; heavy&lt;/td&gt;
&lt;td&gt;Sub-agent fan-out, expected or excessive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No MCP usage&lt;/td&gt;
&lt;td&gt;Either you don't use MCP, or your config is broken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bash dominated by &lt;code&gt;git status&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Agent exploring instead of executing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conversation category dominant&lt;/td&gt;
&lt;td&gt;Agent talking instead of doing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These aren't verdicts, just starting points. A 60% cache hit on a one-off experiment is fine. A persistent 60% across weeks is a config issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I'm reading this data
&lt;/h2&gt;

&lt;p&gt;There's a tool called &lt;code&gt;codeburn&lt;/code&gt; that reads all the session formats and renders this dashboard in your terminal. It supports Claude Code, Codex, Cursor, OpenCode, and Pi. No proxy, no API keys—just reads the local files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codeburn report &lt;span class="nt"&gt;--period&lt;/span&gt; week
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/AgentSeal/codeburn" rel="noopener noreferrer"&gt;https://github.com/AgentSeal/codeburn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Open source, MIT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;We obsess over model choice and pricing tier. We argue about Opus vs Sonnet vs GLM. The discussion online is almost entirely about which model to use, never about what your agent is actually doing once it's running.&lt;/p&gt;

&lt;p&gt;The session files have the answer. Every retry, every redundant Read, every cache miss, every misrouted model, it's all there. Looking at it once a week takes ten minutes and tells you more about your spend than any pricing comparison.&lt;/p&gt;

&lt;p&gt;Try reading your own sessions for a week. Even if you don't use any tool, just &lt;code&gt;cat&lt;/code&gt; a few JSONL files and look at the usage blocks. You'll spot at least one pattern you didn't expect.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>cli</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
