After months of daily Claude Code sessions, I had a nagging suspicion I'd optimized myself into a rut — same prompting habits, same patterns, just faster. Anthropic published a study in February (9,830 conversations, 11 observable collaboration behaviors) and I wanted to know what my own distribution looked like against that baseline. More specifically: which of those 11 behaviors do I never touch?
So I built skill-tree-ai. It reads your Claude Code or Cowork session history, classifies each of the 11 behaviors from Anthropic's AI Fluency Index, assigns you one of seven archetype cards (rendered as tarot cards with curated museum art), and picks one behavior you've been skipping as a growth quest for your next session. The behavior taxonomy comes from Dakan & Feller's 4D AI Fluency Framework — three axes are classifiable from chat logs (Description, Discernment, Delegation); the fourth, Diligence, isn't visible there.
The part worth writing about is a state-path problem Cowork forced on me.
The growth quest persists across sessions — that's the whole point, it shouldn't reset every time you open a new chat. In Claude Code this is straightforward: write state to ~/.skill-tree/, which is durable. Cowork's $HOME is ephemeral. It resets between sessions, so a naive implementation loses the quest every time.
The fix is a dual-path design. Claude Code resolves to ~/.skill-tree/ as before. Cowork gets $CLAUDE_PLUGIN_ROOT/.user-state/ — that directory lives under the plugin root, which Cowork does preserve. The SessionStart hook checks which runtime it's in and routes accordingly. It's about 15 lines of path-selection logic, but without it the persistence feature simply doesn't work in one of the two environments.
# Claude Code
claude plugin marketplace add robertnowell/ai-fluency-skill-cards
claude plugin install skill-tree-ai@ai-fluency-skill-cards
# Cowork: install skill-tree-ai.zip via the plugin panel
The full pipeline — find session files, extract user messages, classify remotely (Claude Haiku on Fly.io), assign archetype, synthesize narrative, render, return a stable URL — takes 30–60 seconds end-to-end. A live fixture is at skill-tree-ai.fly.dev/fixture/illuminator if you want to see what the card output looks like before running it on your own sessions. It's also available as an MCP server (npm install skill-tree-ai) for Cursor, VS Code, and Windsurf.
Top comments (0)