diff --git a/ship/SKILL.md b/ship/SKILL.md
index 9e6efc71..aca0c61a 100644
--- a/ship/SKILL.md
+++ b/ship/SKILL.md
@@ -2684,7 +2684,38 @@ EOF
**If neither CLI is available:**
Print the branch name, remote URL, and instruct the user to create the PR/MR manually via the web UI. Do not stop — the code is pushed and ready.
-**Output the PR/MR URL** — then proceed to Step 20.
+**Output the PR/MR URL** — then proceed to Step 19.5.
+
+---
+
+## Step 19.5: Offer methodology skill publishing (conditional)
+
+If this PR touched any standalone methodology skill (`openclaw/skills/gstack-*/SKILL.md`) or the marketplace manifest (`skills.json`), offer to publish the updated skills to the configured marketplaces after merge.
+
+```bash
+git diff origin/...HEAD --name-only | grep -E '^(openclaw/skills/gstack-[^/]+/SKILL\.md|skills\.json)$' || true
+```
+
+If the output is empty: skip this step silently. Continue to Step 20.
+
+If any matches: run a dry-run preview so the user sees exactly what would publish and what auth is missing.
+
+```bash
+~/.claude/skills/gstack/bin/gstack-publish --dry-run
+```
+
+Then use AskUserQuestion with the structure in the preamble:
+- **Re-ground:** project, branch, PR just opened.
+- **Simplify:** "This PR updated methodology skills. gstack-publish can push them to ClawHub, SkillsMP, and Vercel Skills.sh so other developers on other agents can install them. Dry-run above shows what would ship and whether each marketplace is authed."
+- **RECOMMENDATION:** A because the dry-run just verified the manifest and one-command distribution is the whole point of having a marketplace publisher.
+- **Options:**
+ - A) Publish now — run `gstack-publish` (human: ~2min / CC: ~30s). Completeness: 9/10.
+ - B) Publish after the PR merges — `/document-release` won't push this automatically; you'll run `gstack-publish` manually once the branch is on main. Completeness: 7/10.
+ - C) Skip — don't publish this release. Completeness: 4/10.
+
+If A: run `~/.claude/skills/gstack/bin/gstack-publish` (no --dry-run). Report success/failure per marketplace. If any marketplace auth is missing, the dry-run above surfaced it; the real publish will skip that marketplace with an isolated error rather than aborting the batch.
+
+If B or C: continue to Step 20.
---
diff --git a/ship/SKILL.md.tmpl b/ship/SKILL.md.tmpl
index d527afcc..25e93dfc 100644
--- a/ship/SKILL.md.tmpl
+++ b/ship/SKILL.md.tmpl
@@ -767,7 +767,38 @@ EOF
**If neither CLI is available:**
Print the branch name, remote URL, and instruct the user to create the PR/MR manually via the web UI. Do not stop — the code is pushed and ready.
-**Output the PR/MR URL** — then proceed to Step 20.
+**Output the PR/MR URL** — then proceed to Step 19.5.
+
+---
+
+## Step 19.5: Offer methodology skill publishing (conditional)
+
+If this PR touched any standalone methodology skill (`openclaw/skills/gstack-*/SKILL.md`) or the marketplace manifest (`skills.json`), offer to publish the updated skills to the configured marketplaces after merge.
+
+```bash
+git diff origin/...HEAD --name-only | grep -E '^(openclaw/skills/gstack-[^/]+/SKILL\.md|skills\.json)$' || true
+```
+
+If the output is empty: skip this step silently. Continue to Step 20.
+
+If any matches: run a dry-run preview so the user sees exactly what would publish and what auth is missing.
+
+```bash
+~/.claude/skills/gstack/bin/gstack-publish --dry-run
+```
+
+Then use AskUserQuestion with the structure in the preamble:
+- **Re-ground:** project, branch, PR just opened.
+- **Simplify:** "This PR updated methodology skills. gstack-publish can push them to ClawHub, SkillsMP, and Vercel Skills.sh so other developers on other agents can install them. Dry-run above shows what would ship and whether each marketplace is authed."
+- **RECOMMENDATION:** A because the dry-run just verified the manifest and one-command distribution is the whole point of having a marketplace publisher.
+- **Options:**
+ - A) Publish now — run `gstack-publish` (human: ~2min / CC: ~30s). Completeness: 9/10.
+ - B) Publish after the PR merges — `/document-release` won't push this automatically; you'll run `gstack-publish` manually once the branch is on main. Completeness: 7/10.
+ - C) Skip — don't publish this release. Completeness: 4/10.
+
+If A: run `~/.claude/skills/gstack/bin/gstack-publish` (no --dry-run). Report success/failure per marketplace. If any marketplace auth is missing, the dry-run above surfaced it; the real publish will skip that marketplace with an isolated error rather than aborting the batch.
+
+If B or C: continue to Step 20.
---
diff --git a/test/fixtures/golden/claude-ship-SKILL.md b/test/fixtures/golden/claude-ship-SKILL.md
index 9e6efc71..aca0c61a 100644
--- a/test/fixtures/golden/claude-ship-SKILL.md
+++ b/test/fixtures/golden/claude-ship-SKILL.md
@@ -2684,7 +2684,38 @@ EOF
**If neither CLI is available:**
Print the branch name, remote URL, and instruct the user to create the PR/MR manually via the web UI. Do not stop — the code is pushed and ready.
-**Output the PR/MR URL** — then proceed to Step 20.
+**Output the PR/MR URL** — then proceed to Step 19.5.
+
+---
+
+## Step 19.5: Offer methodology skill publishing (conditional)
+
+If this PR touched any standalone methodology skill (`openclaw/skills/gstack-*/SKILL.md`) or the marketplace manifest (`skills.json`), offer to publish the updated skills to the configured marketplaces after merge.
+
+```bash
+git diff origin/...HEAD --name-only | grep -E '^(openclaw/skills/gstack-[^/]+/SKILL\.md|skills\.json)$' || true
+```
+
+If the output is empty: skip this step silently. Continue to Step 20.
+
+If any matches: run a dry-run preview so the user sees exactly what would publish and what auth is missing.
+
+```bash
+~/.claude/skills/gstack/bin/gstack-publish --dry-run
+```
+
+Then use AskUserQuestion with the structure in the preamble:
+- **Re-ground:** project, branch, PR just opened.
+- **Simplify:** "This PR updated methodology skills. gstack-publish can push them to ClawHub, SkillsMP, and Vercel Skills.sh so other developers on other agents can install them. Dry-run above shows what would ship and whether each marketplace is authed."
+- **RECOMMENDATION:** A because the dry-run just verified the manifest and one-command distribution is the whole point of having a marketplace publisher.
+- **Options:**
+ - A) Publish now — run `gstack-publish` (human: ~2min / CC: ~30s). Completeness: 9/10.
+ - B) Publish after the PR merges — `/document-release` won't push this automatically; you'll run `gstack-publish` manually once the branch is on main. Completeness: 7/10.
+ - C) Skip — don't publish this release. Completeness: 4/10.
+
+If A: run `~/.claude/skills/gstack/bin/gstack-publish` (no --dry-run). Report success/failure per marketplace. If any marketplace auth is missing, the dry-run above surfaced it; the real publish will skip that marketplace with an isolated error rather than aborting the batch.
+
+If B or C: continue to Step 20.
---
diff --git a/test/fixtures/golden/codex-ship-SKILL.md b/test/fixtures/golden/codex-ship-SKILL.md
index 04f80598..61c1b367 100644
--- a/test/fixtures/golden/codex-ship-SKILL.md
+++ b/test/fixtures/golden/codex-ship-SKILL.md
@@ -2299,7 +2299,38 @@ EOF
**If neither CLI is available:**
Print the branch name, remote URL, and instruct the user to create the PR/MR manually via the web UI. Do not stop — the code is pushed and ready.
-**Output the PR/MR URL** — then proceed to Step 20.
+**Output the PR/MR URL** — then proceed to Step 19.5.
+
+---
+
+## Step 19.5: Offer methodology skill publishing (conditional)
+
+If this PR touched any standalone methodology skill (`openclaw/skills/gstack-*/SKILL.md`) or the marketplace manifest (`skills.json`), offer to publish the updated skills to the configured marketplaces after merge.
+
+```bash
+git diff origin/...HEAD --name-only | grep -E '^(openclaw/skills/gstack-[^/]+/SKILL\.md|skills\.json)$' || true
+```
+
+If the output is empty: skip this step silently. Continue to Step 20.
+
+If any matches: run a dry-run preview so the user sees exactly what would publish and what auth is missing.
+
+```bash
+$GSTACK_ROOT/bin/gstack-publish --dry-run
+```
+
+Then use AskUserQuestion with the structure in the preamble:
+- **Re-ground:** project, branch, PR just opened.
+- **Simplify:** "This PR updated methodology skills. gstack-publish can push them to ClawHub, SkillsMP, and Vercel Skills.sh so other developers on other agents can install them. Dry-run above shows what would ship and whether each marketplace is authed."
+- **RECOMMENDATION:** A because the dry-run just verified the manifest and one-command distribution is the whole point of having a marketplace publisher.
+- **Options:**
+ - A) Publish now — run `gstack-publish` (human: ~2min / CC: ~30s). Completeness: 9/10.
+ - B) Publish after the PR merges — `/document-release` won't push this automatically; you'll run `gstack-publish` manually once the branch is on main. Completeness: 7/10.
+ - C) Skip — don't publish this release. Completeness: 4/10.
+
+If A: run `$GSTACK_ROOT/bin/gstack-publish` (no --dry-run). Report success/failure per marketplace. If any marketplace auth is missing, the dry-run above surfaced it; the real publish will skip that marketplace with an isolated error rather than aborting the batch.
+
+If B or C: continue to Step 20.
---
diff --git a/test/fixtures/golden/factory-ship-SKILL.md b/test/fixtures/golden/factory-ship-SKILL.md
index 78bd2041..1af2eca7 100644
--- a/test/fixtures/golden/factory-ship-SKILL.md
+++ b/test/fixtures/golden/factory-ship-SKILL.md
@@ -2675,7 +2675,38 @@ EOF
**If neither CLI is available:**
Print the branch name, remote URL, and instruct the user to create the PR/MR manually via the web UI. Do not stop — the code is pushed and ready.
-**Output the PR/MR URL** — then proceed to Step 20.
+**Output the PR/MR URL** — then proceed to Step 19.5.
+
+---
+
+## Step 19.5: Offer methodology skill publishing (conditional)
+
+If this PR touched any standalone methodology skill (`openclaw/skills/gstack-*/SKILL.md`) or the marketplace manifest (`skills.json`), offer to publish the updated skills to the configured marketplaces after merge.
+
+```bash
+git diff origin/...HEAD --name-only | grep -E '^(openclaw/skills/gstack-[^/]+/SKILL\.md|skills\.json)$' || true
+```
+
+If the output is empty: skip this step silently. Continue to Step 20.
+
+If any matches: run a dry-run preview so the user sees exactly what would publish and what auth is missing.
+
+```bash
+$GSTACK_ROOT/bin/gstack-publish --dry-run
+```
+
+Then use AskUserQuestion with the structure in the preamble:
+- **Re-ground:** project, branch, PR just opened.
+- **Simplify:** "This PR updated methodology skills. gstack-publish can push them to ClawHub, SkillsMP, and Vercel Skills.sh so other developers on other agents can install them. Dry-run above shows what would ship and whether each marketplace is authed."
+- **RECOMMENDATION:** A because the dry-run just verified the manifest and one-command distribution is the whole point of having a marketplace publisher.
+- **Options:**
+ - A) Publish now — run `gstack-publish` (human: ~2min / CC: ~30s). Completeness: 9/10.
+ - B) Publish after the PR merges — `/document-release` won't push this automatically; you'll run `gstack-publish` manually once the branch is on main. Completeness: 7/10.
+ - C) Skip — don't publish this release. Completeness: 4/10.
+
+If A: run `$GSTACK_ROOT/bin/gstack-publish` (no --dry-run). Report success/failure per marketplace. If any marketplace auth is missing, the dry-run above surfaced it; the real publish will skip that marketplace with an isolated error rather than aborting the batch.
+
+If B or C: continue to Step 20.
---