| name | new-workspace |
| description | Provision a new smart-home workspace on disk. Use when the user wants to start a fresh workspace for Home Assistant administration, multi-room audio (Snapcast/Spotify), or a Plex+NAS media server. Accepts a workspace name and a variant (home-assistant | multi-room-audio | media-server). Scaffolds the workspace, personalises CLAUDE.md from the user's global memory, and (by default) creates a public GitHub repo. |
| disable-model-invocation | true |
| allowed-tools | Bash(mkdir *), Bash(cp *), Bash(cat *), Bash(git init *), Bash(git add *), Bash(git commit *), Bash(gh repo create *), Bash(gh auth status), Bash(git push *), Read |
Provision Smart-Home Workspace
Creates a new workspace for one of the smart-home sub-domains. The plugin's commands (/smart-home:ha-*, /smart-home:sc-*, /smart-home:sp-*, /smart-home:ps-*) and agents are globally available once the plugin is installed — this skill only provisions the data scaffold (CLAUDE.md, context/, outputs/, etc.) that those commands read from and write to.
Arguments
$ARGUMENTS is parsed as:
- First positional: workspace name (kebab-case, used as directory and GitHub repo name). Required.
- Second positional (optional): target parent path. Defaults to
~/repos/github/my-repos.
--variant=<home-assistant|multi-room-audio|media-server> (optional): which scaffold to copy. Default: home-assistant.
--local-only (optional): skip GitHub repo creation and push. Default: create a public GitHub repo and push.
--private (optional): create the GitHub repo as private. Default: public.
Examples
/smart-home:new-workspace my-ha --variant=home-assistant
/smart-home:new-workspace kitchen-audio --variant=multi-room-audio
/smart-home:new-workspace plex-stack --variant=media-server --local-only
Procedure
1. Parse arguments
Extract workspace name, target parent path, variant, and flags from $ARGUMENTS. If workspace name is missing, ask the user for it before proceeding. If variant isn't one of the three supported values, tell the user which variants are available.
2. Resolve the scaffold path
The bundled scaffold lives at ${CLAUDE_SKILL_DIR}/../../template/<variant>/. Confirm it exists.
3. Read ambient facts
Read ~/.claude/CLAUDE.md if it exists. Extract OS, locale, timezone, and user identity facts. These will personalise the workspace's CLAUDE.md at step 5.
4. Create the workspace directory
mkdir -p <target-parent>/<workspace-name>
cp -r ${CLAUDE_SKILL_DIR}/../../template/<variant>/. <target-parent>/<workspace-name>/
Do not copy any .claude/ tree. The plugin's primitives are global — a .claude/ in the workspace would shadow them.
5. Personalise CLAUDE.md
Open the new workspace's CLAUDE.md and:
- Add a short header noting the workspace name and variant.
- If ambient facts include OS/locale/timezone, embed them so downstream commands can skip re-asking.
- Leave topology placeholders in place (hosts, tokens) — the user fills those in during onboarding.
6. Prompt for workspace-specific facts
Ask the user only for facts this plugin can't infer. Per variant:
- home-assistant: access URL (e.g.
http://homeassistant.local:8123), installation type (OS/Supervised/Container/Core), host IP. Write into CLAUDE.md under the Home Assistant Environment section.
- multi-room-audio: Snapcast server host, at least one client host. Write into the topology YAML block in
CLAUDE.md.
- media-server: Plex host, NAS host, NAS kind (synology/truenas/unraid/other). Write into the topology block in
CLAUDE.md.
7. Initialise git and (optionally) publish
cd <target-parent>/<workspace-name>
git init
git add .
git commit -m "Initial workspace from smart-home plugin (variant: <variant>)"
Unless --local-only is set:
gh repo create <workspace-name> --<public|private> --source=. --push
Use --public by default, --private if the flag was passed.
8. Print next steps
Tell the user:
- Workspace path.
- Variant chosen.
- Which plugin commands apply:
home-assistant → /smart-home:ha-ha-status, /smart-home:ha-check-automations, /smart-home:ha-ha-snapshot, etc.
multi-room-audio → /smart-home:sc-status, /smart-home:sc-scan-network, /smart-home:sp-install-snapcast-server, etc.
media-server → /smart-home:ps-discover, /smart-home:ps-status, /smart-home:ps-onboard.
- Reminder that the workspace is data — they can delete/move it freely without losing the plugin's commands.
Notes
- Resolve the scaffold via
${CLAUDE_SKILL_DIR}/../../template/ (not ${CLAUDE_PLUGIN_ROOT} — that variable isn't exported in skill bash injection, only in hooks/MCP).
- Never copy
.claude/commands/, .claude/agents/, or .claude/skills/ into the new workspace. Overrides can be added manually later if genuinely needed.
- Don't hard-code any personal paths or identifiers — everything comes from user memory or prompts.