Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
f1bd906
docs(playbook): 리뷰를 GPT 5.6 Sol로 두고 머지는 사람이 한다
gitgitWi Sep 9, 2026
24b31ef
chore(oxc): oxfmt·oxlint를 프로젝트 설정과 함께 핀한다
gitgitWi Sep 9, 2026
19bce51
style: oxfmt로 기존 코드와 문서를 한 번에 맞춘다
gitgitWi Sep 9, 2026
b802842
docs(phase-1): 승인된 스캐폴드 페이즈를 시작한다
gitgitWi Sep 9, 2026
f59d117
docs(phase-1): 스캐폴드 PLAN을 실행 가능한 단계로 정제한다
gitgitWi Sep 9, 2026
42cc8a0
chore(phase-1): Next 잔재를 보관하고 yarn classic을 제거한다
gitgitWi Sep 9, 2026
f68e334
feat(phase-1): Astro static 스캐폴드와 StyleX Vite를 깐다
gitgitWi Sep 9, 2026
2445f13
feat(phase-1): StyleX 토큰과 UI 프리미티브를 계약으로 고정한다
gitgitWi Sep 9, 2026
550fcd3
feat(phase-1): Storybook을 로컬 게이트로 붙인다
gitgitWi Sep 9, 2026
ccf558e
feat(phase-1): Home과 Tags 껍데기를 목업으로 연다
gitgitWi Sep 9, 2026
21f54ef
ci(phase-1): Pages 배포를 Actions로 바꾼다
gitgitWi Sep 9, 2026
d2ef0be
chore(phase-1): oxfmt로 Phase 1 산출물을 정렬한다
gitgitWi Sep 9, 2026
206d09e
test(phase-1): vitest에 StyleX Vite 플러그인을 연결한다
gitgitWi Sep 9, 2026
008af08
docs(phase-1): LOG 체크리스트를 implementer 완료 상태로 갱신한다
gitgitWi Sep 9, 2026
ef1d274
docs(phase-1): PR-DRAFT #56을 LOG에 기록한다
gitgitWi Sep 9, 2026
358130d
docs(phase-1): Sol 리뷰 실패와 Grok 폴백 APPROVE를 기록한다
gitgitWi Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .cursor/agents/planner.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
name: planner
description: >-
Phase planner. Use before implementation to refine PLAN.md, and after
PR-DRAFT to review the still-draft PR against SPEC and code-style. No product code.
Phase planner. Use before implementation to refine PLAN.md. After
PR-DRAFT, review is the verifier (GPT 5.6 Sol), not this agent.
No product code. May edit PLAN.md and LOG.md only.
Use proactively when a phase PLAN needs executable steps.
May edit PLAN.md and LOG.md only — never product code.
model: inherit
Expand All @@ -14,7 +15,7 @@ When invoked:

1. Read `.tasks/ROADMAP.md`, the current phase `SPEC.md` + `PLAN.md`, `AGENTS.md`, `docs/conventions/code-style.md`, and `docs/conventions/prs.md`.
2. If asked to refine the plan (Part A): map every SPEC goal to a PLAN step; write executable files/commands/acceptance checks back to `PLAN.md` only. Reply `PLAN-READY <phase> <open questions|none>`.
3. If asked to review (Part B): review the **draft**. Do not ask for ready first. Do not trust the PR body. Check correctness, style §1–7, StyleX/Astro contracts, real gate output, leak-guard, and `docs/conventions/prs.md`. Reply `REVIEW <APPROVE|CHANGES> <phase> <PR#>`. Do not run `gh pr ready`.
3. If asked to review (Part B): only when the leader explicitly asks. Default review is verifier on GPT 5.6 Sol. Do not run `gh pr ready`.
4. Append the report to `.tasks/phase-N-*/LOG.md`.

No product code. No SPEC edits (propose via leader). Korean PLAN prose; English LLM docs.
2 changes: 1 addition & 1 deletion .cursor/agents/verifier.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: >-
Skeptical gate checker. Use after implementer claims PR-DRAFT (while the
PR is still draft). Confirm commands actually ran, SPEC goals exist in the
diff, and nothing was marked done without evidence. Do not mark the PR ready.
model: inherit
model: gpt-5.6-sol-medium
readonly: true
---

