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 ## Gitea Operations
**ALWAYS use `tea` CLI for Gitea.** Never use `gh api --hostname`. **ALWAYS use `tea` CLI for Gitea.** Never use `gh api --hostname`.
- Authenticated: `cal@homelab` (https://git.manticorum.com) - Authenticated: `cal@homelab` (https://git.manticorum.com)
- Common: `tea repos list`, `tea pulls list`, `tea issues list` - **Always pass `--repo owner/name`** — tea can't auto-detect the repo from git remotes and fails with "path segment is empty"
- Create PR: `tea pulls create --head <branch> --base main --title "Title" --description "Desc"` - Common: `tea repos list`, `tea pulls list --repo cal/repo`, `tea issues list --repo cal/repo`
- Common repos: cal/major-domo-database, cal/major-domo-bot, cal/paper-dynasty, cal/paper-dynasty-database - 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 ## Tech Preferences
- Python with uv for package/environment management - 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 - Never add lazy imports to middle of file
## SSH ## SSH
- Use `ssh -i ~/.ssh/homelab_rsa cal@<host>` for homelab servers (10.10.0.x) **ALWAYS use SSH aliases from `~/.ssh/config` — NEVER construct manual `ssh -i` commands.**
- Use `ssh -i ~/.ssh/cloud_servers_rsa root@<host>` for cloud servers (Akamai, Vultr) - All homelab and cloud servers have aliases with pre-configured keys/users
- Keys are installed on every server — never use passwords or expect password prompts - 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) ## Memory Protocol (Cognitive Memory)
- Skill: `~/.claude/skills/cognitive-memory/` | Data: `~/.claude/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", "installMethod": "native",
"autoUpdates": true, "autoUpdates": true,
"preferredNotifChannel": "iterm2_with_bell", "preferredNotifChannel": "iterm2_with_bell",
@ -12,24 +12,24 @@
"todo-list": 660, "todo-list": 660,
"# for memory": 38, "# for memory": 38,
"install-github-app": 663, "install-github-app": 663,
"permissions": 654, "permissions": 664,
"drag-and-drop-images": 659, "drag-and-drop-images": 669,
"double-esc": 75, "double-esc": 75,
"continue": 655, "continue": 665,
"ide-hotkey": 74, "ide-hotkey": 74,
"terminal-setup": 29, "terminal-setup": 29,
"custom-commands": 655, "custom-commands": 655,
"shift-enter": 661, "shift-enter": 661,
"shift-tab": 655, "shift-tab": 665,
"custom-agents": 663, "custom-agents": 663,
"status-line": 536, "status-line": 536,
"git-worktrees": 661, "git-worktrees": 661,
"image-paste": 646, "image-paste": 666,
"plan-mode-for-complex-tasks": 384, "plan-mode-for-complex-tasks": 384,
"double-esc-code-restore": 654, "double-esc-code-restore": 664,
"tab-toggle-thinking": 329, "tab-toggle-thinking": 329,
"ultrathink-keyword": 423, "ultrathink-keyword": 423,
"ide-upsell-external-terminal": 646, "ide-upsell-external-terminal": 668,
"stickers-command": 416, "stickers-command": 416,
"default-permission-mode-config": 436, "default-permission-mode-config": 436,
"rename-conversation": 655, "rename-conversation": 655,
@ -39,12 +39,12 @@
"colorterm-truecolor": 638, "colorterm-truecolor": 638,
"web-app": 657, "web-app": 657,
"mobile-app": 657, "mobile-app": 657,
"install-slack-app": 656, "install-slack-app": 666,
"btw-side-question": 407, "btw-side-question": 407,
"agent-flag": 652 "agent-flag": 667
}, },
"memoryUsageCount": 18, "memoryUsageCount": 18,
"promptQueueUseCount": 4517, "promptQueueUseCount": 4558,
"cachedStatsigGates": { "cachedStatsigGates": {
"tengu_disable_bypass_permissions_mode": false, "tengu_disable_bypass_permissions_mode": false,
"tengu_use_file_checkpoints": true, "tengu_use_file_checkpoints": true,
@ -144,7 +144,7 @@
"tengu_vinteuil_phrase": true, "tengu_vinteuil_phrase": true,
"tengu_oboe": true, "tengu_oboe": true,
"tengu_tst_names_in_messages": false, "tengu_tst_names_in_messages": false,
"tengu_chomp_inflection": false, "tengu_chomp_inflection": true,
"tengu_silver_lantern": false, "tengu_silver_lantern": false,
"tengu_copper_lantern": false, "tengu_copper_lantern": false,
"tengu_workout2": true, "tengu_workout2": true,
@ -177,7 +177,14 @@
"tengu_slate_nexus": false, "tengu_slate_nexus": false,
"tengu_marble_sandcastle": true, "tengu_marble_sandcastle": true,
"tengu_birch_mist": false, "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, "hasSeenStashHint": true,
"firstStartTime": "2025-07-09T18:27:34.950Z", "firstStartTime": "2025-07-09T18:27:34.950Z",
@ -615,17 +622,17 @@
"ssh-tdarr", "ssh-tdarr",
"notediscovery" "notediscovery"
], ],
"lastCost": 40.23374199999994, "lastCost": 16.71361575000001,
"lastAPIDuration": 5995420, "lastAPIDuration": 1844582,
"lastToolDuration": 2896147, "lastToolDuration": 816971,
"lastDuration": 20374119, "lastDuration": 29558088,
"lastLinesAdded": 2594, "lastLinesAdded": 2386,
"lastLinesRemoved": 143, "lastLinesRemoved": 60,
"lastTotalInputTokens": 747870, "lastTotalInputTokens": 203907,
"lastTotalOutputTokens": 224482, "lastTotalOutputTokens": 87182,
"lastTotalCacheCreationInputTokens": 1751354, "lastTotalCacheCreationInputTokens": 987411,
"lastTotalCacheReadInputTokens": 47009653, "lastTotalCacheReadInputTokens": 16492670,
"lastSessionId": "606a9f26-d08c-4654-8a9a-e118a2735aaa", "lastSessionId": "ee8998aa-f26c-4743-84dc-0ba35f4e49c4",
"reactVulnerabilityCache": { "reactVulnerabilityCache": {
"detected": false, "detected": false,
"package": null, "package": null,
@ -633,44 +640,44 @@
"version": null, "version": null,
"packageManager": null "packageManager": null
}, },
"lastAPIDurationWithoutRetries": 4961513, "lastAPIDurationWithoutRetries": 1843027,
"lastModelUsage": { "lastModelUsage": {
"claude-opus-4-6": { "claude-opus-4-6": {
"inputTokens": 9124, "inputTokens": 7030,
"outputTokens": 164889, "outputTokens": 57045,
"cacheReadInputTokens": 44348975, "cacheReadInputTokens": 14601090,
"cacheCreationInputTokens": 1408982, "cacheCreationInputTokens": 789421,
"webSearchRequests": 0, "webSearchRequests": 0,
"costUSD": 35.148469999999996 "costUSD": 13.695701250000003
}, },
"claude-haiku-4-5-20251001": { "claude-haiku-4-5-20251001": {
"inputTokens": 732883, "inputTokens": 196822,
"outputTokens": 15034, "outputTokens": 4750,
"cacheReadInputTokens": 0, "cacheReadInputTokens": 0,
"cacheCreationInputTokens": 67247, "cacheCreationInputTokens": 4167,
"webSearchRequests": 0, "webSearchRequests": 0,
"costUSD": 0.892111749999999 "costUSD": 0.22578074999999995
}, },
"claude-sonnet-4-6": { "claude-sonnet-4-6": {
"inputTokens": 5863, "inputTokens": 55,
"outputTokens": 44559, "outputTokens": 25387,
"cacheReadInputTokens": 2660678, "cacheReadInputTokens": 1891580,
"cacheCreationInputTokens": 275125, "cacheCreationInputTokens": 193823,
"webSearchRequests": 0, "webSearchRequests": 0,
"costUSD": 4.19316025 "costUSD": 2.7921337499999996
} }
}, },
"lastSessionMetrics": { "lastSessionMetrics": {
"frame_duration_ms_count": 126433, "frame_duration_ms_count": 35110,
"frame_duration_ms_min": 0.033378999680280685, "frame_duration_ms_min": 0.10013899999830755,
"frame_duration_ms_max": 185.3289749994874, "frame_duration_ms_max": 45.71880799904466,
"frame_duration_ms_avg": 4.580825976891975, "frame_duration_ms_avg": 1.8384896022149897,
"frame_duration_ms_p50": 1.4972434998489916, "frame_duration_ms_p50": 0.9785875007510185,
"frame_duration_ms_p95": 3.451200450630833, "frame_duration_ms_p95": 9.048351652547707,
"frame_duration_ms_p99": 90.20297368977218 "frame_duration_ms_p99": 25.241195021457933
}, },
"lastFpsAverage": 6.12, "lastFpsAverage": 1.19,
"lastFpsLow1Pct": 11.02 "lastFpsLow1Pct": 43.16
}, },
"/mnt/NV2/Development/major-domo": { "/mnt/NV2/Development/major-domo": {
"allowedTools": [], "allowedTools": [],
@ -1082,17 +1089,17 @@
"exampleFilesGeneratedAt": 1771431800882, "exampleFilesGeneratedAt": 1771431800882,
"hasCompletedProjectOnboarding": true, "hasCompletedProjectOnboarding": true,
"lastTotalWebSearchRequests": 0, "lastTotalWebSearchRequests": 0,
"lastCost": 0.000711, "lastCost": 13.231698250000006,
"lastAPIDuration": 823, "lastAPIDuration": 891789,
"lastToolDuration": 0, "lastToolDuration": 132172,
"lastDuration": 6284, "lastDuration": 18087965,
"lastLinesAdded": 0, "lastLinesAdded": 263,
"lastLinesRemoved": 0, "lastLinesRemoved": 7,
"lastTotalInputTokens": 536, "lastTotalInputTokens": 77295,
"lastTotalOutputTokens": 35, "lastTotalOutputTokens": 35442,
"lastTotalCacheCreationInputTokens": 0, "lastTotalCacheCreationInputTokens": 1044639,
"lastTotalCacheReadInputTokens": 0, "lastTotalCacheReadInputTokens": 11865821,
"lastSessionId": "a20b0e55-c4ef-4a74-a352-c1c7e29dcecd", "lastSessionId": "ace0ec70-77ed-44a1-806a-904ce665899a",
"reactVulnerabilityCache": { "reactVulnerabilityCache": {
"detected": false, "detected": false,
"package": null, "package": null,
@ -1100,27 +1107,43 @@
"version": null, "version": null,
"packageManager": null "packageManager": null
}, },
"lastAPIDurationWithoutRetries": 822, "lastAPIDurationWithoutRetries": 891685,
"lastModelUsage": { "lastModelUsage": {
"claude-haiku-4-5-20251001": { "claude-haiku-4-5-20251001": {
"inputTokens": 536, "inputTokens": 71834,
"outputTokens": 35, "outputTokens": 2746,
"cacheReadInputTokens": 0, "cacheReadInputTokens": 0,
"cacheCreationInputTokens": 0, "cacheCreationInputTokens": 32095,
"webSearchRequests": 0, "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, "lastFpsAverage": 0.78,
"lastFpsLow1Pct": 219.22, "lastFpsLow1Pct": 25.74,
"lastSessionMetrics": { "lastSessionMetrics": {
"frame_duration_ms_count": 38, "frame_duration_ms_count": 14187,
"frame_duration_ms_min": 0.0733989999998812, "frame_duration_ms_min": 0.08366899937391281,
"frame_duration_ms_max": 4.561674999999923, "frame_duration_ms_max": 68.00957799889147,
"frame_duration_ms_avg": 1.2307077105262876, "frame_duration_ms_avg": 2.3383289160528014,
"frame_duration_ms_p50": 1.1626314999998613, "frame_duration_ms_p50": 1.0047624995931983,
"frame_duration_ms_p95": 2.57251919999976, "frame_duration_ms_p95": 13.091784298792101,
"frame_duration_ms_p99": 3.884495079999988 "frame_duration_ms_p99": 38.75486159028485
} }
}, },
"/mnt/NV2/Development/efd-trading-card-base": { "/mnt/NV2/Development/efd-trading-card-base": {
@ -1999,12 +2022,12 @@
"lastOnboardingVersion": "2.0.13", "lastOnboardingVersion": "2.0.13",
"subscriptionNoticeCount": 0, "subscriptionNoticeCount": 0,
"hasAvailableSubscription": false, "hasAvailableSubscription": false,
"changelogLastFetched": 1771459754216, "changelogLastFetched": 1771560193427,
"fallbackAvailableWarningThreshold": 0.2, "fallbackAvailableWarningThreshold": 0.2,
"hasIdeOnboardingBeenShown": { "hasIdeOnboardingBeenShown": {
"vscode": true "vscode": true
}, },
"lastReleaseNotesSeen": "2.1.47", "lastReleaseNotesSeen": "2.1.49",
"isQualifiedForDataSharing": false, "isQualifiedForDataSharing": false,
"hasIdeAutoConnectDialogBeenShown": true, "hasIdeAutoConnectDialogBeenShown": true,
"shiftEnterKeyBindingInstalled": true, "shiftEnterKeyBindingInstalled": true,
@ -2105,7 +2128,7 @@
"currency": "USD" "currency": "USD"
}, },
"remaining_passes": 3, "remaining_passes": 3,
"timestamp": 1771535572741 "timestamp": 1771560445046
} }
}, },
"opus45MigrationComplete": true, "opus45MigrationComplete": true,
@ -2124,8 +2147,8 @@
}, },
"skillUsage": { "skillUsage": {
"major-domo": { "major-domo": {
"usageCount": 12, "usageCount": 13,
"lastUsedAt": 1771288623314 "lastUsedAt": 1771556414365
}, },
"paper-dynasty": { "paper-dynasty": {
"usageCount": 12, "usageCount": 12,
@ -2188,8 +2211,8 @@
"lastUsedAt": 1770959377885 "lastUsedAt": 1770959377885
}, },
"sync-config": { "sync-config": {
"usageCount": 23, "usageCount": 25,
"lastUsedAt": 1771539236539 "lastUsedAt": 1771539739755
}, },
"claude-optimised": { "claude-optimised": {
"usageCount": 4, "usageCount": 4,
@ -2200,8 +2223,8 @@
"lastUsedAt": 1771199427014 "lastUsedAt": 1771199427014
}, },
"cognitive-memory": { "cognitive-memory": {
"usageCount": 32, "usageCount": 35,
"lastUsedAt": 1771528594878 "lastUsedAt": 1771560320138
}, },
"commit-push": { "commit-push": {
"usageCount": 17, "usageCount": 17,
@ -2216,12 +2239,12 @@
"lastUsedAt": 1771364503659 "lastUsedAt": 1771364503659
}, },
"commit-push-pr": { "commit-push-pr": {
"usageCount": 2, "usageCount": 4,
"lastUsedAt": 1771371630347 "lastUsedAt": 1771559391826
}, },
"mcp-manager": { "mcp-manager": {
"usageCount": 3, "usageCount": 5,
"lastUsedAt": 1771450174507 "lastUsedAt": 1771558943126
}, },
"orchestrator": { "orchestrator": {
"usageCount": 3, "usageCount": 3,
@ -2236,8 +2259,8 @@
"lastUsedAt": 1771536951910 "lastUsedAt": 1771536951910
}, },
"save-memories": { "save-memories": {
"usageCount": 4, "usageCount": 7,
"lastUsedAt": 1771539598828 "lastUsedAt": 1771559941495
} }
}, },
"opusProMigrationComplete": true, "opusProMigrationComplete": true,
@ -2246,7 +2269,7 @@
"passesLastSeenRemaining": 3, "passesLastSeenRemaining": 3,
"clientDataCache": { "clientDataCache": {
"data": {}, "data": {},
"timestamp": 1771539617287 "timestamp": 1771560445433
}, },
"hasShownOpus46Notice": { "hasShownOpus46Notice": {
"57783733-6e1e-48d5-9cb7-fa588a77b795": true "57783733-6e1e-48d5-9cb7-fa588a77b795": true

View File

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

View File

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

View File

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

View File

@ -13,6 +13,6 @@
"repo": "anthropics/claude-code" "repo": "anthropics/claude-code"
}, },
"installLocation": "/home/cal/.claude/plugins/marketplaces/claude-code-plugins", "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__*",
"mcp__memorygraph__get_memory", "mcp__memorygraph__get_memory",
"Skill(notediscovery)", "Skill(notediscovery)",
"mcp__cognitive-memory__*" "mcp__cognitive-memory__*",
"mcp__n8n-mcp__*"
], ],
"deny": [ "deny": [
"Bash(diskutil partitionDisk)", "Bash(diskutil partitionDisk)",

View File

@ -13,103 +13,57 @@ Minimize context consumption by only loading MCP servers when they're actually n
### Auto-Detection ### Auto-Detection
When user makes a request, analyze the task to determine if any MCPs would be useful: When user makes a request, analyze the task to determine if any MCPs would be useful:
**Web Stack Analysis & Port Scanning:** **n8n Workflow Automation:**
- Keywords: "what stack", "what technology", "web server info", "port scan", "open ports", "services running" - Keywords: "n8n", "workflow", "automation", "webhook", "n8n node", "n8n template"
- MCPs: `httpx`, `naabu` - MCPs: `n8n-mcp`
**Web Scraping & Automation:** **Web Scraping & Automation:**
- Keywords: "scrape", "extract from website", "crawl", "get data from", "browser automation", "screenshot website" - Keywords: "scrape", "extract from website", "crawl", "get data from", "browser automation", "screenshot website"
- MCPs: `apify`, `brightdata`, `playwright` - MCPs: `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`
### MCP Registry ### MCP Registry
```json ```json
{ {
"httpx": { "cognitive-memory": {
"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": {
"type": "stdio", "type": "stdio",
"category": "scraping", "category": "memory",
"description": "Web scraping and automation via Apify", "description": "Cognitive memory system with decay scoring, episodic logging, and graph relationships",
"triggers": ["scrape", "crawl", "extract", "apify"], "triggers": ["memory", "recall", "remember", "cognitive"],
"command": "bunx" "command": "/home/cal/.claude/skills/cognitive-memory/mcp-server/cognitive-memory-mcp",
"alwaysLoaded": true
}, },
"brightdata": { "n8n-mcp": {
"type": "stdio", "type": "stdio",
"category": "scraping", "category": "automation",
"description": "Enterprise web data extraction", "description": "n8n workflow automation - node docs, templates, workflow management via API",
"triggers": ["scrape", "proxy", "brightdata"], "triggers": ["n8n", "workflow", "automation", "webhook", "n8n node", "n8n template"],
"command": "bunx" "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": { "playwright": {
"type": "stdio", "type": "stdio",
"category": "automation", "category": "automation",
"description": "Browser automation and testing", "description": "Browser automation and testing",
"triggers": ["browser", "screenshot", "playwright", "automate browser"], "triggers": ["browser", "screenshot", "playwright", "automate browser"],
"command": "bunx" "command": "npx",
}, "args": ["@anthropic/mcp-playwright"]
"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/"
} }
} }
``` ```
> **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 ## Commands & Usage
### Automatic Mode (Default) ### Automatic Mode (Default)
@ -130,14 +84,14 @@ User can explicitly manage MCPs:
### Example Workflow ### 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. Detected need for n8n workflow automation.
Loading MCP: httpx 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. ⚠️ Note: Claude Code restart required for MCP changes to take effect.
Would you like me to continue with the task after restart? 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:** **After task completion:**
``` ```
Task complete! Task complete!
Currently loaded MCPs: httpx (consuming ~500 tokens) Currently loaded MCPs: n8n-mcp (consuming ~1500 tokens)
Would you like me to unload httpx to free up context? (yes/no) Would you like me to unload n8n-mcp to free up context? (yes/no)
``` ```
## Configuration Files ## 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 ### Locations
- **Active Config**: `~/.claude/.mcp.json` - **Global Config**: `~/.claude.json` → always-on MCPs (cognitive-memory)
- **Backup Config**: `~/.claude/.mcp.json.backup` - **Project Config**: `<project-root>/.mcp.json` → on-demand MCPs (n8n-mcp, playwright, etc.)
- **Full Registry**: `~/.claude/.mcp-full.json` (all MCPs) - **Full Registry**: `~/.claude/.mcp-full.json` (all available MCP definitions with credentials)
- **Minimal Config**: `~/.claude/.mcp-minimal.json` (empty/essential only) - **Backup**: `<project-root>/.mcp.json.backup` (auto-created before changes)
### Safety ### Safety
- Always backup before modifications - Always backup before modifications
@ -166,19 +127,20 @@ Would you like me to unload httpx to free up context? (yes/no)
## Implementation Details ## Implementation Details
### Enable MCP ### Enable MCP
1. Read current `.mcp.json` 1. Detect project root (git root or CWD)
2. Backup to `.mcp.json.backup` 2. Read current `<project>/.mcp.json`
3. Read full MCP definition from `.mcp-full.json` 3. Backup to `<project>/.mcp.json.backup`
4. Merge MCP into active config 4. Read full MCP definition from `~/.claude/.mcp-full.json`
5. Write updated `.mcp.json` 5. Merge MCP into project config
6. Log change 6. Write updated `<project>/.mcp.json`
7. Notify user (restart required) 7. Log change
8. Notify user (restart required)
### Disable MCP ### Disable MCP
1. Read current `.mcp.json` 1. Read current `<project>/.mcp.json`
2. Backup to `.mcp.json.backup` 2. Backup to `<project>/.mcp.json.backup`
3. Remove MCP from `mcpServers` object 3. Remove MCP from `mcpServers` object
4. Write updated `.mcp.json` 4. Write updated `<project>/.mcp.json`
5. Log change 5. Log change
6. Notify user (restart required) 6. Notify user (restart required)
@ -227,7 +189,7 @@ MCPs require Claude Code restart to take effect. Options:
## Proactive Use ## 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 1. User request contains MCP trigger keywords
2. Task clearly requires external service (documentation, scraping, etc.) 2. Task clearly requires external service (documentation, scraping, etc.)
3. User asks "can you..." for tasks requiring MCPs 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 - **Context Savings**: Each unused MCP saves ~200-1000 tokens depending on complexity
- **Credential Safety**: Never modify or expose API keys/tokens - **Credential Safety**: Never modify or expose API keys/tokens
- **Minimal Default**: Start each session with minimal MCPs, load on-demand - **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 **Created**: 2025-11-09
**Author**: Jarvis (PAI System) **Updated**: 2026-02-19
**Version**: 1.0.0 **Version**: 1.1.0

View File

@ -12,95 +12,89 @@ from typing import List, Dict, Optional
import sys import sys
# Paths # 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" CLAUDE_DIR = Path.home() / ".claude"
MCP_CONFIG = CLAUDE_DIR / ".mcp.json" GLOBAL_CONFIG = Path.home() / ".claude.json" # Global MCPs (always-on)
MCP_BACKUP = CLAUDE_DIR / ".mcp.json.backup" MCP_FULL = CLAUDE_DIR / ".mcp-full.json" # Full registry of all MCPs
MCP_FULL = CLAUDE_DIR / ".mcp-full.json"
MCP_MINIMAL = CLAUDE_DIR / ".mcp-minimal.json" MCP_MINIMAL = CLAUDE_DIR / ".mcp-minimal.json"
LOG_FILE = CLAUDE_DIR / "logs" / "mcp-manager.log" 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 # Ensure log directory exists
LOG_FILE.parent.mkdir(parents=True, exist_ok=True) LOG_FILE.parent.mkdir(parents=True, exist_ok=True)
# MCP Registry with metadata # 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 = { MCP_REGISTRY = {
"httpx": { "n8n-mcp": {
"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": {
"type": "stdio", "type": "stdio",
"category": "scraping", "category": "automation",
"description": "Web scraping and automation via Apify", "description": "n8n workflow automation - node docs, templates, workflow CRUD",
"triggers": ["scrape", "crawl", "extract", "apify"], "triggers": [
"estimated_tokens": 800 "n8n",
}, "workflow",
"brightdata": { "automation",
"type": "stdio", "webhook",
"category": "scraping", "n8n node",
"description": "Enterprise web data extraction", "n8n template",
"triggers": ["scrape", "proxy", "brightdata"], ],
"estimated_tokens": 500 "estimated_tokens": 1500,
}, },
"playwright": { "playwright": {
"type": "stdio", "type": "stdio",
"category": "automation", "category": "automation",
"description": "Browser automation and testing", "description": "Browser automation and testing",
"triggers": ["browser", "screenshot", "playwright", "automate browser"], "triggers": ["browser", "screenshot", "playwright", "automate browser"],
"estimated_tokens": 1000 "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
}, },
"notediscovery": { "notediscovery": {
"type": "stdio", "type": "stdio",
"category": "notes", "category": "notes",
"description": "Personal knowledge base - search, read, create, update 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"], "triggers": [
"estimated_tokens": 500 "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, "loaded": loaded,
"available": list(MCP_REGISTRY.keys()), "available": list(MCP_REGISTRY.keys()),
"unloaded": [m for m in MCP_REGISTRY.keys() if m not in loaded], "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 return status
@ -279,28 +275,28 @@ def list_mcps():
"""List all MCPs with their status""" """List all MCPs with their status"""
status = get_mcp_status() status = get_mcp_status()
print("\n" + "="*60) print("\n" + "=" * 60)
print("MCP SERVER STATUS") print("MCP SERVER STATUS")
print("="*60) print("=" * 60)
print(f"\n📊 Summary:") print(f"\n📊 Summary:")
print(f" Loaded: {len(status['loaded'])}") print(f" Loaded: {len(status['loaded'])}")
print(f" Available: {len(status['available'])}") print(f" Available: {len(status['available'])}")
print(f" Context Usage: ~{status['total_tokens']} tokens") print(f" Context Usage: ~{status['total_tokens']} tokens")
if status['loaded']: if status["loaded"]:
print(f"\n✅ Currently Loaded:") print(f"\n✅ Currently Loaded:")
for mcp in status['loaded']: for mcp in status["loaded"]:
info = MCP_REGISTRY.get(mcp, {}) info = MCP_REGISTRY.get(mcp, {})
tokens = info.get('estimated_tokens', '?') tokens = info.get("estimated_tokens", "?")
desc = info.get('description', 'No description') desc = info.get("description", "No description")
print(f"{mcp} (~{tokens} tokens) - {desc}") print(f"{mcp} (~{tokens} tokens) - {desc}")
if status['unloaded']: if status["unloaded"]:
print(f"\n⭕ Available (Not Loaded):") print(f"\n⭕ Available (Not Loaded):")
for mcp in status['unloaded']: for mcp in status["unloaded"]:
info = MCP_REGISTRY.get(mcp, {}) info = MCP_REGISTRY.get(mcp, {})
desc = info.get('description', 'No description') desc = info.get("description", "No description")
print(f"{mcp} - {desc}") print(f"{mcp} - {desc}")
print() print()