I built skill-tree to track which of Anthropic's 11 AI Fluency behaviors I actually use across Claude sessions — and to surface one I haven't tried as a growth quest for my next session. The quest needs to persist. That's where the environment complexity started.
Claude Code gives plugins a stable home directory. Writing state to ~/.skill-tree/ works fine. Claude Cowork does not — $HOME is ephemeral, wiped between sessions. Any plugin that writes a quest to ~/.skill-tree/quest.json on Cowork will silently lose it every time.
The fix was a dual-path design:
# Claude Code
~/.skill-tree/state.json
# Cowork
$CLAUDE_PLUGIN_ROOT/.user-state/state.json
$CLAUDE_PLUGIN_ROOT is the one directory Cowork keeps between sessions — it's where the plugin itself lives, so it can't be thrown away. The state file goes there instead.
At startup, skill-tree checks which runtime it's in and sets the state path accordingly. Both paths expose the same interface; the rest of the tool doesn't know or care which one it got.
def get_state_path() -> Path:
plugin_root = os.environ.get("CLAUDE_PLUGIN_ROOT")
if plugin_root:
# Cowork: $HOME is ephemeral, use plugin root instead
return Path(plugin_root) / ".user-state" / "state.json"
# Claude Code: stable home directory
return Path.home() / ".skill-tree" / "state.json"
The SessionStart hook reads this path on every new conversation and injects the active growth quest into context. Without the dual-path logic, Cowork users would get a fresh quest every session — which defeats the point of tracking behavior change over time.
The underlying analysis classifies the same 11 observable behaviors Anthropic used in their February 2026 study of 9,830 Claude conversations, assigns one of seven archetype cards (rendered as tarot cards with museum art — live example at skill-tree-ai.fly.dev/fixture/illuminator), and picks a behavior gap as the quest. The whole pipeline runs in 30–60 seconds and returns a stable URL.
Install in Claude Code:
claude plugin marketplace add robertnowell/ai-fluency-skill-cards
claude plugin install skill-tree-ai@ai-fluency-skill-cards
For Cowork, drop skill-tree-ai.zip into the plugin manager. For Cursor, VS Code, or Windsurf, the MCP server is on npm as skill-tree-ai.
Top comments (0)