<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0">
  <channel>
    <description>Rambling Rows</description>
    <image>
      <url>https://rrows.net/uploads/2026/rrows-icon-sq-144px.png</url>
      <title>Rambling Rows</title>
      <link>https://rrows.net/</link>
    </image>
    <title>claude-code on Rambling Rows</title>
    <link>https://rrows.net/categories/claude-code/</link>
    
    <language>en</language>
    
    <lastBuildDate>Sat, 09 May 2026 19:27:00 +1000</lastBuildDate>
    <item>
      <title>Taming Claude Cowork session sprawl</title>
      <link>https://rrows.net/2026/05/09/taming-claude-cowork-session-sprawl.html?utm_source=rss&amp;utm_medium=feed&amp;utm_campaign=rrows</link>
      <pubDate>Sat, 09 May 2026 19:27:00 +1000</pubDate>
      
      <guid isPermaLink="false">http://rrows.micro.blog/2026/05/09/taming-claude-cowork-session-sprawl.html</guid>
      <description>&lt;p&gt;Relentless Productivity™ has a dark side. The more capable your tools, the faster the work accumulates - and with &lt;strong&gt;Claude Cowork&lt;/strong&gt;, that accumulation happens session by session, each one spawning its own entry in an ever-growing sidebar list that becomes harder to read by the day.&lt;/p&gt;
&lt;p&gt;I know this from experience. My Cowork sidebar had grown to the point where I could no longer tell what was live, what was done and what was waiting. You can pin sessions. You can rename them. But there is no status indicator, no filtering and no way to see at a glance what needs your attention. Managing that list requires discipline, and discipline is not - let&amp;rsquo;s say - inherent in this particular operator.&lt;/p&gt;
&lt;p&gt;So I went back and forth with Claude to work out a better approach.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;the-problem-cowork-creates&#34;&gt;The problem Cowork creates&lt;/h2&gt;
&lt;p&gt;Cowork is genuinely powerful. You give it access to a folder on your Mac, describe what you want in plain language and it runs - reading files, executing commands, writing output, co-ordinating sub-agents. It is Claude Code for knowledge workers rather than developers.&lt;/p&gt;
&lt;p&gt;But that local-first architecture is also its limitation when it comes to session management.&lt;/p&gt;
&lt;p&gt;When you use Claude via the browser at &lt;strong&gt;claude.ai&lt;/strong&gt;, every conversation has a URL. &lt;code&gt;claude.ai/chat/d156fdf3-...&lt;/code&gt; - a stable reference you can bookmark, share or link to from a project management tool. The session lives in the cloud and is accessible from anywhere.&lt;/p&gt;
&lt;p&gt;Cowork sessions have none of that. They exist inside the Claude Desktop app, operating on files on your local machine. There is no URL. There is no way to reference a specific session from outside the app. The sidebar is the only index you have - and it auto-names sessions based on your first message rather than anything you choose to call them.&lt;/p&gt;
&lt;p&gt;The strength of Cowork working exclusively on your local files is, in this respect, the downside.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-we-built&#34;&gt;What we built&lt;/h2&gt;
&lt;p&gt;The solution has three moving parts: a dedicated tracking directory, a &lt;strong&gt;Rocket Typist&lt;/strong&gt; text expansion snippet and an end-of-session protocol.&lt;/p&gt;
&lt;p&gt;Cowork sessions run inside &lt;strong&gt;Projects&lt;/strong&gt; - a workspace layer that lets you attach specific folders to a session so Claude can read and write files within them. That folder attachment is where the session management system hooks in.&lt;/p&gt;
&lt;h3 id=&#34;the-tracker-directory&#34;&gt;The Tracker directory&lt;/h3&gt;
&lt;p&gt;The first instinct was to attach a general &lt;code&gt;~/Documents/Claude/&lt;/code&gt; folder to every Project, giving each session access to a shared log. That&amp;rsquo;s the wrong call.&lt;/p&gt;
&lt;p&gt;Attaching a broad directory gives every Project session visibility into everything in that folder - files from other projects, notes, work in progress. Cowork is sandboxed by design, and for good reason. You don&amp;rsquo;t want a session working on your Acme Corporation board report to be able to read files from a personal task session, even accidentally.&lt;/p&gt;
&lt;p&gt;The right approach is a dedicated &lt;code&gt;~/Documents/Claude/Tracker/&lt;/code&gt; directory. It contains exactly two files - a session counter and a sessions log - and nothing else. When you attach it to a Project, you are giving that session a narrow, read-write window into tracking data only. No cross-contamination. No unintended exposure.&lt;/p&gt;
&lt;p&gt;Create it once:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir -p ~/Documents/Claude/Tracker

