Not in the top 1,000 by GitHub stars

Pagepro/nexity

Nexity is an open source system for starting and growing AI-native websites on Next.js + Sanity.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

base/.agents/skills/create-section/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

base/.agents/skills/generate-alts/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

base/.agents/skills/link-fix/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

base/.agents/skills/pr-writeup/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

base/.agents/skills/project-setup/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

base/.agents/skills/sanity-module-catalog/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

base/.agents/skills/sanity-optimizations/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

base/.agents/skills/work-humanizer/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/create-section/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/generate-alts/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/link-fix/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/pr-writeup/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/product-mock/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/project-setup/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/sanity-module-catalog/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/sanity-optimizations/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

theme-meridian/.agents/skills/work-humanizer/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → d66f0fd9976e

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit d66f0fd9976e15ca51d6fcd5352482c5c66c281b

git clone --filter=blob:none --no-checkout https://github.com/Pagepro/nexity.git .hotskills/pagepro-nexity && git -C .hotskills/pagepro-nexity checkout --detach d66f0fd9976e15ca51d6fcd5352482c5c66c281b # Copy each selected skill directory from .hotskills/pagepro-nexity into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/Pagepro/nexity.git .hotskills/pagepro-nexity && git -C .hotskills/pagepro-nexity checkout --detach d66f0fd9976e15ca51d6fcd5352482c5c66c281b # Copy each selected skill directory from .hotskills/pagepro-nexity into .agents/skills/<skill-name>/
18GitHub stars
Not availablestars in 7 days
17skills in this repository
41commits in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 4, 2026Nov 5, 202618

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

create-section

When your agent uses it

Create a new page section in this Next.js + Sanity starter, after first checking whether an existing section already covers it (reuse as-is, add a layout option or fields, or build a new type). Takes the look from DESIGN.md (plus any Figma link, screenshot or mockup the user gives) and the copy from BRAND.md (placeholder copy while it is still the template), models the code on the 2–3 closest sections in web/src/ui/sections/, and ships the schema, GROQ branch, component, gallery fixture, Markdown serializer, insert-menu entry and tile. Use when the user asks for a new band, block or section, or whether the site already has one that fits a design.

What it loads into context

Frontmatter

153 tokens

Always available to the agent

SKILL.md

7,091 tokens

When the skill is activated

Reference documents

2,641 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Phase 0 — Do we already have it?
  2. Phase 1 — Gather the three sources: look, code, content
  3. Phase 2 — Build the component in the starter's idiom
  4. Phase 3 — Model the schema by reading three neighbours
  5. Phase 4 — Register it in TWO files, query it, typegen, map it
  6. Phase 5 — The Sections Gallery (three edits, two enforced by typecheck)
  7. Phase 6 — Restart, then check the gallery, the tile and ONE instance
  8. Security gate — only for a section that takes input, posts, or renders a URL
  9. Verify
  10. Report
  11. The one-line version

Files

  • ../../../../.claude-plugin/marketplace.jsonasset1,356 bytes
  • SKILL.mdcore28,061 bytes
  • SKILL.mdcore28,061 bytes
  • references/gotchas.mddoc10,349 bytes
Read SKILL.md

# Create a section

The **existing sections** decide whether anything needs building, **`DESIGN.md`** how it
**looks**, **`BRAND.md`** what it **says**, the **closest sections** the starting **code**, and
the registries whether an editor can ever **find** it.

Paths are relative to the project root (the folder that holds `web/` and `studio/`) and are
the same in projects made from `base/` and `theme-meridian/`; only the web package name
differs, so commands use `pnpm -C web …`.

This skill is the executable form of the checklist in `docs/agents/new-section.md` (root
`AGENTS.md` → **"Creating a New Section"**); keep the two in sync. Skim
[`references/gotchas.md`](references/gotchas.md) before Phase 2.
View the complete source on GitHub

Skills included

  • create-section
  • generate-alts
  • link-fix
  • pr-writeup
  • project-setup
  • sanity-module-catalog
  • sanity-optimizations
  • work-humanizer
  • create-section
  • generate-alts
  • link-fix
  • pr-writeup
  • product-mock
  • project-setup
  • sanity-module-catalog
  • sanity-optimizations
  • work-humanizer

Repository facts

License
MIT
Created
Oct 28, 2026
Last pushed
Nov 5, 2026
Forks
1
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 96 notes
  • base/.agents/skills/create-section/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/generate-alts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/link-fix/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/link-fix/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/link-fix/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/link-fix/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/link-fix/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/link-fix/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/pr-writeup/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/pr-writeup/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/pr-writeup/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • base/.agents/skills/pr-writeup/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 463 signals by file

.agents/skills/sanity-module-catalog/scripts/capture.mjs

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 3
    //   node capture.mjs --project=path/to/project //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 3
    //   node capture.mjs --project=path/to/project //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 4
    //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001 //   node capture.mjs --project=. --report        # coverage only, no capture
  • Network accessline 4
    //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001 //   node capture.mjs --project=. --report        # coverage only, no capture
  • Network accessline 5
    //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 5
    //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 8
    // Flags: //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 8
    // Flags: //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 9
    //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000) //   --only=a,b        Capture these section types only
  • Network accessline 9
    //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000) //   --only=a,b        Capture these section types only
  • Network accessline 10
    //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 10
    //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 35
    const DEFAULT_BASE = "http://localhost:3000";
  • Network accessline 35
    const DEFAULT_BASE = "http://localhost:3000";
  • Network accessline 141
    for (let attempt = 0; attempt < 60 && !webSocketUrl; attempt++) {       try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);
  • Network accessline 141
    for (let attempt = 0; attempt < 60 && !webSocketUrl; attempt++) {       try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);
  • Network accessline 142
    try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);         webSocketUrl = (await response.json()).webSocketDebuggerUrl;
  • Network accessline 142
    try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);         webSocketUrl = (await response.json()).webSocketDebuggerUrl;
  • Network accessline 143
    const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);
  • Network accessline 143
    const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);

