Astro
Astro Migration & Best-Practice Audit with state persistence. Use when: "astro-audit", "astro upgrade", "astro migration", "astro check", "astro version".From its SKILL.md
npx -y skills add claude-hangar/claude-hangar --skill astroAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
12.0 KB, ~3.3k tokens by cl100k_base, as published. Nobody here has run it
/astro-audit — Astro Migration & Best-Practice Audit
Version-neutral skill for all Astro projects. Automatically detects the installed version, compares with the latest available, and loads the matching checklist.
Complementary to /audit: This skill checks Astro-specific version and migration topics. The generic /audit checks code quality, performance, security, a11y, etc.
Modes
Detect the mode from user input:
- start -> Mode 1 (Scan project, load checklist)
- continue -> Mode 2 (Process next areas/fixes)
- status -> Mode 3 (Show progress)
- refresh -> Mode 4 (Check for new Astro releases)
- auto -> Mode 5 (Fully autonomous run)
Mode 1: /astro-audit start — Scan Project
Auto-Detection (in this order)
- package.json -> Astro version, adapter, integrations, all
@astrojs/*packages - astro.config.mjs/ts -> experimental flags, config structure, output mode
- Node version ->
node --version(Astro 6 requires Node 22) - Dockerfile -> Node version in base image, build commands
- src/content/config.ts -> Content Collections, loader type (Legacy vs Content Layer)
- tsconfig.json -> TypeScript configuration, strict mode
Version Logic
After detection:
- Read installed version from
package.json(e.g.,5.17.2,6.0.0-beta.11) - Check latest version:
npm view astro versions --json(show last 5) - Select matching checklist:
| Installed | Latest | Checklist | Scenario |
|---|---|---|---|
| 5.x | 5.x | versions/v5-stable/ | Up to date, check best practices |
| 5.x | 6.x-beta | versions/v6-beta/ | Migration to v6 Beta (only if user wants) |
| 5.x | 6.x (stable) | versions/v6-stable/ | Migration to v6 Stable |
| 6.x-beta | 6.x-beta | versions/v6-beta/ | Beta verification, check for newer betas |
| 6.x-beta | 6.x (stable) | versions/v6-stable/ | Upgrade Beta -> Stable |
| 6.x | 6.x | versions/v6-stable/ | Up to date, check best practices |
Astro 6 has been stable since March 10, 2026 (latest: 6.1.5). For migration 5->6 use the v6-beta/ checklist (74 checks, all breaking changes). For best practices on 6.x use the v6-stable/ checklist (31 checks).
- Ask user: "Check current version OR migrate to new version?"
- Load checklist and compare with project scan
- Document findings with
MIG-NNIDs + severity
Flow After Detection
- Display result table: Version, Node, Adapter, Collections, Flags
- Load matching checklist (max 2 areas per session)
- Check each checkpoint against the project
- Save findings to
.astro-audit-state.json - Display summary + prioritized list
- Session end: "Start next session with
/astro-audit continue"
Mode 2: /astro-audit continue — Resume
- Read
.astro-audit-state.json - Generate smart recommendation:
IF open CRITICAL findings > 0: -> "Recommendation: Fix {N} CRITICAL findings first ({IDs})" IF open HIGH findings > 3: -> "Recommendation: Fix HIGH findings, then continue" ELSE IF areas open: -> "Recommendation: Next areas ({area names})" ELSE: -> "Recommendation: Fix remaining findings" - If areas open -> process next 2 areas
- If all areas done -> next 5 findings by priority
- Load fix templates (from
fix-templates.md) where applicable - Ask user: Follow recommendation? Choose different? Skip?
- Implement fixes -> verify -> update state
Mode 3: /astro-audit status — Progress
- Read
.astro-audit-state.json - Display table: Done/Open/Total per area + severity
- Next recommended action
Mode 4: /astro-audit refresh — Check New Releases
npm view astro versions --json-> latest version- If newer version than in state: context7 or WebSearch for release notes
- Show checklist delta:
Last checked: 6.0.0-beta.11 Current: 6.0.0-beta.15 New changes: 4 (2 Breaking, 2 Features) -> Checklist update recommended - Inform user + recommendation (update yes/no, breaking changes)
- Update
versions/*/changelog.mdif needed (date stamp at end) - When stable release detected -> automatically recommend
v6-stable/checklist
Mode 5: /astro-audit auto — Autonomous Run
Fully autonomous Astro audit without prompts.
Flow
- Auto-detection as in
start - All areas processed (no 2-area limitation)
- Document findings with fix templates from
fix-templates.md - Context management: When context runs low:
- Write state immediately
- Create task in
.tasks.jsonwith handoff note - "New session with
/astro-audit continue"
- At end: Summary with prioritized fix list
Severity Order of Areas in Auto Mode
CRITICAL areas first:
ENV -> CFG -> CODE -> COLL -> ADPT -> VITE -> ZOD -> DCI -> MDLK -> IMG -> CSP -> TOOL -> FONT -> NEW
Check Priorities + Completeness Tracking
See
_shared/audit-patterns.md(MUST/SHOULD/CAN markers, completeness counting, layer status standard). Area with <100% MUST checks cannot be marked asdone.
State File .astro-audit-state.json
Save in project root (gitignored).
{
"version": 2,
"created": "YYYY-MM-DD",
"lastUpdated": "YYYY-MM-DD",
"project": "Project Name",
"installedAstroVersion": "5.17.2",
"targetAstroVersion": "6.0.0-beta.11",
"checklist": "v6-beta",
"nodeVersion": "22.12.0",
"adapter": "@astrojs/node",
"output": "server",
"areas": {
"ENV": {
"status": "pending",
"session": null,
"findingsCount": 0,
"completeness": null,
"layers": { "source": "pending", "runtime": "pending" }
},
"CFG": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"CODE": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"COLL": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"ADPT": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"MDLK": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"IMG": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"TOOL": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"VITE": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"ZOD": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"NEW": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"CSP": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"FONT": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null },
"DCI": { "status": "pending", "session": null, "findingsCount": 0, "completeness": null, "layers": null }
},
"summary": {
"total": 0,
"critical": 0,
"high": 0,
"medium": 0,
"low": 0,
"fixed": 0,
"skipped": 0
},
"findings": [
{
"id": "MIG-01",
"area": "ENV",
"severity": "CRITICAL",
"title": "Short title",
"description": "What is the problem",
"location": "File or area",
"status": "open|fixed|skipped",
"fixedIn": "Session N | null",
"notes": ""
}
],
"history": [
{
"date": "YYYY-MM-DD",
"session": 1,
"areas": ["ENV", "CFG"],
"findingsAdded": 3,
"findingsFixed": 0
}
]
}
State Migration v1 -> v2
When a .astro-audit-state.json with "version": 1 is found:
- Migrate
areasfrom string enum to object:"done"->{ "status": "done", "session": null, "findingsCount": 0, "completeness": null, "layers": null }"in-progress"->{ "status": "in-progress", ... }"pending"->{ "status": "pending", ... }"skipped"->{ "status": "skipped", ... }- Count
findingsCountfromfindings[]array (per area)
- Add
history: []array - Add
"notes": ""to each finding (if not present) - Set
versionto2 - Inform user: "State migrated from v1 to v2 (completeness tracking, history, layer status)."
Rules
- Context protection: Max 2 areas OR 5 fixes per session. At limit: save state, recommend
/astro-audit continue. - Write state immediately: Update
.astro-audit-state.jsonafter every area and every fix. - No auto-fix: Document findings, then ask user whether to fix.
- Read version files: Only read files from the relevant
versions/directory. Don't load all. - Severity rules:
- CRITICAL: Build breaks, runtime errors, security issues
- HIGH: Deprecation warning, functional limitation
- MEDIUM: Best practice deviation, performance
- LOW: Optional, nice-to-have, new features
- Finding prefix: Always
MIG-NN(Migration), not CODE/SEC like /audit. - Fix templates: Load matching template from
fix-templates.mdfor findings. - npm view: Run
npm view astrobefore any version statement. Never from memory. - context7: Use for Astro documentation when available.
Session Strategy
| Session | Content | Context Protection |
|---|---|---|
| 1 | start -> Detection + 2 areas (CRITICAL first) | Max 2 areas |
| 2 | continue -> next 2 areas | Max 2 areas |
| 3+ | continue -> Fixes (max 5/session) | Fix -> Test -> Next |
Smart Next Steps
After completing the Astro audit, recommend relevant follow-up skills:
| Condition | Recommendation | Reason |
|---|---|---|
| No .audit-state.json present | /audit start | Check website quality (SEO, a11y, performance, privacy) |
| No .project-audit-state.json present | /project-audit start | Check code/CI/CD quality |
| Migration findings fixed | /lighthouse-quick | Verify performance after migration |
| UI/Design work needed | /design-system | Curated palettes, fonts, styles, UX rules (CSV databases) |
| Frontend polish desired | /polish scan | Rate 6 design dimensions, then improve |
| All areas done | /lesson-learned session | Extract learnings from migration |
Design Integration: When building or modifying UI components in Astro projects, always consult /design-system first. It provides industry-matched palettes, font pairings, UX rules, and wow effects from curated CSV databases. The design-system is stack-agnostic — it provides design decisions, Astro provides the code patterns.
Output after last area: "Next steps:" + 2-3 most relevant recommendations.
Version Directory Structure
Each directory under versions/ contains:
| File | Content |
|---|---|
checklist.md | Checkpoints with IDs, severity, description |
changelog.md | Release notes (only for Beta/Major) |
reference-links.md | Official docs links, PR links |
Currently available:
versions/v5-stable/— Best practices for Astro 5.xversions/v6-beta/— Migration Astro 5->6 (74 checkpoints, definitive migration guide)versions/v6-stable/— Best practices for Astro 6.x Stable (28 checkpoints)versions/v7/— (still empty, for future use)
Additionally:
fix-templates.md— Quick-fix templates for common Astro findings
What ships with it: 13 files
64.9 KB alongside SKILL.md
lenses/
- content-collections.md1.5 KB
- README.md1.3 KB
- view-transitions.md1.3 KB
versions/
- v5-stable/checklist.md4.0 KB
- v5-stable/reference-links.md1.3 KB
- v6-beta/changelog.md16.7 KB
- v6-beta/checklist.md14.0 KB
- v6-beta/reference-links.md5.4 KB
- v6-stable/checklist.md6.5 KB
- v6-stable/reference-links.md1.8 KB
- CLAUDE.md.snippet1.8 KB
- fix-templates.md8.2 KB
- README.md1.3 KB