Provides ready-to-copy templates for components, layouts, services, and interfaces that already follow these rules. This is a cross-cutting code-quality skill, not a feature skill — it doesn't teach Astro APIs themselves (see astro-7, astro-content, astro-i18n, astro-styling for that), only how to structure the code that uses them.
SOLID Astro — Modular Architecture
Agent Workflow (MANDATORY)
Before ANY implementation, spawn 3 agents in parallel, one Agent call each with a name:
- fuse-ai-pilot:explore-codebase - Analyze project structure, naming, and existing patterns
- fuse-ai-pilot:research-expert - Verify Astro 7 architecture best practices via Context7/Exa
- mcp__context7__query-docs - Check Astro component API and TypeScript integration
After implementation, run fuse-ai-pilot:sniper for validation.
Codebase Analysis (MANDATORY)
Before ANY implementation:
- Explore
src/ directory to understand existing architecture
- Read existing similar files to follow established naming and patterns
- Grep for similar function/component names before creating new ones
- Identify where interfaces, utilities, and shared logic live
DRY Enforcement (MANDATORY)
Before writing ANY new code:
- Grep for similar logic — function names, class patterns, component names
- Check
src/lib/ for existing utilities
- Check
src/components/ for existing UI components
- If logic appears in 2+ places → extract to
src/lib/
- If types appear in 2+ files → move to
src/interfaces/
Absolute Rules
- Files < 100 lines — split at 90
- All types in
src/interfaces/ — never in component files
- JSDoc mandatory on all exported functions
- No business logic in
src/pages/
See references/architecture.md, references/file-limits.md, references/solid-principles.md.
Reference Guide
Concepts
| Topic |
Reference |
When to Consult |
| SOLID principles |
solid-principles.md |
Architecture decisions |
| File limits |
file-limits.md |
When and how to split files |
| Interfaces |
interfaces.md |
TypeScript type organization |
| Architecture |
architecture.md |
Directory structure |
| DRY enforcement |
dry-enforcement.md |
Avoiding duplication |
| JSDoc |
jsdoc.md |
Documentation standards |
Templates
| Template |
When to Use |
| component.md |
Astro component with props + JSDoc |
| layout.md |
Layout component with slots |
| service.md |
Data fetching service function |
| interface.md |
TypeScript interface file |
Forbidden
- Files > 100 lines (split at 90)
- TypeScript interfaces in component
.astro files
- Business logic in
src/pages/ files
- Direct CMS/API calls in components (use
src/lib/ services)
- Copy-pasting logic instead of extracting shared function
- Missing JSDoc on exported functions, components, and types
any TypeScript type
1---2name: solid-astro3description: Use when applying SOLID principles to an Astro project — file-size limits, src/interfaces/ for types, JSDoc, modular structure, DRY.4---56<objective>7Enforces SOLID and DRY architecture on Astro projects: files under 100 lines (split at 90), all TypeScript types moved to `src/interfaces/` (never in component files), mandatory JSDoc on exported functions, no business logic in `src/pages/`, and mandatory grepping for existing logic/utilities in `src/lib/` and `src/components/` before writing new code.89Provides ready-to-copy templates for components, layouts, services, and interfaces that already follow these rules. This is a cross-cutting code-quality skill, not a feature skill — it doesn't teach Astro APIs themselves (see astro-7, astro-content, astro-i18n, astro-styling for that), only how to structure the code that uses them.10</objective>1112# SOLID Astro — Modular Architecture1314## Agent Workflow (MANDATORY)1516Before ANY implementation, spawn 3 agents in parallel, one `Agent` call each with a `name`:17181. **fuse-ai-pilot:explore-codebase** - Analyze project structure, naming, and existing patterns192. **fuse-ai-pilot:research-expert** - Verify Astro 7 architecture best practices via Context7/Exa203. **mcp__context7__query-docs** - Check Astro component API and TypeScript integration2122After implementation, run **fuse-ai-pilot:sniper** for validation.2324---2526## Codebase Analysis (MANDATORY)2728Before ANY implementation:29301. Explore `src/` directory to understand existing architecture312. Read existing similar files to follow established naming and patterns323. Grep for similar function/component names before creating new ones334. Identify where interfaces, utilities, and shared logic live3435---3637## DRY Enforcement (MANDATORY)3839Before writing ANY new code:40411. **Grep for similar logic** — function names, class patterns, component names422. Check `src/lib/` for existing utilities433. Check `src/components/` for existing UI components444. If logic appears in 2+ places → extract to `src/lib/`455. If types appear in 2+ files → move to `src/interfaces/`4647---4849## Absolute Rules5051- Files < 100 lines — split at 9052- All types in `src/interfaces/` — never in component files53- JSDoc mandatory on all exported functions54- No business logic in `src/pages/`5556See `references/architecture.md`, `references/file-limits.md`, `references/solid-principles.md`.5758---5960## Reference Guide6162### Concepts6364| Topic | Reference | When to Consult |65|-------|-----------|-----------------|66| SOLID principles | [solid-principles.md](references/solid-principles.md) | Architecture decisions |67| File limits | [file-limits.md](references/file-limits.md) | When and how to split files |68| Interfaces | [interfaces.md](references/interfaces.md) | TypeScript type organization |69| Architecture | [architecture.md](references/architecture.md) | Directory structure |70| DRY enforcement | [dry-enforcement.md](references/dry-enforcement.md) | Avoiding duplication |71| JSDoc | [jsdoc.md](references/jsdoc.md) | Documentation standards |7273### Templates7475| Template | When to Use |76|----------|-------------|77| [component.md](references/templates/component.md) | Astro component with props + JSDoc |78| [layout.md](references/templates/layout.md) | Layout component with slots |79| [service.md](references/templates/service.md) | Data fetching service function |80| [interface.md](references/templates/interface.md) | TypeScript interface file |8182---8384## Forbidden8586- Files > 100 lines (split at 90)87- TypeScript interfaces in component `.astro` files88- Business logic in `src/pages/` files89- Direct CMS/API calls in components (use `src/lib/` services)90- Copy-pasting logic instead of extracting shared function91- Missing JSDoc on exported functions, components, and types92- `any` TypeScript type