echo &amp;quot;0&amp;quot; &amp;gt; ~/Documents/Claude/Tracker/session_counter.txt

printf &amp;quot;| ID | Date | Project | Brief | Status | Outcome |\n|---|---|---|---|---|---|\n&amp;quot; &amp;gt; ~/Documents/Claude/Tracker/sessions.md

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Every new Cowork Project gets two folder attachments: the project working directory and &lt;code&gt;~/Documents/Claude/Tracker/&lt;/code&gt;. That second attachment is the constant.&lt;/p&gt;
&lt;h3 id=&#34;the-rocket-typist-template&#34;&gt;The Rocket Typist template&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://www.witt-software.com/rockettypist/&#34;&gt;Rocket Typist&lt;/a&gt;&lt;/strong&gt; is a macOS keystroke expansion tool. You define a short abbreviation - I use &lt;code&gt;;cw&lt;/code&gt; - and it expands to any block of text you choose when typed anywhere on your Mac, including in Cowork&amp;rsquo;s composer.&lt;/p&gt;
&lt;p&gt;The template I push in at the start of every session:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Before anything else: read ~/Documents/Claude/Tracker/session_counter.txt, 

increment by 1, write back, append one row to 

~/Documents/Claude/Tracker/sessions.md (columns: ID / Date / Project / Brief / 

Status=Active / Outcome=blank). If ~/Documents/Claude/Tracker/ is not 

accessible, stop immediately and say: &amp;quot;TRACKER NOT MOUNTED — add 

~/Documents/Claude/Tracker/ to this Project before continuing.&amp;quot; Then output: 

RENAME THIS SESSION TO: #N [one-line task summary] — then proceed with the task.



When I say &amp;quot;end session&amp;quot;: update this session&#39;s row in 

~/Documents/Claude/Tracker/sessions.md — set Status to Done, write a 

one-sentence Outcome. Confirm: &amp;quot;Session #N closed.&amp;quot;



Task:

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You type &lt;code&gt;;cw&lt;/code&gt;, the template appears, you write your task on the final line and send.&lt;/p&gt;
&lt;p&gt;Cowork reads the counter file, increments it, writes the new value back, appends a row to &lt;code&gt;sessions.md&lt;/code&gt; and then - critically - outputs a rename string: &lt;code&gt;RENAME THIS SESSION TO: #3 Review Acme Corporation Q2 capacity model&lt;/code&gt;. You copy that, right-click the session name in the sidebar, rename it, and the session is now findable by number for the rest of its life.&lt;/p&gt;
&lt;p&gt;When you are done, you type &amp;ldquo;end session.&amp;rdquo; Cowork updates the sessions log row, sets Status to Done and writes a one-sentence outcome. The log becomes a running record of what was actually accomplished.&lt;/p&gt;
&lt;h3 id=&#34;what-the-log-looks-like&#34;&gt;What the log looks like&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;| ID | Date       | Project     | Brief                          | Status | Outcome                                    |

|----|------------|-------------|--------------------------------|--------|--------------------------------------------|

| 1  | 2026-05-09 | Personal OS | Weekly Review protocol scan    | Done   | 16 open threads identified; rollup confirmed|

| 2  | 2026-05-09 | Acme Corp   | Q2 capacity model review       | Active |                                            |

| 3  | 2026-05-10 | Palim       | Scope sudoku whimsy feature    | Done   | Feature scoped; implementation deferred    |



