Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
.worktrees/
.parallel-context.md

# Session analytics data (generated by MCP server)
home/.claude/contrib/analytics/
# MCP server runtime data (databases, logs)
home/.claude/contrib/agent-event-bus/
home/.claude/contrib/agent-session-analytics/

# Zellij saved layouts (machine-specific snapshots, but keep default.kdl)
home/.config/zellij/layouts/*
Expand Down
22 changes: 11 additions & 11 deletions docs/case-study.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Add tools to `settings.json` only after repeated use. The permission prompt surf

```bash
# Review permission denials weekly
session-analytics-cli permissions --days 7 --min-count 5
agent-session-analytics-cli permissions --days 7 --min-count 5
```

### 8. Self-Play API Testing
Expand Down Expand Up @@ -192,9 +192,9 @@ Three repositories power this case study:

**[dotfiles](https://github.com/evansenter/dotfiles) (control plane):** Workflows, commands, hooks that propagate to all sessions instantly.

**[claude-event-bus](https://github.com/evansenter/claude-event-bus) (coordinate):** Cross-session communication via polling.
**[agent-event-bus](https://github.com/evansenter/agent-event-bus) (coordinate):** Cross-session communication via polling.

**[claude-session-analytics](https://github.com/evansenter/claude-session-analytics) (insight):** Mines session logs for patterns.
**[agent-session-analytics](https://github.com/evansenter/agent-session-analytics) (insight):** Mines session logs for patterns.

### Projects Under Development

Expand Down Expand Up @@ -307,8 +307,8 @@ This document itself is an experiment result. Each Repository Details section wa
| Repository | PRs (open/merged) | Issues (open/closed) | LoC | +/- Lines |
|------------|-------------------|----------------------|-----|-----------|
| dotfiles | 0/114 | 5/51 | 6K Shell | +6.4K/-3.8K |
| claude-event-bus | 0/41 | 7/22 | 6K Python | +6.1K/-3.0K |
| claude-session-analytics | 0/30 | 4/19 | 12K Python | +19.0K/-1.8K |
| agent-event-bus | 0/41 | 7/22 | 6K Python | +6.1K/-3.0K |
| agent-session-analytics | 0/30 | 4/19 | 12K Python | +19.0K/-1.8K |

**Projects Under Development:**

Expand All @@ -327,12 +327,12 @@ _Data available since December 30, 2025 (when session logging began via the sess

| Metric | Value | Source |
|--------|-------|--------|
| Sessions | 258 | `session-analytics-cli sessions --days 17` |
| Tool invocations | 33,073 | `session-analytics-cli frequency --days 17` |
| Input tokens | 10.0M | `session-analytics-cli tokens --days 17` |
| Output tokens | 10.9M | `session-analytics-cli tokens --days 17` |
| Cache read | 9.7B | `session-analytics-cli tokens --days 17` |
| Cache creation | 658M | `session-analytics-cli tokens --days 17` |
| Sessions | 258 | `agent-session-analytics-cli sessions --days 17` |
| Tool invocations | 33,073 | `agent-session-analytics-cli frequency --days 17` |
| Input tokens | 10.0M | `agent-session-analytics-cli tokens --days 17` |
| Output tokens | 10.9M | `agent-session-analytics-cli tokens --days 17` |
| Cache read | 9.7B | `agent-session-analytics-cli tokens --days 17` |
| Cache creation | 658M | `agent-session-analytics-cli tokens --days 17` |
| Cache ratio | 15:1 | cache_read / cache_creation |

**Regenerate:** `~/.claude/contrib/repo-stats.sh --days 17 --session-stats`
Expand Down
4 changes: 2 additions & 2 deletions home/.claude/agents/status-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ gh issue list --state open --limit 20 --json number,title,labels

```
# Lightweight analytics - avoid heavy per-session data
mcp__session-analytics__analyze_trends(days=1) # Aggregate stats, not per-session
mcp__session-analytics__get_permission_gaps(days=1, min_count=3)
mcp__agent-session-analytics__analyze_trends(days=1) # Aggregate stats, not per-session
mcp__agent-session-analytics__get_permission_gaps(days=1, min_count=3)
mcp__event-bus__list_sessions()
mcp__event-bus__get_events(limit=10)
```
Expand Down
2 changes: 1 addition & 1 deletion home/.claude/commands/session-dump.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ session_id = current_session.session_id
### 3. Get Messages

```
mcp__session-analytics__get_session_messages(
mcp__agent-session-analytics__get_session_messages(
days=1,
limit=<parsed limit>,
session_id=<session_id or null if cross_session>
Expand Down
14 changes: 7 additions & 7 deletions home/.claude/contrib/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ MCP servers store their data under subdirectories here:

| Directory | MCP Server | Purpose |
|-----------|------------|---------|
| `analytics/` | [session-analytics](https://github.com/evansenter/claude-session-analytics) | Session log analysis and workflow insights |
| `event-bus/` | [event-bus](https://github.com/evansenter/claude-event-bus) | Cross-session communication and coordination |
| `agent-session-analytics/` | [agent-session-analytics](https://github.com/evansenter/agent-session-analytics) | Session log analysis and workflow insights |
| `agent-event-bus/` | [agent-event-bus](https://github.com/evansenter/agent-event-bus) | Cross-session communication and coordination |

## Scripts

- `repo-stats.sh` - Show codebase size (LoC) and recent activity across repositories

## Session Analytics CLI

The `session-analytics-cli` provides command-line access to workflow insights. Key commands:
The `agent-session-analytics-cli` provides command-line access to workflow insights. Key commands:

| Command | Description |
|---------|-------------|
Expand All @@ -34,12 +34,12 @@ The `session-analytics-cli` provides command-line access to workflow insights. K

**Usage:**
```bash
session-analytics-cli <command> [--days N] [--project PATH]
agent-session-analytics-cli <command> [--days N] [--project PATH]
```

**Examples:**
```bash
session-analytics-cli frequency --days 7
session-analytics-cli agents --days 3
session-analytics-cli failures --days 1
agent-session-analytics-cli frequency --days 7
agent-session-analytics-cli agents --days 3
agent-session-analytics-cli failures --days 1
```
22 changes: 11 additions & 11 deletions home/.claude/contrib/compute-api-cost.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
# compute-api-cost.sh - Calculate estimated API costs from session-analytics data
# compute-api-cost.sh - Calculate estimated API costs from agent-session-analytics data
#
# Usage: compute-api-cost.sh [--days N] [--json]
#
Expand Down Expand Up @@ -33,7 +33,7 @@ usage() {
cat <<EOF
Usage: $(basename "$0") [OPTIONS]

Calculate estimated API costs from session-analytics token data.
Calculate estimated API costs from agent-session-analytics token data.

Options:
--days N Number of days to analyze (default: 17)
Expand Down Expand Up @@ -69,20 +69,20 @@ while [[ $# -gt 0 ]]; do
esac
done

# Get token data using session-analytics CLI
# Get token data using agent-session-analytics CLI
get_token_data() {
local cli_path=""

# Find CLI - check common locations
if command -v session-analytics-cli &>/dev/null; then
cli_path="session-analytics-cli"
elif [[ -x "$HOME/Documents/projects/claude-session-analytics/.venv/bin/session-analytics-cli" ]]; then
cli_path="$HOME/Documents/projects/claude-session-analytics/.venv/bin/session-analytics-cli"
elif [[ -x "$HOME/.local/bin/session-analytics-cli" ]]; then
cli_path="$HOME/.local/bin/session-analytics-cli"
if command -v agent-session-analytics-cli &>/dev/null; then
cli_path="agent-session-analytics-cli"
elif [[ -x "$HOME/Documents/projects/agent-session-analytics/.venv/bin/agent-session-analytics-cli" ]]; then
cli_path="$HOME/Documents/projects/agent-session-analytics/.venv/bin/agent-session-analytics-cli"
elif [[ -x "$HOME/.local/bin/agent-session-analytics-cli" ]]; then
cli_path="$HOME/.local/bin/agent-session-analytics-cli"
else
echo "Error: session-analytics-cli not found" >&2
echo "Install from: https://github.com/evansenter/claude-session-analytics" >&2
echo "Error: agent-session-analytics-cli not found" >&2
echo "Install from: https://github.com/evansenter/agent-session-analytics" >&2
exit 1
fi

Expand Down
18 changes: 9 additions & 9 deletions home/.claude/contrib/repo-stats.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ DAYS=30
SESSION_STATS=0
OWNER="evansenter"
LOCAL_DIR="$HOME/Documents/projects"
DEFAULT_REPOS="dotfiles gemicro claude-event-bus claude-session-analytics rust-genai"
DEFAULT_REPOS="dotfiles gemicro agent-event-bus agent-session-analytics rust-genai"
REPOS=""

# Check for scc
HAS_SCC=$(command -v scc >/dev/null 2>&1 && echo "1" || echo "0")

# Check for session-analytics CLI
SESSION_CLI=""
if [[ -x "$HOME/Documents/projects/claude-session-analytics/.venv/bin/session-analytics-cli" ]]; then
SESSION_CLI="$HOME/Documents/projects/claude-session-analytics/.venv/bin/session-analytics-cli"
elif command -v session-analytics-cli >/dev/null 2>&1; then
SESSION_CLI="session-analytics-cli"
if [[ -x "$HOME/Documents/projects/agent-session-analytics/.venv/bin/agent-session-analytics-cli" ]]; then
SESSION_CLI="$HOME/Documents/projects/agent-session-analytics/.venv/bin/agent-session-analytics-cli"
elif command -v agent-session-analytics-cli >/dev/null 2>&1; then
SESSION_CLI="agent-session-analytics-cli"
fi

# Parse arguments
Expand Down Expand Up @@ -56,11 +56,11 @@ while [[ $# -gt 0 ]]; do
echo " --days N Look back N days (default: 30)"
echo " --owner NAME GitHub owner (default: evansenter)"
echo " --local-dir DIR Local repos directory (default: ~/Documents/projects)"
echo " --session-stats Include Claude Code session analytics"
echo " --session-stats Include Agent Session Analytics"
echo ""
echo "If repos are specified, uses those instead of defaults."
echo "Uses 'scc' for accurate LoC if installed and repos exist locally."
echo "Uses 'session-analytics-cli' for session stats if available."
echo "Uses 'agent-session-analytics-cli' for session stats if available."
exit 0
;;
*)
Expand Down Expand Up @@ -430,7 +430,7 @@ if [[ "$SESSION_STATS" == "1" ]]; then
echo ""
echo "### Session Analytics"
echo ""
echo "_session-analytics-cli not found. Install from claude-session-analytics repo._"
echo "_agent-session-analytics-cli not found. Install from agent-session-analytics repo._"
else
echo ""
echo "### Session Analytics"
Expand Down Expand Up @@ -505,6 +505,6 @@ if [[ "$SESSION_STATS" == "1" ]]; then
"$(printf '─%.0s' $(seq 1 $((sw2 + 2))))"

echo ""
echo "_Source: session-analytics-cli (last ${DAYS}d)_"
echo "_Source: agent-session-analytics-cli (last ${DAYS}d)_"
fi
fi
6 changes: 3 additions & 3 deletions home/.claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@
"Bash(uv:*)",
"Bash(agent-event-bus-cli:*)",
"Bash(~/.local/bin/agent-event-bus-cli:*)",
"Bash(session-analytics-cli:*)",
"Bash(.venv/bin/session-analytics-cli:*)",
"Bash(agent-session-analytics-cli:*)",
"Bash(.venv/bin/agent-session-analytics-cli:*)",
"Bash(sqlite3:*)",
"Bash(launchctl:*)",
"Bash(claude:*)",
Expand All @@ -118,7 +118,7 @@
"Bash(touch:*)",
"Bash(rg:*)",
"Bash(PYTHONPATH=*:*)",
"Bash(*/session-analytics-cli:*)"
"Bash(*/agent-session-analytics-cli:*)"
],
"defaultMode": "default"
},
Expand Down