Guide for Claude Code (claude.ai/code) when working with code in this repository.
Caesiumy's personal blog website built with Astro and AstroPaper template. This is the production-ready blog at https://caesiumy.github.io/
- Template: AstroPaper v5.5.0
- Framework: Astro v5.12.0 (SSG)
- Styling: TailwindCSS v4.1.11
- Type Checking: TypeScript v5.8.3
- Search: Pagefind (static search)
- ✅ Responsive design (mobile ~ desktop)
- ✅ Accessibility support (VoiceOver, TalkBack tested)
- ✅ SEO optimized
- ✅ Light & dark mode
- ✅ Fuzzy search functionality
- ✅ Draft posts & pagination
- ✅ Sitemap & RSS feed
- ✅ Dynamic OG image generation
pnpm install # Install dependencies
pnpm dev # Dev server (localhost:4321)
pnpm build # Production build
pnpm preview # Build preview
pnpm format # Code formatting (Prettier)
pnpm lint # ESLint linting
pnpm sync # Astro type syncCaesiumY.github.io/
├── contents/ # Content files
│ └── blog/ # Blog posts (Markdown)
├── src/
│ ├── components/ # Reusable components
│ ├── layouts/ # Page layouts
│ ├── pages/ # File-based routing
│ ├── styles/ # Global CSS
│ ├── utils/ # Utility functions
│ ├── config.ts # Site configuration
│ └── content.config.ts # Content schema definitions
├── public/ # Static assets
├── dist/ # Build output
├── node_modules/ # Dependencies
├── package.json # Project dependencies
├── tsconfig.json # TypeScript configuration
├── astro.config.ts # Astro configuration
├── CLAUDE.md # This file
└── README.md # Project documentation
- Location:
contents/blog/ - Format: Markdown/MDX
- Frontmatter Schema:
title: "Post title"
description: "Post description"
pubDate: 2025-01-01
updatedDate: 2025-01-02 # Optional
heroImage: "/hero.jpg" # Optional
draft: false # Default: false
tags: ["tag1", "tag2"] # Optional⚠️ IMPORTANT: Blog post images must be located in the same directory as the blog post markdown file- Structure:
contents/blog/[post-folder]/[image-file] - Example:
contents/blog/ └── my-blog-post/ ├── index.md # Blog post content ├── hero-image.png # Post images └── diagram.jpg # Additional images - Usage in Markdown: Use relative paths
 - ❌ DO NOT: Place blog images in
public/folder - this bypasses Astro's image optimization - ✅ Benefits: Automatic WebP conversion, srcset generation, compression, and caching
- Images:
public/assets/orsrc/assets/images/(for site-wide assets only) - Icons:
src/assets/icons/ - Favicon:
public/favicon.svg
.claude/skills/ 디렉토리에 정의된 스킬들입니다. /스킬이름으로 호출합니다.
| 스킬 | 용도 | 에이전트 수 |
|---|---|---|
/translate-writer |
영어 → 한국어 번역 파이프라인 | 6개 |
/polish |
개별 문장 다듬기 (점수 + 옵션 제시) | 1개 |
/polish-file |
파일 전체 문장 품질 분석 + 순차 개선 | 1개 |
/blog-writer |
한국어 블로그 글 작성 | 4개 |
/resume-specialist |
이력서 작성/검토/ATS 최적화 | 1개 |
- 에이전트 정의:
.claude/agents/ - 번역투 28개 패턴:
.claude/skills/translate-writer/references/translation-patterns.md - 스타일 가이드/용어집:
.claude/skills/translate-writer/data/
- Uses TailwindCSS v4
- Typography plugin enabled
- Dark mode support (
dark:prefix)
- Prefer Astro components (.astro)
- TypeScript support
- Accessibility considerations (ARIA, semantic HTML)
- Automatic sitemap generation
- RSS feed support
- Dynamic OG image generation
- Meta tag optimization
- Astro Island Architecture
- Image optimization (Sharp)
- Code splitting
- Lighthouse score: 100 target
astro check- Type checkingastro build- Production buildpagefind- Search index generation- Static files generation (
dist/)
PUBLIC_GOOGLE_SITE_VERIFICATION=your-google-site-verification-value- ESLint + Prettier usage
- TypeScript strict mode
- Conventional Commits compliance
⚠️ IMPORTANT: Do NOT disable ESLint rules or ignore files without explicit user permission- If ESLint errors occur, investigate and fix the root cause rather than bypassing the linter
- If ESLint disabling is absolutely necessary:
- Add a detailed comment explaining the reason for disabling
- Include the issue in the final response as a "Confirmation Required" item
- Example:
// eslint-disable-next-line rule-name -- Reason: [detailed explanation]
⚠️ IMPORTANT: Always verify work by building and checking thedist/folder, not just the development server- Build Verification Process:
- Run
pnpm buildto create production build - Check the generated files in
dist/folder - Verify that all changes are properly reflected in the static output
- Test critical paths and functionality in the built version
- Run
- Why Build Verification is Critical:
- Development server may not reflect all build-time optimizations
- Static site generation (SSG) behavior differs from development mode
- Image optimization, bundle splitting, and other build processes only occur during build
- Some Astro features and optimizations are build-time only
- Write reusable components
- Define Props types
- Follow accessibility guidelines
- SEO-friendly titles and descriptions
- Proper tag categorization
- Provide image alt text
- Use markdown image syntax (not HTML
<img>tags) for Astro optimization - Place images in same directory as markdown files for proper processing
- Keyboard navigation support
- Screen reader compatibility
- Sufficient color contrast
- ARIA labels provided
- Static search via Pagefind
- Fuzzy search support
- Real-time search results
- System preference detection
- Toggle button provided
- Settings stored in localStorage