.agents/skills/sanity-optimizations/scripts/usage-estimate.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 7
    const SANITY = {   source: "https://www.sanity.io/pricing",
  • Network accessline 7
    const SANITY = {   source: "https://www.sanity.io/pricing",
  • Network accessline 8
    source: "https://www.sanity.io/pricing",
  • Network accessline 8
    source: "https://www.sanity.io/pricing",
  • Network accessline 23
    const VERCEL = {   source: "https://vercel.com/pricing",
  • Network accessline 23
    const VERCEL = {   source: "https://vercel.com/pricing",
  • Network accessline 24
    source: "https://vercel.com/pricing",
  • Network accessline 24
    source: "https://vercel.com/pricing",

.claude-plugin/marketplace.json

  • Network accessline 4
    "owner": {     "name": "Pagepro",     "url": "https://pagepro.co"
  • Network accessline 5
    "name": "Pagepro",     "url": "https://pagepro.co"   },
  • Network accessline 6
    "url": "https://pagepro.co"
  • Network accessline 15
    "author": {         "name": "Pagepro",         "url": "https://pagepro.co"
  • Network accessline 16
    "name": "Pagepro",         "url": "https://pagepro.co"       },
  • Network accessline 17
    "url": "https://pagepro.co"
  • Network accessline 18
    },       "homepage": "https://github.com/Pagepro/nexity/blob/main/MARKETING-SKILLS-README.md",       "repository": "https://github.com/Pagepro/nexity",
  • Network accessline 19
    "homepage": "https://github.com/Pagepro/nexity/blob/main/MARKETING-SKILLS-README.md",
  • Network accessline 20
    "repository": "https://github.com/Pagepro/nexity",

base/.agents/skills/create-section/SKILL.md

  • Network accessline 405
    pnpm format:check   # oxfmt; `pnpm format` fixes it (long test expectations get rewrapped) pnpm build curl -s localhost:3000/<page-with-the-section>.md   # after Phase 6: read what an agent gets
  • Network accessline 407
    curl -s localhost:3000/<page-with-the-section>.md   # after Phase 6: read what an agent gets

base/.agents/skills/generate-alts/SKILL.md

  • Network accessline 54
    | `--include-existing` | `fetch`/`batches` also take images that already have an alt (to review their quality). Default: only missing and decorative ones | | `--lang=` | Content language. Default: `<html lang>` in `web/src/app/(frontend)/la
  • Network accessline 55
    | `--lang=` | Content language. Default: `<html lang>` in `web/src/app/(frontend)/layout.tsx` | | `--studio=` | Studio URL for the report's links. Default: `NEXT_PUBLIC_BASE_URL` + `/admin`, else `http://localhost:3000/admin` | | `--dir=` |
  • Network accessline 56
    | `--studio=` | Studio URL for the report's links. Default: `NEXT_PUBLIC_BASE_URL` + `/admin`, else `http://localhost:3000/admin` |

base/.agents/skills/generate-alts/scripts/alts.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    --dir=<path>          Working folder (default: ../.alts, the project root)   --dataset=<name>      Overrides NEXT_PUBLIC_SANITY_DATASET (scan)   --studio=<url>        Studio base URL for links (default: NEXT_PUBLIC_BASE_URL/admin or http://
  • Network accessline 36
    --dataset=<name>      Overrides NEXT_PUBLIC_SANITY_DATASET (scan)   --studio=<url>        Studio base URL for links (default: NEXT_PUBLIC_BASE_URL/admin or http://localhost:3000/admin)   --lang=<code>         Content language (default: <htm
  • Network accessline 37
    --studio=<url>        Studio base URL for links (default: NEXT_PUBLIC_BASE_URL/admin or http://localhost:3000/admin)   --lang=<code>         Content language (default: <html lang> of src/app/(frontend)/layout.tsx)   --include-existing    fe
  • Access to secretsline 124
    [Credential-related source omitted]
  • Access to secretsline 129
    [Credential-related source omitted]
  • Access to secretsline 130
    [Credential-related source omitted]
  • Access to secretsline 133
    [Credential-related source omitted]
  • Network accessline 163
    const documents = [];   for (let lastId = ""; ; ) {     const page = await client.fetch(
  • Network accessline 164
    for (let lastId = ""; ; ) {     const page = await client.fetch(       `*[!(_type match "sanity.*") && !(_id in path("_.**")) && _id > $lastId] | order(_id) [0...${PAGE_SIZE}]`,
  • Network accessline 165
    const page = await client.fetch(
  • Network accessline 177
    const assets = {};   for (let start = 0; start < assetIds.length; start += ASSET_CHUNK) {     const chunk = await client.fetch(
  • Network accessline 178
    for (let start = 0; start < assetIds.length; start += ASSET_CHUNK) {     const chunk = await client.fetch(       `*[_type == "sanity.imageAsset" && _id in $ids]{
  • Network accessline 179
    const chunk = await client.fetch(
  • Network accessline 194
    dataset,     projectId,     studioUrl: readArgument("studio") ?? `${baseUrl || "http://localhost:3000"}/admin`,
  • Network accessline 195
    projectId,     studioUrl: readArgument("studio") ?? `${baseUrl || "http://localhost:3000"}/admin`,     lang: await detectLang(),
  • Network accessline 196
    studioUrl: readArgument("studio") ?? `${baseUrl || "http://localhost:3000"}/admin`,
  • Network accessline 223
    const download = async (url, file) => {   const response = await fetch(url);
  • Network accessline 224
    const response = await fetch(url);
  • Network accessline 364
    const ids = [...new Set(items.flatMap((item) => [item.documentId, `drafts.${item.documentId}`]))];   const documents = ids.length ? await client.fetch(`*[_id in $ids]`, { ids }) : [];
  • Network accessline 365
    const documents = ids.length ? await client.fetch(`*[_id in $ids]`, { ids }) : [];

base/.agents/skills/generate-alts/scripts/lib.mjs

  • Executable scriptline 1
    Executable file

base/.agents/skills/generate-alts/scripts/lib.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 66
    _type: "videoEmbed",       _key: "v1",       url: "https://video.example/1",
  • Network accessline 67
    _key: "v1",       url: "https://video.example/1",       caption: "Product walkthrough",
  • Network accessline 68
    url: "https://video.example/1",
  • Network accessline 76
    const ASSETS = {   [ASSET_A]: { _id: ASSET_A, url: "https://cdn.sanity.io/images/p/d/a-800x600.jpg", mimeType: "image/jpeg", title: "Team at work", description: "Office photo", altText: null, hasAlpha: false },
  • Network accessline 77
    [ASSET_A]: { _id: ASSET_A, url: "https://cdn.sanity.io/images/p/d/a-800x600.jpg", mimeType: "image/jpeg", title: "Team at work", description: "Office photo", altText: null, hasAlpha: false },
  • Network accessline 78
    [ASSET_B]: { _id: ASSET_B, url: "https://cdn.sanity.io/images/p/d/b-120x40.svg", mimeType: "image/svg+xml", title: null, description: null, altText: "Acme logo", hasAlpha: true },
  • Network accessline 81
    const manifestOf = (documents, cache = { assets: {}, usages: {} }) =>   buildManifest({ documents, assets: ASSETS, cache, dataset: "production", projectId: "p", studioUrl: "http://localhost:3000/admin", lang: "en", generatedAt: "2026-01-01T
  • Network accessline 82
    buildManifest({ documents, assets: ASSETS, cache, dataset: "production", projectId: "p", studioUrl: "http://localhost:3000/admin", lang: "en", generatedAt: "2026-01-01T00:00:00.000Z" });
  • Network accessline 139
    assert.deepEqual(hero.variants, { published: "", draft: "Draft alt" });   assert.equal(hero.status, "has-alt");   assert.equal(hero.studio, "http://localhost:3000/admin/intent/edit/id=page-1;type=page");
  • Network accessline 140
    assert.equal(hero.status, "has-alt");   assert.equal(hero.studio, "http://localhost:3000/admin/intent/edit/id=page-1;type=page");   assert.equal(manifest.counts.versionsSkipped, 1);
  • Network accessline 141
    assert.equal(hero.studio, "http://localhost:3000/admin/intent/edit/id=page-1;type=page");
  • Network accessline 173
    test("previewUrl asks the CDN for a small JPEG, PNG with alpha, SVG as is", () => {   assert.deepEqual(previewUrl(ASSETS[ASSET_A]), { url: `${ASSETS[ASSET_A].url}?w=640&fit=max&fm=jpg&q=75`, ext: "jpg" });   assert.equal(previewUrl({ url: "
  • Network accessline 174
    assert.deepEqual(previewUrl(ASSETS[ASSET_A]), { url: `${ASSETS[ASSET_A].url}?w=640&fit=max&fm=jpg&q=75`, ext: "jpg" });   assert.equal(previewUrl({ url: "https://x/y.png", hasAlpha: true }, 320).url, "https://x/y.png?w=320&fit=max&fm=png");
  • Network accessline 175
    assert.equal(previewUrl({ url: "https://x/y.png", hasAlpha: true }, 320).url, "https://x/y.png?w=320&fit=max&fm=png");

base/.agents/skills/generate-alts/scripts/report.mjs

  • Executable scriptline 1
    Executable file

base/.agents/skills/link-fix/SKILL.md

  • Network accessline 1
    --- name: link-fix description: Audit and fix the links stored in the Sanity dataset, three rules counted in one table first. own-domain turns links to the site's own domain (`https://example.com/pricing` or a bare `/pricing` in an external
  • Network accessline 2
    name: link-fix description: Audit and fix the links stored in the Sanity dataset, three rules counted in one table first. own-domain turns links to the site's own domain (`https://example.com/pricing` or a bare `/pricing` in an external lin
  • Network accessline 3
    description: Audit and fix the links stored in the Sanity dataset, three rules counted in one table first. own-domain turns links to the site's own domain (`https://example.com/pricing` or a bare `/pricing` in an external link, CTA, header/
  • Network accessline 10
    - **Own domain as external.** Editors paste `https://example.com/pricing` into an
  • Network accessline 13
    and staging deployments send visitors to production, a domain change breaks every   one of them, and nothing stops someone deleting or renaming the target page. - **`http://`.** Costs a redirect hop at best, a mixed-content warning or a dea
  • Network accessline 14
    one of them, and nothing stops someone deleting or renaming the target page. - **`http://`.** Costs a redirect hop at best, a mixed-content warning or a dead   link at worst, and some hosts never got https.
  • Network accessline 15
    - **`http://`.** Costs a redirect hop at best, a mixed-content warning or a dead
  • Network accessline 46
    | `--trailing-slash=` | `auto` (default): read `trailingSlash` from `web/next.config.*`. `never` / `always` overrides it | | `--verify-https` | Requests every upgraded URL (HEAD, then GET; 8 s timeout). `check` shows the result per host; `f
  • Network accessline 47
    | `--verify-https` | Requests every upgraded URL (HEAD, then GET; 8 s timeout). `check` shows the result per host; `fix` upgrades only URLs whose https answers below 400 | | `--keep-http=` | Hosts to leave on `http://` | | `--drafts=` | `bo
  • Network accessline 48
    | `--keep-http=` | Hosts to leave on `http://` |
  • Network accessline 113
    Every `http://` value in an external link or a URL field. The check lists the
  • Network accessline 114
    **hosts** with their counts; read them back, because an upgrade is only safe where the host serves https. Local and private hosts (`localhost`, `*.local`, `*.test`, IP addresses) are reported and never upgraded. An own-domain `http://` link
  • Network accessline 115
    the host serves https. Local and private hosts (`localhost`, `*.local`, `*.test`, IP addresses) are reported and never upgraded. An own-domain `http://` link is counted under both rules; when own-domain converts it, the upgrade is moot.
  • Network accessline 116
    IP addresses) are reported and never upgraded. An own-domain `http://` link is
  • Network accessline 245
    Spot-check one fixed page in the browser: an internal link should be root-relative in the site's convention (`href="/pricing"`) and open in the same tab; an upgraded external link should start with `https://`.
  • Network accessline 247
    external link should start with `https://`.
  • Network accessline 251
    The dataset is half of it: hardcoded `http://` URLs, own-domain links in

base/.agents/skills/link-fix/scripts/lib.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 55
    let host;     try {       host = new URL(/^[a-z]+:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`).hostname;
  • Network accessline 56
    try {       host = new URL(/^[a-z]+:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`).hostname;     } catch {
  • Network accessline 57
    host = new URL(/^[a-z]+:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`).hostname;
  • Network accessline 121
    export const upgradeHttp = (value) =>   typeof value === "string" && /^http:\/\//i.test(value.trim())     ? `https://${value.trim().slice("http://".length)}`
  • Network accessline 122
    typeof value === "string" && /^http:\/\//i.test(value.trim())     ? `https://${value.trim().slice("http://".length)}`     : null;
  • Network accessline 123
    ? `https://${value.trim().slice("http://".length)}`
  • Network accessline 176
    /** The site root (`https://example.com` or `…/`) is never flagged; the origin text stays verbatim. */

base/.agents/skills/link-fix/scripts/lib.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    const ownHosts = buildOwnHosts(["https://www.example.com", "old-example.com"]);
  • Network accessline 30
    _type: "page",     _rev: "r7",     metadata: { slug: { current: "landing" }, canonical: "http://example.com/landing/" },
  • Network accessline 31
    _rev: "r7",     metadata: { slug: { current: "landing" }, canonical: "http://example.com/landing/" },     sections: [
  • Network accessline 32
    metadata: { slug: { current: "landing" }, canonical: "http://example.com/landing/" },
  • Network accessline 36
    _type: "hero",         ctas: [           { _key: "c1", _type: "cta", link: { _type: "link", type: "external", external: "http://www.example.com/pricing/?plan=pro" } },
  • Network accessline 37
    ctas: [           { _key: "c1", _type: "cta", link: { _type: "link", type: "external", external: "http://www.example.com/pricing/?plan=pro" } },           { _key: "c2", _type: "cta", link: { _type: "link", type: "external", external: "http:
  • Network accessline 38
    { _key: "c1", _type: "cta", link: { _type: "link", type: "external", external: "http://www.example.com/pricing/?plan=pro" } },
  • Network accessline 39
    { _key: "c2", _type: "cta", link: { _type: "link", type: "external", external: "http://partner.com/docs" } },
  • Network accessline 40
    { _key: "c3", _type: "cta", link: { _type: "link", type: "path", internalPath: "Pricing/" } },           { _key: "c4", _type: "cta", link: { _type: "link", type: "external", external: "mailto:hi@example.com" } },           { _key: "c5", _ty
  • Network accessline 41
    { _key: "c4", _type: "cta", link: { _type: "link", type: "external", external: "mailto:hi@example.com" } },           { _key: "c5", _type: "cta", link: { _type: "link", type: "external", external: "http://localhost:3000/x" } },         ],
  • Network accessline 42
    { _key: "c5", _type: "cta", link: { _type: "link", type: "external", external: "http://localhost:3000/x" } },
  • Network accessline 48
    _key: "b1",         _type: "block",         children: [{ _key: "t1", _type: "span", text: "see http://example.com/pricing", marks: ["m1"] }],
  • Network accessline 49
    _type: "block",         children: [{ _key: "t1", _type: "span", text: "see http://example.com/pricing", marks: ["m1"] }],         markDefs: [{ _key: "m1", _type: "link", type: "external", external: "/pricing#faq" }],
  • Network accessline 50
    children: [{ _key: "t1", _type: "span", text: "see http://example.com/pricing", marks: ["m1"] }],
  • Network accessline 52
    },     ],     sameAs: ["http://linkedin.com/company/example"],
  • Network accessline 53
    ],     sameAs: ["http://linkedin.com/company/example"],   },
  • Network accessline 54
    sameAs: ["http://linkedin.com/company/example"],
  • Network accessline 63
    describe("URL helpers", () => {   it("parses own-domain URLs with www, http and protocol-relative forms", () => {     assert.deepEqual(parseOwnUrl("http://www.example.com/pricing/?plan=pro#top", ownHosts), {
  • Network accessline 64
    it("parses own-domain URLs with www, http and protocol-relative forms", () => {     assert.deepEqual(parseOwnUrl("http://www.example.com/pricing/?plan=pro#top", ownHosts), {       path: "/pricing",
  • Network accessline 65
    assert.deepEqual(parseOwnUrl("http://www.example.com/pricing/?plan=pro#top", ownHosts), {
  • Network accessline 68
    });     assert.deepEqual(parseOwnUrl("//old-example.com", ownHosts), { path: "/", params: "" });     assert.equal(parseOwnUrl("https://partner.com/pricing", ownHosts), null);
  • Network accessline 69
    assert.deepEqual(parseOwnUrl("//old-example.com", ownHosts), { path: "/", params: "" });     assert.equal(parseOwnUrl("https://partner.com/pricing", ownHosts), null);   });
  • Network accessline 70
    assert.equal(parseOwnUrl("https://partner.com/pricing", ownHosts), null);
  • Network accessline 79
    it("upgrades only http:// and leaves other schemes alone", () => {     assert.equal(upgradeHttp("http://partner.com/a?b=1"), "https://partner.com/a?b=1");
  • Network accessline 80
    assert.equal(upgradeHttp("http://partner.com/a?b=1"), "https://partner.com/a?b=1");
  • Network accessline 81
    assert.equal(upgradeHttp("HTTP://partner.com"), "https://partner.com");
  • Network accessline 82
    for (const value of ["https://partner.com", "mailto:a@b.c", "tel:+48123", "#top", "/x"])
  • Network accessline 127
    it("reports what it cannot fix safely", () => {     for (const value of ["https://example.com/x", "//example.com/x", "/a b", "#faq"]) {
  • Network accessline 128
    for (const value of ["https://example.com/x", "//example.com/x", "/a b", "#faq"]) {
  • Network accessline 136
    describe("checkAbsoluteUrl", () => {   it("keeps the origin text and the query", () => {     assert.equal(checkAbsoluteUrl("https://Example.com//a/b/?x=1", "never").fixed, "https://Example.com/a/b?x=1");
  • Network accessline 137
    it("keeps the origin text and the query", () => {     assert.equal(checkAbsoluteUrl("https://Example.com//a/b/?x=1", "never").fixed, "https://Example.com/a/b?x=1");     assert.equal(checkAbsoluteUrl("https://example.com/a", "always").fixed,
  • Network accessline 138
    assert.equal(checkAbsoluteUrl("https://Example.com//a/b/?x=1", "never").fixed, "https://Example.com/a/b?x=1");
  • Network accessline 139
    assert.equal(checkAbsoluteUrl("https://example.com/a", "always").fixed, "https://example.com/a/");
  • Network accessline 142
    it("never flags the site root", () => {     assert.deepEqual(checkAbsoluteUrl("https://example.com/", "never").issues, []);
  • Network accessline 143
    assert.deepEqual(checkAbsoluteUrl("https://example.com/", "never").issues, []);
  • Network accessline 144
    assert.deepEqual(checkAbsoluteUrl("https://example.com", "always").issues, []);
  • Network accessline 203
    assert.equal(find(findings, "slash", "metadata.canonical").suggested, "http://example.com/landing");
  • Network accessline 231
    assert.equal(landing.set[`${base}.external`], undefined);     assert.ok(landing.unset.includes(`${base}.external`));     assert.equal(landing.set["metadata.canonical"], "https://example.com/landing");
  • Network accessline 232
    assert.ok(landing.unset.includes(`${base}.external`));     assert.equal(landing.set["metadata.canonical"], "https://example.com/landing");     assert.equal(landing.set["sections[_key==\"s1\"].ctas[_key==\"c2\"].link.external"], "https://par
  • Network accessline 233
    assert.equal(landing.set["metadata.canonical"], "https://example.com/landing");
  • Network accessline 234
    assert.equal(landing.set["sections[_key==\"s1\"].ctas[_key==\"c2\"].link.external"], "https://partner.com/docs");
  • Network accessline 235
    assert.equal(landing.set["sameAs[0]"], "https://linkedin.com/company/example");
  • Network accessline 241
    assert.equal(       landing.set["sections[_key==\"s1\"].ctas[_key==\"c1\"].link.external"],       "https://www.example.com/pricing/?plan=pro",
  • Network accessline 242
    landing.set["sections[_key==\"s1\"].ctas[_key==\"c1\"].link.external"],       "https://www.example.com/pricing/?plan=pro",     );
  • Network accessline 243
    "https://www.example.com/pricing/?plan=pro",
  • Network accessline 277
    it("combines the http upgrade and the slash fix on one URL", () => {     assert.equal(       rewriteValue("http://example.com/a/", [{ rule: "slash", fieldType: "url" }, { rule: "http" }], "never"),
  • Network accessline 278
    assert.equal(       rewriteValue("http://example.com/a/", [{ rule: "slash", fieldType: "url" }, { rule: "http" }], "never"),       "https://example.com/a",
  • Network accessline 279
    rewriteValue("http://example.com/a/", [{ rule: "slash", fieldType: "url" }, { rule: "http" }], "never"),
  • Network accessline 280
    "https://example.com/a",

base/.agents/skills/link-fix/scripts/links.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]
  • Access to secretsline 107
    [Credential-related source omitted]
  • Network accessline 138
    let lastId = "";   for (;;) {     const page = await client.fetch(
  • Network accessline 139
    for (;;) {     const page = await client.fetch(       `*[!(_type match "sanity.*") && !(_id in path("_.**")) && _id > $lastId] | order(_id) [0...${PAGE_SIZE}]`,
  • Network accessline 140
    const page = await client.fetch(
  • Network accessline 152
    for (const method of ["HEAD", "GET"]) {     try {       const response = await fetch(url, {
  • Network accessline 153
    try {       const response = await fetch(url, {         method,
  • Network accessline 154
    const response = await fetch(url, {

base/.agents/skills/pr-writeup/SKILL.md

  • Dangerous shell operationline 150
    agent-browser eval "$(cat "$S/prepare.js")"
  • Dangerous shell operationline 151
    agent-browser eval "($(cat "$S/region.js"))('h2|Key takeaways', 'h2|Next heading', 32)" > /tmp/<topic>/region.json
  • Network accessline 186
    https://github.com/<owner>/<repo>/blob/<SHA>/.github/pr-assets/<topic>/after-<page>-<width>.png?raw=true

base/.agents/skills/pr-writeup/scripts/compose.py

  • Executable scriptline 1
    #!/usr/bin/env python3

base/.agents/skills/pr-writeup/scripts/crop.py

  • Executable scriptline 1
    #!/usr/bin/env python3

base/.agents/skills/pr-writeup/scripts/prepare.js

  • Executable scriptline 1
    Executable file

base/.agents/skills/pr-writeup/scripts/region.js

  • Executable scriptline 1
    Executable file

base/.agents/skills/project-setup/SKILL.md

  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Network accessline 156
    | `SANITY_API_READ_TOKEN` | recommended | Viewer token | | `SANITY_REVALIDATE_SECRET` | recommended | A random string: `openssl rand -hex 32`. The webhook signs with it, so production must have the same value. Without it a published change 
  • Network accessline 157
    | `SANITY_REVALIDATE_SECRET` | recommended | A random string: `openssl rand -hex 32`. The webhook signs with it, so production must have the same value. Without it a published change waits for the 30-day cache | | `NEXT_PUBLIC_BASE_URL` | n
  • Network accessline 158
    | `NEXT_PUBLIC_BASE_URL` | no | Unset falls back to the Vercel URL, else `http://localhost:3000` (`web/src/setup/base-url.ts`). Set it to the real domain once known. **No trailing slash** |
  • Network accessline 163
    | `NEXT_PUBLIC_GTM_ID` | no | Google Tag Manager. Cookie consent needs no env: it runs offline | | `RESEND_API_KEY`, `CONTACT_FORM_RECIPIENT_EMAIL`, `CONTACT_FORM_FROM_EMAIL` | no | Contact form. Without them the form can't send | | `SANITY
  • Network accessline 164
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Network accessline 165
    | `SANITY_BLUEPRINT_SITE_URL` | no | The site's origin with the protocol and no trailing slash (`https://acme.com`). Empty until there is a domain. Read only by `sanity.blueprint.ts` |
  • Network accessline 166
    | `SANITY_BLUEPRINT_EXTRA_ORIGINS` | no | Comma-separated origins, each with the protocol (`https://www.acme.com`), or empty |
  • Network accessline 175
    | `SANITY_STUDIO_DATASET` | Same dataset | | `SANITY_STUDIO_API_VERSION` | `2024-12-01` unless there's a reason to change it | | `SANITY_STUDIO_APP_URL` | `http://localhost:3000`. The Styleguide tool, the SEO preview and preview links use i
  • Network accessline 177
    | `SANITY_STUDIO_APP_URL` | `http://localhost:3000`. The Styleguide tool, the SEO preview and preview links use it |
  • Network accessline 201
    Write the value the user gives you, or tell them which line to set. If `init` or `plan` fails with `[blueprint] "…" is not an origin`, one of these holds a bare host (`acme.vercel.app`) or a placeholder: add `https://` or empty it, then rer
  • Network accessline 203
    (`acme.vercel.app`) or a placeholder: add `https://` or empty it, then rerun.
  • Network accessline 214
    **Localhost.** The blueprint declares no localhost origin. Sanity creates `http://localhost:3333` with every new project, and `sanity init` adds
  • Network accessline 215
    `http://localhost:3333` with every new project, and `sanity init` adds
  • Network accessline 216
    `http://localhost:3000`, both outside the stack. On a **hand clone**, have the user add
  • Network accessline 217
    `:3000` once (the site and `/admin` need it): `! pnpm --filter <scope>/studio exec sanity cors add http://localhost:3000 --credentials`. Another local port goes into `SANITY_BLUEPRINT_EXTRA_ORIGINS` (`http://localhost:3001`).
  • Network accessline 218
    `! pnpm --filter <scope>/studio exec sanity cors add http://localhost:3000 --credentials`.
  • Network accessline 219
    Another local port goes into `SANITY_BLUEPRINT_EXTRA_ORIGINS` (`http://localhost:3001`).
  • Network accessline 238
    Never tell them to delete `http://localhost:3000` or `:3333`: the blueprint doesn't
  • Network accessline 244
    **Done when:** the blueprint is linked, the deploy succeeded (or the plan is empty because there is no domain yet), and `http://localhost:3000` is a CORS origin.
  • Network accessline 245
    because there is no domain yet), and `http://localhost:3000` is a CORS origin.
  • Network accessline 249
    **Check:** `pnpm dev` and open `http://localhost:3000`. If the site renders, this step
  • Network accessline 277
    1. Open `http://localhost:3000/admin` and log in.
  • Network accessline 285
    **Done when:** `http://localhost:3000` shows the homepage, not the Next steps screen.
  • Network accessline 300
    - `http://localhost:3000` renders the homepage.
  • Network accessline 301
    - `http://localhost:3000/admin` lets the user log in and lists the documents.
  • Network accessline 371
    Add `www` or a preview wildcard with `SANITY_BLUEPRINT_EXTRA_ORIGINS`    (`https://*-<team-slug>.vercel.app`, never `https://*.vercel.app`; the blueprint
  • Network accessline 372
    (`https://*-<team-slug>.vercel.app`, never `https://*.vercel.app`; the blueprint

base/.agents/skills/sanity-module-catalog/SKILL.md

  • Network accessline 57
    |---|---| | **Project dir** (`--project`) | The project root holding `web/` and `studio/`. | | **Running web app** (`--base`, default `http://localhost:3000`) | `pnpm dev`. It must be a **dev** server: outside `next dev` the gallery is gate
  • Network accessline 58
    | **Project dir** (`--project`) | The project root holding `web/` and `studio/`. | | **Running web app** (`--base`, default `http://localhost:3000`) | `pnpm dev`. It must be a **dev** server: outside `next dev` the gallery is gated to logge
  • Network accessline 59
    | **Running web app** (`--base`, default `http://localhost:3000`) | `pnpm dev`. It must be a **dev** server: outside `next dev` the gallery is gated to logged-in Studio editors and the script would photograph the gate. If 3000 is taken, pas
  • Network accessline 74
    2. **Start the app**: `pnpm dev` in a separate terminal or background process (seed the    demo data first if the fixtures need it). Wait until    `http://localhost:3000/styleguide/sections` answers.
  • Network accessline 76
    `http://localhost:3000/styleguide/sections` answers.
  • Dangerous shell operationline 94
    5. **Delete orphans** the report lists (`git rm web/public/admin/thumbnails/<name>.webp`).

base/.agents/skills/sanity-module-catalog/references/live-catalog.md

  • Network accessline 36
    [Credential-related source omitted]
  • Network accessline 37
    [Credential-related source omitted]
  • Network accessline 38
    "https://${PROJECT_ID}.api.sanity.io/v2024-01-01/data/query/${DATASET}?perspective=published&query=$(jq -rn --arg q "$1" '$q|@uri')"
  • Network accessline 59
    {     "url": "/en/partners",     "liveUrl": "https://example.com/en/partners",
  • Network accessline 60
    "url": "/en/partners",     "liveUrl": "https://example.com/en/partners",     "title": "Partners",
  • Network accessline 61
    "liveUrl": "https://example.com/en/partners",
  • Dangerous shell operationline 117
    CURRENT=$(agent-browser eval 'location.pathname' 2>/dev/null | jq -r '.')
  • Dangerous shell operationline 120
    CURRENT=$(agent-browser eval 'location.pathname' 2>/dev/null | jq -r '.')
  • Network accessline 152
    SITE=https://example.com
  • Dangerous shell operationline 153
    rm -f "$OUT"/screenshots/*.png

base/.agents/skills/sanity-module-catalog/scripts/capture.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 3
    //   node capture.mjs --project=path/to/project //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 4
    //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001 //   node capture.mjs --project=. --report        # coverage only, no capture
  • Network accessline 5
    //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 8
    // Flags: //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 9
    //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000) //   --only=a,b        Capture these section types only
  • Network accessline 10
    //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 35
    const DEFAULT_BASE = "http://localhost:3000";
  • Network accessline 141
    for (let attempt = 0; attempt < 60 && !webSocketUrl; attempt++) {       try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);
  • Network accessline 142
    try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);         webSocketUrl = (await response.json()).webSocketDebuggerUrl;
  • Network accessline 143
    const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);

base/.agents/skills/sanity-module-catalog/scripts/lib.mjs

  • Executable scriptline 1
    Executable file

base/.agents/skills/sanity-module-catalog/scripts/lib.test.mjs

  • Executable scriptline 1
    Executable file

base/.agents/skills/sanity-optimizations/references/usage-model.md

  • Network accessline 11
    **Sanity** ([sanity.io/pricing](https://www.sanity.io/pricing))
  • Network accessline 24
    API CDN facts that matter for the model ([API CDN docs](https://www.sanity.io/docs/content-lake/api-cdn)):
  • Network accessline 34
    - Image and file requests to `cdn.sanity.io` count against **bandwidth**, not against   API request quotas. Image transformation responses carry   `cache-control: public, max-age=31536000, s-maxage=2592000` (checked with `curl -sI`).
  • Network accessline 35
    API request quotas. Image transformation responses carry   `cache-control: public, max-age=31536000, s-maxage=2592000` (checked with `curl -sI`). - `auto=format` serves AVIF to browsers that accept it (since 2024-11-13); the first
  • Network accessline 36
    `cache-control: public, max-age=31536000, s-maxage=2592000` (checked with `curl -sI`).
  • Network accessline 37
    - `auto=format` serves AVIF to browsers that accept it (since 2024-11-13); the first   request can get WebP while AVIF is encoded in the background   ([changelog](https://www.sanity.io/docs/changelog/690b41ac-cc92-41c3-b219-b1bcfd06379f)).
  • Network accessline 39
    ([changelog](https://www.sanity.io/docs/changelog/690b41ac-cc92-41c3-b219-b1bcfd06379f)).
  • Network accessline 41
    **Vercel** ([vercel.com/pricing](https://vercel.com/pricing))

base/.agents/skills/sanity-optimizations/scripts/usage-estimate.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 7
    const SANITY = {   source: "https://www.sanity.io/pricing",
  • Network accessline 8
    source: "https://www.sanity.io/pricing",
  • Network accessline 23
    const VERCEL = {   source: "https://vercel.com/pricing",
  • Network accessline 24
    source: "https://vercel.com/pricing",

base/.agents/skills/work-humanizer/check.py

  • Executable scriptline 1
    #!/usr/bin/env python3

theme-meridian/.agents/skills/create-section/SKILL.md

  • Network accessline 405
    pnpm format:check   # oxfmt; `pnpm format` fixes it (long test expectations get rewrapped) pnpm build curl -s localhost:3000/<page-with-the-section>.md   # after Phase 6: read what an agent gets
  • Network accessline 407
    curl -s localhost:3000/<page-with-the-section>.md   # after Phase 6: read what an agent gets

theme-meridian/.agents/skills/generate-alts/SKILL.md

  • Network accessline 54
    | `--include-existing` | `fetch`/`batches` also take images that already have an alt (to review their quality). Default: only missing and decorative ones | | `--lang=` | Content language. Default: `<html lang>` in `web/src/app/(frontend)/la
  • Network accessline 55
    | `--lang=` | Content language. Default: `<html lang>` in `web/src/app/(frontend)/layout.tsx` | | `--studio=` | Studio URL for the report's links. Default: `NEXT_PUBLIC_BASE_URL` + `/admin`, else `http://localhost:3000/admin` | | `--dir=` |
  • Network accessline 56
    | `--studio=` | Studio URL for the report's links. Default: `NEXT_PUBLIC_BASE_URL` + `/admin`, else `http://localhost:3000/admin` |

theme-meridian/.agents/skills/generate-alts/scripts/alts.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    --dir=<path>          Working folder (default: ../.alts, the project root)   --dataset=<name>      Overrides NEXT_PUBLIC_SANITY_DATASET (scan)   --studio=<url>        Studio base URL for links (default: NEXT_PUBLIC_BASE_URL/admin or http://
  • Network accessline 36
    --dataset=<name>      Overrides NEXT_PUBLIC_SANITY_DATASET (scan)   --studio=<url>        Studio base URL for links (default: NEXT_PUBLIC_BASE_URL/admin or http://localhost:3000/admin)   --lang=<code>         Content language (default: <htm
  • Network accessline 37
    --studio=<url>        Studio base URL for links (default: NEXT_PUBLIC_BASE_URL/admin or http://localhost:3000/admin)   --lang=<code>         Content language (default: <html lang> of src/app/(frontend)/layout.tsx)   --include-existing    fe
  • Access to secretsline 124
    [Credential-related source omitted]
  • Access to secretsline 129
    [Credential-related source omitted]
  • Access to secretsline 130
    [Credential-related source omitted]
  • Access to secretsline 133
    [Credential-related source omitted]
  • Network accessline 163
    const documents = [];   for (let lastId = ""; ; ) {     const page = await client.fetch(
  • Network accessline 164
    for (let lastId = ""; ; ) {     const page = await client.fetch(       `*[!(_type match "sanity.*") && !(_id in path("_.**")) && _id > $lastId] | order(_id) [0...${PAGE_SIZE}]`,
  • Network accessline 165
    const page = await client.fetch(
  • Network accessline 177
    const assets = {};   for (let start = 0; start < assetIds.length; start += ASSET_CHUNK) {     const chunk = await client.fetch(
  • Network accessline 178
    for (let start = 0; start < assetIds.length; start += ASSET_CHUNK) {     const chunk = await client.fetch(       `*[_type == "sanity.imageAsset" && _id in $ids]{
  • Network accessline 179
    const chunk = await client.fetch(
  • Network accessline 194
    dataset,     projectId,     studioUrl: readArgument("studio") ?? `${baseUrl || "http://localhost:3000"}/admin`,
  • Network accessline 195
    projectId,     studioUrl: readArgument("studio") ?? `${baseUrl || "http://localhost:3000"}/admin`,     lang: await detectLang(),
  • Network accessline 196
    studioUrl: readArgument("studio") ?? `${baseUrl || "http://localhost:3000"}/admin`,
  • Network accessline 223
    const download = async (url, file) => {   const response = await fetch(url);
  • Network accessline 224
    const response = await fetch(url);
  • Network accessline 364
    const ids = [...new Set(items.flatMap((item) => [item.documentId, `drafts.${item.documentId}`]))];   const documents = ids.length ? await client.fetch(`*[_id in $ids]`, { ids }) : [];
  • Network accessline 365
    const documents = ids.length ? await client.fetch(`*[_id in $ids]`, { ids }) : [];

theme-meridian/.agents/skills/generate-alts/scripts/lib.mjs

  • Executable scriptline 1
    Executable file

theme-meridian/.agents/skills/generate-alts/scripts/lib.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 66
    _type: "videoEmbed",       _key: "v1",       url: "https://video.example/1",
  • Network accessline 67
    _key: "v1",       url: "https://video.example/1",       caption: "Product walkthrough",
  • Network accessline 68
    url: "https://video.example/1",
  • Network accessline 76
    const ASSETS = {   [ASSET_A]: { _id: ASSET_A, url: "https://cdn.sanity.io/images/p/d/a-800x600.jpg", mimeType: "image/jpeg", title: "Team at work", description: "Office photo", altText: null, hasAlpha: false },
  • Network accessline 77
    [ASSET_A]: { _id: ASSET_A, url: "https://cdn.sanity.io/images/p/d/a-800x600.jpg", mimeType: "image/jpeg", title: "Team at work", description: "Office photo", altText: null, hasAlpha: false },
  • Network accessline 78
    [ASSET_B]: { _id: ASSET_B, url: "https://cdn.sanity.io/images/p/d/b-120x40.svg", mimeType: "image/svg+xml", title: null, description: null, altText: "Acme logo", hasAlpha: true },
  • Network accessline 81
    const manifestOf = (documents, cache = { assets: {}, usages: {} }) =>   buildManifest({ documents, assets: ASSETS, cache, dataset: "production", projectId: "p", studioUrl: "http://localhost:3000/admin", lang: "en", generatedAt: "2026-01-01T
  • Network accessline 82
    buildManifest({ documents, assets: ASSETS, cache, dataset: "production", projectId: "p", studioUrl: "http://localhost:3000/admin", lang: "en", generatedAt: "2026-01-01T00:00:00.000Z" });
  • Network accessline 139
    assert.deepEqual(hero.variants, { published: "", draft: "Draft alt" });   assert.equal(hero.status, "has-alt");   assert.equal(hero.studio, "http://localhost:3000/admin/intent/edit/id=page-1;type=page");
  • Network accessline 140
    assert.equal(hero.status, "has-alt");   assert.equal(hero.studio, "http://localhost:3000/admin/intent/edit/id=page-1;type=page");   assert.equal(manifest.counts.versionsSkipped, 1);
  • Network accessline 141
    assert.equal(hero.studio, "http://localhost:3000/admin/intent/edit/id=page-1;type=page");
  • Network accessline 173
    test("previewUrl asks the CDN for a small JPEG, PNG with alpha, SVG as is", () => {   assert.deepEqual(previewUrl(ASSETS[ASSET_A]), { url: `${ASSETS[ASSET_A].url}?w=640&fit=max&fm=jpg&q=75`, ext: "jpg" });   assert.equal(previewUrl({ url: "
  • Network accessline 174
    assert.deepEqual(previewUrl(ASSETS[ASSET_A]), { url: `${ASSETS[ASSET_A].url}?w=640&fit=max&fm=jpg&q=75`, ext: "jpg" });   assert.equal(previewUrl({ url: "https://x/y.png", hasAlpha: true }, 320).url, "https://x/y.png?w=320&fit=max&fm=png");
  • Network accessline 175
    assert.equal(previewUrl({ url: "https://x/y.png", hasAlpha: true }, 320).url, "https://x/y.png?w=320&fit=max&fm=png");

theme-meridian/.agents/skills/generate-alts/scripts/report.mjs

  • Executable scriptline 1
    Executable file

theme-meridian/.agents/skills/link-fix/SKILL.md

  • Network accessline 1
    --- name: link-fix description: Audit and fix the links stored in the Sanity dataset, three rules counted in one table first. own-domain turns links to the site's own domain (`https://example.com/pricing` or a bare `/pricing` in an external
  • Network accessline 2
    name: link-fix description: Audit and fix the links stored in the Sanity dataset, three rules counted in one table first. own-domain turns links to the site's own domain (`https://example.com/pricing` or a bare `/pricing` in an external lin
  • Network accessline 3
    description: Audit and fix the links stored in the Sanity dataset, three rules counted in one table first. own-domain turns links to the site's own domain (`https://example.com/pricing` or a bare `/pricing` in an external link, CTA, header/
  • Network accessline 10
    - **Own domain as external.** Editors paste `https://example.com/pricing` into an
  • Network accessline 13
    and staging deployments send visitors to production, a domain change breaks every   one of them, and nothing stops someone deleting or renaming the target page. - **`http://`.** Costs a redirect hop at best, a mixed-content warning or a dea
  • Network accessline 14
    one of them, and nothing stops someone deleting or renaming the target page. - **`http://`.** Costs a redirect hop at best, a mixed-content warning or a dead   link at worst, and some hosts never got https.
  • Network accessline 15
    - **`http://`.** Costs a redirect hop at best, a mixed-content warning or a dead
  • Network accessline 46
    | `--trailing-slash=` | `auto` (default): read `trailingSlash` from `web/next.config.*`. `never` / `always` overrides it | | `--verify-https` | Requests every upgraded URL (HEAD, then GET; 8 s timeout). `check` shows the result per host; `f
  • Network accessline 47
    | `--verify-https` | Requests every upgraded URL (HEAD, then GET; 8 s timeout). `check` shows the result per host; `fix` upgrades only URLs whose https answers below 400 | | `--keep-http=` | Hosts to leave on `http://` | | `--drafts=` | `bo
  • Network accessline 48
    | `--keep-http=` | Hosts to leave on `http://` |
  • Network accessline 113
    Every `http://` value in an external link or a URL field. The check lists the
  • Network accessline 114
    **hosts** with their counts; read them back, because an upgrade is only safe where the host serves https. Local and private hosts (`localhost`, `*.local`, `*.test`, IP addresses) are reported and never upgraded. An own-domain `http://` link
  • Network accessline 115
    the host serves https. Local and private hosts (`localhost`, `*.local`, `*.test`, IP addresses) are reported and never upgraded. An own-domain `http://` link is counted under both rules; when own-domain converts it, the upgrade is moot.
  • Network accessline 116
    IP addresses) are reported and never upgraded. An own-domain `http://` link is
  • Network accessline 245
    Spot-check one fixed page in the browser: an internal link should be root-relative in the site's convention (`href="/pricing"`) and open in the same tab; an upgraded external link should start with `https://`.
  • Network accessline 247
    external link should start with `https://`.
  • Network accessline 251
    The dataset is half of it: hardcoded `http://` URLs, own-domain links in

theme-meridian/.agents/skills/link-fix/scripts/lib.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 55
    let host;     try {       host = new URL(/^[a-z]+:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`).hostname;
  • Network accessline 56
    try {       host = new URL(/^[a-z]+:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`).hostname;     } catch {
  • Network accessline 57
    host = new URL(/^[a-z]+:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`).hostname;
  • Network accessline 121
    export const upgradeHttp = (value) =>   typeof value === "string" && /^http:\/\//i.test(value.trim())     ? `https://${value.trim().slice("http://".length)}`
  • Network accessline 122
    typeof value === "string" && /^http:\/\//i.test(value.trim())     ? `https://${value.trim().slice("http://".length)}`     : null;
  • Network accessline 123
    ? `https://${value.trim().slice("http://".length)}`
  • Network accessline 176
    /** The site root (`https://example.com` or `…/`) is never flagged; the origin text stays verbatim. */

theme-meridian/.agents/skills/link-fix/scripts/lib.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    const ownHosts = buildOwnHosts(["https://www.example.com", "old-example.com"]);
  • Network accessline 30
    _type: "page",     _rev: "r7",     metadata: { slug: { current: "landing" }, canonical: "http://example.com/landing/" },
  • Network accessline 31
    _rev: "r7",     metadata: { slug: { current: "landing" }, canonical: "http://example.com/landing/" },     sections: [
  • Network accessline 32
    metadata: { slug: { current: "landing" }, canonical: "http://example.com/landing/" },
  • Network accessline 36
    _type: "hero",         ctas: [           { _key: "c1", _type: "cta", link: { _type: "link", type: "external", external: "http://www.example.com/pricing/?plan=pro" } },
  • Network accessline 37
    ctas: [           { _key: "c1", _type: "cta", link: { _type: "link", type: "external", external: "http://www.example.com/pricing/?plan=pro" } },           { _key: "c2", _type: "cta", link: { _type: "link", type: "external", external: "http:
  • Network accessline 38
    { _key: "c1", _type: "cta", link: { _type: "link", type: "external", external: "http://www.example.com/pricing/?plan=pro" } },
  • Network accessline 39
    { _key: "c2", _type: "cta", link: { _type: "link", type: "external", external: "http://partner.com/docs" } },
  • Network accessline 40
    { _key: "c3", _type: "cta", link: { _type: "link", type: "path", internalPath: "Pricing/" } },           { _key: "c4", _type: "cta", link: { _type: "link", type: "external", external: "mailto:hi@example.com" } },           { _key: "c5", _ty
  • Network accessline 41
    { _key: "c4", _type: "cta", link: { _type: "link", type: "external", external: "mailto:hi@example.com" } },           { _key: "c5", _type: "cta", link: { _type: "link", type: "external", external: "http://localhost:3000/x" } },         ],
  • Network accessline 42
    { _key: "c5", _type: "cta", link: { _type: "link", type: "external", external: "http://localhost:3000/x" } },
  • Network accessline 48
    _key: "b1",         _type: "block",         children: [{ _key: "t1", _type: "span", text: "see http://example.com/pricing", marks: ["m1"] }],
  • Network accessline 49
    _type: "block",         children: [{ _key: "t1", _type: "span", text: "see http://example.com/pricing", marks: ["m1"] }],         markDefs: [{ _key: "m1", _type: "link", type: "external", external: "/pricing#faq" }],
  • Network accessline 50
    children: [{ _key: "t1", _type: "span", text: "see http://example.com/pricing", marks: ["m1"] }],
  • Network accessline 52
    },     ],     sameAs: ["http://linkedin.com/company/example"],
  • Network accessline 53
    ],     sameAs: ["http://linkedin.com/company/example"],   },
  • Network accessline 54
    sameAs: ["http://linkedin.com/company/example"],
  • Network accessline 63
    describe("URL helpers", () => {   it("parses own-domain URLs with www, http and protocol-relative forms", () => {     assert.deepEqual(parseOwnUrl("http://www.example.com/pricing/?plan=pro#top", ownHosts), {
  • Network accessline 64
    it("parses own-domain URLs with www, http and protocol-relative forms", () => {     assert.deepEqual(parseOwnUrl("http://www.example.com/pricing/?plan=pro#top", ownHosts), {       path: "/pricing",
  • Network accessline 65
    assert.deepEqual(parseOwnUrl("http://www.example.com/pricing/?plan=pro#top", ownHosts), {
  • Network accessline 68
    });     assert.deepEqual(parseOwnUrl("//old-example.com", ownHosts), { path: "/", params: "" });     assert.equal(parseOwnUrl("https://partner.com/pricing", ownHosts), null);
  • Network accessline 69
    assert.deepEqual(parseOwnUrl("//old-example.com", ownHosts), { path: "/", params: "" });     assert.equal(parseOwnUrl("https://partner.com/pricing", ownHosts), null);   });
  • Network accessline 70
    assert.equal(parseOwnUrl("https://partner.com/pricing", ownHosts), null);
  • Network accessline 79
    it("upgrades only http:// and leaves other schemes alone", () => {     assert.equal(upgradeHttp("http://partner.com/a?b=1"), "https://partner.com/a?b=1");
  • Network accessline 80
    assert.equal(upgradeHttp("http://partner.com/a?b=1"), "https://partner.com/a?b=1");
  • Network accessline 81
    assert.equal(upgradeHttp("HTTP://partner.com"), "https://partner.com");
  • Network accessline 82
    for (const value of ["https://partner.com", "mailto:a@b.c", "tel:+48123", "#top", "/x"])
  • Network accessline 127
    it("reports what it cannot fix safely", () => {     for (const value of ["https://example.com/x", "//example.com/x", "/a b", "#faq"]) {
  • Network accessline 128
    for (const value of ["https://example.com/x", "//example.com/x", "/a b", "#faq"]) {
  • Network accessline 136
    describe("checkAbsoluteUrl", () => {   it("keeps the origin text and the query", () => {     assert.equal(checkAbsoluteUrl("https://Example.com//a/b/?x=1", "never").fixed, "https://Example.com/a/b?x=1");
  • Network accessline 137
    it("keeps the origin text and the query", () => {     assert.equal(checkAbsoluteUrl("https://Example.com//a/b/?x=1", "never").fixed, "https://Example.com/a/b?x=1");     assert.equal(checkAbsoluteUrl("https://example.com/a", "always").fixed,
  • Network accessline 138
    assert.equal(checkAbsoluteUrl("https://Example.com//a/b/?x=1", "never").fixed, "https://Example.com/a/b?x=1");
  • Network accessline 139
    assert.equal(checkAbsoluteUrl("https://example.com/a", "always").fixed, "https://example.com/a/");
  • Network accessline 142
    it("never flags the site root", () => {     assert.deepEqual(checkAbsoluteUrl("https://example.com/", "never").issues, []);
  • Network accessline 143
    assert.deepEqual(checkAbsoluteUrl("https://example.com/", "never").issues, []);
  • Network accessline 144
    assert.deepEqual(checkAbsoluteUrl("https://example.com", "always").issues, []);
  • Network accessline 203
    assert.equal(find(findings, "slash", "metadata.canonical").suggested, "http://example.com/landing");
  • Network accessline 231
    assert.equal(landing.set[`${base}.external`], undefined);     assert.ok(landing.unset.includes(`${base}.external`));     assert.equal(landing.set["metadata.canonical"], "https://example.com/landing");
  • Network accessline 232
    assert.ok(landing.unset.includes(`${base}.external`));     assert.equal(landing.set["metadata.canonical"], "https://example.com/landing");     assert.equal(landing.set["sections[_key==\"s1\"].ctas[_key==\"c2\"].link.external"], "https://par
  • Network accessline 233
    assert.equal(landing.set["metadata.canonical"], "https://example.com/landing");
  • Network accessline 234
    assert.equal(landing.set["sections[_key==\"s1\"].ctas[_key==\"c2\"].link.external"], "https://partner.com/docs");
  • Network accessline 235
    assert.equal(landing.set["sameAs[0]"], "https://linkedin.com/company/example");
  • Network accessline 241
    assert.equal(       landing.set["sections[_key==\"s1\"].ctas[_key==\"c1\"].link.external"],       "https://www.example.com/pricing/?plan=pro",
  • Network accessline 242
    landing.set["sections[_key==\"s1\"].ctas[_key==\"c1\"].link.external"],       "https://www.example.com/pricing/?plan=pro",     );
  • Network accessline 243
    "https://www.example.com/pricing/?plan=pro",
  • Network accessline 277
    it("combines the http upgrade and the slash fix on one URL", () => {     assert.equal(       rewriteValue("http://example.com/a/", [{ rule: "slash", fieldType: "url" }, { rule: "http" }], "never"),
  • Network accessline 278
    assert.equal(       rewriteValue("http://example.com/a/", [{ rule: "slash", fieldType: "url" }, { rule: "http" }], "never"),       "https://example.com/a",
  • Network accessline 279
    rewriteValue("http://example.com/a/", [{ rule: "slash", fieldType: "url" }, { rule: "http" }], "never"),
  • Network accessline 280
    "https://example.com/a",

theme-meridian/.agents/skills/link-fix/scripts/links.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]
  • Access to secretsline 107
    [Credential-related source omitted]
  • Network accessline 138
    let lastId = "";   for (;;) {     const page = await client.fetch(
  • Network accessline 139
    for (;;) {     const page = await client.fetch(       `*[!(_type match "sanity.*") && !(_id in path("_.**")) && _id > $lastId] | order(_id) [0...${PAGE_SIZE}]`,
  • Network accessline 140
    const page = await client.fetch(
  • Network accessline 152
    for (const method of ["HEAD", "GET"]) {     try {       const response = await fetch(url, {
  • Network accessline 153
    try {       const response = await fetch(url, {         method,
  • Network accessline 154
    const response = await fetch(url, {

theme-meridian/.agents/skills/pr-writeup/SKILL.md

  • Dangerous shell operationline 150
    agent-browser eval "$(cat "$S/prepare.js")"
  • Dangerous shell operationline 151
    agent-browser eval "($(cat "$S/region.js"))('h2|Key takeaways', 'h2|Next heading', 32)" > /tmp/<topic>/region.json
  • Network accessline 186
    https://github.com/<owner>/<repo>/blob/<SHA>/.github/pr-assets/<topic>/after-<page>-<width>.png?raw=true

theme-meridian/.agents/skills/pr-writeup/scripts/compose.py

  • Executable scriptline 1
    #!/usr/bin/env python3

theme-meridian/.agents/skills/pr-writeup/scripts/crop.py

  • Executable scriptline 1
    #!/usr/bin/env python3

theme-meridian/.agents/skills/pr-writeup/scripts/prepare.js

  • Executable scriptline 1
    Executable file

theme-meridian/.agents/skills/pr-writeup/scripts/region.js

  • Executable scriptline 1
    Executable file

theme-meridian/.agents/skills/project-setup/SKILL.md

  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Network accessline 156
    | `SANITY_API_READ_TOKEN` | recommended | Viewer token | | `SANITY_REVALIDATE_SECRET` | recommended | A random string: `openssl rand -hex 32`. The webhook signs with it, so production must have the same value. Without it a published change 
  • Network accessline 157
    | `SANITY_REVALIDATE_SECRET` | recommended | A random string: `openssl rand -hex 32`. The webhook signs with it, so production must have the same value. Without it a published change waits for the 30-day cache | | `NEXT_PUBLIC_BASE_URL` | n
  • Network accessline 158
    | `NEXT_PUBLIC_BASE_URL` | no | Unset falls back to the Vercel URL, else `http://localhost:3000` (`web/src/setup/base-url.ts`). Set it to the real domain once known. **No trailing slash** |
  • Network accessline 163
    | `NEXT_PUBLIC_GTM_ID` | no | Google Tag Manager. Cookie consent needs no env: it runs offline | | `RESEND_API_KEY`, `CONTACT_FORM_RECIPIENT_EMAIL`, `CONTACT_FORM_FROM_EMAIL` | no | Contact form. Without them the form can't send | | `SANITY
  • Network accessline 164
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Network accessline 165
    | `SANITY_BLUEPRINT_SITE_URL` | no | The site's origin with the protocol and no trailing slash (`https://acme.com`). Empty until there is a domain. Read only by `sanity.blueprint.ts` |
  • Network accessline 166
    | `SANITY_BLUEPRINT_EXTRA_ORIGINS` | no | Comma-separated origins, each with the protocol (`https://www.acme.com`), or empty |
  • Network accessline 175
    | `SANITY_STUDIO_DATASET` | Same dataset | | `SANITY_STUDIO_API_VERSION` | `2024-12-01` unless there's a reason to change it | | `SANITY_STUDIO_APP_URL` | `http://localhost:3000`. The Styleguide tool, the SEO preview and preview links use i
  • Network accessline 177
    | `SANITY_STUDIO_APP_URL` | `http://localhost:3000`. The Styleguide tool, the SEO preview and preview links use it |
  • Network accessline 201
    Write the value the user gives you, or tell them which line to set. If `init` or `plan` fails with `[blueprint] "…" is not an origin`, one of these holds a bare host (`acme.vercel.app`) or a placeholder: add `https://` or empty it, then rer
  • Network accessline 203
    (`acme.vercel.app`) or a placeholder: add `https://` or empty it, then rerun.
  • Network accessline 214
    **Localhost.** The blueprint declares no localhost origin. Sanity creates `http://localhost:3333` with every new project, and `sanity init` adds
  • Network accessline 215
    `http://localhost:3333` with every new project, and `sanity init` adds
  • Network accessline 216
    `http://localhost:3000`, both outside the stack. On a **hand clone**, have the user add
  • Network accessline 217
    `:3000` once (the site and `/admin` need it): `! pnpm --filter <scope>/studio exec sanity cors add http://localhost:3000 --credentials`. Another local port goes into `SANITY_BLUEPRINT_EXTRA_ORIGINS` (`http://localhost:3001`).
  • Network accessline 218
    `! pnpm --filter <scope>/studio exec sanity cors add http://localhost:3000 --credentials`.
  • Network accessline 219
    Another local port goes into `SANITY_BLUEPRINT_EXTRA_ORIGINS` (`http://localhost:3001`).
  • Network accessline 238
    Never tell them to delete `http://localhost:3000` or `:3333`: the blueprint doesn't
  • Network accessline 244
    **Done when:** the blueprint is linked, the deploy succeeded (or the plan is empty because there is no domain yet), and `http://localhost:3000` is a CORS origin.
  • Network accessline 245
    because there is no domain yet), and `http://localhost:3000` is a CORS origin.
  • Network accessline 249
    **Check:** `pnpm dev` and open `http://localhost:3000`. If the site renders, this step
  • Network accessline 277
    1. Open `http://localhost:3000/admin` and log in.
  • Network accessline 285
    **Done when:** `http://localhost:3000` shows the homepage, not the Next steps screen.
  • Network accessline 300
    - `http://localhost:3000` renders the homepage.
  • Network accessline 301
    - `http://localhost:3000/admin` lets the user log in and lists the documents.
  • Network accessline 371
    Add `www` or a preview wildcard with `SANITY_BLUEPRINT_EXTRA_ORIGINS`    (`https://*-<team-slug>.vercel.app`, never `https://*.vercel.app`; the blueprint
  • Network accessline 372
    (`https://*-<team-slug>.vercel.app`, never `https://*.vercel.app`; the blueprint

theme-meridian/.agents/skills/sanity-module-catalog/SKILL.md

  • Network accessline 57
    |---|---| | **Project dir** (`--project`) | The project root holding `web/` and `studio/`. | | **Running web app** (`--base`, default `http://localhost:3000`) | `pnpm dev`. It must be a **dev** server: outside `next dev` the gallery is gate
  • Network accessline 58
    | **Project dir** (`--project`) | The project root holding `web/` and `studio/`. | | **Running web app** (`--base`, default `http://localhost:3000`) | `pnpm dev`. It must be a **dev** server: outside `next dev` the gallery is gated to logge
  • Network accessline 59
    | **Running web app** (`--base`, default `http://localhost:3000`) | `pnpm dev`. It must be a **dev** server: outside `next dev` the gallery is gated to logged-in Studio editors and the script would photograph the gate. If 3000 is taken, pas
  • Network accessline 74
    2. **Start the app**: `pnpm dev` in a separate terminal or background process (seed the    demo data first if the fixtures need it). Wait until    `http://localhost:3000/styleguide/sections` answers.
  • Network accessline 76
    `http://localhost:3000/styleguide/sections` answers.
  • Dangerous shell operationline 94
    5. **Delete orphans** the report lists (`git rm web/public/admin/thumbnails/<name>.webp`).

theme-meridian/.agents/skills/sanity-module-catalog/references/live-catalog.md

  • Network accessline 36
    [Credential-related source omitted]
  • Network accessline 37
    [Credential-related source omitted]
  • Network accessline 38
    "https://${PROJECT_ID}.api.sanity.io/v2024-01-01/data/query/${DATASET}?perspective=published&query=$(jq -rn --arg q "$1" '$q|@uri')"
  • Network accessline 59
    {     "url": "/en/partners",     "liveUrl": "https://example.com/en/partners",
  • Network accessline 60
    "url": "/en/partners",     "liveUrl": "https://example.com/en/partners",     "title": "Partners",
  • Network accessline 61
    "liveUrl": "https://example.com/en/partners",
  • Dangerous shell operationline 117
    CURRENT=$(agent-browser eval 'location.pathname' 2>/dev/null | jq -r '.')
  • Dangerous shell operationline 120
    CURRENT=$(agent-browser eval 'location.pathname' 2>/dev/null | jq -r '.')
  • Network accessline 152
    SITE=https://example.com
  • Dangerous shell operationline 153
    rm -f "$OUT"/screenshots/*.png

theme-meridian/.agents/skills/sanity-module-catalog/scripts/capture.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 3
    //   node capture.mjs --project=path/to/project //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 4
    //   node capture.mjs --project=path/to/project --only=hero,faq //   node capture.mjs --project=. --base=http://localhost:3001 //   node capture.mjs --project=. --report        # coverage only, no capture
  • Network accessline 5
    //   node capture.mjs --project=. --base=http://localhost:3001
  • Network accessline 8
    // Flags: //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 9
    //   --project=DIR     Project root holding web/ and studio/ (default: cwd) //   --base=URL        Web app to photograph (default: http://localhost:3000) //   --only=a,b        Capture these section types only
  • Network accessline 10
    //   --base=URL        Web app to photograph (default: http://localhost:3000)
  • Network accessline 35
    const DEFAULT_BASE = "http://localhost:3000";
  • Network accessline 141
    for (let attempt = 0; attempt < 60 && !webSocketUrl; attempt++) {       try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);
  • Network accessline 142
    try {         const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);         webSocketUrl = (await response.json()).webSocketDebuggerUrl;
  • Network accessline 143
    const response = await fetch(`http://127.0.0.1:${DEBUG_PORT}/json/version`);

theme-meridian/.agents/skills/sanity-module-catalog/scripts/lib.mjs

  • Executable scriptline 1
    Executable file

theme-meridian/.agents/skills/sanity-module-catalog/scripts/lib.test.mjs

  • Executable scriptline 1
    Executable file

theme-meridian/.agents/skills/sanity-optimizations/references/usage-model.md

  • Network accessline 11
    **Sanity** ([sanity.io/pricing](https://www.sanity.io/pricing))
  • Network accessline 24
    API CDN facts that matter for the model ([API CDN docs](https://www.sanity.io/docs/content-lake/api-cdn)):
  • Network accessline 34
    - Image and file requests to `cdn.sanity.io` count against **bandwidth**, not against   API request quotas. Image transformation responses carry   `cache-control: public, max-age=31536000, s-maxage=2592000` (checked with `curl -sI`).
  • Network accessline 35
    API request quotas. Image transformation responses carry   `cache-control: public, max-age=31536000, s-maxage=2592000` (checked with `curl -sI`). - `auto=format` serves AVIF to browsers that accept it (since 2024-11-13); the first
  • Network accessline 36
    `cache-control: public, max-age=31536000, s-maxage=2592000` (checked with `curl -sI`).
  • Network accessline 37
    - `auto=format` serves AVIF to browsers that accept it (since 2024-11-13); the first   request can get WebP while AVIF is encoded in the background   ([changelog](https://www.sanity.io/docs/changelog/690b41ac-cc92-41c3-b219-b1bcfd06379f)).
  • Network accessline 39
    ([changelog](https://www.sanity.io/docs/changelog/690b41ac-cc92-41c3-b219-b1bcfd06379f)).
  • Network accessline 41
    **Vercel** ([vercel.com/pricing](https://vercel.com/pricing))

theme-meridian/.agents/skills/sanity-optimizations/scripts/usage-estimate.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 7
    const SANITY = {   source: "https://www.sanity.io/pricing",
  • Network accessline 8
    source: "https://www.sanity.io/pricing",
  • Network accessline 23
    const VERCEL = {   source: "https://vercel.com/pricing",
  • Network accessline 24
    source: "https://vercel.com/pricing",

theme-meridian/.agents/skills/work-humanizer/check.py

  • Executable scriptline 1
    #!/usr/bin/env python3

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 454 facts

and 404 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md base/.agents/skills/create-section/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md base/.agents/skills/create-section/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md base/.agents/skills/create-section/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md base/.agents/skills/create-section/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.