Skip to content
Back to skills

Stitch Intake Audit

ASecurity

Phase B/01 of the Movemental tenant migration — fetch and cache Google Stitch wireframe screens locally, map each screen to its Next.js route, inventory which routes are still PlaceholderPage scaffolds, and produce a section-level gap audit before any React conversion. Use when starting a stitch migration, when the user says "intake the stitch screens", "cache the wireframes", "gap audit", "screen to route map", or before running stitch-page-port. Writes docs/build/notes/stitch-screen-route-m...

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added October 26, 2026
developmentgobashreactnextjs

Works with

  • mcp

Security analysis

A100/100

Scanned October 26, 2026

npx -y skills add JoshuaShepherd/my-skills --skill stitch-intake-audit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Stitch Intake Audit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stitch Intake Audit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/joshuashepherd-stitch-intake-audit/badge)](https://www.skillsdirectory.com/skills/joshuashepherd-stitch-intake-audit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: stitch-intake-audit
description: >
  Phase B/01 of the Movemental tenant migration — fetch and cache Google Stitch
  wireframe screens locally, map each screen to its Next.js route, inventory which
  routes are still PlaceholderPage scaffolds, and produce a section-level gap audit
  before any React conversion. Use when starting a stitch migration, when the user
  says "intake the stitch screens", "cache the wireframes", "gap audit", "screen to
  route map", or before running stitch-page-port. Writes
  docs/build/notes/stitch-screen-route-map.md and stitch-gap-audit-<date>.md.
  Tenant-agnostic: reads TENANT_MANIFEST.md for the Stitch project, prompt library,
  and route scope. Does NOT convert to React (that's stitch-page-port) and does NOT
  change tokens (that's stitch-token-bridge).
user-invocable: true
allowed-tools: Read, Write, Grep, Glob, Bash, Agent, mcp__stitch__list_projects, mcp__stitch__list_screens, mcp__stitch__get_screen, mcp__stitch__get_project
---

# Stitch intake and gap audit

Ensure every in-scope route has a cached Stitch HTML + PNG mapped to the right route,
with a gap report against the component checklist — **before** any conversion.

Scope from `$ARGUMENTS` (a screen set, cluster, or "all"); default to the full project.

## Read first

From the target repo (values resolve via `TENANT_MANIFEST.md`):

- `docs/build/prompts/stitch-migration/TENANT_MANIFEST.md` — `{{STITCH_PROJECT_NAME}}`,
  `{{STITCH_PROMPTS_HTML}}`, route scope (in-scope / tenant-unique / excluded), legacy redirects.
- `docs/build/prompts/stitch-migration/STITCH_ROUTE_INDEX.md` — order ↔ route lookup.
- `docs/build/prompts/stitch-migration/COMPONENT_CHECKLIST.md` — required sections per route.
- The Stitch prompt library at `{{STITCH_PROMPTS_HTML}}` (the `PROMPTS[].text` entries define section order).

## A. Fetch and cache (stitch-react Phase 0)

Use the Stitch MCP (`stitch__list_projects` / `stitch__list_screens` / `stitch__get_screen`)
or ask the user for the project id. For each screen:

1. `get_screen` → `htmlCode.downloadUrl`, `screenshot.downloadUrl`.
2. Save to `.stitch/designs/{page-slug}.{html,png,meta.json}`.
3. Prefer `scripts/fetch-stitch.sh` if present; else `curl -L`.

Page-slug convention: lowercase, hyphenated from the screen title ("Homepage" → `homepage`).
The existing **`stitch-react`** skill (fetch-only mode) does exactly this — delegate to it
if available rather than re-implementing fetch logic.

## B. Build the screen ↔ route map

Create / update `docs/build/notes/stitch-screen-route-map.md`:

| Stitch order | Screen title | page-slug | Next route | Scaffold status |
|--------------|--------------|-----------|------------|-----------------|
| 1 | Global chrome | global-chrome | layout | MISSING / CACHED |
| 2 | Homepage | homepage | / | PlaceholderPage |

Scaffold status = grep `src/app` for `PlaceholderPage` on that route.

## C. Gap audit per route

For each mapped in-scope route, compare four signals:

1. Sections in the Stitch prompt (`{{STITCH_PROMPTS_HTML}}` → `PROMPTS[].text`).
2. Sections in `COMPONENT_CHECKLIST.md`.
3. Sections present in the cached HTML (grep `data-section` / heading structure).
4. Current React page (`PlaceholderPage` = 0% migrated).

Emit a gap table:

| Route | Required sections | In Stitch HTML | In React | Action |
|-------|-------------------|----------------|----------|--------|
| / | Hero, SocialProof, … | 7/8 | 0/8 | Convert + synthesize Newsletter |

## D. Diagnose fake migrations

```bash
rg 'dangerouslySetInnerHTML|const html =| class=' src -l
```

Any hits → flag for real-JSX conversion in `stitch-page-port`.

## Deliverables

1. `.stitch/designs/` populated (or a list of MISSING screens for a human to generate in Stitch).
2. `docs/build/notes/stitch-screen-route-map.md`.
3. `docs/build/notes/stitch-gap-audit-<date>.md` with a prioritized conversion order
   (Foundation/tokens → global chrome → home → pathways → content → courses → ai/chat/auth → utility/legal).

## Do not

- Convert to React (that's `stitch-page-port`).
- Change `globals.css` tokens (that's `stitch-token-bridge`).
- Port routes the manifest marks excluded (e.g. another tenant's unique route).

## Acceptance criteria

- [ ] Screen ↔ route map exists for every in-scope route
- [ ] Each route has CACHED or MISSING documented
- [ ] Gap audit lists section-level deltas with actions
- [ ] No React conversion started here

## Related skills

`stitch-react` (fetch primitive) · `stitch-token-bridge` · `stitch-page-port` ·
`tenant-migration-playbook`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.