Document

ASTRO.md

ReplWorks에서 제공하는 ASTRO.md framework 파일

# 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