astro-content
SkillAI & modelsUse when managing structured content, blog posts, or typed data collections in Astro via the Content Layer API (content.config.ts).
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the astro-content skill
What this skill tells your AI
The instructions your AI receives, as published by fusengine/agents in plugins/astro-expert/skills/astro-content/SKILL.md and read by ahel’s review.
Also covers MDX authoring with Remark/Rehype plugins and the astro sync workflow for generating collection types. Does not cover form submission via Astro Actions (astro-actions) or SEO metadata generation from content (astro-seo) — those are handled by their own skills.
Astro Content Layer Expert
Type-safe content management with loaders, Zod schemas, and the unified Content Layer API.
Agent Workflow (MANDATORY)
Before ANY implementation, spawn 3 agents in parallel, one Agent call each with a name:
- fuse-ai-pilot:explore-codebase - Check existing collections, loaders, and content structure
- fuse-ai-pilot:research-expert - Verify latest Content Layer docs via Context7/Exa
- mcp__context7__query-docs - Get loader and schema examples
After implementation, run fuse-ai-pilot:sniper for validation.
Overview
When to Use
- Managing blog posts, docs, or product descriptions in Markdown/MDX
- Fetching content from a CMS, API, or database with type safety
- Needing TypeScript autocomplete for frontmatter fields
- Migrating from Astro 4 legacy content collections
Why Content Layer API
| Feature | Benefit |
|---|---|
src/content.config.ts | Single config file at project root |
| Built-in loaders | glob() and file() for local files |
| Custom loaders | Fetch from any external source |
| Zod 4 schemas | Full TypeScript type safety |
astro sync | Generates types from collections |
Core Concepts
Config File Location
The config file moved from src/content/config.ts to src/content.config.ts in Astro 5+.
Collection Types
| Loader | Use Case |
|---|---|
glob() | Multiple files in a directory (MD, MDX, JSON, YAML) |
file() | Single JSON/YAML file with multiple entries |
| Custom | Remote API, database, or any async data source |
Key APIs
| API | Description |
|---|---|
getCollection(name) | Fetch all entries in a collection |
getEntry(name, id) | Fetch a single entry by ID |
render(entry) | Render a content entry to HTML + headings |
defineCollection() | Define a collection with loader and schema |
Reference Guide
| Need | Reference |
|---|---|
| Overview & concepts | overview.md |
| Config file setup | config.md |
| Glob, file, custom loaders | loaders.md |
| getCollection / getEntry | querying.md |
| render() + headings | rendering.md |
| MDX + Remark/Rehype | mdx.md |
| Blog collection example | templates/blog-collection.md |
| Custom remote loader | templates/custom-loader.md |
Best Practices
- Always define schemas — Never skip Zod validation
- Run
astro sync— After changingcontent.config.ts - Use
glob()for local files — Supports MD, MDX, JSON, YAML, TOML - Custom loaders for remote data — CMS, REST API, GraphQL
render()for MDX — ReturnsContentcomponent + headings array
Signals
- GitHub stars
- 25
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
astro-content- Source
- github.com/fusengine/agents