Auto-Publish Specs to mkdshare.dev from Claude Code's Brainstorming Skill
by Philip Andersen
When you use the superpowers plugin for Claude Code, the brainstorming skill writes design specs to your local filesystem. That's fine — but it's much nicer to have specs automatically published to a shareable URL the moment they're written.
This post shows how to wire that up using Claude Code's project-local skill override feature and the mkdshare.dev MCP server.
How It Works
Claude Code resolves skills in this order:
.claude/skills/<name>/SKILL.md— project-local (highest priority)- Plugin skills (e.g. superpowers)
- Global user skills
If a project-local skill has the same name as a plugin skill, the local version wins. That means you can copy any superpowers skill into your project's .claude/skills/ directory, add whatever extra steps you want, and Claude will use your version instead.
Step 1: Connect the mkdshare MCP Server
Add the mkdshare MCP server to your Claude Code project. In your project's .claude/settings.json (or settings.local.json if you don't want it checked in):
{
"mcpServers": {
"mkdshare": {
"command": "npx",
"args": ["-y", "mkdshare-mcp"]
}
}
}
Then authenticate by asking Claude: "Authenticate with mkdshare" — it will walk you through Google sign-in via device auth.
Step 2: Create the Project-Local Skill Override
Copy the superpowers brainstorming skill into your project:
.claude/skills/brainstorming/SKILL.md
Then add these two additions:
In the checklist (step 6), change:
6. **Write design doc** — save to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
to:
6. **Write design doc** — save to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md`, commit, and upload to mkdshare.dev
In the "After the Design → Documentation" section, add after the git commit step:
- Upload to mkdshare.dev using the `mcp__mkdshare__create_document` tool:
- `title`: `[YYYY-MM-DD] <feature-name> Design`
- `content`: full markdown content of the spec
- `visibility`: `"login_required"`
- `allowed_emails`: `"your@email.com"`
In the "User Review Gate", change the prompt to reference the mkdshare URL:
> "Spec written and posted to `<mkdshare-url>`. Please review it and let me know if you want to make any changes before we start writing out the implementation plan."
Step 3: Do the Same for Writing Plans (Optional)
The writing-plans skill can get the same treatment. Create .claude/skills/writing-plans/SKILL.md and update the "Save plans to" section:
**Save plans to:** mkdshare.dev using the `create_document` MCP tool with:
- `visibility: "login_required"`
- `allowed_emails: "your@email.com"`
- `title`: `[YYYY-MM-DD] <feature-name> Implementation Plan`
And update the execution handoff to include the mkdshare URL.
Step 4: Tell Claude to Use the Local Skills
In your CLAUDE.md, add:
Always invoke `brainstorming` (not `superpowers:brainstorming`) — the project-local version uploads specs to mkdshare.dev automatically.
Always invoke `writing-plans` (not `superpowers:writing-plans`) — the project-local version uploads plans to mkdshare.dev automatically.
This is important: if Claude invokes superpowers:brainstorming (the fully-qualified name), the plugin version runs instead of your local override.
Result
Now every time you brainstorm a feature:
- Claude collaborates with you through the design
- Writes the spec to
docs/superpowers/specs/ - Commits it to git
- Automatically uploads it to mkdshare.dev and gives you a shareable URL
- Asks you to review it at that URL before moving to implementation
No copy-paste, no manual uploads. The spec is wherever you need it — in git for history, on mkdshare.dev for review.
Visibility Options
The create_document tool supports three visibility modes:
| Mode | Who can read |
|---|---|
public |
Anyone with the link |
login_required |
Any logged-in mkdshare user, or specific emails via allowed_emails |
domain_restricted |
Users whose email matches allowed_domain |
For internal specs, login_required with your team's emails is the right default. For public write-ups, use public.
Why Project-Local Skills?
This pattern is useful beyond mkdshare — the same approach works for:
- Posting specs to Notion, Linear, or Confluence via MCP
- Sending a Slack notification when a plan is written
- Enforcing project-specific conventions on top of a shared skill base
The key insight: project-local skills let you layer project-specific behavior on top of shared plugin workflows, without forking the plugin.