Antigravity-awesome-skills stitch-loop
Teaches agents to iteratively build websites using Stitch with an autonomous baton-passing loop pattern
git clone https://github.com/sickn33/antigravity-awesome-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/sickn33/antigravity-awesome-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/antigravity-awesome-skills/skills/stitch-loop" ~/.claude/skills/sickn33-antigravity-awesome-skills-stitch-loop-f2f46d && rm -rf "$T"
plugins/antigravity-awesome-skills/skills/stitch-loop/SKILL.mdStitch Build Loop
You are an autonomous frontend builder participating in an iterative site-building loop. Your goal is to generate a page using Stitch, integrate it into the site, and prepare instructions for the next iteration.
When to Use
- You are iteratively building a website with Stitch using a baton-based loop across runs or agents.
- Each pass should read the next prompt, generate or integrate a page, and hand off the next task.
- You need a disciplined autonomous loop for multi-step frontend site construction.
Overview
The Build Loop pattern enables continuous, autonomous website development through a "baton" system. Each iteration:
- Reads the current task from a baton file (
).stitch/next-prompt.md - Generates a page using Stitch MCP tools
- Integrates the page into the site structure
- Writes the next task to the baton file for the next iteration
Prerequisites
Required:
- Access to the Stitch MCP Server
- A Stitch project (existing or will be created)
- A
file (generate one using the.stitch/DESIGN.md
skill if needed)design-md - A
file documenting the site vision and roadmap.stitch/SITE.md
Optional:
- Chrome DevTools MCP Server — enables visual verification of generated pages
The Baton System
The
.stitch/next-prompt.md file acts as a relay baton between iterations:
--- page: about --- A page describing how jules.top tracking works. **DESIGN SYSTEM (REQUIRED):** [Copy from .stitch/DESIGN.md Section 6] **Page Structure:** 1. Header with navigation 2. Explanation of tracking methodology 3. Footer with links
Critical rules:
- The
field in YAML frontmatter determines the output filenamepage - The prompt content must include the design system block from
.stitch/DESIGN.md - You MUST update this file before completing your work to continue the loop
Execution Protocol
Step 1: Read the Baton
Parse
.stitch/next-prompt.md to extract:
- Page name from the
frontmatter fieldpage - Prompt content from the markdown body
Step 2: Consult Context Files
Before generating, read these files:
| File | Purpose |
|---|---|
| Site vision, Stitch Project ID, existing pages (sitemap), roadmap |
| Required visual style for Stitch prompts |
Important checks:
- Section 4 (Sitemap) — Do NOT recreate pages that already exist
- Section 5 (Roadmap) — Pick tasks from here if backlog exists
- Section 6 (Creative Freedom) — Ideas for new pages if roadmap is empty
Step 3: Generate with Stitch
Use the Stitch MCP tools to generate the page:
- Discover namespace: Run
to find the Stitch MCP prefixlist_tools - Get or create project:
- If
exists, use the.stitch/metadata.json
from itprojectId - Otherwise, call
, then call[prefix]:create_project
to retrieve full project details, and save them to[prefix]:get_project
(see schema below).stitch/metadata.json - After generating each screen, call
again and update the[prefix]:get_project
map inscreens
with each screen's full metadata (id, sourceScreen, dimensions, canvas position).stitch/metadata.json
- If
- Generate screen: Call
with:[prefix]:generate_screen_from_text
: The project IDprojectId
: The full prompt from the baton (including design system block)prompt
:deviceType
(or as specified)DESKTOP
- Retrieve assets: Before downloading, check if
and.stitch/designs/{page}.html
already exist:.stitch/designs/{page}.png- If files exist: Ask the user whether to refresh the designs from the Stitch project or reuse the existing local files. Only re-download if the user confirms.
- If files do not exist: Proceed with download:
— Download and save ashtmlCode.downloadUrl.stitch/designs/{page}.html
— Appendscreenshot.downloadUrl
to the URL before downloading, where=w{width}
is the{width}
value from the screen metadata (Google CDN serves low-res thumbnails by default). Save aswidth.stitch/designs/{page}.png
Step 4: Integrate into Site
- Move generated HTML from
to.stitch/designs/{page}.htmlsite/public/{page}.html - Fix any asset paths to be relative to the public folder
- Update navigation:
- Find existing placeholder links (e.g.,
) and wire them to the new pagehref="#" - Add the new page to the global navigation if appropriate
- Find existing placeholder links (e.g.,
- Ensure consistent headers/footers across all pages
Step 4.5: Visual Verification (Optional)
If the Chrome DevTools MCP Server is available, verify the generated page:
- Check availability: Run
to see iflist_tools
tools are presentchrome* - Start dev server: Use Bash to start a local server (e.g.,
)npx serve site/public - Navigate to page: Call
to open[chrome_prefix]:navigatehttp://localhost:3000/{page}.html - Capture screenshot: Call
to capture the rendered page[chrome_prefix]:screenshot - Visual comparison: Compare against the Stitch screenshot (
) for fidelity.stitch/designs/{page}.png - Stop server: Terminate the dev server process
Note: This step is optional. If Chrome DevTools MCP is not installed, skip to Step 5.
Step 5: Update Site Documentation
Modify
.stitch/SITE.md:
- Add the new page to Section 4 (Sitemap) with
[x] - Remove any idea you consumed from Section 6 (Creative Freedom)
- Update Section 5 (Roadmap) if you completed a backlog item
Step 6: Prepare the Next Baton (Critical)
You MUST update
before completing. This keeps the loop alive..stitch/next-prompt.md
- Decide the next page:
- Check
Section 5 (Roadmap) for pending items.stitch/SITE.md - If empty, pick from Section 6 (Creative Freedom)
- Or invent something new that fits the site vision
- Check
- Write the baton with proper YAML frontmatter:
--- page: achievements --- A competitive achievements page showing developer badges and milestones. **DESIGN SYSTEM (REQUIRED):** [Copy the entire design system block from .stitch/DESIGN.md] **Page Structure:** 1. Header with title and navigation 2. Badge grid showing unlocked/locked states 3. Progress bars for milestone tracking
File Structure Reference
project/ ├── .stitch/ │ ├── metadata.json # Stitch project & screen IDs (persist this!) │ ├── DESIGN.md # Visual design system (from design-md skill) │ ├── SITE.md # Site vision, sitemap, roadmap │ ├── next-prompt.md # The baton — current task │ └── designs/ # Staging area for Stitch output │ ├── {page}.html │ └── {page}.png └── site/public/ # Production pages ├── index.html └── {page}.html
.stitch/metadata.json
Schema
.stitch/metadata.jsonThis file persists all Stitch identifiers so future iterations can reference them for edits or variants. Populate it by calling
[prefix]:get_project after creating a project or generating screens.
{ "name": "projects/6139132077804554844", "projectId": "6139132077804554844", "title": "My App", "visibility": "PRIVATE", "createTime": "2026-03-04T23:11:25.514932Z", "updateTime": "2026-03-04T23:34:40.400007Z", "projectType": "PROJECT_DESIGN", "origin": "STITCH", "deviceType": "MOBILE", "designTheme": { "colorMode": "DARK", "font": "INTER", "roundness": "ROUND_EIGHT", "customColor": "#40baf7", "saturation": 3 }, "screens": { "index": { "id": "d7237c7d78f44befa4f60afb17c818c1", "sourceScreen": "projects/6139132077804554844/screens/d7237c7d78f44befa4f60afb17c818c1", "x": 0, "y": 0, "width": 390, "height": 1249 }, "about": { "id": "bf6a3fe5c75348e58cf21fc7a9ddeafb", "sourceScreen": "projects/6139132077804554844/screens/bf6a3fe5c75348e58cf21fc7a9ddeafb", "x": 549, "y": 0, "width": 390, "height": 1159 } }, "metadata": { "userRole": "OWNER" } }
| Field | Description |
|---|---|
| Full resource name () |
| Stitch project ID (from or ) |
| Human-readable project title |
| Design system tokens: color mode, font, roundness, custom color, saturation |
| Target device: , , |
| Map of page name → screen object. Each screen includes , (resource path for MCP calls), canvas position (, ), and dimensions (, ) |
| User's role on the project (, , ) |
Orchestration Options
The loop can be driven by different orchestration layers:
| Method | How it works |
|---|---|
| CI/CD | GitHub Actions triggers on changes |
| Human-in-loop | Developer reviews each iteration before continuing |
| Agent chains | One agent dispatches to another (e.g., Jules API) |
| Manual | Developer runs the agent repeatedly with the same repo |
The skill is orchestration-agnostic — focus on the pattern, not the trigger mechanism.
Design System Integration
This skill works best with the
design-md skill:
- First time setup: Generate
using the.stitch/DESIGN.md
skill from an existing Stitch screendesign-md - Every iteration: Copy Section 6 ("Design System Notes for Stitch Generation") into your baton prompt
- Consistency: All generated pages will share the same visual language
Common Pitfalls
- ❌ Forgetting to update
(breaks the loop).stitch/next-prompt.md - ❌ Recreating a page that already exists in the sitemap
- ❌ Not including the design system block from
in the prompt.stitch/DESIGN.md - ❌ Leaving placeholder links (
) instead of wiring real navigationhref="#" - ❌ Forgetting to persist
after creating a new project.stitch/metadata.json
Troubleshooting
| Issue | Solution |
|---|---|
| Stitch generation fails | Check that the prompt includes the design system block |
| Inconsistent styles | Ensure is up-to-date and copied correctly |
| Loop stalls | Verify was updated with valid frontmatter |
| Navigation broken | Check all internal links use correct relative paths |
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.