# ASTRO.md
## STACK
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
---
## VERSION_POLICY
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
---
## PROJECT_STRUCTURE
```text
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
---
## FILE_PLACEMENT
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
---
## ROUTING_RULES
USE_FILE_BASED_ROUTING
ROUTES_BELONG_IN_SRC_PAGES
DO_NOT_CREATE_CUSTOM_ROUTING_SYSTEM
FOLLOW_ASTRO_ROUTING_CONVENTIONS
---
## COMPONENT_RULES
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_RULES
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
---
## DATA_RULES
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
---
## IMAGE_RULES
PROJECT_IMAGES_BELONG_IN_SRC_IMAGES
PUBLIC_ASSETS_BELONG_IN_PUBLIC
USE_ASTRO_IMAGE_OPTIMIZATION_WHEN_AVAILABLE
DO_NOT_STORE_IMAGES_IN_COMPONENT_DIRECTORIES
---
## STYLING_RULES
USE_PROJECT_DEFINED_STYLING_SOLUTION
IF_TAILWIND_IS_INSTALLED
USE_TAILWINDCSS_ONLY
DO_NOT_MIX_MULTIPLE_STYLING_APPROACHES
PREFER_GLOBAL_STYLES_IN_SRC_STYLES
---
## PERFORMANCE_RULES
PREFER_STATIC_GENERATION
MINIMIZE_CLIENT_SIDE_JAVASCRIPT
MINIMIZE_HYDRATION
LOAD_ONLY_REQUIRED_CLIENT_CODE
AVOID_UNNECESSARY_REACT_COMPONENTS
---
## ISLAND_RULES
USE_ISLANDS_ARCHITECTURE
DEFAULT_TO_SERVER_RENDERED_CONTENT
HYDRATE_ONLY_WHEN_NECESSARY
DO_NOT_HYDRATE_STATIC_CONTENT
USE_CLIENT_DIRECTIVES_ONLY_WHEN_REQUIRED
---
## NAMING_RULES
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
---
## ROOT_DIRECTORY_POLICY
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
---
## GENERATION_POLICY
BEFORE_CREATING_ANY_FILE
1. CHECK_EXISTING_STRUCTURE
2. CHECK_EXISTING_COMPONENTS
3. CHECK_EXISTING_CONTENT
4. CHECK_EXISTING_DATA
5. CHECK_EXISTING_PATTERNS
6. 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
---
## ASTRO_PRINCIPLES
STATIC_FIRST
CONTENT_FIRST
SERVER_FIRST
USE_ISLANDS_ARCHITECTURE
MINIMIZE_JAVASCRIPT
HYDRATE_ONLY_WHEN_NECESSARY Document
ASTRO.md
ReplWorks에서 제공하는 ASTRO.md framework 파일