Skip to content
Development
Command

/craft-become

Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain - with beliefs, scar tissue, and instincts.

From plugin
4031 skills27 agents31 commands7 hooks1 MCP
shell
$ npx -y skills add drobins25/craft --agent claude-code

Ships with craft. Installing the plugin gets this command.

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/craft-become

Context preview

What this command does when you run it.

Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain - with beliefs, scar tissue, and instincts.

Command definition

craft-become.md
name: become
description: "Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain - with beliefs, scar tissue, and instincts."
argument-hint: "[tool name | role | person name | description] [--deep]"

Become

Crystallize a tool, role, or person into a portable AI agent. Unlike `/craft:research` which discovers what's true, `/craft:become` inhabits a mind - producing an agent with beliefs, decision frameworks, and scar tissue.

Agents produced by this command are portable. They carry perception, not project context. Project context comes from the environment at runtime.

Project Root

Use `$CRAFT_PROJECT_ROOT` (set at session start) as the base path for all `.craft/` references. If not set, resolve by walking up from PWD to find the nearest `.craft/.global-state`.

**Cold fallback (uninitialized project):** if neither resolves, anchor to the git toplevel (`git rev-parse --show-toplevel`) when in a repo, else PWD - never a subdirectory. Become runs fine before `/craft:init`; research branches and the crystallized agent land at the repo root, not wherever the shell happens to sit.

Set `PROJECT` to the resolved root - env var, then walk-up, then git toplevel, then PWD, in that order. Never default to bare `.`.

Flow

Phase 0: Intent

**Mode flags:** Before classifying the input, scan args for flags.

  • If args contain `--deep`, set `DEPTH=7` and strip the flag from the remaining args. The stripped args are then classified by source type as below.
  • If `--deep` is absent, set `DEPTH=5`.

`DEPTH` is referenced in Phase 1 to size the sub-question generation. The default of 5 is role-optimized: most become runs synthesize across practitioners with genuine disagreement, and 5 branches cover the six psychological-material categories (beliefs, trade-offs, refusals, mistake taxonomy, user needs, scar tissue) with one branch absorbing two adjacent categories. Source-based research (one tool) naturally saturates at 3-4 branches and can run lighter. Person-based with a sparse-but-prolific subject benefits from `--deep` (7 branches) to give the crystallizer enough signal.

If the user passes `--deep` with no other input (e.g., `/craft:become --deep`), treat the remaining args as empty and fall through to the "If no args" branch below.

Parse args to determine what we're crystallizing.

**If no args:** Use **AskUserQuestion**:

question: "What tool, role, or person do you want to crystallize into an agent?"
header: "Become"
options:
  - label: "A specific tool"
    description: "Reverse-engineer a tool's decision logic (e.g., CodeRabbit, Lighthouse, ESLint)"
  - label: "A role/expertise"
    description: "Synthesize what the best practitioners believe (e.g., accessibility auditor, UX designer)"
  - label: "A specific person"
    description: "Reconstruct an individual's perceptual framework from their artifacts"

Then ask for the specific name/description.

**If args provided:** Infer the source type:

  • **Source-based:** Input names a specific tool, library, or product (e.g., "CodeRabbit", "Lighthouse", "Playwright"). Research is narrow and deep - reverse-engineer this tool's decision logic.
  • **Role-based:** Input describes a domain or expertise (e.g., "accessibility auditor", "AI-first UX designer", "performance engineer"). Research is broad - synthesize what the best practitioners believe.
  • **Person-based:** Input names a specific individual (e.g., "Darin", "Kent Beck"). Research uses writings, decisions, behavioral patterns.

**Only clarify if genuinely ambiguous.** "CodeRabbit" is obviously source-based. "Accessibility auditor" is obviously role-based. But "React expert" could be role-based (what do great React developers believe?) or source-based (reverse-engineer React's design philosophy). When ambiguous, use **AskUserQuestion** with 2-3 interpretations and an opinionated recommendation:

question: "'{input}' could mean different things. Which direction?"
header: "Direction"
options:
  - label: "{interpretation 1} (Recommended)"
    description: "{why this is the strongest direction}"
  - label: "{interpretation 2}"
    description: "{what this would produce}"

**Set up the research folder:**

  • Slugify the input for the folder name (e.g., "AI-first UX designer" -> `ai-first-ux-designer`)
  • Research path: `$PROJECT/.craft/research/{slug}-become/`
  • Check if this folder already exists. If it does, use **AskUserQuestion**: resume existing research or start fresh?

Phase 1: Psychological Research

Generate `{DEPTH}` sub-questions shaped for **mind-replication**, not fact-gathering. `{DEPTH}` is 5 by default (role-optimized) and 7 when `--deep` was passed in Phase 0. The six categories to cover:

1. **Beliefs** - What do the best practitioners in this domain believe that outsiders think is wrong? What do they treat as obvious that newcomers keep getting wrong? 2. **Trade-offs** - Where do practitioners genuinely disagree with each other, and what does each side think the other is missing? 3. **Refusals/Boundaries** - What do they refuse to do even when stakeholders push for it? What's their line? 4. **Mistake taxonomy** - What are beginner mistakes vs intermediate mistakes vs "looks right but subtly broken"? What have they seen fail badly enough to change their approach? 5. **What users actually need** - When someone asks this expert for X, what do they usually actually need? Where does the question behind the question live? 6. **Scar tissue** - What instinctive flinches do they have from past failures? What patterns trigger "this feels wrong" before they can articulate why?

**Adapt sub-questions based on source type:**

  • **Source-based:** Focus on: what does this tool catch that others miss? What trade-offs did its designers make? What does it refuse to do? What are its blind spots?
  • **Role-based:** Focus on: what do the best practitioners notice first? What's their threat model? Where i
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withcraft

Stop Vibing. Start Crafting. Claude Code plugin: guided + controlled development orchestration harness with built-in workflow + state management, for designing + building durable, production-ready software through the entire product lifecycle - new projects

Get the whole plugin, auto-invoked
Stats
40
Stars
0
Views
5
Forks
Active
Maintenance
Shell
Language
MIT
License
2d ago
Last commit
3mo ago
Created

Repo: drobins25/craft