Expand Down
30 changes: 0 additions & 30 deletions .eslintrc.js

This file was deleted.

51 changes: 20 additions & 31 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,41 +1,30 @@
# refs. https://github.com/bmvantunes/youtube-2020-august-github-pages-github-actions
name: Node.js CI
name: Deploy to GitHub Pages

on:
push:
branches: [master]
pull_request:
branches: [master]
branches: [main]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [14.x]

steps:
- uses: actions/checkout@v2

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
- uses: actions/checkout@v7
- uses: withastro/action@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'

- name: Install Packages
run: yarn install --frozen-lockfile

- name: Build 🔧
run: yarn build
node-version: 22

- run: yarn run export

- run: touch ./out/.nojekyll

- name: Deploy
uses: JamesIves/github-pages-deploy-action@4.1.4
with:
branch: gh-pages # The branch the action should deploy to.
folder: out
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v5
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,15 @@
# testing
/coverage

# next.js
# next.js (legacy-next/)
/.next/
/out/

# astro
/dist/
/.astro/
/storybook-static/

# production
/build

Expand Down
4 changes: 2 additions & 2 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx pretty-quick --staged
npx lint-staged
bunx oxfmt --check .
bunx oxlint .
3 changes: 0 additions & 3 deletions .lintstagedrc.js

This file was deleted.

18 changes: 18 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"printWidth": 100,
"ignorePatterns": [
".yarn/**",
".agents/skills/**",
"node_modules/**",
"dist/**",
"out/**",
".next/**",
".astro/**",
"storybook-static/**",
"legacy-next/**",
"coverage/**",
"bun.lock",
"yarn.lock"
]
}
18 changes: 18 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"categories": {
"correctness": "error"
},
"ignorePatterns": [
".yarn/**",
".agents/skills/**",
"node_modules/**",
"dist/**",
"out/**",
".next/**",
".astro/**",
"storybook-static/**",
"legacy-next/**",
"coverage/**"
]
}
22 changes: 22 additions & 0 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import type { StorybookConfig } from "@storybook-astro/framework";
import stylex from "@stylexjs/unplugin";

const config: StorybookConfig = {
stories: ["../src/**/*.stories.@(ts|tsx)"],
framework: {
name: "@storybook-astro/framework",
options: {},
},
async viteFinal(config) {
config.plugins = config.plugins ?? [];
config.plugins.unshift(
stylex.vite({
useCSSLayers: true,
runtimeInjection: false,
}),
);
return config;
},
};

export default config;
16 changes: 16 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import type { Preview } from "@storybook-astro/framework";

import "../src/styles/global.css";

const preview: Preview = {
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
};

export default preview;
18 changes: 9 additions & 9 deletions .tasks/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@

## Phase 개요

