← ClaudeAtlas

publishlisted

Configure and run PUBLISH — ship a project outward to where its users are. The counterpart to `deploy`, which only makes code runnable on this machine. Writes `config/publish.env` and a per-machine `scripts/publish.sh` wrapper, then publishes and verifies the live result. TRIGGER when: the user explicitly runs /publish or asks to set up publishing for a project. DO NOT TRIGGER when: the user says "deploy", "ship", "redeploy" or similar in passing — publishing to production is deliberate and must be named; when the task is tagging a version or cutting a GitHub Release (that is `release`); or when the project publishes from CI only (see §1).
AnotherSava/claude-code-common · ★ 0 · AI & Automation · score 72
Install: claude install-skill AnotherSava/claude-code-common
# Publish `deploy` runs it here. `publish` ships it out. `release` tags a version and cuts a GitHub Release. Three verbs, three entry points, never merged — see `~/.claude/memory/feedback_deploy_publish_separate_verbs.md` for why a `deploy publish` subcommand was proposed and rejected. ## Context - Publish env: !`cat config/publish.env 2>/dev/null || echo MISSING` - Wrapper script exists: !`test -f scripts/publish.sh && echo yes || echo no` - `publish()` in shell rc: !`grep -c "publish()" ~/.bashrc ~/.zshrc 2>/dev/null | awk -F: '{s+=$2} END {print s+0}'` - `run_repo_script()` in shell rc: !`grep -c "run_repo_script()" ~/.bashrc ~/.zshrc 2>/dev/null | awk -F: '{s+=$2} END {print s+0}'` - Compose file: !`ls docker-compose.yml */docker-compose.yml 2>/dev/null | head -1 || echo none` - Vhost file: !`ls */deploy/*.caddy deploy/*.caddy 2>/dev/null | head -1 || echo none` - CI publish workflow: !`ls .github/workflows/*publish* .github/workflows/*deploy* 2>/dev/null | head -1 || echo none` - Git remote: !`git remote get-url origin 2>/dev/null || echo none` ## 1. Decide whether this project should have a local publish path at all **A project that publishes from CI must not get a `scripts/publish.sh`.** If **CI publish workflow** names a workflow, read it. When it publishes on push to a branch, stop and say so: the ship *is* the push, and a local publish path actively causes harm — it uploads the working tree while the deployment is stamped with local `HEAD`, so uncommitted work