Skip to main content

summit-cms

Edit Nextflow Summit website content in Sanity and publish it to the live site. Use whenever a task involves changing CMS content for the summit-website repo — talks/events, speakers, posters, sponsors, agenda, page copy, embedding YouTube recordings — or making such changes appear on summit.nextflow.io (which needs a Netlify rebuild). Covers the no-deployed-schema write workaround and the master-branch deploy gotcha.

Datos de origen

Repositorio
nextflow-io/summit-website
Última actividad en el origen
1 de junio de 2026 a las 08:54
Idioma detectado de SKILL.md
inglés
Estrellas
2
Forks
5

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
summit-cms
description
Edit Nextflow Summit website content in Sanity and publish it to the live site. Use whenever a task involves changing CMS content for the summit-website repo — talks/events, speakers, posters, sponsors, agenda, page copy, embedding YouTube recordings — or making such changes appear on summit.nextflow.io (which needs a Netlify rebuild). Covers the no-deployed-schema write workaround and the master-branch deploy gotcha.
# Editing summit-website CMS content and publishing it Content lives in Sanity (project `o2y1bt2g`, dataset `summit`), not in this repo. See `CLAUDE.md` for the full architecture. This skill is the procedure. ## 1. Understand the content before editing - `get_schema` returns "no schema deployed" — that's expected. Learn the shape by querying live data instead: e.g. `*[_type=="event" && location=="boston"]{...}`. - Talks/posters are **`event`** docs (`location` = boston|barcelona|virtual). The YouTube embed is a bare 11-char video ID in the `youtube` field. Schedule lives in the `bostonAgenda`/`bcnAgenda`/`virtualAgenda` singletons, which **reference** events via `associatedEvents->`. - Use the Sanity MCP **read** tools freely (`query_documents`, `get_document`). ## 2. Write — MCP write tools DON'T work here `patch_document_from_json` / `create_*` fail with `Schema for schemaId '_.schemas.default' could not be found` (schema not deployed). Mutate with the JS client + the local Sanity CLI token instead. Write a script to the **repo root** (so `@sanity/client` resolves) and run it: ```js import { createClient } from '@sanity/client' const client = createClient({ projectId: 'o2y1bt2g', dataset: 'summit', apiVersion: '2021-06-07', token: process.env.SANITY_TOKEN, useCdn: false, }) // patch PUBLISHED ids (no "drafts." prefix) to go live in the dataset immediately: await client.patch(id).set({ field: value }).commit({ visibility: 'sync' }) ``` ```bash export SANITY_TOKEN=$(npx --no-install sanity debug --secrets 2>/dev/null \ | grep "Auth token" | sed -E "s/.*'([^']+)'.*/\1/") node ./your-script.mjs # run from repo root; rm the script after ``` First check there are no drafts that would clash: `*[_type=="event" && _id in path("drafts.**")]`. Confirm the write with a read-back. > **Proper fix (not yet done):** the schema isn't deployed because the Studio repo > `seqeralabs/cms` only runs `sanity deploy`, never `sanity schema deploy`. Running > `sanity schema deploy --workspace summit` there (with a CLI newer than the pinned > `sanity@3.58`) would unlock the MCP write tools — then call them with > `workspaceName: "summit"`. Non-destructive, but drifts unless wired into that > repo's deploy pipeline. Until then, use the `@sanity/client` workaround. ## 3. Will it show on the live site? Maybe not without a rebuild - Edits to **`event`, `speaker`, `poster`, `sponsor`, `blog`, `keyDate`** are baked in at **build time** (`src/data/*.ts` top-level `await`). They appear on the live **static** pages (e.g. `/2026/boston/agenda/<slug>/`) **only after a redeploy**. - Edits surfaced through **SSR** pages (agenda *listing*, overview, faq, settings, menus — anything with `prerender = false`) appear **immediately**, no deploy. So a half-applied look (listing updated, detail page stale) means: data is fine, you just haven't rebuilt. ## 4. Deploy to production = rebuild `master` Production is the **`master`** branch on Netlify. The Studio "Deploy" button / the build hook in the `webhook_deploy` doc point at **`2026-mvp`** (wrong branch, and its build errors), and the stored Netlify token is **read-only** (can't `POST /builds`). So force the hook onto master: ```bash # fetch secrets from Sanity (public repo — never hardcode these): # query *[_type=="webhook_deploy"][0]{buildHook, accessToken, siteId} curl -sS -X POST -d '{}' "<buildHook>?trigger_branch=master&trigger_title=<msg>" ``` Poll until ready, then verify the rendered HTML (not just Sanity): ```bash # state: GET https://api.netlify.com/api/v1/deploys/<deployId> (Bearer <accessToken>) curl -s "https://summit.nextflow.io/<path>" | grep "<expected value>" ``` Static detail pages render content inside a React island, so the value appears serialized in the page HTML once the rebuild lands. ## 5. Tell the user Report: what changed in Sanity, whether a rebuild was needed, the deploy state, and the live-page verification. Flag the `2026-mvp` build-hook misconfiguration if it's relevant — it's an ongoing footgun until someone repoints the hook to `master`. ## Previewing unpublished drafts (no deploy) To view draft content before publishing, hit `/preview?secret=<SANITY_PREVIEW_SECRET>&path=/some/page`. It sets the `sanity-draft-mode` cookie (`src/middleware.ts`) and rewrites to the path, so SSR fetchers switch to `getDraftClient()` (`previewDrafts` perspective). Needs env `SANITY_READ_TOKEN` (Viewer token) + `SANITY_PREVIEW_SECRET` (must match the Studio). Only works on **SSR** pages — static detail pages can't preview drafts this way.
Ver en GitHub