Skip to content

/craft-project

Switch between projects in a monorepo, or show a cross-project dashboard.

From plugin
craft
7377 skills27 agents77 commands7 hooks
+1
> /plugin marketplace add drobins25/craft
> /plugin install craft@craft

Command definition

craft-project.md
name: project
description: "Switch between projects in a monorepo, or show a cross-project dashboard."

Craft Project

Manage which project is active in a multi-project monorepo.

Behavior

No arguments: Show dashboard

Run the `discover-projects.sh` script to list all projects:

bash "${CLAUDE_PLUGIN_ROOT}/hooks/scripts/discover-projects.sh"

This returns `name|path|status|package_manager` lines.

Display a dashboard like:

┌──────────────────────────────────────────────────────┐
│  PROJECTS                                             │
├──────────────┬──────────┬───────────┬────────────────┤
│ Project      │ Cycle    │ Progress  │ Status         │
├──────────────┼──────────┼───────────┼────────────────┤
│ ● craftsman  │ 7-ext    │ 4/5 done  │ active-dev     │
│ ○ you-coded  │ —        │ —         │ pre-dev        │
│ ○ master     │ —        │ —         │ planning       │
└──────────────┴──────────┴───────────┴────────────────┘
Currently pinned: craftsman

For each project, read its `.craft/.global-state` to get ACTIVE_CYCLE, then read cycle state for progress. Mark the currently pinned project (from `$CRAFT_PROJECT_ROOT` env var) with a bullet.

With project name argument: Switch project

When the user provides a project name (e.g., `/craft:project craftsman`):

1. Validate the project exists in the registry (or is "root"/"master" for the monorepo root) 2. Resolve its absolute path 3. Update the session env via `$CLAUDE_ENV_FILE`:

   echo "export CRAFT_PROJECT_ROOT=\"/absolute/path/to/project\"" >> "$CLAUDE_ENV_FILE"
   echo "export CRAFT_PROJECT_NAME=\"craftsman\"" >> "$CLAUDE_ENV_FILE"

4. Write the persistent pin file (so hooks can resolve without env vars):

   repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
   printf '%s\n%s\n' "/absolute/path/to/project" "project-name" > "$repo_root/.craft/.pinned-project"

5. Show a mini status summary for the new project (backlog count, active cycle, etc.)

Important

  • This command only applies to monorepo setups with multiple `.craft/` directories
  • In single-project repos, inform the user there's only one project and no switching needed
  • The project registry lives at the git repo root: `.craft/projects/*.md`
  • Each registry file has YAML frontmatter with `name`, `path`, `status`, `package_manager`
Read more
@drobins25
Ships withcraft

Stop Vibing. Start Crafting.

7311 skills27 agents1 MCP
Get the whole plugin, auto-invoked

Stars on GitHub

Momentum

stars in total
73
Star history of drobins25/craft on GitHub, a chart by star-history.com

Other commands on craft.

craft-analyze
Auto-invoked

craft-analyze

Command

Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.

@drobins25@drobins25Install Command
craft-annotate
Auto-invoked

craft-annotate

Command

Point at anything in a live browser tab - every pin gets a live attempt on the page the moment you SEND it, and the session keeps…

@drobins25@drobins25Install Command
craft-ask
Auto-invoked

craft-ask

Command

Consult a craft agent. Routes your question to the best mind in the workshop - not a menu, a recommendation.

@drobins25@drobins25Install Command
craft-become
Auto-invoked

craft-become

Command

Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain -…

@drobins25@drobins25Install Command
craft-bugs
Auto-invoked

craft-bugs

Command

File a bug without fixing it, from a person mid-conversation or an agent mid-run. One door, a complete record on disk, nobody…

@drobins25@drobins25Install Command

More commands from other plugins.

build
Auto-invoked

build

Command

Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.

@addyosmani@addyosmaniInstall Command