Skip to content
TalentedHobbyistshome
← All open projects

Claude Projects Launcher

active

2026-07 · macos · claude-code · automation · developer-tools · svg

Desktop icons that reopen each project's Claude Code session where it left off.

Grid of nine rounded-square app icons on a dark background, each labeled with its project name in monospace.
The Desktop folder's icon set — seven hand-drawn project marks plus two generated initial tiles
Dark terminal-style card showing a nine-line zsh script for the hackrf project.
The generated script behind one icon — title the window, cd, resume the latest conversation or start fresh
Dark terminal-style card showing commented bash with a while loop and a JSON heredoc.
Core of the journal-enforcement hook — resolve the project root, check staleness, emit a block decision

What it is

Hobby projects go quiet for weeks, and coming back means re-explaining everything to your tools. This is a macOS launcher: a Desktop folder with one double-clickable app per project. Each icon opens a Terminal window where Claude Code resumes that project’s most recent conversation, and a hook system forces a dated journal so project state survives gaps and machine switches.

Why it exists

Restarting a project that sat idle for a month cost more than the work itself. The fix worth having was one double-click that lands mid-conversation.

What it does today

  • Generates one macOS app bundle per folder in ~/Documents — 11 right now, plus a “Rebuild launchers” app. Double-click resumes the project’s latest Claude Code conversation, or starts fresh if it has none.
  • Per-project icons drawn as SVG (Scalable Vector Graphics) sources; 7 projects have custom marks, the rest get a generated tile (initial on a color hashed from the project name).
  • A stop hook blocks Claude Code from ending a turn in any project whose PROGRESS.md journal is missing or more than 10 minutes stale; a prompt hook injects a per-turn reminder to keep journaling as work happens.
  • Session transcripts are kept 10 years instead of the 30-day default. Windows are titled by project; sessions open in auto-accept-edits permission mode.
  • install.py replicates the full setup on a new machine — hooks, settings merge, journal seeding, launcher build — and is safe to rerun after every pull.

Under the hood

One Python 3 standard-library script writes the app bundles: a property list, a shell trampoline, and a .command file handed to Terminal, which sidesteps macOS automation permission prompts entirely. Icons render through librsvg and iconutil; the hooks are plain bash reading JSON on standard input.

State & direction

  • In daily use on one machine; the second-machine install path exists but hasn’t been exercised on real second hardware yet.
  • Known limit: conversation history and memory are per-machine. The enforced journal is the cross-machine state, which is why it’s enforced.
  • No roadmap beyond drawing icons for new projects as they appear.
// Contact

Tell us what you’re trying to do.

We’ll get back to you.