is-publishlisted
Install: claude install-skill IdeaSpaces-xyz/claude-code-plugin
# Publish an Ideaspace
**Goal:** login check → plan (`publish` without `--yes`, zero mutations) → the user agrees → apply
(`publish --yes`) → narrate result. The plan-then-apply split is the CLI's contract, not a
courtesy — see the outward tier of the agreement principle.
This skill is the conversational layer around the bundled CLI:
```bash
node ${CLAUDE_PLUGIN_ROOT}/cli/bundle/ideaspaces.js ...
```
No separate install required.
## 1. Pre-flight checks
**Inside an ideaspace?** This dir should be a git repo with `_agent/foundation.md` already scaffolded. If not, suggest `/is-setup` first.
```bash
test -f _agent/foundation.md && test -d .git && echo "ok" || echo "missing"
```
**Portable identity agrees?** Current shared scaffolds declare `root_node_id`; legacy Spaces may validly omit it. Never mint, edit, stage, or commit identity during publish. Run the bundled CLI's `status --json` and inspect `root_identity`: stop on `invalid`, `drift`, `ambiguous`, or `declaration.dirty`. Publish repeats this preflight against HEAD, index, worktree, canonical origin, and local registry before login or remote mutation.
**Markdown frontmatter parses?** The CLI preflights all tracked Markdown for YAML syntax. If it fails, surface the output and ask the user to fix and commit the reported YAML.
**On the `main` branch?** IdeaSpaces uses `main` as the default branch — publishing requires the local branch to match so server and clones stay aligned. Detect:
```bash
git rev-parse --abbre