From workbench-core
Configure the workbench — agent name, memory paths, MCP server name, and identity file paths. Config lives in the plugin data directory and is read at MCP start time, so plugin updates never clobber settings.
npx claudepluginhub mike-bronner/claude-workbench --plugin workbench-coreThis skill uses the workspace's default tool permissions.
The user has invoked `/workbench:customize`. Walk them through configuring all workbench settings interactively.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
The user has invoked /workbench:customize. Walk them through configuring all workbench settings interactively.
The config file lives at:
~/.claude/plugins/data/workbench-core-claude-workbench/config.json
This is the plugin system's persistent data directory — it survives plugin version bumps. The mcp-memory.sh wrapper reads it at launch time and exports the corresponding env vars, so plugin.json never needs to be edited.
Legacy path: if ~/.claude/plugins/data/workbench-claude-workbench/config.json exists (from before the workbench → workbench-core rename), migrate it to the new path — see Step 0.
Present each field to the user one at a time. Show the current value (from existing config, or the hardcoded default if no config exists). Accept their input or let them press Enter to keep the current value.
agent_nameClaudememory_path~/Documents/Claude/Memorymemory_cache~/.claude-memory-cachememory_mcp_server_name{agent_name}-memory (derived from field 1)MARKDOWN_VAULT_MCP_SERVER_NAME value.summary_modelhaikuauto_summarizetrueidentity_filessoul_hot — default identity/soul-hot.mdsoul_core — default identity/soul-core.mdprofile — default identity/profile.mdBefore reading or writing anything, migrate the pre-rename data directory:
NEW_DIR="$HOME/.claude/plugins/data/workbench-core-claude-workbench"
OLD_DIR="$HOME/.claude/plugins/data/workbench-claude-workbench"
if [ -d "$OLD_DIR" ] && [ ! -d "$NEW_DIR" ]; then
mv "$OLD_DIR" "$NEW_DIR"
elif [ -d "$OLD_DIR" ] && [ -d "$NEW_DIR" ]; then
# Both exist — new wins. Archive the old dir so we don't look at it again.
mv "$OLD_DIR" "${OLD_DIR}.legacy-$(date +%Y%m%d)"
fi
Tell the user if a migration happened.
Read the existing config file if it exists:
CONFIG_DIR="$HOME/.claude/plugins/data/workbench-core-claude-workbench"
CONFIG_FILE="$CONFIG_DIR/config.json"
If it exists, parse current values with jq and use them as defaults. If not, use the hardcoded defaults listed above.
Present each field to the user using the AskUserQuestion tool. Show the current value and let them confirm or change it.
After all fields, show the assembled config JSON and ask "Save this configuration? (yes/no)".
Write config.json to the plugin data directory (create the directory if it doesn't exist):
{
"agent_name": "Claude",
"memory_path": "/Users/yourname/Documents/Claude/Memory",
"memory_cache": "/Users/yourname/.claude-memory-cache",
"memory_mcp_server_name": "claude-memory",
"auto_summarize": true,
"summary_model": "haiku",
"identity_files": {
"soul_hot": "identity/soul-hot.md",
"soul_core": "identity/soul-core.md",
"profile": "identity/profile.md"
}
}
Do not edit plugin.json. The mcp-memory.sh wrapper reads config.json at MCP launch time and exports the env vars the memory server needs. This mapping (for reference only):
| Config field | Exported env var |
|---|---|
memory_path | MARKDOWN_VAULT_MCP_SOURCE_DIR |
memory_cache | MARKDOWN_VAULT_MCP_INDEX_PATH (+ /vault-index.sqlite) |
memory_cache | MARKDOWN_VAULT_MCP_EMBEDDINGS_PATH (+ /embeddings) |
memory_cache | MARKDOWN_VAULT_MCP_STATE_PATH (+ /state.json) |
memory_mcp_server_name | MARKDOWN_VAULT_MCP_SERVER_NAME |
Optionally write config.example.json alongside config.json with placeholder values and inline comments — useful for anyone setting up the plugin manually.
agent_name changed)If agent_name changed from its previous value (or this is a first-time setup):
Read the template files from ${CLAUDE_PLUGIN_ROOT}/assets/templates/:
soul-hot.template.mdsoul-core.template.mdprofile.template.mdskills-protocol.template.mdReplace all {{agent_name}} placeholders with the new agent name.
If identity files already exist at the target paths:
{{agent_name}} references in the existing content (find-and-replace the OLD agent name with the NEW one, preserving all other customizations).If identity files don't exist:
{memory_path}/{identity_files.soul_hot}, etc.skills-protocol.template.md to {memory_path}/identity/skills-protocol.md (no {{agent_name}} substitution needed — it's agent-agnostic). Replace {{date}} with today's date.Update the memory_mcp_server_name to reflect the new agent name if the user chose the default derivation ({agent_name}-memory).
Tell the user:
{CONFIG_FILE}Check whether profile.md exists at the configured path and has real content (not just a template):
if [ -f "{memory_path}/identity/profile.md" ]; then
grep -q '<!--' "{memory_path}/identity/profile.md" && echo "TEMPLATE" || echo "EXISTS"
else
echo "MISSING"
fi
/workbench:define-profile. Tell the user: "No user profile found — let's set one up so the agent knows how you work."/workbench:define-profile to review and refine it?" Respect a "no."Check whether soul-hot.md and soul-core.md exist at the configured paths and have real content:
for f in soul-hot.md soul-core.md; do
if [ -f "{memory_path}/identity/$f" ]; then
grep -q '<!--' "{memory_path}/identity/$f" && echo "TEMPLATE: $f" || echo "EXISTS: $f"
else
echo "MISSING: $f"
fi
done
/workbench:define-soul. Tell the user: "Agent identity files need to be set up — launching the soul definition walkthrough."/workbench:define-soul to review and refine them?" Respect a "no."The profile is completed first intentionally — define-soul benefits from knowing the user's working style, communication preferences, and expertise level when shaping the agent's voice and relationship dynamic.
After both interviews complete (or are skipped), remind the user: "Restart Claude Code for the MCP server changes to take effect."
plugin.json points at mcp-memory.sh, which resolves env vars from config.json at MCP launch. A version bump replaces the plugin dir but the wrapper still reads the same config. No re-customization needed.WORKBENCH_MEMORY_PATH, WORKBENCH_MEMORY_CACHE, and WORKBENCH_LOG_MODE override config.json values in the hook scripts. This is useful for testing (e.g., dry-run with temp paths).