native-module-handling
Clauday 의 native 모듈 (node-pty, keytar) 추가/업데이트/문제 해결 가이드. native 의존성 작업 시 트리거.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Clauday 의 native 모듈 (node-pty, keytar) 추가/업데이트/문제 해결 가이드. native 의존성 작업 시 트리거.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when: developer 페이즈 진입 시, BE/FE 코드 변경을 실행해야 할 때.
Use when: QA 페이즈에서 수락기준 검증이 필요할 때.
Use when: 코드 리뷰가 필요할 때.
Use when: developer 페이즈에서 코드 변경이 필요할 때.
AIService.runClaudeStream 또는 ClaudeChatService 의 claude CLI spawn 코드를 수정할 때 Windows/Mac 분기 함정을 피하기 위한 안전 체크리스트. ai-service 또는 claude-chat 도메인 작업 시 반드시 트리거.
feature/<도메인>/<task-id>/ 산출물 (prd, adr, plan, impl-log, qa-report) 의 YAML frontmatter / 필수 섹션 / 불변성 검증. integrator 가 게이트 진입 시 호출.
| name | native-module-handling |
| description | Clauday 의 native 모듈 (node-pty, keytar) 추가/업데이트/문제 해결 가이드. native 의존성 작업 시 트리거. |
Native 모듈은 OS 별 prebuild 가 필요해서 깨지면 전체 패키징 이 망가진다.
node-pty — 터미널 PTY (Pseudo Terminal). src/main/terminal/TerminalManager.ts 에서 사용.keytar — OS keychain (두레이 토큰, CalDAV 비밀번호 보관). src/main/dooray/, src/main/caldav/CredentialStore.ts 등.electron-rebuildpackage.json:
{
"scripts": {
"postinstall": "electron-rebuild -f -w node-pty,keytar"
}
}
npm install 직후 자동 실행. -w 인자에 native 모듈 명을 콤마 구분 으로 나열.
electron-builder 설정:
{
"asarUnpack": [
"node_modules/node-pty/**/*",
"node_modules/keytar/**/*"
]
}
asar 안에 들어가면 .node 바이너리 로드 실패. 풀어둬야 정상 실행.
.github/workflows/release.yml — macOS 와 Windows 양쪽에서 빌드. 각각 자기 OS 의 prebuild 생성.
prebuild-install 지원 여부 확인)npm install <module>
package.json postinstall 갱신"postinstall": "electron-rebuild -f -w node-pty,keytar,<newmodule>"
electron-builder asarUnpack 갱신"asarUnpack": [
"node_modules/node-pty/**/*",
"node_modules/keytar/**/*",
"node_modules/<newmodule>/**/*"
]
release.yml 의 빌드 매트릭스에서 양 OS 다 통과하는지 dry run 권장.
rm -rf node_modules
npm install # postinstall 이 rebuild 자동 실행
npm run dev # native 모듈 import 한 코드 실제 동작 확인
npm run dist # 패키지 빌드까지 OK 인지
| 증상 | 원인 후보 | 처방 |
|---|---|---|
Module did not self-register | ABI 불일치 | npm rebuild <module> 또는 electron-rebuild -f -w <module> |
.node not found (런타임) | asarUnpack 누락 | electron-builder 설정에 추가 |
| Windows 빌드만 실패 | prebuild 없음 | prebuild-install 지원 모듈인지 확인. 아니면 windows-build-tools 필요 |
| macOS arm64 vs x64 | universal binary 필요 | electron-builder 의 mac.target 에 둘 다 |
| postinstall 무한 루프 | electron-rebuild 가 npm install 호출 | --force 가 빠졌는지 확인 |
새 native 모듈 추가/제거 시:
.agent/wiki/architecture.md §4 (네이티브 모듈) 갱신