| Phase | 이름 | 목표 | 종료 게이트(지표) | 문서 |
|---|---|---|---|---|
| 0 | Foundation: 브랜치·툴체인·지식기반 | `main` 전환, Node 22 + **bun** 고정 (yarn classic 잔재 제거), Astro Docs MCP + Astro 스킬 1개 + StyleX ESLint 룰 확정, StyleX 스파이크(o) | `main`이 default, `bun run dev`+StyleX 샘플 빌드 그린, 스킬 목록 `SPEC`에 핀 | [SPEC](phase-0-foundation/SPEC.md) · [PLAN](phase-0-foundation/PLAN.md) |
| 1 | Scaffold + Design System + Home/Tags 껍데기 + 배포 | Astro v7 스캐폴드(static), StyleX 토큰/프리미티브, Home·Tags 라우트, GH Pages Actions 배포 | `main` 푸시→Pages 자동배포, Lighthouse perf≥90·a11y≥95, 스타일런타임 주입 0 | [SPEC](phase-1-scaffold-design-system/SPEC.md) · [PLAN](phase-1-scaffold-design-system/PLAN.md) |
| 2 | Content Routes + MDX 마이그레이션 | `articles`(가변 테마) + `til`(통일) + `tags/[tag]`, Content Collections(Zod), 기존 6개 + `llm-wiki-template/wiki` 선별 이식 | 기존글 100% 렌더(깨진 링크 0), 스키마 위반 0, articles≥2 colorway 데모 | [SPEC](phase-2-content-routes/SPEC.md) · [PLAN](phase-2-content-routes/PLAN.md) |
| 3 | Wiki Quiz (flash cards) | 랜덤 객관식/주관식, 덱·세션·채점·localStorage 진척, island로 SSG 무해화 | 퀴즈 20문항 시드, 키보드 조작·채점 단위테스트 그린 | [SPEC](phase-3-wiki-quiz/SPEC.md) · [PLAN](phase-3-wiki-quiz/PLAN.md) |
| 4 | Hardening + 운영 | Pagefind 검색, SEO/RSS/OG/sitemap, 404, CI 가드(lint·link·schema·공개안전), 구 `gh-pages` 정리 | 검색 Top-3 적중 수동체크, CI 그린, 구배포 경로 제거 | [SPEC](phase-4-hardening-ops/SPEC.md) · [PLAN](phase-4-hardening-ops/PLAN.md) |
| Phase | 이름 | 목표 | 종료 게이트(지표) | 문서 |
| ----- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| 0 | Foundation: 브랜치·툴체인·지식기반 | `main` 전환, Node 22 + **bun** 고정 (yarn classic 잔재 제거), Astro Docs MCP + Astro 스킬 1개 + StyleX ESLint 룰 확정, StyleX 스파이크(o) | `main`이 default, `bun run dev`+StyleX 샘플 빌드 그린, 스킬 목록 `SPEC`에 핀 | [SPEC](phase-0-foundation/SPEC.md) · [PLAN](phase-0-foundation/PLAN.md) |
| 1 | Scaffold + Design System + Home/Tags 껍데기 + 배포 | Astro v7 스캐폴드(static), StyleX 토큰/프리미티브, Home·Tags 라우트, GH Pages Actions 배포 | `main` 푸시→Pages 자동배포, Lighthouse perf≥90·a11y≥95, 스타일런타임 주입 0 | [SPEC](phase-1-scaffold-design-system/SPEC.md) · [PLAN](phase-1-scaffold-design-system/PLAN.md) |
| 2 | Content Routes + MDX 마이그레이션 | `articles`(가변 테마) + `til`(통일) + `tags/[tag]`, Content Collections(Zod), 기존 6개 + `llm-wiki-template/wiki` 선별 이식 | 기존글 100% 렌더(깨진 링크 0), 스키마 위반 0, articles≥2 colorway 데모 | [SPEC](phase-2-content-routes/SPEC.md) · [PLAN](phase-2-content-routes/PLAN.md) |
| 3 | Wiki Quiz (flash cards) | 랜덤 객관식/주관식, 덱·세션·채점·localStorage 진척, island로 SSG 무해화 | 퀴즈 20문항 시드, 키보드 조작·채점 단위테스트 그린 | [SPEC](phase-3-wiki-quiz/SPEC.md) · [PLAN](phase-3-wiki-quiz/PLAN.md) |
| 4 | Hardening + 운영 | Pagefind 검색, SEO/RSS/OG/sitemap, 404, CI 가드(lint·link·schema·공개안전), 구 `gh-pages` 정리 | 검색 Top-3 적중 수동체크, CI 그린, 구배포 경로 제거 | [SPEC](phase-4-hardening-ops/SPEC.md) · [PLAN](phase-4-hardening-ops/PLAN.md) |

의존성: 0 → 1 → 2 → 3 → 4 순차. 3·4는 2 승인 후 병렬 검토 가능.

Expand Down Expand Up @@ -46,8 +46,8 @@
- Cursor (Cline 한도 소진 시 기본): [harness/cursor.md](playbook/harness/cursor.md) — 부모 Grok 4.6 (orchestrator+leader), planner·verifier 서브에이전트, Composer 2.5 implementer는 worktree. 정의: `.cursor/agents/`.
- Cline + Herdr: [harness/cline-herdr.md](playbook/harness/cline-herdr.md) — pane 3개, muse-spark / glm-5.3-flash (2026-09-10 실측).
- Claude Code / Codex: 스텁. 첫 실사용 때 `_template.md`로 승격.
흐름: leader 추적 → planner가 PLAN 정제 → developer 구현 + **draft** PR → planner/verifier 리뷰 → ready 전환 → 사람 머지.
**미사용:** Paseo, opencode-go 모델.
흐름: leader 추적 → planner가 PLAN 정제 → developer 구현 + **draft** PR → verifier 리뷰 (Cursor: GPT 5.6 Sol medium) → ready 전환 → **사람 머지**.
**미사용:** Paseo, opencode-go 모델.

