smithery.ai

astro-frontend-ui

Build the Astro frontend with Tailwind CSS v4 via the Vite plugin, a WPGraphQL data layer, and React islands (shadcn/ui) only where needed. Use when implementing or fixing frontend files under frontend/ for this WordPress headless repo.

First seen Mar 20, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,340 B
  • docs SUMMARY.md 261 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Astro Frontend UI

Overview

Implement a fast Astro public site that consumes WordPress via /graphql, keeps client JS minimal, and follows the repo’s UI style requirements. Focus on file outputs under frontend/ and a small GraphQL client.

Workflow

  1. Inspect existing frontend/ files for Astro + Tailwind v4 setup and adjust only within that subtree.
  2. Ensure frontend/Dockerfile, package.json, and astro.config.mjs align with Tailwind v4 via Vite and dev server on 0.0.0.0:4321.
  3. Implement src/lib/cms.ts with endpoint resolution and two GraphQL queries.
  4. Build pages (/, /blog, /blog/[slug]) in Astro with card-based UI and graceful empty states.
  5. Use React islands only for interactive widgets, and keep everything else server-rendered.

Non-Negotiables

  • Use Tailwind CSS v4 via the Vite plugin; do not use deprecated Astro Tailwind integration.
  • Keep JS minimal and limit React to islands only.
  • UI style: clean, card-based, generous spacing, 2xl radii, subtle shadows.

Default Stack

  • Use react + react-dom only for islands.
  • Use shadcn/ui components (Button/Card/Dialog/Dropdown) when interaction is needed.
  • Use lucide-react icons as needed.
  • Use sonner for toasts if useful.
  • Use graphql-request or an equivalent tiny GraphQL client.

Required Outputs

  • Create or update under frontend/:

- Dockerfile - package.json - astro.config.mjs - src/lib/cms.ts - src/pages/index.astro - src/pages/blog/index.astro - src/pages/blog/[slug].astro - src/components/* (Header, Footer, PostCard, Hero, FeatureGrid, CTA)

Data Layer

  • CMS endpoint is ${PUBLICCMSURL || ASTROPUBLICCMS_URL}/graphql.
  • Provide queries:

- list posts: title, slug, excerpt, date - post by slug: title, content, date

  • Handle empty states for no posts.

Acceptance Checklist

  • http://localhost:8080/ renders home.
  • /blog renders list or empty state.
  • /blog/<slug> renders content when posts exist.
  • No unnecessary client JS outside islands.