Update SSH instructions to use aliases, fix tea --repo flag, sync plugins/mcp

- CLAUDE.md: SSH section now mandates aliases from ~/.ssh/config instead of manual commands
- CLAUDE.md: Gitea tea CLI always passes --repo owner/name to avoid detection failures
- MCP manager skill updates
- Plugin blocklist and marketplace updates
- Settings and MCP config sync

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Cal Corum 2026-02-19 22:12:49 -06:00
parent 92545d40de
commit 42d180ec82
16 changed files with 2954 additions and 2821 deletions

23
.mcp-full.json Normal file
View File

@ -0,0 +1,23 @@
{
"mcpServers": {
"cognitive-memory": {
"command": "/home/cal/.claude/skills/cognitive-memory/mcp-server/cognitive-memory-mcp",
"type": "stdio",
"args": [],
"env": {}
},
"n8n-mcp": {
"command": "npx",
"type": "stdio",
"args": ["n8n-mcp"],
"env": {
"MCP_MODE": "stdio",
"N8N_API_URL": "http://10.10.0.210:5678",
"N8N_API_KEY": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwNGQ1MTNhYi1lOGI1LTQxZjktYmNjNi05MTM1MzgyYzQ0YWEiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzcxNTU3ODMwfQ.PF6AatWZh8hwyUydT8UsJ16ML61XFTixj2IvuP9MRzo",
"N8N_MCP_TELEMETRY_DISABLED": "true",
"DISABLE_CONSOLE_OUTPUT": "true",
"LOG_LEVEL": "error"
}
}
}
}

23
.mcp.json Normal file
View File

@ -0,0 +1,23 @@
{
"mcpServers": {
"cognitive-memory": {
"command": "/home/cal/.claude/skills/cognitive-memory/mcp-server/cognitive-memory-mcp",
"type": "stdio",
"args": [],
"env": {}
},
"n8n-mcp": {
"command": "npx",
"type": "stdio",
"args": ["n8n-mcp"],
"env": {
"MCP_MODE": "stdio",
"N8N_API_URL": "http://10.10.0.210:5678",
"N8N_API_KEY": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwNGQ1MTNhYi1lOGI1LTQxZjktYmNjNi05MTM1MzgyYzQ0YWEiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzcxNTU3ODMwfQ.PF6AatWZh8hwyUydT8UsJ16ML61XFTixj2IvuP9MRzo",
"N8N_MCP_TELEMETRY_DISABLED": "true",
"DISABLE_CONSOLE_OUTPUT": "true",
"LOG_LEVEL": "error"
}
}
}
}

10
.mcp.json.backup Normal file
View File

@ -0,0 +1,10 @@
{
"mcpServers": {
"cognitive-memory": {
"command": "/home/cal/.claude/skills/cognitive-memory/mcp-server/cognitive-memory-mcp",
"type": "stdio",
"args": [],
"env": {}
}
}
}

View File

