From 90b93f818c83e1db84ab5fac2b4ec0d5a45a3c58 Mon Sep 17 00:00:00 2001 From: cw2007 Date: Sun, 19 Jul 2026 10:48:09 +0900 Subject: [PATCH] =?UTF-8?q?chore(deploy+docs):=20=EB=85=B8=EB=93=9C=20?= =?UTF-8?q?=EB=B2=88=EB=93=A4=20=EC=83=9D=EC=84=B1=EA=B8=B0=C2=B7=ED=95=98?= =?UTF-8?q?=EB=93=9C=EB=8B=9D=20=EA=B0=B1=EC=8B=A0=20+=20=EC=84=A4?= =?UTF-8?q?=EA=B3=84=EB=AC=B8=EC=84=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - tools/make_deploy_bundles.py: PMS7003·Zero2W 디스플레이 노드 번들 생성 반영(폐쇄망 동봉) - tools/harden_pi.sh: 하드닝 스크립트 갱신 - docs/superpowers: 노드 센서 통합·스모크 파일럿·대시보드 다크 설계/계획 문서 - docs/claude-config: IoT 납품·검증 스킬/룰 참조본 - review/: 프로젝트 리뷰·UI v2 목업 --- docs/claude-config/README.md | 43 + .../iot-airgap-delivery.SKILL.md | 90 ++ docs/claude-config/iot-verification.rule.md | 43 + .../plans/2026-07-16-dashboard-dark-ui.md | 97 ++ .../plans/2026-07-18-smoke-node-pilot.md | 606 ++++++++++++ .../2026-07-18-smoke-node-pilot-design.md | 173 ++++ ...26-07-19-node-sensor-integration-design.md | 110 +++ review/PROJECT_REVIEW_2026-07-11.md | 252 +++++ review/README.md | 12 + review/ui_mockup_v2.html | 912 ++++++++++++++++++ tools/harden_pi.sh | 2 +- tools/make_deploy_bundles.py | 297 ++++-- 12 files changed, 2572 insertions(+), 65 deletions(-) create mode 100644 docs/claude-config/README.md create mode 100644 docs/claude-config/iot-airgap-delivery.SKILL.md create mode 100644 docs/claude-config/iot-verification.rule.md create mode 100644 docs/superpowers/plans/2026-07-16-dashboard-dark-ui.md create mode 100644 docs/superpowers/plans/2026-07-18-smoke-node-pilot.md create mode 100644 docs/superpowers/specs/2026-07-18-smoke-node-pilot-design.md create mode 100644 docs/superpowers/specs/2026-07-19-node-sensor-integration-design.md create mode 100644 review/PROJECT_REVIEW_2026-07-11.md create mode 100644 review/README.md create mode 100644 review/ui_mockup_v2.html diff --git a/docs/claude-config/README.md b/docs/claude-config/README.md new file mode 100644 index 0000000..8ff6ca7 --- /dev/null +++ b/docs/claude-config/README.md @@ -0,0 +1,43 @@ +# Claude Code 전역 설정 이동용 사본 + +이 폴더 = 이 프로젝트 작업에서 추출한 Claude Code 전역 스킬/규칙의 사본. +다른 PC에서 아래 경로로 복사하면 동일하게 동작한다. 비밀값 없음(커밋 안전). + +## 파일 + +| 파일 | 종류 | 설치 위치 (다른 PC) | +|---|---|---| +| `iot-airgap-delivery.SKILL.md` | 스킬 (필요 시 자동/수동 호출) | `~/.claude/skills/iot-airgap-delivery/SKILL.md` | +| `iot-verification.rule.md` | 규칙 (전 세션 자동 로드) | `~/.claude/rules/common/iot-verification.md` | + +Windows에서 `~` = `C:\Users\<계정>`. + +## 설치 (다른 PC) + +```bash +# Git Bash / WSL +mkdir -p ~/.claude/skills/iot-airgap-delivery ~/.claude/rules/common +cp iot-airgap-delivery.SKILL.md ~/.claude/skills/iot-airgap-delivery/SKILL.md +cp iot-verification.rule.md ~/.claude/rules/common/iot-verification.md +``` + +```powershell +# PowerShell +New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\skills\iot-airgap-delivery", "$env:USERPROFILE\.claude\rules\common" | Out-Null +Copy-Item iot-airgap-delivery.SKILL.md "$env:USERPROFILE\.claude\skills\iot-airgap-delivery\SKILL.md" +Copy-Item iot-verification.rule.md "$env:USERPROFILE\.claude\rules\common\iot-verification.md" +``` + +설치 후 새 Claude Code 세션에서 스킬 목록에 `iot-airgap-delivery` 뜨면 성공. + +## 내용 요약 + +- **스킬**: 파생키(HMAC) 구조·번들 재생성 워크플로·403/WAF 디버깅 사다리· + 디스플레이 렌더 오프디바이스 검증·납품 전 병렬 감사 절차. +- **규칙**: 위 중 "항상 지켜야 하는" 행동 규칙만 요약(마스터키 취급, deploy/ 수정 금지, + requests 커스텀 UA 필수, 렌더 PNG 검증 후 배포, 폴링 엔드포인트 인덱스/LIMIT/try-catch). + +## 갱신 방법 + +전역 파일(`~/.claude/...`)을 고친 뒤 이 폴더로 다시 복사해서 커밋. +(전역이 원본, 이 폴더는 배포용 사본.) diff --git a/docs/claude-config/iot-airgap-delivery.SKILL.md b/docs/claude-config/iot-airgap-delivery.SKILL.md new file mode 100644 index 0000000..82676fc --- /dev/null +++ b/docs/claude-config/iot-airgap-delivery.SKILL.md @@ -0,0 +1,90 @@ +--- +name: iot-airgap-delivery +description: Use when working on IoT sensor systems with air-gapped deploy bundles (Pi nodes + shared-hosting PHP server) — covers derived-key auth, bundle regeneration workflow, 403/WAF debugging, display render verification, and pre-delivery audit. Trigger on deploy bundle work, HMAC key mismatch/403 errors, Pi display rendering, or "납품" (delivery) prep. +--- + +# IoT Air-gap Delivery Workflow + +Battle-tested workflow for IoT systems shaped like: sensor nodes (Raspberry Pi / STM32) +→ shared-hosting PHP server (cafe24-style) → optional mini display node, deployed as +self-contained offline bundles generated by a bundle-generator script. + +## 1. Key architecture (get this right first — most repeated confusion) + +- **API_KEY** = master secret. Lives ONLY in: server `config.local.php` + build machine + `deploy/.secrets/api_key.txt`. Never on leaf devices. +- **Derived keys** = `HMAC-SHA256(message=