The design was informed by the public Gas City worktree bootstrap, especially its idempotent provisioning, local excludes, and staging-before-create flow:
That upstream project is distributed under the MIT License:
The design was informed by the public Gas City worktree bootstrap, especially its idempotent provisioning, local excludes, and staging-before-create flow:
That upstream project is distributed under the MIT License:
Stop Time Machine from eating your disk when you run AI agents (macOS) — asimov + exclusions walkthrough
Written together with my AI coding agent — it's what actually diagnosed and fixed this on my machine, then drafted this writeup and the prompt below. Sharing it in that spirit, not pretending I hand-typed every word.
⚠️ Correction (2026-07-03): the folder-exclusion approach in this walkthrough (asimov /tmutil addexclusion) only slims your final backed-up output — what gets copied to an external backup drive. It does NOT reduce ongoing disk usage from macOS local snapshots, which is the thing that actually fills your disk during agent
| Make a word-cloud of my favorite short Claude Code prompts. | |
| 1. Scan every `.jsonl` under `~/.claude/projects/`. Each line is one transcript event. | |
| 2. Keep only events with `type:"user"` whose `message.content` is a **string** (skip tool results, which are lists). Also skip events with `isCompactSummary:true` or `isVisibleInTranscriptOnly:true`. | |
| 3. Drop content that isn't a user keystroke: | |
| - anything starting with `<` followed by a lowercase tag — e.g. `<bash-input>`, `<command-name>`, `<command-message>`, `<command-args>`, `<command-stdout>`, `<command-stderr>`, `<local-command-stdout>`, `<bash-stdout>`, `<bash-stderr>`, `<system-reminder>`, `<user-memory-input>`, `<ide_*>` | |
| - anything starting with `/` (slash commands like `/clear`) | |
| - system echoes: `[Request interrupted ...]`, `unknown command: ...` | |
| 4. Normalize: lowercase, collapse whitespace, strip trailing `.,;:!?`. Track the `sessionId` for each occurrence. | |
| 5. Within each transcript file, sort events by timestamp and collapse runs of the same n |
| #!/bin/bash | |
| # Setup script for running Gemini through Claude Code Router (macOS) | |
| # https://github.com/wbern/claude-code-router | |
| set -e | |
| echo "🚀 Setting up Gemini for Claude Code..." | |
| # Check if CCR is installed | |
| if ! command -v ccr &> /dev/null; then |
| { | |
| "alwaysThinkingEnabled": false, | |
| "includeCoAuthoredBy": false, | |
| "permissions": { | |
| "allow": [ | |
| "Bash(git config:*)", | |
| "Bash(git log:*)", | |
| "Bash(git status:*)", | |
| "Bash(git diff:*)", | |
| "Bash(git branch:*)", |
| alias maud='ide="${CLAUDE_IDE:-code}" && dir=$(mktemp -d) && echo "# Temporary Claude Session | |
| This instance was initiated in a temporary directory and will be pruned eventually. | |
| When working with js, typically we work with pnpm, vitest, if needed react and playwright | |
| If you want to continue somewhere more permanent, use \`laud\` to copy this directory to ~/keeps/ with a timestamp." > "$dir/CLAUDE.md" && mkdir -p "$dir/.vscode" && echo "{ | |
| \"version\": \"2.0.0\", | |
| \"tasks\": [ | |
| { |
| #!/bin/node | |
| // Script bumps caniuse-lite in common/config/rush/pnpm-lock.yaml | |
| const path = require("path"); | |
| const fs = require("fs"); | |
| const { execSync } = require("child_process"); | |
| async function main() { | |
| const repoRoot = path.join(__dirname, "../"); |
| import { getCommand } from "./lib"; | |
| import { printCommand } from "./util"; | |
| import process from "process"; | |
| function main() { | |
| const [ | |
| // eslint-disable-next-line @typescript-eslint/no-unused-vars | |
| _, | |
| // eslint-disable-next-line @typescript-eslint/no-unused-vars | |
| __, |
| # will become: rush build --to @org/project1 --to @org/project2 etc.. | |
| "\$(sh ./changed-rush-projects \"node common/scripts/install-run-rush.js --debug build\")" | |
| stage('Deploy: rush version + publish to npm') { | |
| sshagent(credentials: ['jenkins']) { | |
| if(SHALLOW_CLONE) { | |
| // we need to "unshallow" the git repo for rush publishing/verification purposes | |
| sh "git fetch --unshallow" | |
| } | |
| if("$BRANCH_NAME" == "master") { | |
| // We are on the master branch, so publish the projects from rush.json |