From content-writing
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.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin content-writingThis skill is limited to using the following tools:
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.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
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 is parsed as:
~/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./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
Extract workspace name, target parent path, variant, and flags from $ARGUMENTS. If workspace name is missing, ask the user for it before proceeding.
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.
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.
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.
Open the new workspace's CLAUDE.md and:
{{placeholders}} with the user's answers or sensible defaults.Ask the user only for facts this plugin can't infer:
/content-writing:publish works.posts/. Optional.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.
Tell the user:
/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).blog: reminder to configure the CMS MCP before /content-writing:publish.${CLAUDE_SKILL_DIR}/../../template/ (not ${CLAUDE_PLUGIN_ROOT} — that variable isn't exported in skill bash injection, only in hooks/MCP)..claude/commands/, .claude/agents/, or .claude/skills/ into the new workspace. If the user wants workspace-local overrides, they can add them manually later.