| name | workspace-install |
| description | Scaffolds a new Solo workspace (product project) from the workspace/ template and installs the Solo tooling into it. Use when initializing a new project (/solo:init) or re-installing/upgrading the tooling in an existing workspace. Separates the two development angles — the Solo framework vs the workspace product — and lays down a self-contained product repo. |
| tags | [] |
Workspace Install
Overview
Solo has two development angles, and this skill is the bridge between them:
- The Solo framework — the tooling:
.claude/ (commands, skills, agents),
the solo/ Python package, and the workspace/ template. You improve Solo here.
- The workspace — the product you build with the tooling: its own
CLAUDE.md, docs/, solo.yaml, modules/, and an installed copy of the
tooling under its .claude/.
Installing is like create-*-app: copy the template, fill the blanks, and hand
back a ready-to-run product repo. The workspace/ template already bundles the
full tooling under workspace/.claude/ (commands, skills, agents, workflows,
hooks), so a scaffolded product is self-contained — portable and version-pinned
— with no separate tooling-fetch step.
Inputs
PROJECT_NAME — the product name (kebab or title case).
PROJECT_GOAL — one-line goal.
TARGET — where to create the workspace. Default: the current directory if it's
empty, else a new ./{{PROJECT_NAME}}/ subdirectory. Never overwrite existing
product files without confirming.
SOLO_ROOT — the Solo framework checkout (where workspace/ and .claude/
live). Default: the repo this skill is running from.
Install steps
-
Preflight. Resolve SOLO_ROOT (must contain workspace/ and .claude/).
Resolve TARGET; if non-empty and already a Solo workspace, this is a
re-install (upgrade tooling only — step 4 — and stop).
-
Copy the whole template. Copy SOLO_ROOT/workspace/ → TARGET/ — the
entire tree at once: CLAUDE.md, solo.yaml, README.md, .gitignore, the
docs/ tree, modules/, integration/, and .claude/ (the bundled
tooling — commands, skills, agents, workflows, hooks). Drop the .gitkeep
files once real content lands. Do not copy the framework's own root
CLAUDE.md — the workspace has its own.
-
Fill the templates. Substitute in the copied product files (CLAUDE.md,
solo.yaml, README.md, docs/idea.md):
{{PROJECT_NAME}} → PROJECT_NAME
{{PROJECT_GOAL}} → PROJECT_GOAL
Leave the <...> placeholders in CLAUDE.md → Project Specifics for /solo:plan.
-
Re-install / upgrade path. If TARGET is already a workspace, overwrite
only TARGET/.claude/ (commands, skills, agents, workflows, hooks,
.solo-version) from SOLO_ROOT/workspace/.claude/, preserving
TARGET/.claude/README.md; leave all product files, docs, and state untouched,
then stop.
-
Initialize state & git. From TARGET/:
solo-state write .solo/state.json --project <PROJECT_NAME> --phase init --status done
git init (if not already a repo)
-
Verify & report. Confirm the tree exists, CLAUDE.md/solo.yaml have no
remaining {{...}} tokens, and the /solo:* commands + agents + workflows are
present under .claude/. Report what was created and suggest /solo:discover
or /solo:plan.
Guardrails
- Never clobber product work. On a non-empty target that isn't a recognized
workspace, stop and confirm the target with the user.
- Product code is never touched on re-install — only
.claude/ tooling.
- One source of truth for tooling. Don't hand-edit
TARGET/.claude/; change it
in the framework and re-install.