static-site-generation
Framework evaluation criteria and deployment patterns for static site generators with GitHub Pages. Use when choosing SSG frameworks, configuring builds, or setting up GitHub Pages deployment.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install wlfmnstr-agentic-knowledge-base-static-site-generation
Repository
Skill path: .claude/skills/static-site-generation
Framework evaluation criteria and deployment patterns for static site generators with GitHub Pages. Use when choosing SSG frameworks, configuring builds, or setting up GitHub Pages deployment.
Open repositoryBest for
Primary workflow: Analyze Data & AI.
Technical facets: Full Stack, DevOps, Data / AI.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: wlfmnstr.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install static-site-generation into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/wlfmnstr/agentic-knowledge-base before adding static-site-generation to shared team environments
- Use static-site-generation for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: "static-site-generation"
description: "Framework evaluation criteria and deployment patterns for static site generators with GitHub Pages. Use when choosing SSG frameworks, configuring builds, or setting up GitHub Pages deployment."
---
# Static Site Generation
## Framework Evaluation Criteria
When evaluating SSG frameworks, prioritize:
1. **TypeScript support**: First-class, not bolted-on
2. **MDX integration**: Built-in or official plugin
3. **GitHub Pages compatibility**: Base path support, static output
4. **Content collections**: Type-safe content with schema validation
5. **Build performance**: Fast rebuilds for iteration
6. **DX**: Good error messages, debugging tools
## Framework Comparison for Knowledge Base
**Astro** (Recommended for content-first sites)
- Pros: Best MDX support, fast builds, content collections, multi-framework
- Cons: Newer ecosystem, fewer community plugins
- Best for: Documentation, knowledge bases, content-heavy sites
**Next.js with Static Export**
- Pros: Huge ecosystem, familiar to React devs, mature tooling
- Cons: Overkill for simple sites, larger bundles, requires explicit static config
- Best for: Apps needing both static and dynamic capabilities
**VitePress**
- Pros: Extremely fast, excellent docs focus, simple
- Cons: Vue-specific, less flexible for complex needs
- Best for: Pure documentation sites with minimal custom needs
**Avoid**: Gatsby (complex, slow builds, declining momentum)
## GitHub Pages Configuration
### Critical Settings
**Base Path for Subpath Deployment:**
```javascript
// Required if deploying to github.io/repo-name/
export default defineConfig({
site: 'https://username.github.io',
base: '/repo-name/', // Must include trailing slash
});
```
**Output Directory:**
- Astro: `dist/` (default)
- Next.js: `out/` (with `output: 'export'`)
- VitePress: `.vitepress/dist/`
**404 Handling:**
- Create `404.html` in output directory
- For SPAs: All routes → `404.html` (GitHub Pages limitation)
### Deployment Pattern
**Using GitHub Actions (Recommended):**
```yaml
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: ./dist
- uses: actions/deploy-pages@v4
```
**Repository Settings:**
- Pages → Source: "GitHub Actions"
- Branch deployment not needed with Actions
## Build Optimization Checklist
Before marking build complete:
- [ ] TypeScript strict mode enabled
- [ ] Base path configured correctly
- [ ] All routes generate static HTML
- [ ] Assets use correct paths (relative to base)
- [ ] 404 page exists
- [ ] Build succeeds with zero errors
- [ ] Deployment workflow tested
## Content Collections Pattern
Define schemas for type-safe content:
```typescript
import { z, defineCollection } from 'astro:content';
const docs = defineCollection({
schema: z.object({
title: z.string(),
description: z.string(),
date: z.date(),
draft: z.boolean().default(false),
}),
});
export const collections = { docs };
```
Benefits: Type safety, validation at build time, autocomplete in editor.
## Common Pitfalls
**Incorrect base path:**
- Symptom: Routes work locally, 404 in production
- Fix: Ensure `base` matches repo name, includes trailing slash
**Mixed path types:**
- Symptom: Some assets load, others don't
- Fix: Use framework's path helpers consistently
**Large bundle size:**
- Symptom: Slow initial load
- Fix: Enable code splitting, lazy load heavy components
**Missing TypeScript config:**
- Symptom: Type errors not caught during build
- Fix: Enable strict mode, include all source files
## Decision Template
When choosing framework, document in CLAUDE.md:
```markdown
## Framework Decision: [Name]
**Chosen:** [Framework]
**Rationale:** [Why - 2-3 key reasons]
**Alternatives considered:** [What else, why not]
**Trade-offs:** [What we gain vs. lose]
```
## Quick Start Validation
After framework initialization:
1. Run build → Should succeed with zero errors
2. Check output directory → HTML files present
3. Test locally → `npx serve dist` → All routes work
4. Deploy to GitHub Pages → All routes work with base path
5. Check console → No 404s on assets