chore: add Claude Code guidelines, rules and skills
- CLAUDE.md: product principles, crate layering, common commands, commits. - .claude/rules: common, Rust, frontend, Tauri IPC, docs and security rules. - .claude/skills: check, add-tauri-command, project-model-change, change-record, msix-integration-test, backlog-status. Refs #16 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7f5540f148
commit
905e6d4eaa
13 files changed
+654
No files matched your search
@@ -0,0 +1,38 @@
|
||||
# 보안 · 비밀정보 규칙
|
||||
|
||||
모든 파일에 적용한다.
|
||||
|
||||
## 커밋 금지 목록
|
||||
|
||||
`.gitignore`에 있는 항목을 예외 없이 지킨다: `.mcp.json`(Gitea 토큰 포함), `.env*`, `*.pfx`, `*.p12`, `*.key`, `*.isproj.local.json`, `*.bak`, `output/samples/`, `node_modules/`, `target/`. 이 파일들의 내용을 문서·주석·테스트·로그에 복사하지도 않는다.
|
||||
|
||||
`src/.work/`는 로컬 작업 폴더다(미추적). 그 안의 스크립트·토큰·커밋 메타데이터를 소스나 문서에 인용하지 않는다.
|
||||
|
||||
## 시스템 변경 금지
|
||||
|
||||
제작기와 테스트는 다음을 **절대 자동 수행하지 않는다**. 필요한 경우 사용자가 직접 실행할 스크립트와 안내를 출력한다.
|
||||
|
||||
- 빌드 PC의 실제 레지스트리 수정(`offreg.dll`로 오프라인 hive만 생성)
|
||||
- 인증서 신뢰 저장소 등록(`LocalMachine\TrustedPeople`), 인증서 개인 키 내보내기
|
||||
- MSIX 설치·제거, Windows 개발자 모드 변경
|
||||
- Windows SDK·인증서·런타임 자동 설치
|
||||
- 사용자 프로젝트 파일의 자동 변환·일괄 수정
|
||||
|
||||
## 도구 실행
|
||||
|
||||
- 허용 도구는 절대 경로의 `makeappx.exe`, `signtool.exe`, 저장소 내 PowerShell 서명 스크립트. 파일 이름을 대소문자 무시로 검사하고 실행 전후 SHA-256을 계획 값과 비교한다.
|
||||
- 인자는 배열로 전달한다. 셸(`cmd /c`, `powershell -Command "<문자열 결합>"`)로 사용자 입력을 넘기지 않는다.
|
||||
- 자식 프로세스는 Job Object에 붙여 취소·타임아웃 시 함께 종료한다.
|
||||
|
||||
## 경로
|
||||
|
||||
- 사용자 입력 경로는 `safe_relative`로 검사한다: `..`, 절대 경로, 예약 장치 이름(`CON`, `COM1`), 제어 문자, `\:<>"|?*` 거부.
|
||||
- reparse point(심볼릭 링크·junction)는 `reject_links`로 읽기·쓰기 모두 거부한다.
|
||||
- 소스 폴더가 `.work`, `releases`를 포함하거나 그 아래면 거부한다(출력 재수집 방지).
|
||||
- 작업 로그와 검증 JSON에는 로컬 절대 경로가 남는다. 외부 공유 전에 사용자에게 알린다.
|
||||
|
||||
## 프런트엔드
|
||||
|
||||
- CSP `default-src 'self'` 유지. 외부 리소스 로드 금지.
|
||||
- 모든 동적 HTML은 이스케이프. 이벤트는 `addEventListener`.
|
||||
- Tauri 명령은 ID·선택지만 받고 경로를 받지 않는다. 새 명령마다 `capabilities/main.json`에 개별 허용을 추가하고 와일드카드 권한을 쓰지 않는다.
|
||||
Reference in new issue
Block a user