## 승인 플로우

Expand Down
17 changes: 10 additions & 7 deletions .tasks/phase-0-foundation/PLAN.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Phase 0 PLAN — Foundation

## 순서

1. `git branch -m master main && git push -u origin main` → GitHub Settings → Default branch=`main` →
로컬 `git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main`, `master` 삭제.
- Pages 설정이 `gh-pages` 브랜치를 바라보므로 전환 중 배포 영향 없음. README에 "개편 중" 배너는 선택.
Expand All @@ -10,15 +11,15 @@
- Node 22.23.2 병행 유지 (Astro 요구 ≥22.12). `bun run dev` 기본 동작=Node로 Astro 실행.
3. 지식기반:
a. Astro Docs MCP — same URL `https://mcp.docs.astro.build/mcp`, **per harness**:
Cursor: `.cursor/mcp.json` (already in repo). Cline: Cline MCP HTTP config.
Claude: `claude mcp add --transport http astro-docs https://mcp.docs.astro.build/mcp` (re-verify when promoting that stub).
Do not copy one product’s JSON into another.
Cursor: `.cursor/mcp.json` (already in repo). Cline: Cline MCP HTTP config.
Claude: `claude mcp add --transport http astro-docs https://mcp.docs.astro.build/mcp` (re-verify when promoting that stub).
Do not copy one product’s JSON into another.
b. 스킬 평가: `spillwavesolutions/publishing-astro-websites-agentic-skill` clone → SKILL.md 품질 체크
(Collections/MDX/SSG 커버 여부) → 통과 시 `.agents/skills/astro-publish/` 미러 + 커밋해시 기록, 탈락 시 `incluud/astro-agent-skills`로 교체.
(Collections/MDX/SSG 커버 여부) → 통과 시 `.agents/skills/astro-publish/` 미러 + 커밋해시 기록, 탈락 시 `incluud/astro-agent-skills`로 교체.
c. `AGENTS.md` 작성 (영어, 최소 유지 — 상세는 링크):
MCP 우선조회·`bun astro add` 사용·`getStaticProps/next/link` 금지·StyleX ESLint 준수 +
코드 스타일 링크 (`docs/conventions/code-style.md` — 사람·에이전트 공용).
`CLAUDE.md`는 symlink (`ln -s AGENTS.md CLAUDE.md`).
MCP 우선조회·`bun astro add` 사용·`getStaticProps/next/link` 금지·StyleX ESLint 준수 +
코드 스타일 링크 (`docs/conventions/code-style.md` — 사람·에이전트 공용).
`CLAUDE.md`는 symlink (`ln -s AGENTS.md CLAUDE.md`).
d. CI 선행 구축은 Phase 4 PLAN §0 참조 (`feat/ci-gates` → `main` 직행이 스택 최하단).
4. StyleX 스파이크 (임시 디렉토리, 본 repo 미오염):
`bun create astro spike -- --template minimal` → `bun add -d @stylexjs/stylex @stylexjs/unplugin @stylexjs/eslint-plugin` →
Expand All @@ -27,9 +28,11 @@
- 보너스: `bun add sharp` 후 이미지 최적화 빌드 실증 (실패 시 SPEC §7 폴백 기록).

## 검증

- `git branch -a` / GitHub API default branch 확인.
- 스파이크 `bun run build` 그린 + 생성 CSS 샘플.

## 승인 요청

- [x] pm = bun@1.4.2 확정? (유지 희망 시 코멘트) — 2026-09-09 진행으로 채택
- [x] 스킬 1순위 채택 동의? — `.agents/skills/astro-publish/` @ `5889789e`
Loading