# publish-artifact-to-sites

This skill pushes a finished Data Analytics report or dashboard to Sites as a snapshot. Reach for it once the artifact has passed validation and readers need it.

- skill · `type=skill` · Codex, ChatGPT · ★ 7604
- Author: Data Analytics Maintainers · official OpenAI repository
- License: LicenseRef-Proprietary · policy=link-only · description only; the file stays with the author
- Source: https://github.com/openai/plugins/tree/HEAD/plugins/data-analytics/skills/publish-artifact-to-sites/SKILL.md
- Updated: 2026-10-08
- HTML: https://affpapa.org/en/nevibecode/skills/publish-artifact-to-sites

## What it does

The skill takes a validated artifact — a canonical manifest plus a bounded snapshot — and puts it on Sites. No live source connection follows it there. What readers open is the state captured at export time.

The flow has two moving parts. `$sites-building` creates or reopens a checkout from the worker starter (`--starter worker`), one per logical report or dashboard, and later versions reuse the same Site. Then `export_artifact_package` writes the package: the project goes into the compatibility field `site_creator_project_id`, the checkout path into `output_dir`. `$sites-hosting` polls the deployment until it reaches a terminal state.

Access policy gets read before anything ships. A workspace Site counts as owner-only when the policy is `custom`, there is exactly one `allowed_account_user_id`, the single `allowed_users` entry carries that same id with a non-empty email, and no groups are allowed. Asked to widen reader access? That change waits until the package is exported, otherwise the verified creator seed is gone. Presentation editing needs the D1 binding named `DB`; swapping in a different binding name breaks it.

If the Sites lifecycle cannot be called in Work Mode, the skill retries once and falls back to the self-contained HTML mode of the owning workflow. When you asked for Sites specifically, it reports the blocker instead of quietly switching surfaces.

## Install

### Codex (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add openai/plugins --skill publish-artifact-to-sites -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/publish-artifact-to-sites/SKILL.md` — For all projects use ~/.agents/skills/

### Claude Code

1. **Skills CLI (Vercel)**
```bash
npx skills add openai/plugins --skill publish-artifact-to-sites -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/publish-artifact-to-sites/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/publish-artifact-to-sites/

### Cursor

**Manually: put the files in place**
- File: `.cursor/skills/publish-artifact-to-sites/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install openai/plugins publish-artifact-to-sites
```

2. **Manually: put the files in place**
- File: `.github/skills/publish-artifact-to-sites/SKILL.md`

### Gemini CLI

**Platform CLI**
```bash
gemini skills install https://github.com/openai/plugins --path plugins/data-analytics/skills/publish-artifact-to-sites
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/publish-artifact-to-sites/SKILL.md` — The legacy .windsurf/skills/ path still works

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/openai/plugins/tree/HEAD/plugins/data-analytics/skills/publish-artifact-to-sites/SKILL.md

## When to use it
- publish a validated report as a hosted snapshot
- export an artifact package tied to a Sites project
- confirm a Site is reachable only by its owner
- fall back to self-contained HTML when Sites is unavailable
- keep the creator seed while widening reader access

## Example prompts
- Publish this report to Sites
- Export the artifact package and deploy it through Sites
- Check the Site access policy before publishing

## Similar
- [build-daily-inspiration-sites](https://affpapa.org/en/nevibecode/skills/build-daily-inspiration-sites.md) — skill · 1200 installs
- [printing-press-publish](https://affpapa.org/en/nevibecode/skills/printing-press-publish.md) — skill · 6900 installs
- [publish-mcp-server](https://affpapa.org/en/nevibecode/mcp/publish-mcp-server.md) — MCP server · ★ 6
- [publish-substack-article](https://affpapa.org/en/nevibecode/skills/publish-substack-article.md) — skill · 604 installs
- [publish-x-article](https://affpapa.org/en/nevibecode/skills/publish-x-article.md) — skill · 450 installs
- [render-static-sites](https://affpapa.org/en/nevibecode/skills/render-static-sites.md) — skill · 367 installs

From the same set: [openai/plugins](https://affpapa.org/en/nevibecode/by/openai/plugins.md) — 528 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
