REQUIRED
- Astro 6.x
- JavaScript
OPTIONAL
- TailwindCSS 4.x
- React 19.x
- MDX
USE_DECLARED_STACK_ONLY
DO_NOT_INTRODUCE_NEW_LIBRARIES_UNLESS_EXPLICITLY_REQUESTED
PACKAGE_JSON_IS_SOURCE_OF_TRUTH
FRAMEWORK_MD_IS_FALLBACK
USE_DECLARED_VERSIONS_ONLY
DO_NOT_ASSUME_LIBRARY_VERSIONS
DO_NOT_ASSUME_ASTRO_VERSION
DO_NOT_GENERATE_CODE_FOR_OTHER_VERSIONS
WHEN_VERSION_CONFLICT_EXISTS
FOLLOW_PACKAGE_JSON
src/
├── components/
├── layouts/
├── pages/
├── content/
├── images/
├── data/
├── utils/
└── styles/
public/
astro.config.mjs
content.config.ts
THIS_STRUCTURE_IS_AUTHORITATIVE
DO_NOT_CREATE_NEW_TOP_LEVEL_DIRECTORIES
PREFER_EXISTING_DIRECTORIES_OVER_NEW_ONES
FOLLOW_EXISTING_STRUCTURE_BEFORE_CREATING_NEW_STRUCTURE
pages -> src/pages
layouts -> src/layouts
components -> src/components
content -> src/content
images -> src/images
data -> src/data
utilities -> src/utils
styles -> src/styles
static_assets -> public
content_configuration -> content.config.ts
astro_configuration -> astro.config.mjs
DO_NOT_CREATE_COMPONENTS_OUTSIDE_DEFINED_LOCATIONS
USE_FILE_BASED_ROUTING
ROUTES_BELONG_IN_SRC_PAGES
DO_NOT_CREATE_CUSTOM_ROUTING_SYSTEM
FOLLOW_ASTRO_ROUTING_CONVENTIONS
USE_ASTRO_COMPONENTS_BY_DEFAULT
PREFER_ASTRO_OVER_REACT
USE_REACT_ONLY_WHEN_REQUIRED
ONE_COMPONENT_PER_FILE
DO_NOT_EXPORT_MULTIPLE_COMPONENTS_FROM_SAME_FILE
PREFER_SMALL_COMPOSABLE_COMPONENTS
CONTENT_BELONGS_IN_SRC_CONTENT
USE_CONTENT_COLLECTIONS
CONTENT_CONFIG_IS_SOURCE_OF_TRUTH
DO_NOT_STORE_CONTENT_IN_COMPONENTS
DO_NOT_STORE_LARGE_CONTENT_BLOCKS_IN_PAGES
SEPARATE_CONTENT_FROM_PRESENTATION
STATIC_DATA_BELONGS_IN_SRC_DATA
NAVIGATION_DATA_BELONGS_IN_SRC_DATA
FAQ_DATA_BELONGS_IN_SRC_DATA
CONFIGURATION_DATA_BELONGS_IN_SRC_DATA
DO_NOT_STORE_DATA_IN_COMPONENTS
SEPARATE_DATA_FROM_PRESENTATION
PROJECT_IMAGES_BELONG_IN_SRC_IMAGES
PUBLIC_ASSETS_BELONG_IN_PUBLIC
USE_ASTRO_IMAGE_OPTIMIZATION_WHEN_AVAILABLE
DO_NOT_STORE_IMAGES_IN_COMPONENT_DIRECTORIES
USE_PROJECT_DEFINED_STYLING_SOLUTION
IF_TAILWIND_IS_INSTALLED
USE_TAILWINDCSS_ONLY
DO_NOT_MIX_MULTIPLE_STYLING_APPROACHES
PREFER_GLOBAL_STYLES_IN_SRC_STYLES
PREFER_STATIC_GENERATION
MINIMIZE_CLIENT_SIDE_JAVASCRIPT
MINIMIZE_HYDRATION
LOAD_ONLY_REQUIRED_CLIENT_CODE
AVOID_UNNECESSARY_REACT_COMPONENTS
USE_ISLANDS_ARCHITECTURE
DEFAULT_TO_SERVER_RENDERED_CONTENT
HYDRATE_ONLY_WHEN_NECESSARY
DO_NOT_HYDRATE_STATIC_CONTENT
USE_CLIENT_DIRECTIVES_ONLY_WHEN_REQUIRED
COMPONENT_FILES -> PascalCase
LAYOUT_FILES -> PascalCase
UTILITY_FILES -> camelCase
DATA_FILES -> camelCase
CONTENT_FILES -> kebab-case
IMAGE_FILES -> kebab-case
EXAMPLES
-
Header.astro
-
HeroSection.astro
-
PostLayout.astro
-
navigationData.js
-
faqData.js
-
getting-started.md
-
first-blog-post.md
DO_NOT_CREATE_FILES_IN_REPOSITORY_ROOT
UNLESS_REQUIRED_BY_ASTRO
ALLOWED_ROOT_FILES
- astro.config.mjs
- content.config.ts
- package.json
- README.md
- tsconfig.json
BEFORE_CREATING_ANY_FILE
- CHECK_EXISTING_STRUCTURE
- CHECK_EXISTING_COMPONENTS
- CHECK_EXISTING_CONTENT
- CHECK_EXISTING_DATA
- CHECK_EXISTING_PATTERNS
- REUSE_BEFORE_CREATING
PREFER_MODIFICATION_OVER_NEW_FILES
PREFER_EXISTING_PATTERNS_OVER_NEW_PATTERNS
DO_NOT_INVENT_NEW_ARCHITECTURE
DO_NOT_DUPLICATE_EXISTING_FUNCTIONALITY
WHEN_UNCERTAIN
FOLLOW_EXISTING_CODEBASE
PACKAGE_JSON_OVERRIDES_VERSION_ASSUMPTIONS
DO_NOT_GUESS
STATIC_FIRST
CONTENT_FIRST
SERVER_FIRST
USE_ISLANDS_ARCHITECTURE
MINIMIZE_JAVASCRIPT
HYDRATE_ONLY_WHEN_NECESSARY