Data privacy comes first, always.
All user-facing command line output should make use of emojis for visual hierarchy.
Any AI agent or human touching this repo for the first time should read in this order:
- infra/docs/MAP.md — 1-minute entry point: purpose, layout, subsystems, "where to find what"
- infra/docs/TASKS-INDEX.md — Auto-generated catalog of scheduled tasks (count in
tasks-index.json.totalTasks), grouped by team - infra/docs/TEAMS-CRONS.md — Reverse index: team → owned crons
- infra/docs/CONFIG.md — Config inventory and safe-edit checklist
- infra/docs/ARCHITECTURE.md — Deep design (message flow, Discord runner, session mgmt)
- infra/docs/OPERATIONS.md — Incident response, cron schedules, log paths
면접봇 작업 시 반드시 먼저 읽을 것:
- infra/docs/INTERVIEW-BOT.md — 면접봇 풀 기획 문서 (아키텍처·불변식·버전 히스토리)
runtime/context/interview-bot-profile.md— Jarvis 세션 주입용 압축본 (불변식·파라미터·상태 파일 경로)
Regenerate TASKS-INDEX.md + tasks-index.json after any ~/jarvis/runtime/config/tasks.json change:
node ~/jarvis/infra/scripts/gen-tasks-index.mjsinfra/— Discord bot, automation scripts, MCP nexus, agentsrag/— RAG knowledge base (LanceDB + Ollama hybrid search)scripts/— Setup wizards (setup_rag.py, setup_infra.py)docs/img/— README screenshots
- No hardcoded user paths — use environment variables (
BOT_HOME,JARVIS_RAG_HOME) - No hardcoded secrets — use
.envfiles, never commit tokens/webhooks - No hardcoded language patterns — keep prompts language-agnostic
- Shell scripts:
set -euo pipefail, quote all variables, trap cleanup - Naming:
[domain]-[target]-[action](e.g.,rag-index-safe.sh)
크고 모호한 요청을 받으면 다음 순서를 기본 흐름으로 삼습니다. 2026-04-15 메이커 에반 유튜브("GStack + Superpowers 후기")의 워크플로우를 Jarvis 철학(Iron Laws · SSoT · 집사 페르소나)으로 재구성한 것.
/brainstorm— 아이디어 인터뷰 (역질문 15~20개로 암묵 공백 선제 노출) + UI mockup 3안- 필요 시
/office-hours— 옵션 A vs B 트레이드오프 매트릭스 의사결정 /autoplan— 단계별 계획 분해 (Writing Plans = 설계 도면)/plan-review— 11섹션 체크리스트 엄격 리뷰/verify— 7-Gate + Contrarian Challenge (독립 감사관 Agent)- worktree 분리 →
/codex또는/orchestrate병렬 구현 - 완료 후
/design-review— AI slop 감식 (생산 후 시각 감사) /ship→/retro+ 필요 시/oops로 오답노트 실시간 기재
스킵 규칙: 주인님이 "그냥 해" 하시면 1~4 단계 생략 가능 — 단, 생략 시 리스크 고지 필수. 작은 버그 수정·문서 편집은 전체 플로우 강제 안 함.
SSoT: 본 파일(~/jarvis/CLAUDE.md)이 Golden Path의 단일 진실 공급원. worktree 복제본은 주기적으로 git merge로 동기.
기능 매트릭스 출처: ~/jarvis/rag/analyses/evan-gstack-superpowers-20260421.md (영상 분석 + Verify 감사관 지적 반영).
원칙: Jarvis는 뇌 하나(~/jarvis/runtime/wiki/ + RAG + memory files). 여러 표면(디스코드/Claude Code CLI/macOS 앱)은 그 뇌의 입·출력 단말일 뿐. 읽기는 표면 무관하게 공유되고, 쓰기도 동일한 저장소로 수렴한다.
| 표면 | 읽기 | 쓰기(자동) | 쓰기(수동) | 권장 용도 |
|---|---|---|---|---|
| 디스코드 봇 | ✅ RAG + 위키 | ✅ autoExtractMemory → wikiAddFact (turn 단위) |
✅ /remember |
일상 질의, 가족 대화, 모바일 |
| Claude Code CLI | ✅ RAG + 위키 + MEMORY.md | ✅ stop-wiki-ingest.sh (세션 종료 단위, Phase 1) |
✅ /remember (MCP wiki_add_fact) |
기억 누적이 필요한 작업 (코드, 설계, 운영) |
| Claude macOS 앱 | ✅ RAG + 위키 (MCP nexus 로드 시) | ❌ 원리상 불가 (대화 이력이 claude.ai 서버 전용, 로컬 히스토리 없음) | ✅ /remember (유일한 기억 입금 창구) |
즉석 질의, 외출 중 빠른 대화 |
- 기억이 쌓여야 하는 작업은 Claude Code CLI에서 한다 — 세션 종료 자동 주입 + RAG 증분 인덱싱이 보장됨.
- **macOS 앱에서 중요한 결정·사실이 나오면 반드시
/remember**로 명시적 주입. 그렇지 않으면 대화 종료와 함께 휘발. - 디스코드는 이미 turn 단위 자동 주입 중이므로
/remember호출 불필요 (단, 긴 대화에서 핵심만 추려 명시적으로 남기고 싶을 때는 사용 가능).
[Discord] autoExtractMemory ──┐
[CLI 자동] stop-wiki-ingest ───┼──► addFactToWiki(source:X)
[모든 표면] MCP wiki_add_fact ──┘ │
▼
~/jarvis/runtime/wiki/{domain}/_facts.md
(SSoT, source 태깅으로 감사 가능)
- Extractor는 여러 개 (LLM 프롬프트가 표면·맥락마다 다름) — 정당한 diversity.
- Trigger는 표면별 (훅/턴/수동) — 본질적으로 다른 인터페이스이므로 DRY 위반 아님.
- Store는 하나 (
addFactToWiki) — 여기가 SSoT. 중복 체크는 source 무관, 첫 주입이 승. - Source 태깅 (
[source:X]) — 나중에 "어느 표면에서 쌓인 기억인가" 감사 필수.
Commit messages: conventional commits (feat:, fix:, refactor:, docs:, chore:)