From craft-skills
Use when the user needs to plan and architect a new feature before implementation begins. This includes analyzing requirements, asking clarifying questions, and creating a detailed implementation plan aligned with the project's architecture. Invoke BEFORE any coding work starts.
npx claudepluginhub alexiolan/craft-skills --plugin craft-skillsThis skill uses the workspace's default tool permissions.
Analyze requirements and create a detailed implementation plan. No code is written — only planning.
Use when starting a new feature that needs thorough design exploration. This is the most comprehensive workflow: collaborative brainstorming with the user, then planning, then parallel agent development, then browser testing. Use for complex features, unclear requirements, or when the user wants to explore approaches before committing.
Replicates Claude Code plan mode in read-only fashion: explores codebase, designs changes, gets user approval, then writes plan to .claude/plans/<slug>.md without executing. Triggers on 'plan only' phrases.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Analyze requirements and create a detailed implementation plan. No code is written — only planning.
The user input is: $ARGUMENTS
Prompt File Number (e.g., 01, 07):
.claude/prompts/{number}*.md01 → reads .claude/prompts/01-initial-structure.mdDirect Prompt Text (e.g., Add a logout button to the navbar):
Empty Input:
.claude/prompts/) or direct requirementsBefore dispatching the architect agent, gather context directly — no dedicated agents for graph or LLM.
Step 1 — Check LM Studio (Bash tool, wait for result):
Profile-gated. Only runs when profile includes llm:
CRAFT_PROFILE=$(cat .craft-profile 2>/dev/null || echo "claude")
case "$CRAFT_PROFILE" in
*llm*)
CRAFT_SCRIPTS=$(find ~/.claude/plugins -name "llm-agent.sh" -path "*/craft-skills/*" -exec dirname {} \; 2>/dev/null | head -1) && curl -s --max-time 2 ${LLM_URL:-http://127.0.0.1:1234} > /dev/null 2>&1 && echo "LLM_AVAILABLE:$CRAFT_SCRIPTS" || echo "LLM_UNAVAILABLE"
;;
*)
echo "LLM_SKIPPED_BY_PROFILE"
;;
esac
Step 2 — Start LLM exploration in background (if available AND profile includes llm):
Skip if Step 1 returned LLM_SKIPPED_BY_PROFILE or LLM_UNAVAILABLE. Otherwise run with Bash tool (run_in_background: true, timeout 300000ms). Self-contained profile check:
CRAFT_PROFILE=$(cat .craft-profile 2>/dev/null || echo "claude")
case "$CRAFT_PROFILE" in
*llm*)
CRAFT_SCRIPTS=$(find ~/.claude/plugins -name "llm-agent.sh" -path "*/craft-skills/*" -exec dirname {} \; 2>/dev/null | head -1)
bash "$CRAFT_SCRIPTS/llm-agent.sh" "Investigate [2-3 domain paths] for a [feature] feature. Check: types, services, components, patterns, API endpoints. Structured summary." <project-root>
;;
*)
echo "LLM_EXPLORATION_SKIPPED_BY_PROFILE"
;;
esac
When standalone, unload after only if LLM was actually loaded:
CRAFT_PROFILE=$(cat .craft-profile 2>/dev/null || echo "claude")
case "$CRAFT_PROFILE" in
*llm*)
CRAFT_SCRIPTS=$(find ~/.claude/plugins -name "llm-unload.sh" -path "*/craft-skills/*" -exec dirname {} \; 2>/dev/null | head -1)
bash "$CRAFT_SCRIPTS/llm-unload.sh"
;;
esac
When part of craft pipeline, skip unloading (the parent craft skill handles it in Step 2.4).
Step 3 — Run graph exploration (while LLM processes):
Load graph MCP tools via ToolSearch (search for "code-review-graph"), then run:
build_or_update_graph_tool — ensure graph is freshsemantic_search_nodes_tool — search with feature keywords (2-3 variations)query_graph_tool with file_summaryquery_graph_tool with imports_of and importers_ofNEVER use get_architecture_overview_tool, list_communities_tool, or detect_changes_tool.
Scoping rule: Never ask to "explore the whole codebase." Always scope to specific directories or files.
Wait for both agents to complete. Pass their findings to the architect agent in Step 1.
The architect's plan will require a Prior-Art Scan table against the project's shared surface (Step 2). A pre-generated .claude/reuse-index.md makes that scan cheap and reliable; without one, agents fall back to ad-hoc grep and miss more.
if [ ! -f .claude/reuse-index.md ]; then
echo "REUSE_INDEX_MISSING"
else
echo "REUSE_INDEX_PRESENT"
fi
REUSE_INDEX_PRESENT → continue to Step 1.REUSE_INDEX_MISSING → invoke craft-skills:reuse-index via the Skill tool. It auto-detects the project's shared directory (asks if it can't), scans exported symbols, and writes .claude/reuse-index.md. Non-blocking — the pipeline continues even if generation is skipped. One-time-per-project cost; mirrors the aesthetic-direction pattern.Fallback: if reuse-index skill is unavailable OR the user skips the auto-detection prompt, continue without it. The Prior-Art Scan table in Step 2 will rely on ad-hoc searches.
Dispatch an implementation-architect agent (opus model) using the Agent tool. Read the agent prompt template from the architect-prompt.md file in this skill's directory, then append the requirements to it.
Include in the agent prompt:
The agent should:
Relay any clarification questions the architect raises to the user. Wait for answers before proceeding.
This step replaces the older ambient "UI/UX plan review." Instead of opportunistic skill auto-triggering, the design-layer runs explicitly and deterministically — only when the plan touches UI, with transparent gating on solo vs combined mode.
1.5a — Does the plan touch UI?
Inspect the plan's file list. If any target file matches **/*.{tsx,vue,svelte,jsx} or lives under feature/, ui/, components/, pages/, src/app/**, proceed. Otherwise skip the entire design-layer and jump to Step 2.
1.5b — Ensure aesthetic direction exists:
if [ ! -f .claude/aesthetic-direction.md ]; then
echo "AESTHETIC_MISSING"
else
echo "AESTHETIC_PRESENT"
fi
AESTHETIC_PRESENT → continue to 1.5cAESTHETIC_MISSING → invoke craft-skills:aesthetic-direction via the Skill tool. It generates .claude/aesthetic-direction.md non-blockingly and returns. This is a one-time-per-project cost.1.5c — Generate UX brief:
Invoke craft-skills:ux-brief via the Skill tool with the spec/plan path as argument.
The ux-brief skill will:
frontend-design (solo) or frontend-design + ui-ux-pro-max (combined) based on complexity.claude/plans/{feature-dir}/ux-brief.md with diagnosis + prioritized patches + success criteria1.5d — Integrate brief into plan:
Read the returned ux-brief.md. For each P0/P1 patch in the brief:
If the brief's priorities contradict the plan's task ordering, favor the brief — it has the UX reasoning.
Fallback: if ux-brief skill is unavailable (e.g. frontend-design not installed), continue without a brief. Add a note to the plan: > UX brief not generated (skill unavailable). UI implementation proceeds against CLAUDE.md conventions only.
Review the implementation plan and verify:
Ask the user for approval:
Save the approved plan to .claude/plans/YYYY-MM-DD-{feature-name}.md and report the path.
The plan is now ready for craft-skills:develop or craft-skills:finalize.