| name | new-workspace |
| description | Provision a new content-writing workspace on disk. Use when the user wants to start a new writing project (general writing, blog, opinion blog, or document-templates library). Accepts a workspace name and optional variant. Scaffolds the workspace, personalises CLAUDE.md from user memory, and (by default) creates a 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 Content-Writing Workspace
Creates a new workspace for writing projects. This plugin's commands (/content-writing:draft, /content-writing:proofread, /content-writing:publish, etc.) are globally available once installed — this skill only provisions the data scaffold (CLAUDE.md, drafts/, research/, 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=<general-writing|blog|opinion-piece|document-templates> (optional): which scaffold to copy. Default: general-writing.
--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
/content-writing:new-workspace essay-on-agents
/content-writing:new-workspace my-blog --variant=blog
/content-writing:new-workspace hot-takes --variant=opinion-piece
/content-writing:new-workspace client-doc-templates --variant=document-templates --private
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.
2. Resolve the scaffold path
The bundled scaffold lives at ${CLAUDE_SKILL_DIR}/../../template/<variant>/. Confirm it exists. If the variant isn't one of general-writing | blog | opinion-piece | document-templates, tell the user which variants are available.
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.
5. Personalise CLAUDE.md
Open the new workspace's CLAUDE.md and:
- Replace any
{{placeholders}} with the user's answers or sensible defaults.
- Replace any placeholder identity with the facts from step 3.
- Add a short header noting the workspace name and variant.
6. Prompt for variant-specific facts
Ask the user only for facts this plugin can't infer:
- general-writing: project description (one line) and whether it's a blog post, essay, book chapter, etc.
- blog: blog URL, platform (Contentful, Ghost, WordPress, custom), content focus, voice/tone. Remind the user they'll need the corresponding CMS MCP configured before
/content-writing:publish works.
- opinion-piece: default topic areas (comma-separated) to pre-seed subfolders under
posts/. Optional.
- document-templates: describe the document family (client deliverables, internal briefs, etc.). Optional.
7. Initialise git and (optionally) publish
cd <target-parent>/<workspace-name>
git init
git add .
git commit -m "Initial workspace from content-writing plugin"
Unless --local-only is set:
gh repo create <workspace-name> --<public|private> --source=. --push
Use --public by default, --private if flag was passed.
8. Print next steps
Tell the user:
- Workspace path.
- Variant chosen.
- Which plugin commands apply (
/content-writing:draft, /content-writing:proofread, /content-writing:new-version for general writing; /content-writing:new-post, /content-writing:generate-index, /content-writing:publish for blog / opinion-piece; /content-writing:add-example, /content-writing:analyze-style, /content-writing:generate-style-guide for an examples collection — usable in any variant).
- For
blog: reminder to configure the CMS MCP before /content-writing:publish.
- Reminder that the workspace is data — they can delete/move it freely without losing the plugin's commands.
Notes
- The scaffold path must be resolved 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. If the user wants workspace-local overrides, they can add them manually later.
- Don't hard-code any personal paths or identifiers here — everything comes from user memory or prompts.