Commands
Every command is registered under the SpiderPublish: prefix in the command
palette (Cmd+Shift+P / Ctrl+Shift+P). Most also surface inline in the
Changes view in the SpiderPublish Activity Bar.
This page covers what each command does, when to use it, and what to expect. For the link-audit hook and Code Actions, see the Link audit page.
Auth + binding
SpiderPublish: Who Am I?
Show the current authentication state. Useful as the first command after install
to confirm the extension reads ~/.spideriq/credentials.json correctly. If no
token is found, the command prompts you to paste one.
Output:
✓ Signed in as agent_xxxxxxxxxxxxxxxx
email: admin@your-company.com
brand: Your Brand (br_xxxx)
project: acme-corp (cli_xxxx) ← if a project is bound
SpiderPublish: Select Project…
Pick a project from the list of projects this token has access to. Writes
spideriq.json to the workspace root.
If you're already bound to a project, this switches the binding and prompts to discard or stash uncommitted changes first.
Read
SpiderPublish: Pull Content
Fans out parallel per-type GETs (pages, posts, components, templates) and writes each record to disk. Performs a 3-way merge against the registry's last-known baseline so locally-edited files don't get clobbered.
After Pull:
pages/<slug>.json,posts/<slug>.json, etc. live on disk.spideriq/objects.jsonrecords each file'ssha256,original(base64 of the last-synced content), andstatus(unchanged/changed/new/notfound)- The Changes view shows entries grouped by type
- Status bar:
📁 acme-corp · N changed · M undeployed
Run Pull whenever you want to sync from the server — typically after merging a teammate's PR or before starting a new edit session.
SpiderPublish: Discard Changes
Revert a file to its last-pulled baseline (also auto-unstages it if staged). Available as a context menu action on changed files in the Changes view.
Stage
The Changes view supports git-style staging. Push only sends staged records to the server.
SpiderPublish: Stage / Unstage
Stage or unstage a single file. Inline + / − buttons on each entry in
the Changes view.
SpiderPublish: Stage All Changes / Unstage All
Bulk operations on every changed entry. Inline buttons in the Changes view title bar.
Write
SpiderPublish: Push Content
The destructive surface, in five phases. Snapshot-bound: every confirm token is paired to the exact dry-run payload that produced it.
Phase 0 Pre-push link audit
└─ broken == 0 → pass through silently
└─ broken > 0 → modal:
├─ "Review" → focus Problems pane + abort
├─ "Push anyway" → log loudly, clear audit diags
└─ "Cancel" → full teardown, no push
Phase 1 Dry-run fan-out (parallel, one per staged record)
└─ each call returns {preview, confirm_token}
└─ Map<recordId, PreviewedRecord> stays alive in memory
Phase 2 Consolidated review panel
└─ webview shows every preview side-by-side
└─ user clicks Approve all / Cancel
Phase 3 Confirm fan-out (parallel, paired tokens)
└─ each token consumed exactly once with its paired payload
Phase 3.5 Diagnostics
└─ JSONPath errors decode to inline vscode.Diagnostic at file:line
Phase 4 Pull-after-push
└─ resync server-normalized fields (published_at, IDs, version bumps)
The snapshot-bound design means an agent that misbehaves mid-review — generates new payload, tries to slip it past the confirm — fails at the token check. The preview is what gets confirmed; nothing else.
If broken links are found in Phase 0, the modal forces an explicit decision. "Push anyway" is the escape hatch for cases you've already decided are intentional (e.g. a redirect that's about to be wired up); it logs the count loudly to the output channel for audit.
SpiderPublish: Push Current File
Single-file variant. Useful for tight-loop edits on one record without firing the full fan-out. Skips Phase 0 audit.
Deploy
SpiderPublish: Deploy Site
Five-phase deploy:
Phase 1 Readiness check
└─ /content/deploy/readiness → blockers list
└─ if blockers > 0 → readiness webview, abort
Phase 2 Preview
└─ POST /content/deploy/preview → { preview_url, confirm_token }
Phase 3 Confirm
└─ POST /content/deploy/production?confirm_token=cft_…
└─ returns { status: "live", version_id }
Phase 4 Status polling
└─ /content/deploy/status while status = "deploying"
└─ typically completes in 2–5s
Phase 5 Done
└─ webview shows live URL + version ID
└─ status bar: undeployed count drops to 0
Diagnostics from a failing deploy land in the same spiderpublish collection
as Push errors — JSONPath-decoded, inline at the offending file:line.
SpiderPublish: Open Last Preview
Reopens the most recent preview URL in a webview without re-running the deploy. Useful after a Deploy Site → "looks good in preview, let me show a teammate before I confirm."
Audit
See the Link audit page for full coverage. Quick reference:
| Command | Where it fires |
|---|---|
SpiderPublish: Audit Internal Links | Manual run; emits inline diagnostics for broken /path references |
| Pre-push hook | Automatic Phase 0 of Push Content |
SpiderPublish: Accept Proposed Redirect | Code Action on each broken-link diagnostic |
Diagnostic helpers
SpiderPublish: Refresh Schemas from Server
Re-fetch /content/help, /content/playbook, and /content/variables from
the server. The extension caches these for 24 h by default; use this command if
you've changed schema server-side and don't want to wait for the cache.
SpiderPublish: Show Diagnostic Info
Dumps activation state, credentials.json layout, MCP subprocess status, and the
latest get_auth_status round-trip into the output channel. Paste this into
support tickets when something's off.
The dump is sanitized — actual token values are redacted, only the shape and freshness are surfaced.
Tree view (Changes)
The SpiderPublish view in the Activity Bar shows your registry, grouped by type. Each entry has:
- Status icon —
M(changed),+(new),?(notfound — exists locally but not in registry; may have been deleted server-side) - Filename — click to open the file in an editor tab
- Inline actions — Stage / Unstage / Discard
Title-bar actions:
- Pull (cloud-download icon) —
SpiderPublish: Pull Content - Stage All —
SpiderPublish: Stage All Changes - Unstage All —
SpiderPublish: Unstage All
Context-menu actions on each entry:
- Stage / Unstage (toggles based on current state)
- Discard Changes (only on
changedentries)
Status bar
Bottom-right corner shows three slots:
📁 acme-corp · 3 changed · 1 undeployed · ✓ signed in
| Slot | Meaning |
|---|---|
📁 <project> | The project you're bound to via spideriq.json. Click to run Select Project…. |
N changed | Local edits not yet pushed. Click to focus the Changes view. |
M undeployed | Pushed records not yet in the live deploy. Click to run Deploy Site. |
✓ signed in / ✗ not signed in | PAT presence. Click to run Who Am I? or paste a new token. |
Native diff editor
Click any changed entry in the Changes view to open VSCode's built-in side-by-side diff editor. The left side shows the last-pulled baseline (via the
spiderpublish-baseline: virtual URI scheme), the right side shows the current
file on disk.
To diff against the live server state instead of the baseline, right-click the
entry → Compare with Remote. The right side becomes
spiderpublish-remote:<id> (a fresh fetch from the API).
These are not custom webviews — they're the actual VSCode diff editor, so all the editor features work: inline-fold equal regions, jump to next change, keyboard navigation, etc.
Activation events
The extension activates on:
- VSCode startup if a
spideriq.jsonexists somewhere in the workspace - Any
spiderpublish.*command invoked from the palette - Opening the SpiderPublish view in the Activity Bar
Cold-start cost: ~336 ms (the MCP child process spawn). Warm starts are negligible.