From workbench-core
Interactive interview to build or refine the user's profile.md. Asks about role, working style, technical stack, and communication preferences. Focuses on facts about the user — agent behavioral rules belong in soul-hot.md via /workbench:define-soul.
npx claudepluginhub mike-bronner/claude-workbench --plugin workbench-coreThis skill uses the workspace's default tool permissions.
This is an execution-aware skill — check `skills/define-profile.learnings.md` in the vault before proceeding. If it exists, apply accumulated learnings.
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.
This is an execution-aware skill — check skills/define-profile.learnings.md in the vault before proceeding. If it exists, apply accumulated learnings.
The user has invoked /workbench:define-profile, or /workbench:define-soul handed off to this skill for the user profile portion.
Adopt a curious, direct interviewer persona. You're trying to understand how this person works so you can be a better collaborator. This isn't a personality quiz — it's a practical conversation about working style.
Read the existing profile from the vault via mcp__plugin_workbench-core_memory__read for identity/profile.md.
Also read ${CLAUDE_PLUGIN_ROOT}/references/guardrails.md using the Read tool — this file ships with the plugin and contains absolute rules.
If guardrails.md exists: Tell the user: "Guardrails are active — these are absolute rules that the profile can't contradict." List the rules briefly (one line each). Keep the guardrails in context for the entire interview.
If guardrails.md is missing: Proceed normally — no guardrails enforcement applies.
If profile exists: This is a refinement session. Summarize what you see in 2-3 lines. Ask: "What's accurate? What's changed? Or should we walk through everything?"
If profile doesn't exist: This is first-time setup. Read the profile template from ${CLAUDE_PLUGIN_ROOT}/assets/templates/profile.template.md to understand the target structure, but don't show it — keep the conversation natural.
Work through the domains below. Branch based on answers, skip what's already solid in refinement mode, dig deeper where answers are vague or thin.
For each question: present three concrete options that represent meaningfully different working styles, plus the ability to provide a custom answer. Options should be specific and opinionated — not a spectrum.
If guardrails.md was loaded in Step 1, it contains absolute rules that no interview answer may contradict. Keep these rules in context throughout every domain.
During every domain: Before accepting an answer, check it against all guardrails. If an answer contradicts a guardrail:
Example: User says "I never want the agent to verify anything, just go fast." This contradicts guardrail #4 (verify before asserting). Flag it: "That conflicts with the verify-before-asserting guardrail. How about: 'Verify silently and quickly — don't narrate the investigation, just get it right before stating it'?"
Who the user is and what they're working on.
Push back on: job titles without context ("I'm a senior engineer" — doing what?), vague scope ("various projects" — name one).
How the user thinks and makes decisions.
Push back on: idealized self-descriptions ("I always plan thoroughly" — really?), contradictions between stated and revealed preferences (if they've been iterating in this conversation, they're not a planner-first).
How the user communicates — not how the agent should respond (that's soul territory).
Push back on: "it depends" without saying on what, mismatch between stated preferences and how they've actually communicated during this session.
What the user works with.
Push back on: listing everything they've ever touched (focus on what they use now), claiming expertise without evidence, missing the tools they actually use daily.
How the user thinks about privacy and the boundary between internal and external actions.
Push back on: blanket "ask me everything" (that contradicts wanting an autonomous agent), overly permissive ("do whatever" — until the first unwanted email), not distinguishing internal from external risk.
The user's experience — what success and failure feel like to them.
Push back on: abstract answers ("it was helpful" — how?), blaming only the AI without naming what the user wanted differently.
When you've covered enough ground (or the user signals they're done), pause and play back what you've heard — not as a list of answers, but as a description of how this person works:
"Here's what I'm taking away: you're a [role] who works [style]. You communicate [way], your privacy line is [boundary], and a good session for you looks like [description]. You're deep in [stack] and learning [new thing]."
Ask: "Does this sound right? What's missing or wrong?"
Iterate until the user confirms. Don't rush this step.
Write the profile based on the conversation. Structure:
Use the frontmatter structure from the template. Replace {{agent_name}} with the configured agent name. Set date to today.
Guardrails validation (before writing): If guardrails.md exists, review every section of the generated profile against the guardrails. If any preference or working style contradicts a guardrail, fix it before presenting to the user. Show the user what was adjusted and why.
For refinement sessions: show a diff of what changed. Let the user approve before writing.
Write via mcp__plugin_workbench-core_memory__write to identity/profile.md.
Tell the user the profile is written and will load on next session start.