docs(phase2.6): 사주 랜딩·입력 재스킨 구현 플랜 (3 Task) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AAtcmKKtqDUe4NyVgy1aLQ @
7.4 KiB
Phase 2.6 사주 랜딩·입력 라이트 재스킨 Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 사주 진입 화면 3파일(랜딩 page.tsx·input/page.tsx·SajuForm.tsx)을 --jsm 라이트로 재스킨해 사주 서비스 전 화면 톤을 통일한다.
Architecture: Phase 2.5와 동일한 순수 시각 재스킨 — 로직·데이터·props 무변경, 다크 hex·gradient·보라 className을 --jsm-* 토큰으로 치환. 대상 3파일엔 이모지가 없어 아이콘 작업 불필요. 각 파일 done-condition은 금지 패턴 grep 0건 + 빌드 성공.
Tech Stack: Next.js 16 (App Router, TS), Tailwind v4(--jsm-* 토큰), vitest
Spec: docs/superpowers/specs/2026-07-03-phase2_6-saju-entry-reskin-design.md
Global Constraints
- 순수 시각 변경: 로직·조건분기·fetch·상태·props·데이터·라우팅 라인은 건드리지 않는다(className/style만)
- 신규 색 토큰 추가 금지 — 아래 11개
--jsm-*만:--jsm-bg --jsm-surface --jsm-surface-alt --jsm-ink --jsm-ink-soft --jsm-ink-faint --jsm-line --jsm-navy --jsm-accent --jsm-accent-soft --jsm-accent-hover - 대상 3파일에서
gradient/violet/purple/blur/ 이모지 0건(각 Task 종료 게이트) - navy 밴드 = 무테두리 flat + 흰 CTA(2.5·
app/page.tsx에서 확립된 사이트 관용구). navy 배경 위 강조 텍스트는--jsm-accent-soft(대비 확보) - 의미색(상태 신호색)은 있으면 2.5 선례대로 보존
- next.config.ts·로직 파일 수정 금지
- 커밋은 스코프 파일만 스테이징 —
git add -A·git commit -a금지, 커밋 전git status확인 - 각 Task 종료 시
npm run build성공 +npm test(30) 유지 후 커밋 - 커밋 트레일러:
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
색상 매핑 (모든 Task 공통 — 이 표대로 치환)
| 현재(제거 대상) | 교체(→) |
|---|---|
#04102b 다크 배경 + repeating-linear-gradient 텍스처 |
bg-[var(--jsm-navy)] 플랫(히어로 밴드) / bg-[var(--jsm-bg)](페이지). 텍스처 style 삭제 |
bg-gradient-to-r from-[#1a56db] to-[#7c3aed](+hover) CTA |
bg-[var(--jsm-accent)] hover:bg-[var(--jsm-accent-hover)] 흰 텍스트 |
violet-300/500/600·#7c3aed·shadow-violet-* |
var(--jsm-accent); navy 밴드 위 텍스트는 var(--jsm-accent-soft) |
| amber 강조 | var(--jsm-accent) 또는 var(--jsm-ink-soft) |
흰색·blue-xx 본문 텍스트 |
text-[var(--jsm-ink)] / ink-soft / ink-faint |
다크 카드/테두리 #dbe8ff·#1a3a7a 등 |
bg-[var(--jsm-surface)] + border-[var(--jsm-line)] |
참고 관용구: app/work/saju/result/page.tsx(2.5 완료본), app/showcase/page.tsx, app/page.tsx(navy CTA 밴드).
Task 1: 랜딩 page.tsx 재스킨
Files:
- Modify:
app/work/saju/page.tsx(333줄, 위반 9건)
Interfaces:
-
Consumes: 없음 (기존 --jsm 토큰만)
-
Produces: 없음
-
Step 1: 전체 Read 후 색상 매핑 치환
app/work/saju/page.tsx를 먼저 전체 Read. 다음 위반 지점을 색상 매핑 표대로 치환(className/style만):
-
히어로(79행):
bg-[#04102b]+repeating-linear-gradientstyle →bg-[var(--jsm-navy)](밴드) + 텍스처 style 삭제 -
부제(84행):
text-violet-300/70→text-[var(--jsm-accent-soft)](navy 위) -
CTA 버튼(120행):
bg-gradient-to-r from-[#1a56db] to-[#7c3aed] hover:… shadow-violet-900/40→bg-[var(--jsm-accent)] hover:bg-[var(--jsm-accent-hover)](shadow는 기본 유지 또는 제거) -
MY RECORDS 라벨(138행):
text-violet-600→text-[var(--jsm-accent)] -
레코드 카드(144행):
border-[#dbe8ff] hover:border-violet-300→border-[var(--jsm-line)] hover:border-[var(--jsm-accent-soft)] -
하단 섹션 텍스처(186·255행):
repeating-linear-gradientstyle 삭제, 다크 배경 → navy/surface -
AI PREMIUM 카드(262·268행):
bg-violet-500/20 border-violet-400/30·text-violet-300→ navy 밴드 위bg-white/10 border-white/20·text-[var(--jsm-accent-soft)] -
그 외
#04102b텍스트·다크 카드 →--jsm-ink/surface/line -
서버/클라 로직·데이터 조회(MY RECORDS)·JSX 구조 미변경
-
Step 2: 게이트 검증
grep -nE "gradient|violet|purple|blur" app/work/saju/page.tsx # 기대: 0
npm run build && npm test # build 성공 + 30 PASS
- Step 3: 커밋 —
git add app/work/saju/page.tsx && git commit -m "feat(phase2.6): 사주 랜딩 라이트 재스킨 — gradient/보라→--jsm, 텍스처 제거"
Task 2: input/page.tsx + SajuForm.tsx 재스킨
Files:
- Modify:
app/work/saju/input/page.tsx(41줄, 위반 3건) - Modify:
app/work/saju/components/SajuForm.tsx(220줄, 위반 1건)
Interfaces:
-
Consumes: 없음
-
Produces: 없음
-
Step 1: 두 파일 Read 후 치환
각 파일 전체 Read. 다크/gradient/violet/purple 지점을 색상 매핑 표대로 치환:
-
input/page.tsx: 입력 화면 컨테이너·헤더·다크 배경 →bg-[var(--jsm-bg)]/navy 밴드, violet → accent, 텍스트 → ink -
SajuForm.tsx: 폼 필드·버튼·강조 색의 gradient/violet → 플랫 accent, 다크 → surface/line.useSajuForm등 폼 상태·핸들러·submit 로직 미변경 -
Step 2: 게이트 검증
grep -nE "gradient|violet|purple|blur" app/work/saju/input/page.tsx app/work/saju/components/SajuForm.tsx # 0
npm run build && npm test
- Step 3: 커밋 —
git add app/work/saju/input/page.tsx app/work/saju/components/SajuForm.tsx && git commit -m "feat(phase2.6): 사주 입력 화면·폼 라이트 재스킨"
Task 3: 사주 전체 게이트 + CLAUDE.md
Files:
- Modify:
CLAUDE.md
Interfaces:
-
Consumes: Task 1~2 완료
-
Produces: 문서 정합
-
Step 1: 사주 전체 게이트 검증
grep -rnE "gradient|violet|purple|blur" app/work/saju --include="*.tsx" # result 포함 사주 전체 0건
2.5 재스킨된 result 파일(SajuIcons·SajuAISection·SajuFortuneSection·result/page)과 이번 3파일 모두 0건이어야 함. 이모지도 Grep 유니코드로 0건 확인.
- Step 2: CLAUDE.md 갱신
## 사주 시스템 섹션의 2.5 재스킨 안내 문구("결과 화면 --jsm 라이트 재스킨 완료(2026-07-03)")를 "전 화면(랜딩·입력·결과) --jsm 라이트 재스킨 완료(2026-07-03)"로 갱신. 무관 섹션 미변경.
- Step 3: 최종 빌드·테스트
npm run build # 성공, /work/saju·/work/saju/input·/work/saju/result 라우트 존재
npm test # 30 PASS
-
Step 4: 커밋 —
git add CLAUDE.md && git commit -m "docs(phase2.6): CLAUDE.md — 사주 전 화면 라이트 재스킨 반영" -
Step 5: 보고
-
수동 확인:
/work/saju랜딩→입력→결과 전 플로우가 라이트로 일관 렌더 -
사주 서비스 전 화면 라이트 완결 — 재스킨 후속 없음
검증 요약
| 검증 | 명령 | 기대 |
|---|---|---|
| 사주 전체 가드레일 | grep -rnE "gradient|violet|purple|blur" app/work/saju --include="*.tsx" |
0건 |
| 이모지 | grep 유니코드 범위 | 0건 |
| 빌드 | npm run build |
성공 |
| 테스트 | npm test |
30 PASS(무변) |