&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A quick look at &lt;code&gt;sessions.md&lt;/code&gt; tells you everything the Cowork sidebar cannot: what is live, what is closed and what was achieved.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;when-volume-grows-the-github-path&#34;&gt;When volume grows: the GitHub path&lt;/h2&gt;
&lt;p&gt;This system handles tens of sessions cleanly. If you are running dozens of concurrent workstreams - across projects, domains and time - the flat sessions log starts to show its limits.&lt;/p&gt;
&lt;p&gt;The natural escalation is &lt;strong&gt;GitHub Projects&lt;/strong&gt;, which gives you a proper Kanban board. Each session becomes a GitHub Issue. Columns map to session states: Backlog, Cowork Active, Claude Code Queue, Review, Done. You reference sessions by issue number (&lt;code&gt;#42&lt;/code&gt;) rather than the counter above, and the Cowork session number goes into the issue body alongside the &lt;code&gt;claude://cowork/new?q=...&amp;amp;folder=...&lt;/code&gt; deep link that re-opens a fresh session with the task context pre-loaded.&lt;/p&gt;
&lt;p&gt;This also opens up the Claude Code integration path. Some tasks that start in Cowork are better finished in the terminal - file batch processing, code generation, scripted output. A GitHub Issue card flagged &lt;code&gt;claude-code&lt;/code&gt; can be picked up by a small bridge script that pipes the task brief to &lt;code&gt;claude --pipe&lt;/code&gt;, writes the result back as an issue comment and moves the card to Review. The Kanban becomes the dispatcher for both Cowork and Claude Code.&lt;/p&gt;
&lt;p&gt;That is a bigger build. For most people the sessions log is enough.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;a-word-on-where-this-is-going&#34;&gt;A word on where this is going&lt;/h2&gt;
&lt;p&gt;Anthropic will work this out. The current Cowork interface was clearly built for focused, single-session work. As people use it at scale - running multiple projects, juggling parallel workstreams - the demand for better session state management will become impossible to ignore.&lt;/p&gt;
&lt;p&gt;A status indicator on each session in the sidebar. A filter for Active versus Done. A Kanban or nested view. These are obvious features, and they will come.&lt;/p&gt;
&lt;p&gt;Until then, a text expander, a counter file and a narrow Tracker directory get you most of the way there.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;The setup described in this post requires a paid Claude plan (Pro, Max, Team or Enterprise) and the Claude Desktop app for macOS or Windows. Rocket Typist is a paid macOS app available at &lt;a href=&#34;https://www.witt-software.com/rockettypist/&#34;&gt;witt-software.com&lt;/a&gt;. GitHub Projects is free for public repositories and included in paid GitHub plans.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;PS.&lt;/strong&gt; This is another example of using AI tools not just to do work, but to diagnose problems with how you work - and then to build systematic approaches that make future performance more reliable. The conversation that produced this post was not &amp;ldquo;write me a blog post.&amp;rdquo; It was a back-and-forth that identified a real friction point, explored the constraints of the tool, and arrived at something that actually holds together.&lt;/p&gt;
&lt;p&gt;The human is still required throughout. These are semi-sentient actors that will cheerfully proceed in the wrong direction if you do not hold them to account. The system only works because someone noticed the sessions were getting out of hand, cared enough to fix it and kept pushing until the solution was sound. That part does not automate.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Very personal software</title>
      <link>https://rrows.net/2026/05/04/very-personal-software.html?utm_source=rss&amp;utm_medium=feed&amp;utm_campaign=rrows</link>
      <pubDate>Mon, 04 May 2026 19:25:57 +1000</pubDate>
      
      <guid isPermaLink="false">http://rrows.micro.blog/2026/05/04/very-personal-software.html</guid>
      <description>&lt;p&gt;Geir Isene sat down at his computer last week and realised something unusual. Almost every program he touched - the window manager, the text editor, the file manager, the terminal, the email client, the calendar - was software he wrote himself. In a few weeks, with Claude Code as his engineering partner, he had replaced his entire desktop computing environment.&lt;/p&gt;
&lt;p&gt;All of it command line. All of it terminal-native. All of it his.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fair warning: the next bit gets technical in ways that will delight a certain kind of person and mean nothing to everyone else. Feel free to skim. The point lands either way.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The result is a two-layer stack he calls &lt;a href=&#34;https://github.com/isene/chasm&#34;&gt;CHasm&lt;/a&gt; and &lt;a href=&#34;https://github.com/isene/fe2o3&#34;&gt;Fe₂O₃&lt;/a&gt;. The first is pure x86_64 assembly - no system libraries, painting pixels directly. The second sits on top in Rust. Between them, they cover everything from the window manager to the screen locker to the text editor. The only surviving off-the-shelf programs are WeeChat for IRC and Firefox.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;He put &lt;a href=&#34;https://isene.org/2026/05/Audience-of-One.html&#34;&gt;his account of the journey&lt;/a&gt; online this week. Worth reading for the vim story alone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Vim - the modal text editor beloved by programmers and writers who&amp;rsquo;ve invested the muscle memory to use it - is not the kind of tool you replace. Geir had been using it since 2001. Twenty-five years. Every email, article, line of code and book went through vim. He thought he&amp;rsquo;d never replace it. He replaced it in seventy-two hours. His own editor, &lt;strong&gt;scribe&lt;/strong&gt;, does everything he actually used in vim and none of what he didn&amp;rsquo;t. Twenty-five years of muscle memory rerouted in three days.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;There&amp;rsquo;s a philosophical tradition this connects back to that predates software entirely. Before mass production, before village economies were fully established, people made their own tools. You forged your own knife, you shaped things to your hands rather than your hands to things. Then industrialisation made that inefficient and the skill slowly vanished.&lt;/p&gt;
&lt;p&gt;Software industrialisation followed the same arc. General-purpose applications got powerful enough for most people most of the time, and the economics of building for yourself stopped making sense. Why write your own text editor when vim exists? Why write your own calendar when Google Calendar handles the whole family?&lt;/p&gt;
&lt;p&gt;Geir&amp;rsquo;s story suggests the economics have flipped again.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not that building your own tools has become trivial - Geir is technically sophisticated and the CHasm layer in pure assembly is genuinely serious work. But Claude Code dropped the cost dramatically. He would direct it between other tasks, it would build, he&amp;rsquo;d respond with the next requirement. The turnaround on features went from months of someone else&amp;rsquo;s roadmap to minutes.&lt;/p&gt;
&lt;p&gt;And once you frame it that way, the efficiency question shifts. Yes, it took a few weeks of focused effort. But if you use those tools every day for the next ten years, that&amp;rsquo;s a different calculation. Especially when the alternative involves watching your tools get acquired, shut down, enshittified or quietly abandoned because they no longer fit a business model.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d be happy with the functionality of Microsoft Word 5.1 from 1989. Fast, functional, no subscription, no cloud sync, no feature bloat. Word 5.1 did everything most writers actually need. The only meaningful addition since then, for my purposes, is tables. The rest - collaboration features, AI integration, live cloud saving, the ribbon - is complexity that serves someone. It&amp;rsquo;s just often not me.&lt;/p&gt;
&lt;p&gt;Geir calls his approach &amp;ldquo;design without committee.&amp;rdquo; No configurability for other users. No corner cases he&amp;rsquo;ll never hit. No documentation for users who don&amp;rsquo;t exist. The audience is one person, so decisions take seconds. Strip out the complexity of accommodating everyone else and what&amp;rsquo;s left is small, fast and &lt;strong&gt;exactly shaped&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Software exists on a spectrum from general to personal. At one end, operating systems and protocols. At the other, a text editor built to the precise dimensions of one person&amp;rsquo;s hands. Most commercial software clusters in the middle - general enough to sell to thousands, specific enough to feel useful. AI lowers the cost of the personal end so dramatically that the middle is no longer the obvious destination.&lt;/p&gt;
&lt;p&gt;You probably won&amp;rsquo;t replace your whole desktop. But if you have one tool in your daily workflow that frustrates you - one thing you wish worked differently - the gap between &amp;ldquo;I wish this worked like this&amp;rdquo; and &amp;ldquo;it works like this&amp;rdquo; has never been smaller.&lt;/p&gt;
&lt;p&gt;Geir calls himself a rabbit in spring. He&amp;rsquo;s having the time of his life.&lt;/p&gt;
&lt;p&gt;So might you.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;PS - Thanks to SmartFriend™ &lt;a href=&#34;https://blog.marxy.org/&#34;&gt;Peter Marks&lt;/a&gt; for sending me the original link. Peter is a man with too many hobbies. You can find him at blog.marxy.org.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://isene.org/2026/05/Audience-of-One.html&#34;&gt;&lt;strong&gt;A desktop made for one&lt;/strong&gt; — isene.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/isene/chasm&#34;&gt;&lt;strong&gt;CHasm&lt;/strong&gt; — github.com/isene&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/isene/fe2o3&#34;&gt;&lt;strong&gt;Fe₂O₃&lt;/strong&gt; — github.com/isene&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
  </channel>
</rss>