@ -16,9 +16,10 @@ Automatic loads are NOT enough — Read loads required CLAUDE.md context along t
## Gitea Operations
**ALWAYS use `tea` CLI for Gitea.** Never use `gh api --hostname`.
- Authenticated: `cal@homelab` (https://git.manticorum.com)
- Common: `tea repos list`, `tea pulls list`, `tea issues list`
- Create PR: `tea pulls create --head <branch> --base main --title "Title" --description "Desc"`
- Common repos: cal/major-domo-database, cal/major-domo-bot, cal/paper-dynasty, cal/paper-dynasty-database
- **Always pass `--repo owner/name`** — tea can't auto-detect the repo from git remotes and fails with "path segment is empty"
- Common: `tea repos list`, `tea pulls list --repo cal/repo`, `tea issues list --repo cal/repo`
- Create PR: `tea pulls create --repo cal/repo --head <branch> --base main --title "Title" --description "Desc"`
- Common repos: cal/major-domo-v2, cal/major-domo-database, cal/major-domo-bot, cal/paper-dynasty, cal/paper-dynasty-database
## Tech Preferences
- Python with uv for package/environment management
@ -26,9 +27,11 @@ Automatic loads are NOT enough — Read loads required CLAUDE.md context along t
- Never add lazy imports to middle of file
## SSH
- Use `ssh -i ~/.ssh/homelab_rsa cal@<host>` for homelab servers (10.10.0.x)
- Use `ssh -i ~/.ssh/cloud_servers_rsa root@<host>` for cloud servers (Akamai, Vultr)
- Keys are installed on every server — never use passwords or expect password prompts
**ALWAYS use SSH aliases from `~/.ssh/config` — NEVER construct manual `ssh -i` commands.**
- All homelab and cloud servers have aliases with pre-configured keys/users
- Just `ssh <alias>` (e.g. `ssh sba-db`, `ssh proxmox`, `ssh manticore`)
- If unsure of an alias, read `~/.ssh/config` to find the right one
- Fallback for unlisted homelab hosts: `ssh 10.10.0.x` (wildcard rule handles key/user)
## Memory Protocol (Cognitive Memory)
- Skill: `~/.claude/skills/cognitive-memory/` | Data: `~/.claude/memory/`

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
{
"numStartups": 663,
"numStartups": 670,
"installMethod": "native",
"autoUpdates": true,
"preferredNotifChannel": "iterm2_with_bell",
@ -12,24 +12,24 @@
"todo-list": 660,
"# for memory": 38,
"install-github-app": 663,
"permissions": 654,
"drag-and-drop-images": 659,
"permissions": 664,
"drag-and-drop-images": 669,
"double-esc": 75,
"continue": 655,
"continue": 665,
"ide-hotkey": 74,
"terminal-setup": 29,
"custom-commands": 655,
"shift-enter": 661,
"shift-tab": 655,
"shift-tab": 665,
"custom-agents": 663,
"status-line": 536,
"git-worktrees": 661,
"image-paste": 646,
"image-paste": 666,
"plan-mode-for-complex-tasks": 384,
"double-esc-code-restore": 654,
"double-esc-code-restore": 664,
"tab-toggle-thinking": 329,
"ultrathink-keyword": 423,
"ide-upsell-external-terminal": 646,
"ide-upsell-external-terminal": 668,
"stickers-command": 416,
"default-permission-mode-config": 436,
"rename-conversation": 655,
@ -39,12 +39,12 @@
"colorterm-truecolor": 638,
"web-app": 657,
"mobile-app": 657,
"install-slack-app": 656,
"install-slack-app": 666,
"btw-side-question": 407,
"agent-flag": 652
"agent-flag": 667
},
"memoryUsageCount": 18,
"promptQueueUseCount": 4517,
"promptQueueUseCount": 4558,
"cachedStatsigGates": {
"tengu_disable_bypass_permissions_mode": false,
"tengu_use_file_checkpoints": true,
@ -144,7 +144,7 @@
"tengu_vinteuil_phrase": true,
"tengu_oboe": true,
"tengu_tst_names_in_messages": false,
"tengu_chomp_inflection": false,
"tengu_chomp_inflection": true,
"tengu_silver_lantern": false,
"tengu_copper_lantern": false,
"tengu_workout2": true,
@ -177,7 +177,14 @@
"tengu_slate_nexus": false,
"tengu_marble_sandcastle": true,
"tengu_birch_mist": false,
"tengu_oak_drum": false
"tengu_oak_drum": false,
"tengu_worktree_mode": true,
"tengu_pebble_leaf_prune": false,
"tengu_swann_brevity": "control",
"tengu_crystal_beam": {
"budgetTokens": 0
},
"tengu_tool_input_aliasing": false
},
"hasSeenStashHint": true,
"firstStartTime": "2025-07-09T18:27:34.950Z",
@ -615,17 +622,17 @@
"ssh-tdarr",
"notediscovery"
],
"lastCost": 40.23374199999994,
"lastAPIDuration": 5995420,
"lastToolDuration": 2896147,
"lastDuration": 20374119,
"lastLinesAdded": 2594,
"lastLinesRemoved": 143,
"lastTotalInputTokens": 747870,
"lastTotalOutputTokens": 224482,
"lastTotalCacheCreationInputTokens": 1751354,
"lastTotalCacheReadInputTokens": 47009653,
"lastSessionId": "606a9f26-d08c-4654-8a9a-e118a2735aaa",
"lastCost": 16.71361575000001,
"lastAPIDuration": 1844582,
"lastToolDuration": 816971,
"lastDuration": 29558088,
"lastLinesAdded": 2386,
"lastLinesRemoved": 60,
"lastTotalInputTokens": 203907,
"lastTotalOutputTokens": 87182,
"lastTotalCacheCreationInputTokens": 987411,
"lastTotalCacheReadInputTokens": 16492670,
"lastSessionId": "ee8998aa-f26c-4743-84dc-0ba35f4e49c4",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -633,44 +640,44 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 4961513,
"lastAPIDurationWithoutRetries": 1843027,
"lastModelUsage": {
"claude-opus-4-6": {
"inputTokens": 9124,
"outputTokens": 164889,
"cacheReadInputTokens": 44348975,
"cacheCreationInputTokens": 1408982,
"inputTokens": 7030,
"outputTokens": 57045,
"cacheReadInputTokens": 14601090,
"cacheCreationInputTokens": 789421,
"webSearchRequests": 0,
"costUSD": 35.148469999999996
"costUSD": 13.695701250000003
},
"claude-haiku-4-5-20251001": {
"inputTokens": 732883,
"outputTokens": 15034,
"inputTokens": 196822,
"outputTokens": 4750,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 67247,
"cacheCreationInputTokens": 4167,
"webSearchRequests": 0,
"costUSD": 0.892111749999999
"costUSD": 0.22578074999999995
},
"claude-sonnet-4-6": {
"inputTokens": 5863,
"outputTokens": 44559,
"cacheReadInputTokens": 2660678,
"cacheCreationInputTokens": 275125,
"inputTokens": 55,
"outputTokens": 25387,
"cacheReadInputTokens": 1891580,
"cacheCreationInputTokens": 193823,
"webSearchRequests": 0,
"costUSD": 4.19316025
"costUSD": 2.7921337499999996
}
},
"lastSessionMetrics": {
"frame_duration_ms_count": 126433,
"frame_duration_ms_min": 0.033378999680280685,
"frame_duration_ms_max": 185.3289749994874,
"frame_duration_ms_avg": 4.580825976891975,
"frame_duration_ms_p50": 1.4972434998489916,
"frame_duration_ms_p95": 3.451200450630833,
"frame_duration_ms_p99": 90.20297368977218
"frame_duration_ms_count": 35110,
"frame_duration_ms_min": 0.10013899999830755,
"frame_duration_ms_max": 45.71880799904466,
"frame_duration_ms_avg": 1.8384896022149897,
"frame_duration_ms_p50": 0.9785875007510185,
"frame_duration_ms_p95": 9.048351652547707,
"frame_duration_ms_p99": 25.241195021457933
},
"lastFpsAverage": 6.12,
"lastFpsLow1Pct": 11.02
"lastFpsAverage": 1.19,
"lastFpsLow1Pct": 43.16
},
"/mnt/NV2/Development/major-domo": {
"allowedTools": [],
@ -1082,17 +1089,17 @@
"exampleFilesGeneratedAt": 1771431800882,
"hasCompletedProjectOnboarding": true,
"lastTotalWebSearchRequests": 0,
"lastCost": 0.000711,
"lastAPIDuration": 823,
"lastToolDuration": 0,
"lastDuration": 6284,
"lastLinesAdded": 0,
"lastLinesRemoved": 0,
"lastTotalInputTokens": 536,
"lastTotalOutputTokens": 35,
"lastTotalCacheCreationInputTokens": 0,
"lastTotalCacheReadInputTokens": 0,
"lastSessionId": "a20b0e55-c4ef-4a74-a352-c1c7e29dcecd",
"lastCost": 13.231698250000006,
"lastAPIDuration": 891789,
"lastToolDuration": 132172,
"lastDuration": 18087965,
"lastLinesAdded": 263,
"lastLinesRemoved": 7,
"lastTotalInputTokens": 77295,
"lastTotalOutputTokens": 35442,
"lastTotalCacheCreationInputTokens": 1044639,
"lastTotalCacheReadInputTokens": 11865821,
"lastSessionId": "ace0ec70-77ed-44a1-806a-904ce665899a",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -1100,27 +1107,43 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 822,
"lastAPIDurationWithoutRetries": 891685,
"lastModelUsage": {
"claude-haiku-4-5-20251001": {
"inputTokens": 536,
"outputTokens": 35,
"inputTokens": 71834,
"outputTokens": 2746,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 0,
"cacheCreationInputTokens": 32095,
"webSearchRequests": 0,
"costUSD": 0.000711
"costUSD": 0.12568275000000004
},
"claude-opus-4-6": {
"inputTokens": 5448,
"outputTokens": 27103,
"cacheReadInputTokens": 11539293,
"cacheCreationInputTokens": 945261,
"webSearchRequests": 0,
"costUSD": 12.38234275
},
"claude-sonnet-4-6": {
"inputTokens": 13,
"outputTokens": 5593,
"cacheReadInputTokens": 326528,
"cacheCreationInputTokens": 67283,
"webSearchRequests": 0,
"costUSD": 0.72367275
}
},
"lastFpsAverage": 6.68,
"lastFpsLow1Pct": 219.22,
"lastFpsAverage": 0.78,
"lastFpsLow1Pct": 25.74,
"lastSessionMetrics": {
"frame_duration_ms_count": 38,
"frame_duration_ms_min": 0.0733989999998812,
"frame_duration_ms_max": 4.561674999999923,
"frame_duration_ms_avg": 1.2307077105262876,
"frame_duration_ms_p50": 1.1626314999998613,
"frame_duration_ms_p95": 2.57251919999976,
"frame_duration_ms_p99": 3.884495079999988
"frame_duration_ms_count": 14187,
"frame_duration_ms_min": 0.08366899937391281,
"frame_duration_ms_max": 68.00957799889147,
"frame_duration_ms_avg": 2.3383289160528014,
"frame_duration_ms_p50": 1.0047624995931983,
"frame_duration_ms_p95": 13.091784298792101,
"frame_duration_ms_p99": 38.75486159028485
}
},
"/mnt/NV2/Development/efd-trading-card-base": {
@ -1999,12 +2022,12 @@
"lastOnboardingVersion": "2.0.13",
"subscriptionNoticeCount": 0,
"hasAvailableSubscription": false,
"changelogLastFetched": 1771459754216,
"changelogLastFetched": 1771560193427,
"fallbackAvailableWarningThreshold": 0.2,
"hasIdeOnboardingBeenShown": {
"vscode": true
},
"lastReleaseNotesSeen": "2.1.47",
"lastReleaseNotesSeen": "2.1.49",
"isQualifiedForDataSharing": false,
"hasIdeAutoConnectDialogBeenShown": true,
"shiftEnterKeyBindingInstalled": true,
@ -2105,7 +2128,7 @@
"currency": "USD"
},
"remaining_passes": 3,
"timestamp": 1771535572741
"timestamp": 1771560445046
}
},
"opus45MigrationComplete": true,
@ -2124,8 +2147,8 @@
},
"skillUsage": {
"major-domo": {
"usageCount": 12,
"lastUsedAt": 1771288623314
"usageCount": 13,
"lastUsedAt": 1771556414365
},
"paper-dynasty": {
"usageCount": 12,
@ -2188,8 +2211,8 @@
"lastUsedAt": 1770959377885
},
"sync-config": {
"usageCount": 23,
"lastUsedAt": 1771539236539
"usageCount": 25,
"lastUsedAt": 1771539739755
},
"claude-optimised": {
"usageCount": 4,
@ -2200,8 +2223,8 @@
"lastUsedAt": 1771199427014
},
"cognitive-memory": {
"usageCount": 32,
"lastUsedAt": 1771528594878
"usageCount": 35,
"lastUsedAt": 1771560320138
},
"commit-push": {
"usageCount": 17,
@ -2216,12 +2239,12 @@
"lastUsedAt": 1771364503659
},
"commit-push-pr": {
"usageCount": 2,
"lastUsedAt": 1771371630347
"usageCount": 4,
"lastUsedAt": 1771559391826
},
"mcp-manager": {
"usageCount": 3,
"lastUsedAt": 1771450174507
"usageCount": 5,
"lastUsedAt": 1771558943126
},
"orchestrator": {
"usageCount": 3,
@ -2236,8 +2259,8 @@
"lastUsedAt": 1771536951910
},
"save-memories": {
"usageCount": 4,
"lastUsedAt": 1771539598828
"usageCount": 7,
"lastUsedAt": 1771559941495
}
},
"opusProMigrationComplete": true,
@ -2246,7 +2269,7 @@
"passesLastSeenRemaining": 3,
"clientDataCache": {
"data": {},
"timestamp": 1771539617287
"timestamp": 1771560445433
},
"hasShownOpus46Notice": {
"57783733-6e1e-48d5-9cb7-fa588a77b795": true

View File

@ -1,5 +1,5 @@
{
"numStartups": 663,
"numStartups": 670,
"installMethod": "native",
"autoUpdates": true,
"preferredNotifChannel": "iterm2_with_bell",
@ -12,24 +12,24 @@
"todo-list": 660,
"# for memory": 38,
"install-github-app": 663,
"permissions": 654,
"drag-and-drop-images": 659,
"permissions": 664,
"drag-and-drop-images": 669,
"double-esc": 75,
"continue": 655,
"continue": 665,
"ide-hotkey": 74,
"terminal-setup": 29,
"custom-commands": 655,
"shift-enter": 661,
"shift-tab": 655,
"shift-tab": 665,
"custom-agents": 663,
"status-line": 536,
"git-worktrees": 661,
"image-paste": 646,
"image-paste": 666,
"plan-mode-for-complex-tasks": 384,
"double-esc-code-restore": 654,
"double-esc-code-restore": 664,
"tab-toggle-thinking": 329,
"ultrathink-keyword": 423,
"ide-upsell-external-terminal": 646,
"ide-upsell-external-terminal": 668,
"stickers-command": 416,
"default-permission-mode-config": 436,
"rename-conversation": 655,
@ -39,12 +39,12 @@
"colorterm-truecolor": 638,
"web-app": 657,
"mobile-app": 657,
"install-slack-app": 656,
"install-slack-app": 666,
"btw-side-question": 407,
"agent-flag": 652
"agent-flag": 667
},
"memoryUsageCount": 18,
"promptQueueUseCount": 4515,
"promptQueueUseCount": 4558,
"cachedStatsigGates": {
"tengu_disable_bypass_permissions_mode": false,
"tengu_use_file_checkpoints": true,
@ -144,7 +144,7 @@
"tengu_vinteuil_phrase": true,
"tengu_oboe": true,
"tengu_tst_names_in_messages": false,
"tengu_chomp_inflection": false,
"tengu_chomp_inflection": true,
"tengu_silver_lantern": false,
"tengu_copper_lantern": false,
"tengu_workout2": true,
@ -177,7 +177,14 @@
"tengu_slate_nexus": false,
"tengu_marble_sandcastle": true,
"tengu_birch_mist": false,
"tengu_oak_drum": false
"tengu_oak_drum": false,
"tengu_worktree_mode": true,
"tengu_pebble_leaf_prune": false,
"tengu_swann_brevity": "control",
"tengu_crystal_beam": {
"budgetTokens": 0
},
"tengu_tool_input_aliasing": false
},
"hasSeenStashHint": true,
"firstStartTime": "2025-07-09T18:27:34.950Z",
@ -615,17 +622,17 @@
"ssh-tdarr",
"notediscovery"
],
"lastCost": 40.23374199999994,
"lastAPIDuration": 5995420,
"lastToolDuration": 2896147,
"lastDuration": 20374119,
"lastLinesAdded": 2594,
"lastLinesRemoved": 143,
"lastTotalInputTokens": 747870,
"lastTotalOutputTokens": 224482,
"lastTotalCacheCreationInputTokens": 1751354,
"lastTotalCacheReadInputTokens": 47009653,
"lastSessionId": "606a9f26-d08c-4654-8a9a-e118a2735aaa",
"lastCost": 16.71361575000001,
"lastAPIDuration": 1844582,
"lastToolDuration": 816971,
"lastDuration": 29558088,
"lastLinesAdded": 2386,
"lastLinesRemoved": 60,
"lastTotalInputTokens": 203907,
"lastTotalOutputTokens": 87182,
"lastTotalCacheCreationInputTokens": 987411,
"lastTotalCacheReadInputTokens": 16492670,
"lastSessionId": "ee8998aa-f26c-4743-84dc-0ba35f4e49c4",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -633,44 +640,44 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 4961513,
"lastAPIDurationWithoutRetries": 1843027,
"lastModelUsage": {
"claude-opus-4-6": {
"inputTokens": 9124,
"outputTokens": 164889,
"cacheReadInputTokens": 44348975,
"cacheCreationInputTokens": 1408982,
"inputTokens": 7030,
"outputTokens": 57045,
"cacheReadInputTokens": 14601090,
"cacheCreationInputTokens": 789421,
"webSearchRequests": 0,
"costUSD": 35.148469999999996
"costUSD": 13.695701250000003
},
"claude-haiku-4-5-20251001": {
"inputTokens": 732883,
"outputTokens": 15034,
"inputTokens": 196822,
"outputTokens": 4750,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 67247,
"cacheCreationInputTokens": 4167,
"webSearchRequests": 0,
"costUSD": 0.892111749999999
"costUSD": 0.22578074999999995
},
"claude-sonnet-4-6": {
"inputTokens": 5863,
"outputTokens": 44559,
"cacheReadInputTokens": 2660678,
"cacheCreationInputTokens": 275125,
"inputTokens": 55,
"outputTokens": 25387,
"cacheReadInputTokens": 1891580,
"cacheCreationInputTokens": 193823,
"webSearchRequests": 0,
"costUSD": 4.19316025
"costUSD": 2.7921337499999996
}
},
"lastSessionMetrics": {
"frame_duration_ms_count": 126433,
"frame_duration_ms_min": 0.033378999680280685,
"frame_duration_ms_max": 185.3289749994874,
"frame_duration_ms_avg": 4.580825976891975,
"frame_duration_ms_p50": 1.4972434998489916,
"frame_duration_ms_p95": 3.451200450630833,
"frame_duration_ms_p99": 90.20297368977218
"frame_duration_ms_count": 35110,
"frame_duration_ms_min": 0.10013899999830755,
"frame_duration_ms_max": 45.71880799904466,
"frame_duration_ms_avg": 1.8384896022149897,
"frame_duration_ms_p50": 0.9785875007510185,
"frame_duration_ms_p95": 9.048351652547707,
"frame_duration_ms_p99": 25.241195021457933
},
"lastFpsAverage": 6.12,
"lastFpsLow1Pct": 11.02
"lastFpsAverage": 1.19,
"lastFpsLow1Pct": 43.16
},
"/mnt/NV2/Development/major-domo": {
"allowedTools": [],
@ -1082,17 +1089,17 @@
"exampleFilesGeneratedAt": 1771431800882,
"hasCompletedProjectOnboarding": true,
"lastTotalWebSearchRequests": 0,
"lastCost": 0.000711,
"lastAPIDuration": 823,
"lastToolDuration": 0,
"lastDuration": 6284,
"lastLinesAdded": 0,
"lastLinesRemoved": 0,
"lastTotalInputTokens": 536,
"lastTotalOutputTokens": 35,
"lastTotalCacheCreationInputTokens": 0,
"lastTotalCacheReadInputTokens": 0,
"lastSessionId": "a20b0e55-c4ef-4a74-a352-c1c7e29dcecd",
"lastCost": 13.231698250000006,
"lastAPIDuration": 891789,
"lastToolDuration": 132172,
"lastDuration": 18087965,
"lastLinesAdded": 263,
"lastLinesRemoved": 7,
"lastTotalInputTokens": 77295,
"lastTotalOutputTokens": 35442,
"lastTotalCacheCreationInputTokens": 1044639,
"lastTotalCacheReadInputTokens": 11865821,
"lastSessionId": "ace0ec70-77ed-44a1-806a-904ce665899a",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -1100,27 +1107,43 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 822,
"lastAPIDurationWithoutRetries": 891685,
"lastModelUsage": {
"claude-haiku-4-5-20251001": {
"inputTokens": 536,
"outputTokens": 35,
"inputTokens": 71834,
"outputTokens": 2746,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 0,
"cacheCreationInputTokens": 32095,
"webSearchRequests": 0,
"costUSD": 0.000711
"costUSD": 0.12568275000000004
},
"claude-opus-4-6": {
"inputTokens": 5448,
"outputTokens": 27103,
"cacheReadInputTokens": 11539293,
"cacheCreationInputTokens": 945261,
"webSearchRequests": 0,
"costUSD": 12.38234275
},
"claude-sonnet-4-6": {
"inputTokens": 13,
"outputTokens": 5593,
"cacheReadInputTokens": 326528,
"cacheCreationInputTokens": 67283,
"webSearchRequests": 0,
"costUSD": 0.72367275
}
},
"lastFpsAverage": 6.68,
"lastFpsLow1Pct": 219.22,
"lastFpsAverage": 0.78,
"lastFpsLow1Pct": 25.74,
"lastSessionMetrics": {
"frame_duration_ms_count": 38,
"frame_duration_ms_min": 0.0733989999998812,
"frame_duration_ms_max": 4.561674999999923,
"frame_duration_ms_avg": 1.2307077105262876,
"frame_duration_ms_p50": 1.1626314999998613,
"frame_duration_ms_p95": 2.57251919999976,
"frame_duration_ms_p99": 3.884495079999988
"frame_duration_ms_count": 14187,
"frame_duration_ms_min": 0.08366899937391281,
"frame_duration_ms_max": 68.00957799889147,
"frame_duration_ms_avg": 2.3383289160528014,
"frame_duration_ms_p50": 1.0047624995931983,
"frame_duration_ms_p95": 13.091784298792101,
"frame_duration_ms_p99": 38.75486159028485
}
},
"/mnt/NV2/Development/efd-trading-card-base": {
@ -1999,12 +2022,12 @@
"lastOnboardingVersion": "2.0.13",
"subscriptionNoticeCount": 0,
"hasAvailableSubscription": false,
"changelogLastFetched": 1771459754216,
"changelogLastFetched": 1771560193427,
"fallbackAvailableWarningThreshold": 0.2,
"hasIdeOnboardingBeenShown": {
"vscode": true
},
"lastReleaseNotesSeen": "2.1.47",
"lastReleaseNotesSeen": "2.1.49",
"isQualifiedForDataSharing": false,
"hasIdeAutoConnectDialogBeenShown": true,
"shiftEnterKeyBindingInstalled": true,
@ -2105,7 +2128,7 @@
"currency": "USD"
},
"remaining_passes": 3,
"timestamp": 1771535572741
"timestamp": 1771560445046
}
},
"opus45MigrationComplete": true,
@ -2124,8 +2147,8 @@
},
"skillUsage": {
"major-domo": {
"usageCount": 12,
"lastUsedAt": 1771288623314
"usageCount": 13,
"lastUsedAt": 1771556414365
},
"paper-dynasty": {
"usageCount": 12,
@ -2188,8 +2211,8 @@
"lastUsedAt": 1770959377885
},
"sync-config": {
"usageCount": 23,
"lastUsedAt": 1771539236539
"usageCount": 25,
"lastUsedAt": 1771539739755
},
"claude-optimised": {
"usageCount": 4,
@ -2200,8 +2223,8 @@
"lastUsedAt": 1771199427014
},
"cognitive-memory": {
"usageCount": 32,
"lastUsedAt": 1771528594878
"usageCount": 35,
"lastUsedAt": 1771560320138
},
"commit-push": {
"usageCount": 17,
@ -2216,12 +2239,12 @@
"lastUsedAt": 1771364503659
},
"commit-push-pr": {
"usageCount": 2,
"lastUsedAt": 1771371630347
"usageCount": 4,
"lastUsedAt": 1771559391826
},
"mcp-manager": {
"usageCount": 3,
"lastUsedAt": 1771450174507
"usageCount": 5,
"lastUsedAt": 1771558943126
},
"orchestrator": {
"usageCount": 3,
@ -2236,8 +2259,8 @@
"lastUsedAt": 1771536951910
},
"save-memories": {
"usageCount": 3,
"lastUsedAt": 1771539341903
"usageCount": 7,
"lastUsedAt": 1771559941495
}
},
"opusProMigrationComplete": true,
@ -2246,7 +2269,7 @@
"passesLastSeenRemaining": 3,
"clientDataCache": {
"data": {},
"timestamp": 1771539342029
"timestamp": 1771560509737
},
"hasShownOpus46Notice": {
"57783733-6e1e-48d5-9cb7-fa588a77b795": true

View File

@ -1,5 +1,5 @@
{
"numStartups": 663,
"numStartups": 670,
"installMethod": "native",
"autoUpdates": true,
"preferredNotifChannel": "iterm2_with_bell",
@ -12,39 +12,39 @@
"todo-list": 660,
"# for memory": 38,
"install-github-app": 663,
"permissions": 654,
"drag-and-drop-images": 659,
"permissions": 664,
"drag-and-drop-images": 669,
"double-esc": 75,
"continue": 655,
"continue": 665,
"ide-hotkey": 74,
"terminal-setup": 29,
"custom-commands": 655,
"custom-commands": 670,
"shift-enter": 661,
"shift-tab": 655,
"shift-tab": 665,
"custom-agents": 663,
"status-line": 536,
"git-worktrees": 661,
"image-paste": 646,
"image-paste": 666,
"plan-mode-for-complex-tasks": 384,
"double-esc-code-restore": 654,
"double-esc-code-restore": 664,
"tab-toggle-thinking": 329,
"ultrathink-keyword": 423,
"ide-upsell-external-terminal": 646,
"ide-upsell-external-terminal": 668,
"stickers-command": 416,
"default-permission-mode-config": 436,
"rename-conversation": 655,
"rename-conversation": 670,
"frontend-design-plugin": 560,
"config-thinking-mode": 412,
"guest-passes": 587,
"colorterm-truecolor": 638,
"web-app": 657,
"mobile-app": 657,
"install-slack-app": 656,
"install-slack-app": 666,
"btw-side-question": 407,
"agent-flag": 652
"agent-flag": 667
},
"memoryUsageCount": 18,
"promptQueueUseCount": 4515,
"promptQueueUseCount": 4559,
"cachedStatsigGates": {
"tengu_disable_bypass_permissions_mode": false,
"tengu_use_file_checkpoints": true,
@ -144,7 +144,7 @@
"tengu_vinteuil_phrase": true,
"tengu_oboe": true,
"tengu_tst_names_in_messages": false,
"tengu_chomp_inflection": false,
"tengu_chomp_inflection": true,
"tengu_silver_lantern": false,
"tengu_copper_lantern": false,
"tengu_workout2": true,
@ -177,7 +177,14 @@
"tengu_slate_nexus": false,
"tengu_marble_sandcastle": true,
"tengu_birch_mist": false,
"tengu_oak_drum": false
"tengu_oak_drum": false,
"tengu_worktree_mode": true,
"tengu_pebble_leaf_prune": false,
"tengu_swann_brevity": "control",
"tengu_crystal_beam": {
"budgetTokens": 0
},
"tengu_tool_input_aliasing": false
},
"hasSeenStashHint": true,
"firstStartTime": "2025-07-09T18:27:34.950Z",
@ -615,17 +622,17 @@
"ssh-tdarr",
"notediscovery"
],
"lastCost": 40.23374199999994,
"lastAPIDuration": 5995420,
"lastToolDuration": 2896147,
"lastDuration": 20374119,
"lastLinesAdded": 2594,
"lastLinesRemoved": 143,
"lastTotalInputTokens": 747870,
"lastTotalOutputTokens": 224482,
"lastTotalCacheCreationInputTokens": 1751354,
"lastTotalCacheReadInputTokens": 47009653,
"lastSessionId": "606a9f26-d08c-4654-8a9a-e118a2735aaa",
"lastCost": 16.71361575000001,
"lastAPIDuration": 1844582,
"lastToolDuration": 816971,
"lastDuration": 29558088,
"lastLinesAdded": 2386,
"lastLinesRemoved": 60,
"lastTotalInputTokens": 203907,
"lastTotalOutputTokens": 87182,
"lastTotalCacheCreationInputTokens": 987411,
"lastTotalCacheReadInputTokens": 16492670,
"lastSessionId": "ee8998aa-f26c-4743-84dc-0ba35f4e49c4",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -633,44 +640,44 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 4961513,
"lastAPIDurationWithoutRetries": 1843027,
"lastModelUsage": {
"claude-opus-4-6": {
"inputTokens": 9124,
"outputTokens": 164889,
"cacheReadInputTokens": 44348975,
"cacheCreationInputTokens": 1408982,
"inputTokens": 7030,
"outputTokens": 57045,
"cacheReadInputTokens": 14601090,
"cacheCreationInputTokens": 789421,
"webSearchRequests": 0,
"costUSD": 35.148469999999996
"costUSD": 13.695701250000003
},
"claude-haiku-4-5-20251001": {
"inputTokens": 732883,
"outputTokens": 15034,
"inputTokens": 196822,
"outputTokens": 4750,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 67247,
"cacheCreationInputTokens": 4167,
"webSearchRequests": 0,
"costUSD": 0.892111749999999
"costUSD": 0.22578074999999995
},
"claude-sonnet-4-6": {
"inputTokens": 5863,
"outputTokens": 44559,
"cacheReadInputTokens": 2660678,
"cacheCreationInputTokens": 275125,
"inputTokens": 55,
"outputTokens": 25387,
"cacheReadInputTokens": 1891580,
"cacheCreationInputTokens": 193823,
"webSearchRequests": 0,
"costUSD": 4.19316025
"costUSD": 2.7921337499999996
}
},
"lastSessionMetrics": {
"frame_duration_ms_count": 126433,
"frame_duration_ms_min": 0.033378999680280685,
"frame_duration_ms_max": 185.3289749994874,
"frame_duration_ms_avg": 4.580825976891975,
"frame_duration_ms_p50": 1.4972434998489916,
"frame_duration_ms_p95": 3.451200450630833,
"frame_duration_ms_p99": 90.20297368977218
"frame_duration_ms_count": 35110,
"frame_duration_ms_min": 0.10013899999830755,
"frame_duration_ms_max": 45.71880799904466,
"frame_duration_ms_avg": 1.8384896022149897,
"frame_duration_ms_p50": 0.9785875007510185,
"frame_duration_ms_p95": 9.048351652547707,
"frame_duration_ms_p99": 25.241195021457933
},
"lastFpsAverage": 6.12,
"lastFpsLow1Pct": 11.02
"lastFpsAverage": 1.19,
"lastFpsLow1Pct": 43.16
},
"/mnt/NV2/Development/major-domo": {
"allowedTools": [],
@ -1082,17 +1089,17 @@
"exampleFilesGeneratedAt": 1771431800882,
"hasCompletedProjectOnboarding": true,
"lastTotalWebSearchRequests": 0,
"lastCost": 0.000711,
"lastAPIDuration": 823,
"lastToolDuration": 0,
"lastDuration": 6284,
"lastLinesAdded": 0,
"lastLinesRemoved": 0,
"lastTotalInputTokens": 536,
"lastTotalOutputTokens": 35,
"lastTotalCacheCreationInputTokens": 0,
"lastTotalCacheReadInputTokens": 0,
"lastSessionId": "a20b0e55-c4ef-4a74-a352-c1c7e29dcecd",
"lastCost": 13.231698250000006,
"lastAPIDuration": 891789,
"lastToolDuration": 132172,
"lastDuration": 18087965,
"lastLinesAdded": 263,
"lastLinesRemoved": 7,
"lastTotalInputTokens": 77295,
"lastTotalOutputTokens": 35442,
"lastTotalCacheCreationInputTokens": 1044639,
"lastTotalCacheReadInputTokens": 11865821,
"lastSessionId": "ace0ec70-77ed-44a1-806a-904ce665899a",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -1100,27 +1107,43 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 822,
"lastAPIDurationWithoutRetries": 891685,
"lastModelUsage": {
"claude-haiku-4-5-20251001": {
"inputTokens": 536,
"outputTokens": 35,
"inputTokens": 71834,
"outputTokens": 2746,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 0,
"cacheCreationInputTokens": 32095,
"webSearchRequests": 0,
"costUSD": 0.000711
"costUSD": 0.12568275000000004
},
"claude-opus-4-6": {
"inputTokens": 5448,
"outputTokens": 27103,
"cacheReadInputTokens": 11539293,
"cacheCreationInputTokens": 945261,
"webSearchRequests": 0,
"costUSD": 12.38234275
},
"claude-sonnet-4-6": {
"inputTokens": 13,
"outputTokens": 5593,
"cacheReadInputTokens": 326528,
"cacheCreationInputTokens": 67283,
"webSearchRequests": 0,
"costUSD": 0.72367275
}
},
"lastFpsAverage": 6.68,
"lastFpsLow1Pct": 219.22,
"lastFpsAverage": 0.78,
"lastFpsLow1Pct": 25.74,
"lastSessionMetrics": {
"frame_duration_ms_count": 38,
"frame_duration_ms_min": 0.0733989999998812,
"frame_duration_ms_max": 4.561674999999923,
"frame_duration_ms_avg": 1.2307077105262876,
"frame_duration_ms_p50": 1.1626314999998613,
"frame_duration_ms_p95": 2.57251919999976,
"frame_duration_ms_p99": 3.884495079999988
"frame_duration_ms_count": 14187,
"frame_duration_ms_min": 0.08366899937391281,
"frame_duration_ms_max": 68.00957799889147,
"frame_duration_ms_avg": 2.3383289160528014,
"frame_duration_ms_p50": 1.0047624995931983,
"frame_duration_ms_p95": 13.091784298792101,
"frame_duration_ms_p99": 38.75486159028485
}
},
"/mnt/NV2/Development/efd-trading-card-base": {
@ -1999,12 +2022,12 @@
"lastOnboardingVersion": "2.0.13",
"subscriptionNoticeCount": 0,
"hasAvailableSubscription": false,
"changelogLastFetched": 1771459754216,
"changelogLastFetched": 1771560193427,
"fallbackAvailableWarningThreshold": 0.2,
"hasIdeOnboardingBeenShown": {
"vscode": true
},
"lastReleaseNotesSeen": "2.1.47",
"lastReleaseNotesSeen": "2.1.49",
"isQualifiedForDataSharing": false,
"hasIdeAutoConnectDialogBeenShown": true,
"shiftEnterKeyBindingInstalled": true,
@ -2105,7 +2128,7 @@
"currency": "USD"
},
"remaining_passes": 3,
"timestamp": 1771535572741
"timestamp": 1771560445046
}
},
"opus45MigrationComplete": true,
@ -2124,8 +2147,8 @@
},
"skillUsage": {
"major-domo": {
"usageCount": 12,
"lastUsedAt": 1771288623314
"usageCount": 13,
"lastUsedAt": 1771556414365
},
"paper-dynasty": {
"usageCount": 12,
@ -2188,8 +2211,8 @@
"lastUsedAt": 1770959377885
},
"sync-config": {
"usageCount": 23,
"lastUsedAt": 1771539236539
"usageCount": 25,
"lastUsedAt": 1771539739755
},
"claude-optimised": {
"usageCount": 4,
@ -2200,8 +2223,8 @@
"lastUsedAt": 1771199427014
},
"cognitive-memory": {
"usageCount": 32,
"lastUsedAt": 1771528594878
"usageCount": 35,
"lastUsedAt": 1771560320138
},
"commit-push": {
"usageCount": 17,
@ -2216,12 +2239,12 @@
"lastUsedAt": 1771364503659
},
"commit-push-pr": {
"usageCount": 2,
"lastUsedAt": 1771371630347
"usageCount": 4,
"lastUsedAt": 1771559391826
},
"mcp-manager": {
"usageCount": 3,
"lastUsedAt": 1771450174507
"usageCount": 5,
"lastUsedAt": 1771558943126
},
"orchestrator": {
"usageCount": 3,
@ -2236,8 +2259,8 @@
"lastUsedAt": 1771536951910
},
"save-memories": {
"usageCount": 3,
"lastUsedAt": 1771539341903
"usageCount": 7,
"lastUsedAt": 1771559941495
}
},
"opusProMigrationComplete": true,
@ -2246,7 +2269,7 @@
"passesLastSeenRemaining": 3,
"clientDataCache": {
"data": {},
"timestamp": 1771539410106
"timestamp": 1771560553737
},
"hasShownOpus46Notice": {
"57783733-6e1e-48d5-9cb7-fa588a77b795": true

View File

@ -1,5 +1,5 @@
{
"numStartups": 663,
"numStartups": 670,
"installMethod": "native",
"autoUpdates": true,
"preferredNotifChannel": "iterm2_with_bell",
@ -12,39 +12,39 @@
"todo-list": 660,
"# for memory": 38,
"install-github-app": 663,
"permissions": 654,
"drag-and-drop-images": 659,
"permissions": 664,
"drag-and-drop-images": 669,
"double-esc": 75,
"continue": 655,
"continue": 665,
"ide-hotkey": 74,
"terminal-setup": 29,
"custom-commands": 655,
"custom-commands": 670,
"shift-enter": 661,
"shift-tab": 655,
"shift-tab": 665,
"custom-agents": 663,
"status-line": 536,
"git-worktrees": 661,
"image-paste": 646,
"image-paste": 666,
"plan-mode-for-complex-tasks": 384,
"double-esc-code-restore": 654,
"double-esc-code-restore": 664,
"tab-toggle-thinking": 329,
"ultrathink-keyword": 423,
"ide-upsell-external-terminal": 646,
"ide-upsell-external-terminal": 668,
"stickers-command": 416,
"default-permission-mode-config": 436,
"rename-conversation": 655,
"rename-conversation": 670,
"frontend-design-plugin": 560,
"config-thinking-mode": 412,
"guest-passes": 587,
"colorterm-truecolor": 638,
"web-app": 657,
"mobile-app": 657,
"install-slack-app": 656,
"install-slack-app": 666,
"btw-side-question": 407,
"agent-flag": 652
"agent-flag": 667
},
"memoryUsageCount": 18,
"promptQueueUseCount": 4515,
"promptQueueUseCount": 4559,
"cachedStatsigGates": {
"tengu_disable_bypass_permissions_mode": false,
"tengu_use_file_checkpoints": true,
@ -144,7 +144,7 @@
"tengu_vinteuil_phrase": true,
"tengu_oboe": true,
"tengu_tst_names_in_messages": false,
"tengu_chomp_inflection": false,
"tengu_chomp_inflection": true,
"tengu_silver_lantern": false,
"tengu_copper_lantern": false,
"tengu_workout2": true,
@ -177,7 +177,14 @@
"tengu_slate_nexus": false,
"tengu_marble_sandcastle": true,
"tengu_birch_mist": false,
"tengu_oak_drum": false
"tengu_oak_drum": false,
"tengu_worktree_mode": true,
"tengu_pebble_leaf_prune": false,
"tengu_swann_brevity": "control",
"tengu_crystal_beam": {
"budgetTokens": 0
},
"tengu_tool_input_aliasing": false
},
"hasSeenStashHint": true,
"firstStartTime": "2025-07-09T18:27:34.950Z",
@ -615,17 +622,17 @@
"ssh-tdarr",
"notediscovery"
],
"lastCost": 40.23374199999994,
"lastAPIDuration": 5995420,
"lastToolDuration": 2896147,
"lastDuration": 20374119,
"lastLinesAdded": 2594,
"lastLinesRemoved": 143,
"lastTotalInputTokens": 747870,
"lastTotalOutputTokens": 224482,
"lastTotalCacheCreationInputTokens": 1751354,
"lastTotalCacheReadInputTokens": 47009653,
"lastSessionId": "606a9f26-d08c-4654-8a9a-e118a2735aaa",
"lastCost": 16.71361575000001,
"lastAPIDuration": 1844582,
"lastToolDuration": 816971,
"lastDuration": 29558088,
"lastLinesAdded": 2386,
"lastLinesRemoved": 60,
"lastTotalInputTokens": 203907,
"lastTotalOutputTokens": 87182,
"lastTotalCacheCreationInputTokens": 987411,
"lastTotalCacheReadInputTokens": 16492670,
"lastSessionId": "ee8998aa-f26c-4743-84dc-0ba35f4e49c4",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -633,44 +640,44 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 4961513,
"lastAPIDurationWithoutRetries": 1843027,
"lastModelUsage": {
"claude-opus-4-6": {
"inputTokens": 9124,
"outputTokens": 164889,
"cacheReadInputTokens": 44348975,
"cacheCreationInputTokens": 1408982,
"inputTokens": 7030,
"outputTokens": 57045,
"cacheReadInputTokens": 14601090,
"cacheCreationInputTokens": 789421,
"webSearchRequests": 0,
"costUSD": 35.148469999999996
"costUSD": 13.695701250000003
},
"claude-haiku-4-5-20251001": {
"inputTokens": 732883,
"outputTokens": 15034,
"inputTokens": 196822,
"outputTokens": 4750,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 67247,
"cacheCreationInputTokens": 4167,
"webSearchRequests": 0,
"costUSD": 0.892111749999999
"costUSD": 0.22578074999999995
},
"claude-sonnet-4-6": {
"inputTokens": 5863,
"outputTokens": 44559,
"cacheReadInputTokens": 2660678,
"cacheCreationInputTokens": 275125,
"inputTokens": 55,
"outputTokens": 25387,
"cacheReadInputTokens": 1891580,
"cacheCreationInputTokens": 193823,
"webSearchRequests": 0,
"costUSD": 4.19316025
"costUSD": 2.7921337499999996
}
},
"lastSessionMetrics": {
"frame_duration_ms_count": 126433,
"frame_duration_ms_min": 0.033378999680280685,
"frame_duration_ms_max": 185.3289749994874,
"frame_duration_ms_avg": 4.580825976891975,
"frame_duration_ms_p50": 1.4972434998489916,
"frame_duration_ms_p95": 3.451200450630833,
"frame_duration_ms_p99": 90.20297368977218
"frame_duration_ms_count": 35110,
"frame_duration_ms_min": 0.10013899999830755,
"frame_duration_ms_max": 45.71880799904466,
"frame_duration_ms_avg": 1.8384896022149897,
"frame_duration_ms_p50": 0.9785875007510185,
"frame_duration_ms_p95": 9.048351652547707,
"frame_duration_ms_p99": 25.241195021457933
},
"lastFpsAverage": 6.12,
"lastFpsLow1Pct": 11.02
"lastFpsAverage": 1.19,
"lastFpsLow1Pct": 43.16
},
"/mnt/NV2/Development/major-domo": {
"allowedTools": [],
@ -1082,17 +1089,17 @@
"exampleFilesGeneratedAt": 1771431800882,
"hasCompletedProjectOnboarding": true,
"lastTotalWebSearchRequests": 0,
"lastCost": 0.000711,
"lastAPIDuration": 823,
"lastToolDuration": 0,
"lastDuration": 6284,
"lastLinesAdded": 0,
"lastLinesRemoved": 0,
"lastTotalInputTokens": 536,
"lastTotalOutputTokens": 35,
"lastTotalCacheCreationInputTokens": 0,
"lastTotalCacheReadInputTokens": 0,
"lastSessionId": "a20b0e55-c4ef-4a74-a352-c1c7e29dcecd",
"lastCost": 13.231698250000006,
"lastAPIDuration": 891789,
"lastToolDuration": 132172,
"lastDuration": 18087965,
"lastLinesAdded": 263,
"lastLinesRemoved": 7,
"lastTotalInputTokens": 77295,
"lastTotalOutputTokens": 35442,
"lastTotalCacheCreationInputTokens": 1044639,
"lastTotalCacheReadInputTokens": 11865821,
"lastSessionId": "ace0ec70-77ed-44a1-806a-904ce665899a",
"reactVulnerabilityCache": {
"detected": false,
"package": null,
@ -1100,27 +1107,43 @@
"version": null,
"packageManager": null
},
"lastAPIDurationWithoutRetries": 822,
"lastAPIDurationWithoutRetries": 891685,
"lastModelUsage": {
"claude-haiku-4-5-20251001": {
"inputTokens": 536,
"outputTokens": 35,
"inputTokens": 71834,
"outputTokens": 2746,
"cacheReadInputTokens": 0,
"cacheCreationInputTokens": 0,
"cacheCreationInputTokens": 32095,
"webSearchRequests": 0,
"costUSD": 0.000711
"costUSD": 0.12568275000000004
},
"claude-opus-4-6": {
"inputTokens": 5448,
"outputTokens": 27103,
"cacheReadInputTokens": 11539293,
"cacheCreationInputTokens": 945261,
"webSearchRequests": 0,
"costUSD": 12.38234275
},
"claude-sonnet-4-6": {
"inputTokens": 13,
"outputTokens": 5593,
"cacheReadInputTokens": 326528,
"cacheCreationInputTokens": 67283,
"webSearchRequests": 0,
"costUSD": 0.72367275
}
},
"lastFpsAverage": 6.68,
"lastFpsLow1Pct": 219.22,
"lastFpsAverage": 0.78,
"lastFpsLow1Pct": 25.74,
"lastSessionMetrics": {
"frame_duration_ms_count": 38,
"frame_duration_ms_min": 0.0733989999998812,
"frame_duration_ms_max": 4.561674999999923,
"frame_duration_ms_avg": 1.2307077105262876,
"frame_duration_ms_p50": 1.1626314999998613,
"frame_duration_ms_p95": 2.57251919999976,
"frame_duration_ms_p99": 3.884495079999988
"frame_duration_ms_count": 14187,
"frame_duration_ms_min": 0.08366899937391281,
"frame_duration_ms_max": 68.00957799889147,
"frame_duration_ms_avg": 2.3383289160528014,
"frame_duration_ms_p50": 1.0047624995931983,
"frame_duration_ms_p95": 13.091784298792101,
"frame_duration_ms_p99": 38.75486159028485
}
},
"/mnt/NV2/Development/efd-trading-card-base": {
@ -1999,12 +2022,12 @@
"lastOnboardingVersion": "2.0.13",
"subscriptionNoticeCount": 0,
"hasAvailableSubscription": false,
"changelogLastFetched": 1771459754216,
"changelogLastFetched": 1771560193427,
"fallbackAvailableWarningThreshold": 0.2,
"hasIdeOnboardingBeenShown": {
"vscode": true
},
"lastReleaseNotesSeen": "2.1.47",
"lastReleaseNotesSeen": "2.1.49",
"isQualifiedForDataSharing": false,
"hasIdeAutoConnectDialogBeenShown": true,
"shiftEnterKeyBindingInstalled": true,
@ -2105,7 +2128,7 @@
"currency": "USD"
},
"remaining_passes": 3,
"timestamp": 1771535572741
"timestamp": 1771560445046
}
},
"opus45MigrationComplete": true,
@ -2124,8 +2147,8 @@
},
"skillUsage": {
"major-domo": {
"usageCount": 12,
"lastUsedAt": 1771288623314
"usageCount": 13,
"lastUsedAt": 1771556414365
},
"paper-dynasty": {
"usageCount": 12,
@ -2188,8 +2211,8 @@
"lastUsedAt": 1770959377885
},
"sync-config": {
"usageCount": 23,
"lastUsedAt": 1771539236539
"usageCount": 25,
"lastUsedAt": 1771539739755
},
"claude-optimised": {
"usageCount": 4,
@ -2200,8 +2223,8 @@
"lastUsedAt": 1771199427014
},
"cognitive-memory": {
"usageCount": 32,
"lastUsedAt": 1771528594878
"usageCount": 35,
"lastUsedAt": 1771560320138
},
"commit-push": {
"usageCount": 17,
@ -2216,12 +2239,12 @@
"lastUsedAt": 1771364503659
},
"commit-push-pr": {
"usageCount": 2,
"lastUsedAt": 1771371630347
"usageCount": 4,
"lastUsedAt": 1771559391826
},
"mcp-manager": {
"usageCount": 3,
"lastUsedAt": 1771450174507
"usageCount": 5,
"lastUsedAt": 1771558943126
},
"orchestrator": {
"usageCount": 3,
@ -2236,8 +2259,8 @@
"lastUsedAt": 1771536951910
},
"save-memories": {
"usageCount": 3,
"lastUsedAt": 1771539341903
"usageCount": 7,
"lastUsedAt": 1771559941495
}
},
"opusProMigrationComplete": true,
@ -2246,7 +2269,7 @@
"passesLastSeenRemaining": 3,
"clientDataCache": {
"data": {},
"timestamp": 1771539486281
"timestamp": 1771560601674
},
"hasShownOpus46Notice": {
"57783733-6e1e-48d5-9cb7-fa588a77b795": true

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
{
"fetchedAt": "2026-02-19T21:12:52.014Z",
"fetchedAt": "2026-02-20T04:07:24.860Z",
"plugins": [
{
"plugin": "code-review@claude-plugins-official",

View File

@ -13,6 +13,6 @@
"repo": "anthropics/claude-code"
},
"installLocation": "/home/cal/.claude/plugins/marketplaces/claude-code-plugins",
"lastUpdated": "2026-02-19T21:13:33.303Z"
"lastUpdated": "2026-02-20T04:08:05.428Z"
}
}

@ -1 +1 @@
Subproject commit b757fc9ecdf77e450442e3ca9f9093a9da35952b
Subproject commit 0d996a7c346e2f3aca34e3488e49f1da537d7811

View File

@ -55,7 +55,8 @@
"mcp__memorygraph__*",
"mcp__memorygraph__get_memory",
"Skill(notediscovery)",
"mcp__cognitive-memory__*"
"mcp__cognitive-memory__*",
"mcp__n8n-mcp__*"
],
"deny": [
"Bash(diskutil partitionDisk)",

View File

@ -13,103 +13,57 @@ Minimize context consumption by only loading MCP servers when they're actually n
### Auto-Detection
When user makes a request, analyze the task to determine if any MCPs would be useful:
**Web Stack Analysis & Port Scanning:**
- Keywords: "what stack", "what technology", "web server info", "port scan", "open ports", "services running"
- MCPs: `httpx`, `naabu`
**n8n Workflow Automation:**
- Keywords: "n8n", "workflow", "automation", "webhook", "n8n node", "n8n template"
- MCPs: `n8n-mcp`
**Web Scraping & Automation:**
- Keywords: "scrape", "extract from website", "crawl", "get data from", "browser automation", "screenshot website"
- MCPs: `apify`, `brightdata`, `playwright`
**Documentation Lookup:**
- Keywords: "documentation for", "API reference", "check docs", "how to use [library]"
- MCPs: `Ref`
**Payment/Stripe Operations:**
- Keywords: "stripe", "payment", "subscription", "invoice", "customer billing"
- MCPs: `stripe`
**Personal Content (Daniel Miessler specific):**
- Keywords: "your opinion on", "you wrote about", "your blog post", "your thoughts"
- MCPs: `content`, `daemon`, `Foundry`
- MCPs: `playwright`
### MCP Registry
```json
{
"httpx": {
"type": "http",
"category": "security",
"description": "Web server stack information and tech analysis",
"triggers": ["stack", "web server", "technology", "httpx"],
"url": "https://httpx-mcp.danielmiessler.workers.dev"
},
"naabu": {
"type": "http",
"category": "security",
"description": "Port scanning and service discovery",
"triggers": ["port scan", "open ports", "services", "naabu"],
"url": "https://naabu-mcp.danielmiessler.workers.dev"
},
"apify": {
"cognitive-memory": {
"type": "stdio",
"category": "scraping",
"description": "Web scraping and automation via Apify",
"triggers": ["scrape", "crawl", "extract", "apify"],
"command": "bunx"
"category": "memory",
"description": "Cognitive memory system with decay scoring, episodic logging, and graph relationships",
"triggers": ["memory", "recall", "remember", "cognitive"],
"command": "/home/cal/.claude/skills/cognitive-memory/mcp-server/cognitive-memory-mcp",
"alwaysLoaded": true
},
"brightdata": {
"n8n-mcp": {
"type": "stdio",
"category": "scraping",
"description": "Enterprise web data extraction",
"triggers": ["scrape", "proxy", "brightdata"],
"command": "bunx"
"category": "automation",
"description": "n8n workflow automation - node docs, templates, workflow management via API",
"triggers": ["n8n", "workflow", "automation", "webhook", "n8n node", "n8n template"],
"command": "npx",
"args": ["n8n-mcp"],
"env": {
"MCP_MODE": "stdio",
"N8N_API_URL": "http://10.10.0.210:5678",
"N8N_API_KEY": "~/.claude/secrets/n8n_api_key",
"N8N_MCP_TELEMETRY_DISABLED": "true",
"DISABLE_CONSOLE_OUTPUT": "true",
"LOG_LEVEL": "error"
}
},
"playwright": {
"type": "stdio",
"category": "automation",
"description": "Browser automation and testing",
"triggers": ["browser", "screenshot", "playwright", "automate browser"],
"command": "bunx"
},
"Ref": {
"type": "stdio",
"category": "documentation",
"description": "Documentation search from public and private sources",
"triggers": ["documentation", "docs", "API reference", "ref"],
"command": "bunx"
},
"stripe": {
"type": "stdio",
"category": "payments",
"description": "Stripe payment processing and operations",
"triggers": ["stripe", "payment", "billing", "subscription"],
"command": "bunx"
},
"content": {
"type": "http",
"category": "personal",
"description": "Daniel Miessler's content archive",
"triggers": ["your content", "you wrote", "your blog", "your opinion"],
"url": "https://content-mcp.danielmiessler.workers.dev"
},
"daemon": {
"type": "http",
"category": "personal",
"description": "Daniel Miessler's personal API",
"triggers": ["daemon", "personal api"],
"url": "https://mcp.daemon.danielmiessler.com"
},
"Foundry": {
"type": "http",
"category": "personal",
"description": "Daniel Miessler's PAI infrastructure",
"triggers": ["foundry", "pai tool"],
"url": "https://api.danielmiessler.com/mcp/"
"command": "npx",
"args": ["@anthropic/mcp-playwright"]
}
}
```
> **Note:** The actual MCP server definitions (with real credentials) live in `~/.claude/.mcp-full.json`.
> The registry above documents triggers and categories for auto-detection.
> Credentials like `N8N_API_KEY` are stored in `~/.claude/secrets/` and referenced by the full config.
## Commands & Usage
### Automatic Mode (Default)
@ -130,14 +84,14 @@ User can explicitly manage MCPs:
### Example Workflow
**User:** "Can you check what tech stack reddit.com is running?"
**User:** "Help me create an n8n workflow for monitoring Proxmox backups"
**Jarvis:**
**Claude:**
```
Detected need for web stack analysis.
Loading MCP: httpx
Detected need for n8n workflow automation.
Loading MCP: n8n-mcp
[Modifies .mcp.json to enable httpx]
[Modifies .mcp.json to enable n8n-mcp from .mcp-full.json]
⚠️ Note: Claude Code restart required for MCP changes to take effect.
Would you like me to continue with the task after restart?
```
@ -145,17 +99,24 @@ Would you like me to continue with the task after restart?
**After task completion:**
```
Task complete!
Currently loaded MCPs: httpx (consuming ~500 tokens)
Would you like me to unload httpx to free up context? (yes/no)
Currently loaded MCPs: n8n-mcp (consuming ~1500 tokens)
Would you like me to unload n8n-mcp to free up context? (yes/no)
```
## Configuration Files
### Where Claude Code Actually Reads MCP Config
Claude Code reads MCP server definitions from **two** locations:
1. **Global**: `~/.claude.json``mcpServers` key (always-on MCPs like `cognitive-memory`)
2. **Project**: `<project-root>/.mcp.json``mcpServers` key (on-demand MCPs)
**IMPORTANT:** `~/.claude/.mcp.json` is NOT read by Claude Code. The mcp-manager operates on the project-level `.mcp.json` (auto-detected via git root).
### Locations
- **Active Config**: `~/.claude/.mcp.json`
- **Backup Config**: `~/.claude/.mcp.json.backup`
- **Full Registry**: `~/.claude/.mcp-full.json` (all MCPs)
- **Minimal Config**: `~/.claude/.mcp-minimal.json` (empty/essential only)
- **Global Config**: `~/.claude.json` → always-on MCPs (cognitive-memory)
- **Project Config**: `<project-root>/.mcp.json` → on-demand MCPs (n8n-mcp, playwright, etc.)
- **Full Registry**: `~/.claude/.mcp-full.json` (all available MCP definitions with credentials)
- **Backup**: `<project-root>/.mcp.json.backup` (auto-created before changes)
### Safety
- Always backup before modifications
@ -166,19 +127,20 @@ Would you like me to unload httpx to free up context? (yes/no)
## Implementation Details
### Enable MCP
1. Read current `.mcp.json`
2. Backup to `.mcp.json.backup`
3. Read full MCP definition from `.mcp-full.json`
4. Merge MCP into active config
5. Write updated `.mcp.json`
6. Log change
7. Notify user (restart required)
1. Detect project root (git root or CWD)
2. Read current `<project>/.mcp.json`
3. Backup to `<project>/.mcp.json.backup`
4. Read full MCP definition from `~/.claude/.mcp-full.json`
5. Merge MCP into project config
6. Write updated `<project>/.mcp.json`
7. Log change
8. Notify user (restart required)
### Disable MCP
1. Read current `.mcp.json`
2. Backup to `.mcp.json.backup`
1. Read current `<project>/.mcp.json`
2. Backup to `<project>/.mcp.json.backup`
3. Remove MCP from `mcpServers` object
4. Write updated `.mcp.json`
4. Write updated `<project>/.mcp.json`
5. Log change
6. Notify user (restart required)
@ -227,7 +189,7 @@ MCPs require Claude Code restart to take effect. Options:
## Proactive Use
This skill should be invoked automatically by Jarvis when:
This skill should be invoked automatically by Claude when:
1. User request contains MCP trigger keywords
2. Task clearly requires external service (documentation, scraping, etc.)
3. User asks "can you..." for tasks requiring MCPs
@ -279,10 +241,10 @@ python3 ~/.claude/skills/mcp-manager/mcp_control.py reset
- **Context Savings**: Each unused MCP saves ~200-1000 tokens depending on complexity
- **Credential Safety**: Never modify or expose API keys/tokens
- **Minimal Default**: Start each session with minimal MCPs, load on-demand
- **Smart Defaults**: Can configure certain MCPs (like `Ref`) to stay loaded by default
- **Smart Defaults**: `cognitive-memory` stays loaded by default; all others are on-demand
---
**Created**: 2025-11-09
**Author**: Jarvis (PAI System)
**Version**: 1.0.0
**Updated**: 2026-02-19
**Version**: 1.1.0

View File

@ -12,95 +12,89 @@ from typing import List, Dict, Optional
import sys
# Paths
# Claude Code reads MCP config from TWO locations:
# 1. Global: ~/.claude.json -> mcpServers (always-on MCPs like cognitive-memory)
# 2. Project: <project-root>/.mcp.json -> mcpServers (on-demand MCPs)
# The mcp-manager operates on the PROJECT-LEVEL config for on-demand loading.
# The full registry (~/.claude/.mcp-full.json) stores all available MCP definitions.
CLAUDE_DIR = Path.home() / ".claude"
MCP_CONFIG = CLAUDE_DIR / ".mcp.json"
MCP_BACKUP = CLAUDE_DIR / ".mcp.json.backup"
MCP_FULL = CLAUDE_DIR / ".mcp-full.json"
GLOBAL_CONFIG = Path.home() / ".claude.json" # Global MCPs (always-on)
MCP_FULL = CLAUDE_DIR / ".mcp-full.json" # Full registry of all MCPs
MCP_MINIMAL = CLAUDE_DIR / ".mcp-minimal.json"
LOG_FILE = CLAUDE_DIR / "logs" / "mcp-manager.log"
# Project-level config is determined by finding the git root
def _find_project_mcp_config() -> Path:
"""Find the project-level .mcp.json by looking for git root."""
import subprocess
try:
result = subprocess.run(
["git", "rev-parse", "--show-toplevel"],
capture_output=True,
text=True,
timeout=5,
)
if result.returncode == 0:
return Path(result.stdout.strip()) / ".mcp.json"
except (subprocess.TimeoutExpired, FileNotFoundError):
pass
# Fallback: use CWD
return Path.cwd() / ".mcp.json"
MCP_CONFIG = _find_project_mcp_config()
MCP_BACKUP = MCP_CONFIG.with_suffix(".json.backup")
# Ensure log directory exists
LOG_FILE.parent.mkdir(parents=True, exist_ok=True)
# MCP Registry with metadata
# NOTE: cognitive-memory is always-on in ~/.claude.json (global config).
# These are on-demand MCPs loaded into project-level .mcp.json.
MCP_REGISTRY = {
"httpx": {
"type": "http",
"category": "security",
"description": "Web server stack information and tech analysis",
"triggers": ["stack", "web server", "technology", "httpx", "what tech"],
"estimated_tokens": 300
},
"naabu": {
"type": "http",
"category": "security",
"description": "Port scanning and service discovery",
"triggers": ["port scan", "open ports", "services", "naabu", "network scan"],
"estimated_tokens": 300
},
"apify": {
"n8n-mcp": {
"type": "stdio",
"category": "scraping",
"description": "Web scraping and automation via Apify",
"triggers": ["scrape", "crawl", "extract", "apify"],
"estimated_tokens": 800
},
"brightdata": {
"type": "stdio",
"category": "scraping",
"description": "Enterprise web data extraction",
"triggers": ["scrape", "proxy", "brightdata"],
"estimated_tokens": 500
"category": "automation",
"description": "n8n workflow automation - node docs, templates, workflow CRUD",
"triggers": [
"n8n",
"workflow",
"automation",
"webhook",
"n8n node",
"n8n template",
],
"estimated_tokens": 1500,
},
"playwright": {
"type": "stdio",
"category": "automation",
"description": "Browser automation and testing",
"triggers": ["browser", "screenshot", "playwright", "automate browser"],
"estimated_tokens": 1000
},
"Ref": {
"type": "stdio",
"category": "documentation",
"description": "Documentation search from public and private sources",
"triggers": ["documentation", "docs", "api reference", "ref"],
"estimated_tokens": 600
},
"stripe": {
"type": "stdio",
"category": "payments",
"description": "Stripe payment processing and operations",
"triggers": ["stripe", "payment", "billing", "subscription"],
"estimated_tokens": 700
},
"content": {
"type": "http",
"category": "personal",
"description": "Daniel Miessler's content archive",
"triggers": ["your content", "you wrote", "your blog", "your opinion"],
"estimated_tokens": 400
},
"daemon": {
"type": "http",
"category": "personal",
"description": "Daniel Miessler's personal API",
"triggers": ["daemon", "personal api"],
"estimated_tokens": 300
},
"Foundry": {
"type": "http",
"category": "personal",
"description": "Daniel Miessler's PAI infrastructure",
"triggers": ["foundry", "pai tool"],
"estimated_tokens": 500
"estimated_tokens": 1000,
},
"notediscovery": {
"type": "stdio",
"category": "notes",
"description": "Personal knowledge base - search, read, create, update notes",
"triggers": ["note", "notes", "knowledge base", "remember", "save this", "my notes", "write down", "jot down", "search my notes", "create note", "update note", "notediscovery"],
"estimated_tokens": 500
}
"triggers": [
"note",
"notes",
"knowledge base",
"remember",
"save this",
"my notes",
"write down",
"jot down",
"search my notes",
"create note",
"update note",
"notediscovery",
],
"estimated_tokens": 500,
},
}
@ -182,7 +176,9 @@ def get_mcp_status() -> Dict:
"loaded": loaded,
"available": list(MCP_REGISTRY.keys()),
"unloaded": [m for m in MCP_REGISTRY.keys() if m not in loaded],
"total_tokens": sum(MCP_REGISTRY[m]["estimated_tokens"] for m in loaded if m in MCP_REGISTRY)
"total_tokens": sum(
MCP_REGISTRY[m]["estimated_tokens"] for m in loaded if m in MCP_REGISTRY
),
}
return status
@ -279,28 +275,28 @@ def list_mcps():
"""List all MCPs with their status"""
status = get_mcp_status()
print("\n" + "="*60)
print("\n" + "=" * 60)
print("MCP SERVER STATUS")
print("="*60)
print("=" * 60)
print(f"\n📊 Summary:")
print(f" Loaded: {len(status['loaded'])}")
print(f" Available: {len(status['available'])}")
print(f" Context Usage: ~{status['total_tokens']} tokens")
if status['loaded']:
if status["loaded"]:
print(f"\n✅ Currently Loaded:")
for mcp in status['loaded']:
for mcp in status["loaded"]:
info = MCP_REGISTRY.get(mcp, {})
tokens = info.get('estimated_tokens', '?')
desc = info.get('description', 'No description')
tokens = info.get("estimated_tokens", "?")
desc = info.get("description", "No description")
print(f"{mcp} (~{tokens} tokens) - {desc}")
if status['unloaded']:
if status["unloaded"]:
print(f"\n⭕ Available (Not Loaded):")
for mcp in status['unloaded']:
for mcp in status["unloaded"]:
info = MCP_REGISTRY.get(mcp, {})
desc = info.get('description', 'No description')
desc = info.get("description", "No description")
print(f"{mcp} - {desc}")
print()