/publish
Publish a packaged product to myclaude.sh via the CLI. Shows summary, requires confirmation, runs myclaude validate + myclaude publish. Use when the creator says "publish", "ship it", "go live", or after /package.
Claude Code
$ npx -y skills add myclaude-sh/myclaude-creator-engine --skill publish --agent claude-code
Codex
$ npx skills add myclaude-sh/myclaude-creator-engine --skill publish -a codex -y
Cursor
$ npx skills add myclaude-sh/myclaude-creator-engine --skill publish -a cursor -y
Gemini CLI
$ npx skills add myclaude-sh/myclaude-creator-engine --skill publish -a gemini-cli -y
GitHub Copilot
$ npx skills add myclaude-sh/myclaude-creator-engine --skill publish -a github-copilot -y
OpenCode
$ npx skills add myclaude-sh/myclaude-creator-engine --skill publish -a opencode -y
Windsurf
$ npx skills add myclaude-sh/myclaude-creator-engine --skill publish -a windsurf -y
SKILL.md
publish.SKILL.mdname: publish
description: >-
Publish a packaged product to myclaude.sh via the CLI. Shows summary,
requires confirmation, runs myclaude validate + myclaude publish.
Use when the creator says "publish", "ship it", "go live", or after /package.
argument-hint: "[product-slug]"
allowed-tools:
- Read
- Bash(myclaude *)
- AskUserQuestion
Publisher
Publish a packaged product to the MyClaude marketplace via CLI delegation.
**When to use:** After /package has staged .publish/ directory.
**When NOT to use:** If product hasn't been packaged yet (run /package first).
---
Activation Protocol
0. **Shared preamble:** Load `references/quality/activation-preamble.md` — context assembly, persona adaptation, deterministic routing rules. 1. Identify product: `$ARGUMENTS` as slug → `workspace/{slug}/` 2. Read `.meta.yaml` → verify state is "packaged" 3. Verify `.publish/` exists with vault.yaml 4. Check CLI: `which myclaude` — if not found, show install instructions 5. Check CLI auth: run `myclaude whoami` — if "not logged in", show: "Not authenticated. Run `myclaude login` first." and stop. 6. Read `creator.yaml` → load author metadata. If missing — "Creator profile not found. Run `/onboard` first." and stop. 6b. **Load proactives:** Load `references/engine-proactive.md` — wire #1 (pipeline guidance: after publish, suggest /status to track installs), #14 (feedback loop: after publish, suggest checking install data next session), #18 (WOW moment for first publish). 7. **Load voice identity**: Load `references/quality/engine-voice-core.md`. Load the full `references/quality/engine-voice.md` only when composing the publish celebration (Step 6) — that is a peak moment. Use publish celebration format: "Published to myclaude.sh — live now." + install command + distribution vector note. Brief, proud, specific. 7b. **Exemplar load:** Load `references/quality/exemplar-outputs.md` sections E8 and E9 only — the first-publish celebration and nth-publish compact. Your celebration MUST carry the same Frame + emotion calibration: full ceremony for first/significant publishes, compact ✦ line for expert nth publishes. Adapt to creator journey position. 8. **CLI contract:** Load `references/cli-contract.md` for unified error handling. This skill has mixed severity — the most critical CLI surface in the pipeline. Severity map:
- **Blocking:** `validate --json` (Step 3) — abort publish if validation fails or CLI unavailable
- **Blocking:** `publish` (Step 4) — cannot proceed without CLI. Show manual alternative: `myclaude.sh/publish`
- **Blocking:** `whoami` (Step 5 pre-flight) — must be authenticated before publish
- **Silent-skip:** `search` (Step 8 competitive context) — skip without warning on failure
- **Silent-skip:** `profile pull` (Step 9 XP reminder) — skip without warning on failure
- **All queries except publish:** append `2>/dev/null`, 15s timeout
- **Auth detection:** use contract's auth flow pattern (whoami → check exit code + "not logged" in output)
---
Core Instructions
PUBLISH FLOW
**Step 1 — Summary**
Display what will be published:
Ready to publish:
Name: {displayName}
Slug: {slug}
Type: {type}
Version: {version}
Price: {price == 0 ? "Free" : "$" + price}
License: {license}
MCS: {level} ({score}%)
Files: {N} in .publish/
Publish to myclaude.sh? (yes/no)**Step 1b — Type-Specific Constraints**
If `type` is `claude-md`, append this note to the summary display before asking for confirmation:
Note: Rules files (.claude/rules/) cannot be auto-installed via the plugin system.
Buyers must manually copy the rules file to ~/.claude/rules/ or .claude/rules/ in
their project. Include this instruction in your README.md.
**Step 1c — Version Bump Guard**
Read `.meta.yaml → history.version` AND check if this slug+version combination was already published:
- Glob `workspace/{slug}/.meta.yaml` → read `state.published_at` and `history.version`
- If `state.phase == "published"` AND `history.version` matches the current version in `.publish/vault.yaml`:
- BLOCKING: "Version {version} is already published. Bump the version in `.meta.yaml → history.version` (e.g., 1.0.0 → 1.0.1) before re-publishing. This prevents 71+ users from receiving a silent no-change update."
- If `state.phase != "published"` (first publish): proceed — no version check needed.
**Step 2 — Confirmation**
Wait for explicit "yes" from creator. Do NOT proceed without confirmation.
**Step 3 — CLI Pre-flight**
cd workspace/{slug}/.publish && myclaude validate --json 2>/dev/nullParse JSON result. If exit code != 0 or JSON parse fails, report: "CLI validation failed or unavailable. Verify manually or run `/validate` first." and abort.
**Step 4 — Publish**
cd workspace/{slug}/.publish && myclaude publishReport CLI output verbatim.
**Step 5 — Update State**
On success:
# .meta.yaml updates
state:
phase: "published"
published_at: "{ISO timestamp}"
version: "{version}"**Step 5b — Seed creator-memory publish milestones (silent, idempotent)**
After the `.meta.yaml` state update succeeds, write up to two events to `creator-memory.yaml`: `first_publish` and `first_celebration`. Both are idempotent — each type writes exactly once across the Creator's entire history, ever.
**Why two events?** `first_publish` records the infrastructural milestone ("the Creator has now shipped something to a marketplace"). `first_celebration` records the emotional peak ("the WOW frame rendered, the ✦ arrived, the identity shifted"). On the very first publish they happen in the same second and look redundant, but they are semantically distinct: a future version of /publish could suppress the WOW frame (e.g., `--silent` or a re-publish scenario) without suppressing the milestone. Keeping them as separate events lets the memory layer express "shipped" separately from "celebrated".
**Procedure for `first_publ
Read more
name: publish description: >- Publish a packaged product to myclaude.sh via the CLI. Shows summary, requires confirmation, runs myclaude validate + myclaude publish. Use when the creator says "publish", "ship it", "go live", or after /package. argument-hint: "[product-slug]" allowed-tools: - Read - Bash(myclaude *) - AskUserQuestion
Publisher
Publish a packaged product to the MyClaude marketplace via CLI delegation.
**When to use:** After /package has staged .publish/ directory.
**When NOT to use:** If product hasn't been packaged yet (run /package first).
---
Activation Protocol
0. **Shared preamble:** Load `references/quality/activation-preamble.md` — context assembly, persona adaptation, deterministic routing rules. 1. Identify product: `$ARGUMENTS` as slug → `workspace/{slug}/` 2. Read `.meta.yaml` → verify state is "packaged" 3. Verify `.publish/` exists with vault.yaml 4. Check CLI: `which myclaude` — if not found, show install instructions 5. Check CLI auth: run `myclaude whoami` — if "not logged in", show: "Not authenticated. Run `myclaude login` first." and stop. 6. Read `creator.yaml` → load author metadata. If missing — "Creator profile not found. Run `/onboard` first." and stop. 6b. **Load proactives:** Load `references/engine-proactive.md` — wire #1 (pipeline guidance: after publish, suggest /status to track installs), #14 (feedback loop: after publish, suggest checking install data next session), #18 (WOW moment for first publish). 7. **Load voice identity**: Load `references/quality/engine-voice-core.md`. Load the full `references/quality/engine-voice.md` only when composing the publish celebration (Step 6) — that is a peak moment. Use publish celebration format: "Published to myclaude.sh — live now." + install command + distribution vector note. Brief, proud, specific. 7b. **Exemplar load:** Load `references/quality/exemplar-outputs.md` sections E8 and E9 only — the first-publish celebration and nth-publish compact. Your celebration MUST carry the same Frame + emotion calibration: full ceremony for first/significant publishes, compact ✦ line for expert nth publishes. Adapt to creator journey position. 8. **CLI contract:** Load `references/cli-contract.md` for unified error handling. This skill has mixed severity — the most critical CLI surface in the pipeline. Severity map:
- **Blocking:** `validate --json` (Step 3) — abort publish if validation fails or CLI unavailable
- **Blocking:** `publish` (Step 4) — cannot proceed without CLI. Show manual alternative: `myclaude.sh/publish`
- **Blocking:** `whoami` (Step 5 pre-flight) — must be authenticated before publish
- **Silent-skip:** `search` (Step 8 competitive context) — skip without warning on failure
- **Silent-skip:** `profile pull` (Step 9 XP reminder) — skip without warning on failure
- **All queries except publish:** append `2>/dev/null`, 15s timeout
- **Auth detection:** use contract's auth flow pattern (whoami → check exit code + "not logged" in output)
---
Core Instructions
PUBLISH FLOW
**Step 1 — Summary**
Display what will be published:
Ready to publish:
Name: {displayName}
Slug: {slug}
Type: {type}
Version: {version}
Price: {price == 0 ? "Free" : "$" + price}
License: {license}
MCS: {level} ({score}%)
Files: {N} in .publish/
Publish to myclaude.sh? (yes/no)**Step 1b — Type-Specific Constraints**
If `type` is `claude-md`, append this note to the summary display before asking for confirmation:
Note: Rules files (.claude/rules/) cannot be auto-installed via the plugin system. Buyers must manually copy the rules file to ~/.claude/rules/ or .claude/rules/ in their project. Include this instruction in your README.md.
**Step 1c — Version Bump Guard**
Read `.meta.yaml → history.version` AND check if this slug+version combination was already published:
- Glob `workspace/{slug}/.meta.yaml` → read `state.published_at` and `history.version`
- If `state.phase == "published"` AND `history.version` matches the current version in `.publish/vault.yaml`:
- BLOCKING: "Version {version} is already published. Bump the version in `.meta.yaml → history.version` (e.g., 1.0.0 → 1.0.1) before re-publishing. This prevents 71+ users from receiving a silent no-change update."
- If `state.phase != "published"` (first publish): proceed — no version check needed.
**Step 2 — Confirmation**
Wait for explicit "yes" from creator. Do NOT proceed without confirmation.
**Step 3 — CLI Pre-flight**
cd workspace/{slug}/.publish && myclaude validate --json 2>/dev/nullParse JSON result. If exit code != 0 or JSON parse fails, report: "CLI validation failed or unavailable. Verify manually or run `/validate` first." and abort.
**Step 4 — Publish**
cd workspace/{slug}/.publish && myclaude publishReport CLI output verbatim.
**Step 5 — Update State**
On success:
# .meta.yaml updates
state:
phase: "published"
published_at: "{ISO timestamp}"
version: "{version}"**Step 5b — Seed creator-memory publish milestones (silent, idempotent)**
After the `.meta.yaml` state update succeeds, write up to two events to `creator-memory.yaml`: `first_publish` and `first_celebration`. Both are idempotent — each type writes exactly once across the Creator's entire history, ever.
**Why two events?** `first_publish` records the infrastructural milestone ("the Creator has now shipped something to a marketplace"). `first_celebration` records the emotional peak ("the WOW frame rendered, the ✦ arrived, the identity shifted"). On the very first publish they happen in the same second and look redundant, but they are semantically distinct: a future version of /publish could suppress the WOW frame (e.g., `--silent` or a re-publish scenario) without suppressing the milestone. Keeping them as separate events lets the memory layer express "shipped" separately from "celebrated".
**Procedure for `first_publ
The creation pipeline for Claude Code products — research, create, validate, publish. 13 types, 20 quality patterns, zero coding required.
Other skills on myclaude-creator-engine.
create
Scaffold a new product with MCS-1 valid structure and WHY comments. Supports all 13 types. Use when the creator says 'new skill',…
explore
Search the marketplace, analyze competition, discover gaps, and find inspiration. Use when: 'explore', 'search marketplace',…
fill
Guide content filling for scaffolded products. Walks sections, asks domain questions, writes expertise into files. Use after…
help
Show all available Studio Engine commands with descriptions. Displays command list organized by category, current edition…
import
Import existing skills from .claude/skills/ into the Engine workspace for validation, packaging, and publishing. Auto-detects…
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about publish.
- Which coding agents can use publish?
- publish installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

