deploy-docs · git:20260904.44f93dd · 2026-09-04 · sha256 f2432ce1bbeb2f7c

deploy-docs git:20260904.44f93ddA

Immutable. This exact content is served forever at /api/v1/blob/f2432ce1bbeb2f7c.

---
name: deploy-docs
description: "This skill should be used when validating the documentation build and preparing for Cloudflare Pages deployment. It runs the Eleventy build, validates output, checks component counts, and provides deployment instructions."
---

# Deploy Documentation Command

Validate the documentation build and prepare it for Cloudflare Pages deployment.

## Step 1: Build and Validate

```bash
# Install dependencies (if needed)
npm ci --ignore-scripts

# Run Eleventy build
npx @11ty/eleventy

# Verify build output
test -f _site/index.html && echo "OK index.html"
test -f "_site/pages/agents.html" && echo "OK agents.html"
test -f "_site/pages/skills.html" && echo "OK skills.html"
test -f "_site/pages/changelog.html" && echo "OK changelog.html"
test -f "_site/pages/getting-started.html" && echo "OK getting-started.html"
test -f _site/404.html && echo "OK 404.html"
test -f _site/css/style.css && echo "OK style.css"
test -f _site/CNAME && echo "OK CNAME"
test -f _site/sitemap.xml && echo "OK sitemap.xml"
```

## Step 2: Verify Component Counts

Use Grep to count occurrences of `component-card` in `_site/pages/agents.html` and `_site/pages/skills.html`.

Then compare with source counts using Glob:

- Agent files: count `.md` files (excluding README.md) under `plugins/soleur/agents/`
- Skill files: count `SKILL.md` files under `plugins/soleur/skills/`

Cards in the output must match source file counts exactly.

## Step 3: Check for Uncommitted Changes

```bash
git status --porcelain plugins/soleur/docs/ eleventy.config.js package.json
```

If there are uncommitted changes, warn the user to commit first.

## Step 4: Deployment

Deployment is automated via `.github/workflows/deploy-docs.yml`:

- **Trigger:** Push to `main` that changes docs, agents, skills, commands, plugin.json, or eleventy.config.js
- **Manual:** Go to Actions > "Deploy Documentation to Cloudflare Pages" > "Run workflow"

The workflow:
1. Checks out the repo
2. Installs Node.js 20 and npm dependencies
3. Runs `npx @11ty/eleventy` to build
4. Verifies all required files are present
5. Stamps `_site/version.txt` with the commit SHA
6. Deploys `_site/` to the `soleur-docs` Cloudflare Pages project with wrangler
7. Fetches `version.txt` back and fails the job unless it matches the SHA just built

## Step 5: Report Status

Provide a summary:

```
## Deployment Readiness

OK All HTML pages present
OK CSS and fonts present
OK Component counts match source
OK CNAME and sitemap present

### Next Steps
- [ ] Commit any pending changes
- [ ] Push to main branch
- [ ] Verify deployment at https://soleur.ai/ (the live apex)

> **The ADR-194 cutover is COMPLETE (2026-09-03).** `https://soleur.ai/` is
> served by Cloudflare Pages and DOES advance with these deploys — verify at the
> apex, not at `pages.dev`. Until PR4b this block said the opposite and sent the
> operator to the `pages.dev` hostname; that was correct then and is misdirection
> now. `soleur-docs.pages.dev` still resolves and is still a useful
> origin-vs-edge discriminator, but it is not where a deploy is confirmed. See
> `knowledge-base/engineering/operations/runbooks/cloudflare-pages-cutover.md`.
```