1.시작하기

1.1 프로젝트 소개

SoloSquad는 1인 창업자(솔로 파운더)를 위한 24/7 AI 비서 시스템입니다. 익숙한 메신저(v1.0 기준 Discord)에서 25명의 전문 AI 팀원과 대화하며 제품을 만들고, 시장을 분석하고, 마케팅을 돌리고, 코드를 작성합니다. Slack 어댑터는 코드에 동봉되나 v1.0 SemVer 약속 외 (post-v1.0 슬롯).

설치는 npm 한 줄. 별도의 웹 대시보드나 GUI 도구 없이 "메신저-네이티브"로 모든 작업을 처리합니다.

npm install -g solosquad
solosquad init

4개 팀, 25명의 AI 전문가가 내장되어 있습니다.

역할주요 에이전트
전략 (Strategy)시장 분석·사업 기획·가설 수립·일정 산정PMF Planner, Feature Planner, Data Analyst, Business Strategist, Idea Refiner, Scope Estimator, Policy Architect
그로스 (Growth)마케팅 전략·콘텐츠·브랜딩·광고GTM Strategist, Content Writer, Brand Marketer, Paid Marketer
경험 (Experience)유저 리서치·시장 조사·UX/UI 설계User Researcher, Desk Researcher, UX Designer, UI Designer
엔지니어링 (Engineering)프론트·백엔드·API·데이터·인프라·품질·보안Creative Frontend, FDE, Architect, Backend Developer, API Developer, Data Collector, Data Engineer, Cloud Admin, QA Engineer, Security Engineer

1.2 핵심 컨셉

"Output ≠ Goal" 철학

출력물(Output)은 목표가 아니다. 출력물은 목표를 달성하기 위한 수단이다.

잘 짜인 디자인, 멋진 문서, 깔끔한 코드 — 이런 결과물 자체가 사업의 성공을 보장하지 않습니다. SoloSquad는 결과물을 만들어내는 도구지만, 그 결과물이 *솔로 파운더의 성공이라는 목표*에 어떻게 기여하는지를 항상 우선시합니다.

메신저-네이티브

웹 GUI나 데스크탑 앱이 없습니다. 사용자가 이미 매일 켜놓는 메신저가 곧 인터페이스입니다. #owner-command 채널에서 자연어로 명령하고, #workflow 채널에서 자동 보고를 받습니다.

3-Layer Context (격리)

여러 사업을 동시에 운영해도 정보가 섞이지 않도록 3계층으로 분리합니다.

Layer 0: Workspace (보편) 모든 세션이 공유 — 사용자 프로필·원칙·25 에이전트 정의 ↓ Layer 1: Organization (조직) 사업/제품 단위 — 메모리·워크플로·채널·메신저 ↓ Layer 2: Repository (저장소) 코드 — 리포별 코드·리포 한정 skill

자기 호스팅 (Self-Hosted)

사용자의 PC·Mac Mini·VPS에서 직접 실행됩니다. SoloSquad 운영자 서버에 데이터를 보내지 않습니다. Claude API와 메신저 서버만이 외부 통신 상대.

1.3 기대 가치

버전 표기 안내 문서 안에서 v0.8.5는 npm에서 지금 받을 수 있는 기능 (v0.3·v0.4·v0.5·v0.6·v0.7·v0.8.x 누적), v1.0+는 기획 중인 향후 업데이트입니다. v0.7~v0.8.5에서 추가된 핵심: uninstall 라이프사이클(v0.7) · 멀티 유저 메신저(v0.8.0) · import + archive verify(v0.8.1) · dev_capability(v0.8.2) · observability·dry-run(v0.8.3) · CLI surface reduction + `backup` subgroup(v0.8.4) · init 회귀 fix + 3-docs pre-publish gate(v0.8.5). 자세한 차이는 8장 참조.

2.작동 원리

2.1 시스템 아키텍처

SoloSquad는 3개의 핵심 프로세스와 1개의 영속 저장소로 구성됩니다.

컴포넌트역할실행 방식
solosquad bot메신저 메시지 수신 → 적합한 에이전트 SKILL.md 주입 → Claude Code 실행 → 응답 전송장기 실행 프로세스 (24/7)
solosquad schedulecron 일정에 따라 정해진 routine 실행 (모닝 브리프, 시그널 스캔 등)장기 실행 프로세스 (24/7)
Messenger AdapterDiscord 또는 Slack 어댑터. bot/scheduler가 공통 인터페이스로 사용bot/scheduler 내부 모듈
File-based MemoryJSONL append-only 기록 + Markdown 워크플로 산출물. <org>/memory/, <org>/workflows/파일시스템

메시지 처리 흐름 (현재 v0.6)v0.6

키워드 단발 호출은 v0.3에서 PM 세션 모델로, v0.5에서 4채널 라우팅 + 3-tier 검색 + atomic swap hot-reload로 진화했고, v0.6에서 chokidar 기반 fs.watch 자동 hot-reload + 8-layer JIT spawn assembly + org × agent 단위 budget envelope이 추가됐습니다. 라우터 미스 시 FTS5 cold archive fallback이 과거 결정을 회상합니다.

사용자 → PM session (claude --resume <session-id>)
            ↓
            buildRoutes(): 3-tier 스캔
              [1] <org>/.agents/                  (org 로컬 override)
              [2] ~/.solosquad/agents/             (user 글로벌 override)
              [3] <workspace>/.solosquad/agents/   (번들 25개)
            ↓
            4채널 resolver (우선순위: slash > explicit > keyword > freq)
              · slash    — "/think /plan /build /review /ship" 등
              · explicit — PM이 추론으로 직접 호출
              · keyword  — 1턴 메시지 단어 매칭
              · freq     — 최근 N턴 누적 빈도 임계 초과 시 자동 로드
                           (cooldown_turns 동안 재발화 금지 — hysteresis)
            ↓
            매칭된 SKILL을 컨텍스트에 JIT inject
            ↓
            Task: <agent> "..." (fresh subagent session, [stage:<id> wf:<id>] marker 부착)
            ↓
            결과 요약을 PM 컨텍스트에 합침 → 다음 spawn 또는 사용자 보고
            ↓
            git-snapshot before-spawn / after-spawn 자동 커밋 (<org>/.solosquad/snapshot.git)

[병렬] 새 SKILL.md 저장 시 라우터 atomic swap:
        새 인덱스 빌드 → ref 교체 → 빌드 중 메시지는 이전 인덱스로 처리 (봇 재시작 불필요)

v0.4 자율 실행 진입 시 solosquad goal run <goal-id>이 background PM session(bg-<goal-id>-<runId>)을 띄워 같은 4채널 라우팅을 cycle 안에서 반복합니다. 메트릭 게이팅 keep/discard, git-snapshot revert, 누적 비용 cap이 cycle 단위로 적용됩니다.

2.2 폴더 위계 구조

현재 npm 배포 (v0.8.5) 구조

~/solosquad-workspace/ (사용자 워크스페이스 루트) ├── AGENTS.md (v0.4 — 단일 영속 가이드, cross-tool 표준) ├── .solosquad/ (시스템 설정) │ ├── workspace.yaml (timezone, briefings, pm, skill_loader, author, │ │ spawn.max_context_tokens, fs_watch.mode, │ │ archive.retention_days) │ ├── .env (메신저 토큰, MESSENGER, ...) │ ├── agents/ (v0.5 — 번들 init 결과, 25개 specialist + frontmatter) │ │ ├── {team}/{agent}/SKILL.md │ │ ├── {team}/KNOWLEDGE.md (v0.6 — co-location, _teams/ 폐지) │ │ └── _meta/workflow-maker/SKILL.md (v0.5 — author 루프 메타-skill) │ ├── knowledge/ (v0.6 — 사용자 누적 공용 지식, 의사결정 프레임워크 등) │ ├── routines/ (선택 — 사용자가 override한 routine) │ └── core/ (선택 — 사용자가 override한 owner/principles/voice) ├── .agents/ (v0.5 — 선택, org 로컬 SKILL override, 최우선) └── <org-slug>/ (조직, 1개 이상) ├── .org.yaml (조직 메타: name, messenger, schema_version: 1 — v0.6) ├── .agents/ (v0.5 — 선택, 이 org 전용 SKILL override) ├── core/ (v0.6 — 조직 철학·톤, workspace core override) │ ├── PRINCIPLES.md │ └── VOICE.md ├── agent-profile.yaml (v0.6 — 25 agent 조직별 modifier + budget, │ schema_version: 1) ├── domain/ (v0.6 — 조직 도메인 지식: market, customers, product) ├── memory/ (JSONL 메모리) │ ├── signals.jsonl │ ├── experiments.jsonl │ ├── decisions.jsonl │ ├── author-costs.jsonl (v0.5 — author 루프 비용 로그) │ ├── agent-costs.jsonl (v0.6 — spawn budget 누적) │ ├── migration-costs.jsonl (v0.6 — 0.5→0.6 마이그레이션 자체 budget) │ ├── spawn-decisions.jsonl (v0.6 — 8-layer drop 로그) │ ├── stop-hook-events.jsonl (v0.6 — spec-gate 평가 로그) │ ├── archive.sqlite (v0.6 — FTS5 cold archive) │ ├── pm-skills/ (v0.3 — PM compaction 외부화) │ └── routine-logs/ ├── workflows/<wf-id>/ (프로젝트별 워크플로) │ ├── _status.yaml │ ├── _handoff.md │ ├── _events.jsonl (v0.3 — PM 이벤트 로그) │ └── stage-N-{name}/ ├── goals/<goal-id>/ (v0.4 — 자율 실행 의도 + cycle 결과) │ ├── goal.md │ ├── results.tsv │ ├── _best.json │ └── _last-run.md ├── .solosquad/ │ ├── sessions/<user>.json (v0.3 — PM session id + cumulative cost + activeWorkflowId │ │ v0.5 — freqCooldowns 필드 매 턴 decay) │ ├── snapshot.git (v0.3 — memory/ + workflows/ 내부 bare 저장소) │ ├── analysis/ (v0.5 — repo 분석 보고서 (Markdown)) │ └── analysis-ledger.yaml (v0.5 — analyze repo 증분 ledger: path + SHA256[:12]) ├── repositories/<repo-slug>/ (코드 저장소들) │ └── (코드 파일들 + 자체 .git/, .claude/, CLAUDE.md 등) ├── discord/ (채널 매핑 — v1.0 기본). slack/ 동봉되나 post-v1.0 슬롯 └── product/ (조직별 자체 산출물) ~/.solosquad/agents/ (v0.5 — user 글로벌 SKILL override, 모든 워크스페이스 공유) ~/.solosquad/agent-profile-defaults.yaml (v0.6 — N개 org가 상속할 user-global defaults) (npm install 시) assets/ (번들 디폴트, 변경 불필요) ├── agents/{team}/{agent}/SKILL.md (25개 — v0.6에서 collab_pattern frontmatter 추가) ├── agents/{team}/KNOWLEDGE.md (v0.6 — _teams/ co-location 이동) ├── agents/_meta/workflow-maker/ (v0.5 — author 루프 메타-skill + references) ├── knowledge/ (v0.6 — bundled workspace knowledge 시작 가이드) ├── core/{OWNER,PRINCIPLES,VOICE}.md ├── routines/ (5개 + pm-compaction + archive-rotate + │ v06-retrospective-stats) ├── orchestrator/SKILL.md (PM 프롬프트, v0.3 활성화 / v0.4 goal-md-spec append) ├── templates/ (PRD, handoff-{hierarchical,graph,dynamic} ×3, │ status, goal.md, AGENTS.md, workflow.yaml, │ agent-profile.yaml, hooks.json) ├── deploy/docker/ (컨테이너 배포 — Dockerfile, docker-compose.yml, README) └── docs/poc/ (v0.3 PoC integration 스크립트 아카이브)

3-tier 검색 우선순위 (v0.5): SKILL은 같은 이름이면 <org>/.agents/ > ~/.solosquad/agents/ > <workspace>/.solosquad/agents/ (번들) 순으로 상위 계층이 override합니다. 라우터가 부트 시 세 위치를 모두 스캔해 한 인덱스로 합칩니다.

v0.6 신설 자산v0.6

조직별로 25 specialist의 톤·강조점·budget을 흡수하는 Org Layer + 사용자 누적 craft를 분리하는 Workspace Knowledge Layer가 정식 자산으로 도입됐습니다. 워크스페이스 번들 SKILL은 한 줄도 변경 없이, 조직 색채는 아래 자산에서만 들어옵니다.

agent-profile.yaml 예시

schema_version: 1
defaults:
  tone: conservative
  budget:
    daily_usd: 5
    weekly_usd: 25
    on_cap_action: pause       # pause | warn

business-strategist:
  emphasis: "한국 SMB 시장 컨텍스트 우선"
  decision_frame: "현금흐름 > 성장률"

content-writer:
  voice: "professional, no hype"
  ban_phrases: ["혁신적인", "획기적인"]

paid-marketer:
  budget:                       # defaults보다 좁힘만 허용
    daily_usd: 2

명시되지 않은 agent는 defaults만 적용. spawn 직전 cap 도달 시 spawn 거부 + PM이 "Daily budget 도달 — 내일 다시 시도해주세요" 응답. 누적은 <org>/memory/agent-costs.jsonl.

2.3 컨텍스트 & 메모리 관리

현재 메모리 구조 (v0.2.4)

모든 routine 결과는 JSONL append-only로 기록됩니다. JSON 한 줄 = 한 이벤트.

<org>/memory/signals.jsonl 예시:
{"ts":"2026-05-12T12:00:00Z","kind":"signal","source":"reddit/r/saas","content":"...","urgency":"med"}
{"ts":"2026-05-12T12:00:15Z","kind":"signal","source":"twitter","content":"...","urgency":"high"}

3계층 컨텍스트 (보고서 P/E/T 어휘)

계층위치용도TTL
Persistent (영구)워크스페이스 + 조직의 SKILL.md, KNOWLEDGE.md, core/, principles역할 정의·craft·정책영구
Episodic (에피소드)<org>/workflows/<id>/, JSONL 메모리특정 워크플로·기간의 진행 기록일~월
Transient (일시)Claude session prompt 컨텍스트현재 호출 직전의 작업 메모리5분 (Anthropic prompt cache TTL)

Just-in-Time Injection 원칙v0.5

모든 SKILL.md를 매 호출마다 컨텍스트에 넣지 않습니다. 사용자 메시지의 키워드, 슬래시 명령, 빈도 카운팅에 따라 *그 호출에 필요한 SKILL만* 선택적으로 주입. v0.5에서는 4채널 라우터(slash/explicit/keyword/freq)가 매 턴 매칭해 컨텍스트 가산을 결정합니다.

v0.6 메모리 처리 흐름v0.6

v0.5 turn 흐름은 그대로 유지되며, v0.6에서 spawn budget·8-layer drop 로그·spec-gate 평가·마이그레이션 비용이 추가됐습니다. 한 PM 턴이 진행될 때 다음 파일이 갱신됩니다.

FTS5 Cold Archivev0.6

JSONL이 누적되면 검색이 느려지므로, 8일 이상 된 항목은 SQLite FTS5 가상 테이블 <org>/memory/archive.sqlite로 옮겨 토큰 매칭 기반 검색 가능하게 보관합니다. 매일 00:00 archive-rotate routine이 자동 수행. 시맨틱 임베딩 인프라 없이 검색성 확보.

4 event_type 인덱싱v0.6

v0.6은 기존 routine-logs/*.jsonl 외에 라우터·author·spawn 이벤트 3종을 같은 archive로 인덱싱합니다. §3 trajectory 추출·§3.4 freq 자동 추천의 데이터원.

event_type소스용도
route_hitagent-router resolve() non-null키워드 → SKILL 매칭 빈도
route_missagent-router resolve() nullfreq 자동 추천 입력 (누락 SKILL 추론)
author_turnauthor 루프 turn 로그명확화 turn 평균, 거절 비율
spawn_decisionPM Task tool 호출 + 8-layer dropPM 자유 라우팅 vs 결정적 라우터 불일치 표면화
routine_log기존 routine-logs/*.jsonl레거시 자동 적재

Retention 정책v0.6

archive는 기본 365일 보존(workspace.yaml.archive.retention_days: 365). archive-rotate routine이 *오래된 항목 삭제* 단계 수행. 옵션 archive.compress_before_delete: true 설정 시 archive-<year-month>.zst로 분기 보관. 디스크 사용량은 solosquad memory stats --disk로 확인.

2.4 워크플로우 정의

4종 디폴트 워크플로우

타입목적주요 단계
PMF Discovery새 제품-시장 적합도 탐색Research → Planning → Design → Build → Launch
Feature Expansion기존 제품에 기능 추가Analysis → Planning → Design → Build
Rebranding브랜드 리포지셔닝Research → Branding → Design → Marketing
Rapid Prototype최소 가능 검증Refine → Build → Launch

핵심 파일: _status.yaml + _handoff.md

_status.yaml은 단계별 진행 상태(pending → in_progress → completed)를 추적. _handoff.md는 각 단계가 종료 시 다음 에이전트에게 전달할 컨텍스트 슬라이스.

_handoff.md 표준 섹션:
- Summary: 3줄 요약
- Artifacts: 산출물 목록
- Key Decisions: 결정 + 근거
- Context for Next Agent: 다음 에이전트가 알아야 할 것
- Open Questions: 미해결 질문

v0.6 핸드오프 3변형v0.6

단계마다 협업 패턴이 다른데 같은 템플릿을 강요하는 한계를 해소했습니다. 25 agent SKILL.md에 collab_pattern frontmatter가 정식 필드로 추가되어 spawn 시 해당 변형 템플릿이 자동 적용됩니다.

2.5 Spawn assembly (8-layer JIT inject)v0.6

specialist를 spawn할 때 컨텍스트는 다음 8 layer를 우선순위 순으로 조립합니다. workspace.yaml.spawn.max_context_tokens (기본 80,000) cap 도달 시 우선순위 낮은 layer부터 drop, 결정 로그는 <org>/memory/spawn-decisions.jsonl에 기록되어 §2.3 FTS5 인덱싱 대상이 됩니다.

spawn(business-strategist, org=Acme, repo?)
  └─ assemble:
       [1] .solosquad/knowledge/ + assets/knowledge/  (workspace 공용, 키워드 selective)
       [2] agents/strategy/KNOWLEDGE.md               (team(=domain) 공유 지식, 같은 team만)
       [3] agents/strategy/business-strategist/SKILL.md  (agent 정체성, 워크스페이스 불변)
       [4] <org>/core/                                (조직 철학·톤)
       [5] <org>/agent-profile.yaml의 defaults + business-strategist 섹션 (org modifier)
       [6] <org>/domain/                              (조직 도메인 지식)
       [7] <org>/workflows/<id>/_handoff.md + <org>/memory/ (recent + FTS5 recall)
       [8] target_repo 컨텍스트 (target_repo 필드 있을 때만)

Drop priority 표

우선순위layerdrop 정책
1 (필수)[3] agent SKILL.mddrop 금지 — agent 정체성
2[4] org core, [5] agent-profiledrop 금지 — 조직 색채
3[7] handoff slice오래된 핸드오프부터 drop
4[2] team KNOWLEDGE키워드 매칭률 낮으면 drop
5[6] org domain키워드 매칭률 낮으면 drop
6[1] workspace knowledge매칭 0이면 drop
7[8] target repo 컨텍스트큰 파일 우선 drop

drop 발생 시 <org>/memory/spawn-decisions.jsonl에 어느 layer를 truncate했는지 기록 — §2.3 FTS5 archive에 event_type: spawn_decision으로 인덱싱.

3.개념 정리

3.1 SKILL.md — 에이전트 정체성 정의

SKILL.md는 한 에이전트의 "이 역할은 어떻게 일하는가"를 기술한 매뉴얼입니다. Anthropic의 Agent Skills 공식 포맷을 따르며, SoloSquad는 라우팅·loop_mode·budget 등 확장 필드를 더해 사용합니다.

---
name: "Business Strategist"
description: "사업 전략·시장 분석·경쟁 포지셔닝"
team: strategy
stateful: false                    # v0.5 — 모든 specialist는 stateless
triggers:                          # v0.5 — 4채널 진입점
  slash: ["/strategize"]
  keyword: ["사업 전략", "비즈니스 모델"]
  freq:                            # 누적 빈도 자동 로드 (cooldown_turns 동안 재발화 금지)
    keywords: ["전략", "포지셔닝", "경쟁"]
    window_turns: 10
    threshold: 3
    cooldown_turns: 6
  explicit: true                   # PM이 추론으로 직접 호출 가능
inputs:
  required: [market_context, hypothesis]
  optional: [time_range]
outputs:
  - strategy.md
handoff_to:
  - feature-planner
  - pmf-planner
loop_mode:                         # v0.5 — spec-gate(Ralph 루프) 모드 명시. null | spec-gate
  kind: spec-gate
  stop_when: "all tests pass"
budget:                            # v0.5 — paperclip envelope 차용. author 루프·explicit 호출에 forward
  per_call_usd: 1.5
  daily_usd: 10
---

# Business Strategist Agent

당신은 1인 창업자를 돕는 사업 전략 전문가입니다.

## Process
1. 시장 컨텍스트 파악
2. 경쟁 분석
3. 가설 수립 + 검증 방법 제시
...

3.2 KNOWLEDGE.md — 팀(=도메인) 공유 지식v0.6

같은 팀의 모든 에이전트가 공유하는 craft·정의·anti-pattern을 한 파일에 모읍니다. v0.6에서 agents/{team}/KNOWLEDGE.md로 co-location 완료, 같은 team agent spawn 시 자동 inject (8-layer assemble의 [2] layer).

SKILL.mdKNOWLEDGE.md
범위개별 에이전트 1명한 팀 전체 (예: strategy팀 7명)
내용역할 정체성·작동 절차팀 craft·용어·anti-pattern
로드 조건해당 에이전트 spawn 시같은 팀 에이전트 누구라도 spawn 시
v0.6 co-location 완료 이전 assets/agents/_teams/{team}/TEAM_KNOWLEDGE.md 평행 hierarchy는 v0.6에서 assets/agents/{team}/KNOWLEDGE.md로 co-location되었습니다. _teams/ 디렉토리 완전 제거. 마이그레이션 0.5→0.6이 사용자 워크스페이스의 .solosquad/agents/_teams/도 자동 이동.

3.3 CLAUDE.md — 프로젝트/리포 지침

CLAUDE.md는 Claude Code(범용 코딩 CLI)가 매 세션 시작 시 자동으로 읽어들이는 프로젝트 지침 파일입니다. SoloSquad의 자체 컨벤션이 아니라, Claude Code 공식 컨벤션입니다.

SoloSquad의 루트 CLAUDE.md는 *SoloSquad 자체를 개발하는* 개발자(이 리포에서 코딩하는 사람)를 위한 지침입니다. 사용자가 자기 제품 리포에서 작업할 때는 *그 리포의 CLAUDE.md*가 적용됩니다.

예시: 사용자의 SaaS 리포 CLAUDE.md
# My SaaS

TypeScript + Next.js. Vercel 배포.

## Conventions
- 컴포넌트는 src/components/ 아래에 PascalCase
- API route는 src/pages/api/
...

3.4 SKILL.md vs AGENTS.md — 다른 레이어, 다른 역할

SoloSquad는 두 파일을 모두 사용하되 책임이 명확히 다릅니다. 한 워크스페이스에서 SKILL.md는 여러 개, AGENTS.md는 단 1개.

SKILL.md (Anthropic 공식)AGENTS.md (cross-tool 표준) v0.4
역할개별 agent의 정체성·동작 매뉴얼워크스페이스 단일 영속 가이드 (프로젝트 컨벤션·금지 경로·도구 사용 규칙)
위치·개수3-tier 검색: <org>/.agents/ > ~/.solosquad/agents/ > <workspace>/.solosquad/agents/ (25 specialist 번들)
.claude/skills/{name}/SKILL.md (Claude Code 마켓플레이스 호환)
<workspace>/AGENTS.md 단 1개
frontmatterYAML, name·description 필수 + SoloSquad 확장(team·stateful·triggers·loop_mode·budget 등)없음 — 자유 markdown
편집 주체v0.5 analyzer가 자동 분류·머지. v0.5 메신저 author 루프가 1-2턴 대화로 생성. 사람도 손볼 수 있음.사람 only. 어떤 AI 에이전트도 이 파일을 수정하지 못함 (Codex `/goal` 신뢰 앵커 정신과 동일).
다른 도구 호환Claude Code Plugin 마켓플레이스와 직접 연동.Codex·Aider·Cursor·최신 Claude Code 모두 인식하는 cross-tool 표준 (Codex AGENTS.md spec).
v0.4 자율 실행에서spawn된 specialist가 자기 SKILL.md를 컨텍스트로 받음.immutable_paths·modifiable_paths·외부 호출 화이트리스트가 박제되어 모든 goal.md 실행이 자동 상속.

요점: SKILL.md는 "이 agent가 누구인지·뭘 잘하는지"를 적고, AGENTS.md는 "이 워크스페이스를 만지는 모든 AI 도구가 따라야 할 룰"을 적습니다. 둘은 경쟁이 아니라 다른 레이어입니다.

CLAUDE.md는 더 이상 사용하지 않습니다 v0.4. 종전에는 CLAUDE.md와 AGENTS.md를 워크스페이스 루트에 함께 두는 설계였으나, 같은 위계에 두 파일을 두면 "어디 적어야 하지" 혼란이 발생하고 두 출처가 발산할 위험이 큽니다. v0.4부터 SoloSquad는 워크스페이스 영속 가이드를 AGENTS.md 단일 파일로 통일합니다. 기존 CLAUDE.md는 마이그레이션이 손대지 않고 컨텐츠만 AGENTS.md로 1회 복사 — 사용자가 필요 없으면 수동 삭제. 최신 Claude Code도 AGENTS.md를 fallback으로 인식하므로 호환성 손실 없음.

3.5 워크플로 메이커 메타-skillv0.5

사용자가 코드를 안 만지고 메신저 대화 1-2턴만으로 새 SKILL.md(또는 workflow chain)를 등록할 수 있게 하는 author 루프 시스템입니다. assets/agents/_meta/workflow-maker/SKILL.md가 author 루프 시스템 프롬프트 역할을 하며, PM이 "이 작업을 자동화하고 싶다" 의도를 분류하면 [META workflow-maker] explicit 호출로 진입합니다.

5단계 상태기

  1. CLARIFY — 입력·출력·실행 빈도 등 1-2턴 명확화 (답 못 하면 default 채택 + 추후 수정 가능 명시)
  2. DRAFT — SKILL.md + (선택) workflow.yaml + (선택) routine cron entry preview
  3. SANDBOX_PROMPT — dry-run sandbox로 1회 실행 → 사용자 확인 요청
  4. AWAIT_CONFIRM — 사용자 승인 게이트 ("확정할까요?")
  5. APPLIED — 결정적 머지: solosquad agent validate <path> → 라우터 atomic swap → 다음 호출부터 즉시 사용 가능. loop_mode.kind: spec-gate draft는 <org>/goals/<goal-id>/goal.md도 자동 emit

CLI 연동

비용 cap (paperclip envelope)

명확화 + draft + validate + sandbox 각 단계 LLM 호출이 <org>/memory/author-costs.jsonl에 누적됩니다 (ts, skill_draft_id, step, usd). workspace.yaml.author 섹션의 per_call_usd·daily_usd·weekly_usd cap 도달 시 PM이 "Daily budget 도달 — 내일 다시 시도해주세요" 응답.

분석 트랙

기존 repo의 .claude/skills/ 자산은 solosquad analyze repo <path>로 흡수합니다. 4-라벨 분류(role / workflow / codebase-fact / domain) 보고서가 <org>/.solosquad/analysis/에 저장되고, 사람 검토 후 solosquad add repo --from-report <report>로 결정적 머지(backup → apply → verify). 두 번째 실행은 analysis-ledger.yaml의 hash로 신규/변경분만 LLM 호출.

3.6 4채널 라우팅 + freq cooldownv0.5

v0.2.4의 60+ 키워드 하드코딩 AGENT_ROUTES는 v0.5에서 제거됐습니다. 각 SKILL.md의 triggers frontmatter가 부트 시 수집되어 라우터 인덱스를 만들고, 4채널 우선순위로 매칭합니다.

채널의미예시
slash명시적 의도 — 즉시 로드 (모호성 없음)/think /plan /build /review /ship
explicitPM이 추론으로 직접 호출[META workflow-maker] 같은 PM-only 채널
keyword1턴 메시지 단어 매칭"사업 전략" → business-strategist
freq최근 N턴 누적 빈도 임계 초과 시 자동 로드 (시맨틱 임베딩 없이 카운팅으로 동등 효과)최근 10턴에 "등기부"·"신호"·"부동산" 합산 ≥ 3

우선순위: slash > explicit > keyword > freq. 동일 채널 안에서는 3-tier 검색 경로(org > user > bundle)로 override.

Freq 채널 hysteresis (cooldown)

한 번 자동 로드된 SKILL은 frontmatter triggers.freq.cooldown_turns (기본 6) 동안 같은 SKILL의 freq 매칭 score 계산을 건너뜁니다. 같은 주제로 길게 대화할 때 매 턴 재발화하는 잡음 회피용. 라우터 메모리 구조: <org>/.solosquad/sessions/<user>.jsonfreqCooldowns: { skill_name: until_turn } 필드가 매 턴 decay.

Freq 등록 SKILL 상한

workspace당 freq 등록 SKILL 상한은 20개. validator가 21번째 등록 시도부터 거부 (매 메시지 정규식 매칭 비용 보호 — p95 < 10ms 목표). 키워드 토큰화 후 hashmap 카운터로 O(|tokens|) 매칭, 정규식은 fallback.

자동 로드 통지 (UX)

freq 채널로 로드된 SKILL은 사용자에게 1회 알림: 🧠 {agent} 컨텍스트 자동 로드됨 (최근 키워드: ...). 사용자가 의도하지 않은 라우팅을 즉시 거부할 수 있습니다.

Hot-reload (atomic swap)

author 루프가 새 SKILL.md를 저장하면 src/bot/index.ts가 라우터를 재빌드합니다. 빌드 중 도착한 메시지는 이전 인덱스로 처리되고, 빌드 완료 후 ref 교체(routeIndexRef = newIndex) — 빌드 중 도달한 메시지가 부분 인덱스에 닿지 않음. 봇 재시작 불필요. 빌드 실패 시 이전 인덱스 유지 + PM에 경고.

메타-skill scanner 분리

_meta/ 폴더는 일반 scanner에서 계속 skip. 별도 listMetaSkills()assets/agents/_meta/*/SKILL.md만 스캔하고 triggers.explicit: true만 인정합니다. workflow-maker 메타-skill은 PM이 explicit 호출로만 진입 — slash/keyword/freq 채널 등록은 거부됩니다.

3.7 위계별 파일 종류 (마스터 표)

워크스페이스 위계 (Layer 0)

경로파일의미사용 시점
<workspace>/.solosquad/agents/{team}/{agent}/ v0.5SKILL.md25 specialist 정체성 매뉴얼 (번들 init 결과, frontmatter prepended)해당 agent spawn 시
~/.solosquad/agents/ v0.5{team}/{agent}/SKILL.mduser 글로벌 SKILL override (모든 워크스페이스 공유)같은 이름의 번들 SKILL을 override
<workspace>/.agents/ v0.5{team}/{agent}/SKILL.mdorg 로컬 SKILL override (최우선)3-tier 검색의 1순위
assets/agents/_meta/workflow-maker/ v0.5SKILL.md + references/*.mdauthor 루프 메타-skill (PM이 explicit 호출로만 진입)PM이 "새 SKILL/workflow 생성" 의도 분류 시
assets/agents/{team}/ v0.6KNOWLEDGE.md팀(=도메인) 공유 craft. _teams/ 평행 hierarchy 폐지 후 co-location같은 team agent spawn 시 자동 inject (8-layer [2])
assets/core/OWNER.md / PRINCIPLES.md / VOICE.md사용자 프로필 / 행동 원칙 / 글쓰기 톤모든 세션 기본 컨텍스트
assets/orchestrator/SKILL.mdPM(오케스트레이터) 역할 정의 v0.3 + v0.4 goal-md-spec appendPM session
assets/routines/morning-brief.md
evening-brief.md
signal-scan.md
experiment-check.md
weekly-review.md
pm-compaction.md v0.3
자동 routine 프롬프트 (5종 + PM compaction)scheduler가 cron 시각에
assets/templates/handoff.md / prd-{type}.md / status.yaml / goal.md v0.4 / AGENTS.md v0.4 / workflow.yaml v0.5 / goal-from-skill.md v0.5워크플로·자율 실행·workflow chain 스캐폴딩 템플릿새 워크플로/goal/skill 생성 시
.solosquad/knowledge/ v0.6(사용자 자유)누적 공용 지식 (의사결정 프레임워크·도메인 용어집)키워드 매칭 시 selective load (8-layer [1])
assets/knowledge/ v0.6bundled workspace knowledge 시작 가이드npm 번들 — .solosquad/knowledge/ fallback키워드 매칭 시 selective load
~/.solosquad/agent-profile-defaults.yaml v0.6(YAML)N개 org가 상속할 user-global agent-profile defaults (budget·voice)workspace bundle → user global → org agent-profile 상속
<workspace>/ v0.4AGENTS.md워크스페이스 단일 영속 가이드 (immutable_paths·modifiable_paths·Output 가드 박제). Codex·Aider·Cursor·최신 Claude Code 모두 동일 파일 인식하는 cross-tool 표준. 사람 only 편집.모든 자율 실행 (solosquad goal run) + PM session이 자동 상속. (CLAUDE.md는 v0.4부터 사용하지 않음 — §3.4 참조)

조직 위계 (Layer 1)

경로파일의미
<org>/.org.yaml조직 메타 (이름, 메신저, 활성 repo)
<org>/memory/signals.jsonl
experiments.jsonl
decisions.jsonl
routine-logs/*.jsonl
pm-skills/*.md v0.3
author-costs.jsonl v0.5
routine 결과·결정 이벤트·PM compaction 외부화·author 루프 비용 누적
<org>/workflows/<wf-id>/_status.yaml
_handoff.md
_events.jsonl v0.3
stage-N-{name}/
활성 워크플로 상태·핸드오프·산출물
<org>/goals/<goal-id>/ v0.4goal.md
results.tsv
_best.json
_last-run.md
자율 실행 의도서 (1회 실행 단위) + cycle 누적 결과 + ship 후보 commit + 마지막 run 요약. solosquad goal run이 갱신.
<org>/slack/ 또는 discord/채널 매핑 yaml메신저 채널 ↔ 조직 매핑
<org>/.solosquad/sessions/ v0.3{user-id}.json — session id, cumulative cost, activeWorkflowId, freqCooldowns v0.5PM session id + 4채널 freq hysteresis 상태
<org>/.solosquad/snapshot.git v0.3(bare repo)memory/ + workflows/ 내부 bare 저장소. PM 턴마다 before/after-spawn 자동 커밋. rollback --workflow <id>의 revert 대상.
<org>/.solosquad/analysis/ v0.5YYYY-MM-DD-*.mdsolosquad analyze repo Markdown 분석 보고서 (4-라벨 분류). 사람 검토 후 --from-report로 머지.
<org>/.solosquad/analysis-ledger.yaml v0.5(YAML)repo 분석 ledger (path + SHA256[:12]). 두 번째 실행은 신규/변경분만 LLM 호출.
<org>/.agents/ v0.5{team}/{agent}/SKILL.mdorg 로컬 SKILL override (3-tier 검색의 최상위). 같은 이름의 user 글로벌·번들 SKILL을 덮어씀.
<org>/core/ v0.6PRINCIPLES.md / VOICE.md조직 철학·톤 (workspace core override). 8-layer [4]
<org>/agent-profile.yaml v0.6(YAML)25 agent의 조직별 modifier + budget + schema_version: 1. 8-layer [5]
<org>/domain/ v0.6market.md / customers.md / product.md조직 도메인 지식. 8-layer [6]
<org>/memory/archive.sqlite v0.6(SQLite + FTS5)cold archive — 8일 이상 JSONL 이동. 4 event_type 인덱싱. 라우터 미스 fallback.
<org>/memory/agent-costs.jsonl v0.6(JSONL)spawn budget 누적 — agent-profile cap 산정
<org>/memory/spawn-decisions.jsonl v0.6(JSONL)8-layer drop 로그 — FTS5 인덱싱
<org>/memory/stop-hook-events.jsonl v0.6(JSONL)spec-gate cycle 평가 결과
<org>/memory/migration-costs.jsonl v0.6(JSONL)0.5→0.6 마이그레이션 자체 LLM fallback 비용 누적

리포 위계 (Layer 2)

경로파일의미
<org>/repositories/<repo>/(코드 파일들 + 자체 .git/)사용자 제품 코드
위 경로.solosquad/repo.yaml리포 메타 (slug, role, target_org)
위 경로CLAUDE.mdClaude Code가 자동 로드하는 리포 지침
위 경로.claude/skills/리포 한정 skill (Claude Code Plugin 호환)

3.8 collab_pattern + 자가 진화 인프라v0.6

v0.5에서 extra bag으로 받던 collab_pattern이 v0.6에서 정식 SkillSpec 필드로 격상되었습니다. SKILL.md frontmatter에서 collab_pattern: hierarchical | graph | dynamic을 명시하면 spawn 시점에 해당 변형 핸드오프 템플릿이 자동 적용됩니다.

collab_patternv0.6 분배 (25 agent)핸드오프 슬라이스
hierarchical22 agent (대다수)Summary / Artifacts / Decisions / Open Questions (4섹션)
graph2 (data-analyst, feature-planner)위 4섹션 + state_object_diff + loop_count
dynamic1 (content-writer)위 4섹션 + routing_signal

Trajectory 추출 (반복 패턴 자동 SKILL 추출)v0.6

같은 (agent sequence + workflow template) 조합이 최근 30일 내 3회+ 발생하면 야간 pm-compaction routine이 draft SKILL.md를 <org>/memory/pm-skills/_suggestions/에 생성합니다. 다음 아침 브리핑에 "지난 30일 동안 X 패턴을 3회 실행하셨습니다. SKILL로 등록할까요?" 1줄 알림. 사용자 확정 시 v0.5 S3의 applyDraft()를 그대로 호출 — 별도 applier 작성 없음 (코드 중복 회피).

30일 rolling window — archive-rotate가 카운트도 함께 decay. 자동 등록 없음 (사람 게이트 유지).

Freq keyword miner (키워드 자동 추천)v0.6

FTS5 archive의 route_miss 이벤트 + author-draft 명확화 질문 N-gram을 분석해 *기존 SKILL frontmatter의 triggers.keyword 배열에 추가할 후보*를 제안합니다. 새 SKILL 생성이 아닌 부분 적용. 사용자 확정 시 applyDraft({ mode: "frontmatter-only" }) 정식 옵션으로 v0.5 코드 재사용 — 본문은 한 글자도 안 건드리고 frontmatter만 패치. 거절 시 (keyword, skill) 쌍은 30일 재제안 금지.

Stop-hook DSL (v0.5 spec-gate 실 작동)v0.6

v0.5에서 명세만 있던 loop_mode.kind: spec-gate가 v0.6에서 Anthropic 2025-12 stop-hook 플러그인 어댑터(src/engine/stop-hook-adapter.ts)로 실제 작동합니다. stop_when 3 형식 지원:

# (1) command — exit code 기반 (가장 결정적)
loop_mode:
  kind: spec-gate
  stop_when:
    command: "npm test"           # exit 0 = 충족, != 0 = 계속

# (2) metric — results.tsv 임계 (v0.4 자율 실행과 호환)
loop_mode:
  kind: spec-gate
  stop_when:
    metric:
      name: "cvr_7day"
      threshold: 0.10
      direction: "≥"

# (3) natural — LLM fallback (budget cap 적용)
loop_mode:
  kind: spec-gate
  stop_when:
    natural: "all tests pass and lint clean"

Hook timeout 5초, 실패 시 보수적으로 *계속* (false positive보다 false negative 안전). 결과는 <org>/memory/stop-hook-events.jsonl에 기록.

3.9 v0.7 farewell archive 포맷v0.7

uninstall이 항상 zip을 먼저 생성하며 포맷은 다음과 같다: archive.yaml (schema_version=1) + manifest.tsv (streaming SHA256) + workspace/ + orgs/<slug>/{memory,workflows,goals,domain,core,repos}/ + credentials/env.template (masked) + REVOKE-CHECKLIST.md + PII-NOTICE.md. v0.8.1은 solosquad import·solosquad archive verify로 reverse path를 잠근다.

클래스 A/A*/B/C/D/E (v0.7 데이터 분류)

클래스uninstall 시 동작
A<org>/repositories/<repo>/ 사용자 코드 (.git 포함)어떤 플래그로도 변경/삭제 0건. 트리 enumerate조차 안 함
A*<repo>/.solosquad/repo.yaml 1개 파일SoloSquad가 repo 안에 만드는 유일한 파일. archive에 포함, 삭제 가능
B<org>/memory/·workflows/·goals/archive 후 디스크 보존(--mode keep 시) or 삭제
Csessions·.org.yaml·workspace.yamlarchive 후 _archived/로 이동. workspace.yaml은 새로 발급 위해 삭제
D.env (시크릿)마스킹된 template만 archive. 원본은 사용자가 별도 관리
ESoloSquad 자체 코드(npm 글로벌)uninstall 대상 외. npm uninstall -g solosquad로 별도 정리
초기화 명령이 없는 이유 solosquad reset·solosquad clean 류는 v0.7에서 영구히 거부. 라이프사이클은 install ↔ uninstall 2단으로 충분 — 재설치는 uninstall + 새 워크스페이스 init으로 표현. 클래스 A(사용자 코드)는 어떤 명령으로도 변형되지 않으므로 reset/clean의 의미가 모호하다.

3.10 멀티 유저 채널 모델v0.8

v0.7까지의 1인 운영자 모델에서 다수 사용자 컨텍스트로 확장. 각 사용자는 command-<handle>(요청)·works-<handle>(작업 결과) 채널 쌍을 갖고, <org>/.solosquad/users/<handle>.yaml에 메타가 저장됩니다. author-guard가 다른 사용자가 자기 채널에서 응답을 가로채는 것을 차단합니다. 등록은 solosquad messenger add <handle>로.

3.11 dev_capability (개발 권한)v0.8.2

SKILL.md frontmatter의 dev_capability: true 필드로 에이전트가 코드 수정 dev action(파일 변경·git commit·push)을 수행할 수 있음을 선언. boolean — 켜기/끄기. 세부 권한은 별도 dev_permissions sub-tree로 분리:

모든 sensitive 명령 (git push, gh pr merge, gh pr close)은 SENSITIVE_BASH_PREFIXES에 박혀 있고 30분 timeout dev-confirmation 게이트를 통과해야 실행됩니다. 결과는 <org>/memory/dev-confirmations.jsonl에 append-only 기록.

3.12 .solosquad/ 폴더 위계 — 왜 디렉터리마다 하나씩 있는가v0.8.5

워크스페이스를 처음 보면 세 위치에 .solosquad/ 폴더가 나타나서 헷갈리기 쉽습니다. 각각 다른 scope의 시스템 메타데이터를 담고, *사용자 콘텐츠*와 *디스크에서 시각적으로 분리*하기 위한 dotfile 컨벤션입니다.

<workspace>/ (사용자가 mkdir로 만든 디렉터리) ├── .solosquad/ (A) 워크스페이스 전역 시스템 설정 │ ├── workspace.yaml ─ 메타 + timezone + brief 시간 │ ├── .env ─ 토큰·OWNER_NAME·OWNER_ROLE (gitignored) │ ├── agents/ ─ 25 specialist SKILL (번들 init) │ ├── routines/ ─ cron routine 정의 │ ├── core/ ─ 시스템 코어 설정 │ ├── templates/ ─ 워크플로우 템플릿 │ ├── orchestrator/ ─ PM session 설정 │ └── knowledge/ ─ 사용자 누적 craft + 도메인 노트 ├── docker-compose.yml (워크스페이스 root에 노출 — 사용자가 직접 편집) ├── Dockerfile └── <org>/ (사용자 콘텐츠 — org = 사업/제품 단위) ├── .org.yaml ─ org 메타 (provider, remote_url, products) ├── .solosquad/ (B) org 단위 멀티유저 식별 │ └── users/<handle>.yaml ─ 메신저 handle → bot_user_id 매핑 ├── core/ ─ org 단위 PRINCIPLES.md, VOICE.md ├── agent-profile.yaml ─ 25 agent의 org별 modifier ├── domain/ ─ org 도메인 지식 ├── memory/ ─ JSONL 메모리 (signals·experiments·decisions) ├── workflows/ ─ org 워크플로우 인스턴스 ├── repositories/<repo>/ ─ 사용자 코드 (클래스 A, 불가침) │ └── .solosquad/ (C) repo ↔ org 메타 │ └── repo.yaml ─ 어느 org 소속인지 + role └── <messenger>/ ─ 메신저별 어댑터 자산

왜 위계마다 따로 있는가

4.온보딩

4.1 사용자 유형 판별

본인이 어느 유형인지 먼저 확인하세요. 유형에 따라 진행할 절차가 달라집니다.

상황해당 유형이동
SoloSquad를 처음 설치. 빈 PC/Mac에 워크스페이스부터 만들고 싶음A. 신규 사용자§4.2
이미 운영 중인 제품 리포가 있고, 거기에 AI 팀을 붙이고 싶음B. 기존 리포 마이그레이션§4.3
예전 버전(v0.1.x 등)으로 이미 사용 중. 최신으로 업데이트해야 함C. 버전 업데이트§4.4

4.2 신규 사용자 — 첫 워크스페이스 만들기

Step 1 — 준비물 설치

Node.js 18+, git, Claude Code CLI가 필요합니다.

macOS:

brew install node git
npm install -g @anthropic-ai/claude-code

Windows (PowerShell):

winget install OpenJS.NodeJS.LTS
winget install Git.Git
npm install -g @anthropic-ai/claude-code

Linux (Ubuntu):

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs git
npm install -g @anthropic-ai/claude-code

확인:

node --version    # v18 이상
git --version
claude --version
참고 — git push 인증은 git 자체가 처리합니다 위 명령으로 git을 설치하면, 첫 git push 시점에 OS가 알아서 인증을 처리합니다 (Windows는 Git Credential Manager가 브라우저 OAuth 자동 호출, macOS는 osxkeychain 통해 PAT 1회 입력 후 영구 저장). SoloSquad가 이 과정에 개입하지 않으며, 별도 셋업 절차도 제공하지 않습니다 — git 표준 흐름 그대로. Linux 사용자는 SSH key 또는 PAT를 별도 셋업해야 할 수 있습니다 (git/GitHub 공식 docs 참조).

의존성 종합 — solosquad doctor가 실제로 점검하는 항목

위 OS별 명령은 *최소 묶음* (node·git·claude)입니다. solosquad doctor는 그 외에도 다음을 점검합니다. 필수 항목이 빠지면 boot 거부, 권장 항목은 warning + 일부 기능 skip.

도구최소 버전필수 여부용도누락 시
nodev18 (LTS 22.x 권장)필수CLI 런타임doctor 1차 실패, 실행 불가
npmv9 (Node 18+에 동봉)필수패키지 설치·업데이트npm install -g solosquad 불가
git2.30+필수워크스페이스 변경 추적 · engineering 에이전트 commit/PRbot·스케줄러 boot 거부
claude (Claude Code CLI)최신필수모든 에이전트 spawn 실행기 (Step 2 OAuth 로그인 전제)PM·specialist 동작 불가
gh (GitHub CLI)2.20+권장engineering 에이전트 PR 흐름 (gh auth status 통과 필요)PR 단계 skip, commit만 동작 (doctor warning)
pwsh (PowerShell 7+)7.xWindows 권장일부 install hook · 크로스플랫폼 스크립트doctor warning (winget install Microsoft.PowerShell)
docker24+선택isolated execution (격리 실행)doctor warning만, 동작 영향 없음

환경 변수 종합 — <workspace>/.solosquad/.env

대부분은 Step 5 마법사가 자동 세팅합니다. 사용자가 직접 손댈 일은 토큰 갱신·로그 위치 변경·v0.9 path-reference 기본 경로 지정 정도입니다.

변수필수 여부값 형식비고
MESSENGER필수discord 또는 slack1 워크스페이스 = 1 메신저. 마법사가 자동 세팅
DISCORD_TOKENDiscord 사용 시 필수MTxxxx.xxxx.xxxx (Bot Token, Client Secret 아님)§5에서 발급
SLACK_BOT_TOKENSlack 사용 시 필수xoxb-...§5에서 발급
SLACK_APP_TOKENSlack 사용 시 필수xapp-...Socket Mode
OWNER_NAME / OWNER_ROLE필수자유 문자열마법사가 자동 세팅. agent가 사용자 호칭·전문성 추정에 사용
REPOS_BASE_PATH선택절대 경로v0.9 path-reference 기본 위치 (예: ~/code)
SOLOSQUAD_LOG_LEVEL선택debug·info·warn·errordefault info
SOLOSQUAD_LOG_DIR·_FILE·_FORMAT선택경로·파일명·json/textdefault: 워크스페이스 내 표준 위치 + text
SOLOSQUAD_NO_DEPRECATION_WARN선택1deprecated CLI 사용 시 경고 숨김
ANTHROPIC_API_KEY사용 안 함Claude Code OAuth(Step 2)에 위임 → SoloSquad 코드는 키를 직접 읽지 않음. revoke-checklist 출력 시 prefix 인식 용도로만 참조
새 기기 기준 자원·네트워크 하한
  • 디스크: npm global 설치 ~500MB (deps + better-sqlite3 prebuild + 번들 master-guide HTML) + 워크스페이스 누적 (memory/archive.sqlite·routine-logs — 사용량에 따라 10MB~수 GB)
  • 메모리: 2GB+ (PM 세션 + 봇 + 스케줄러 + better-sqlite3 캐시가 동시 상주)
  • OS × arch: macOS arm64/x64, Linux x64/arm64, Windows x64 — better-sqlite3 prebuilt 매트릭스. 그 외(FreeBSD, 32-bit, Alpine musl)는 node-gyp 환경(Python 3 + C++ toolchain) 필요
  • 네트워크 outbound: api.anthropic.com (Claude), discord.com 또는 wss://...slack.com (메신저 gateway), registry.npmjs.org (install/update), raw.githubusercontent.com (Claude Code 자산)
  • Shell: bash·zsh 정식 지원. fish 사용자는 npm global bin PATH 수동 설정 필요할 수 있음 (fish_add_path (npm prefix -g)/bin)
  • 타임존: 시스템 TZ가 아니라 workspace.yaml.timezone (default Asia/Seoul)을 모든 cron이 사용. 마법사에서 변경
  • npm 권한: sudo npm install -g는 비권장. macOS/Linux는 npm config set prefix ~/.npm-global$PATH~/.npm-global/bin 추가. Windows winget 설치는 자동 처리
Step 2 — Claude Code 구독 + OAuth 로그인

SoloSquad는 v0.9 기준 Claude Code를 OAuth 인증으로 단일 백엔드 사용합니다. 다른 AI CLI는 현재 지원하지 않습니다.

  1. https://claude.ai 접속 → 설정 → Claude Code 사용 가능한 플랜 구독 (Max 플랜 권장 — 사용량 여유)
  2. Claude Code CLI 설치: npm install -g @anthropic-ai/claude-code
  3. claude login — 브라우저 OAuth flow → 본 머신에 자격증명 영구 저장 (SoloSquad는 자격증명 직접 관리 안 함, Claude Code의 표준 로그인 흐름에 위임)
  4. claude auth status --jsonloggedIn: true 확인

왜 OAuth만: API key 직접 입력 모드는 *키 노출 위험* + *.env 파일 관리 부담*이 있어 SoloSquad가 옵션으로 제공하지 않음. Claude Code의 OAuth는 토큰을 OS의 credential store에 저장 → SoloSquad 코드는 키를 *볼 일 없음* (`claude` CLI가 호출 시점에 알아서 사용).

Step 3 — 메신저 봇 토큰 미리 준비

Slack 또는 Discord 중 하나 선택. 본 문서 §5에서 토큰 발급 단계를 안내합니다. 먼저 5장을 끝내고 돌아오세요.

Step 4 — SoloSquad 설치
npm install -g solosquad
solosquad --version
Step 5 — 워크스페이스 생성

워크스페이스는 SoloSquad가 모든 데이터(메모리·워크플로우·메신저 설정·org 메타)를 보관하는 디렉터리입니다. 원하는 이름의 디렉터리를 직접 하나 만들고, 그 안에서 solosquad init을 실행하면 그 디렉터리가 워크스페이스가 됩니다.

# 예시: 이름은 자유롭게 — 아래는 "my-saas"
mkdir my-saas
cd my-saas
solosquad init

워크스페이스는 여러 개 운영 가능 (n잡 시나리오). 각 디렉터리가 독립 워크스페이스 = 독립 봇·메모리·org. 다른 위치에 만들고 싶으면 cd를 먼저 한 다음 마법사를 실행하세요.

4.2.1 마법사 prompt — 왜 묻는가 + 입력 제약 + 저장 위치v0.8.5

마법사가 차례로 묻는 항목은 다음과 같습니다. 각 prompt 위에 CLI가 1-2줄 헬프 텍스트를 표시합니다 (v0.8.5 신규).

Prompt기본값입력 제약왜 묻는가저장 위치
Where should the workspace be created? (부모에 기존 워크스페이스가 있을 때만 — v0.8.5)현재 경로(cwd)cwd / existing / custom 3-way부모에 다른 .solosquad/가 있어도 새 워크스페이스를 명시적으로 분리하기 위해
Workspace display name디렉터리 basename자유대시보드·brief에서 표시될 이름workspace.yaml.display_name
Your name없음자유PM·specialist agent가 사용자를 부를 때 + 응답 호칭 결정.solosquad/.env OWNER_NAME
Your rolefounderfounder / developer / designer 등 자유agent들이 사용자의 전문성·관심사를 추정해 응답의 기술 깊이·톤 조정. SoloSquad의 1차 사용자가 솔로 창업자라 default가 founder.solosquad/.env OWNER_ROLE
Messenger platform없음discord / slack1 워크스페이스 = 1 메신저. n잡은 별도 워크스페이스로 분리. 채널 페어·broadcast 동작 결정.solosquad/.env MESSENGER
Discord/Slack token없음토큰 문자열봇 API 자격증명. 채널 자동 생성·메시지 송수신.solosquad/.env (gitignored)
Your handle on {messenger} v1.0.2봇 username 자동 추출 (정규화 후)[a-z0-9_]+만 (그 외 문자는 _로 자동 변환)SoloSquad 유일 canonical user identifier. 채널 페어 command-<handle> / works-<handle> 명명 + workflow routing + memory partition. v1.0.2부터 토큰 입력 직후로 위치 이동 (narrative 정합). 안내: 메신저 서버의 다른 멤버 username/display name과 겹치지 않게<org>/.solosquad/users/<handle>.yaml (Step 6 silent write)
TimezoneAsia/SeoulIANA tzmorning/evening brief 시간 + 모든 routine cron의 기준workspace.yaml.timezone
Morning / Evening brief time08:00 / 18:00HH:MM디폴트 routine 2건의 cronworkspace.yaml.briefings
Organization name없음자유org = 사업/제품 단위. 1 워크스페이스에 여러 org 가능 (예: tesla + spacex). 메모리·워크플로우·repo가 org 단위 격리<workspace>/<slug>/.org.yaml
Providergithublocal / github / gitlab / giteaorg의 코드 호스팅 위치 메타데이터. add repo에서 git URL host 추정에 사용. 없으면 local.org.yaml.provider
Org homepage URL빈 값URL 또는 빈 값org 홈페이지(예: github.com/tesla)가 있으면 입력. 분석·linker가 활용. 없으면 Enter.org.yaml.remote_url

v1.0.2 변경 — Step 순서 정합: handle 입력이 이전엔 *Step 5.2 (토큰 4단계 후)*에 있었으나, v1.0.2부터 *Step 3.5 (토큰 직후)*로 이동했습니다. "방금 Discord 토큰 입력 → 이제 그 메신저에서 어떤 이름으로 불릴지 결정" narrative 회복. yaml write는 Step 6 (org 생성 후) silent.

v1.0.2 변경 — handle 의 정체 격상: handle 은 SoloSquad 의 *유일 canonical user identifier* 입니다 (채널 이름 derivation + workflow routing + memory partition). Discord 의 message.author.username 은 더 이상 비교 대상이 아니라 *audit log* 박제용입니다 — seungw1n. 같이 채널명 charset과 mismatch 인 username 도 더는 자기 채널에서 차단되지 않습니다.

v0.8.5 변경 — 부모 디렉터리에 기존 워크스페이스가 없으면, 마법사가 "Initialize workspace at: ..." prompt를 묻지 않고 cwd를 자동으로 사용합니다 (mkdir로 이미 결정한 디렉터리를 또 묻지 않음). 다른 경로에 만들려면 cd를 먼저 하세요.

Step 6 — Claude Code 로그인
claude login

브라우저가 열리며 Claude 계정으로 로그인. 이 OS 사용자 계정에 귀속됩니다.

Step 7 — 환경 진단
solosquad doctor                  # 기본 진단
solosquad doctor --messenger-check  # 토큰까지 실제 검증

모두 이면 통과.

Step 8 — 봇 + 스케줄러 기동

각각 별도 터미널 또는 Docker로 실행.

# Option A — 터미널 두 개
solosquad bot          # 메신저 봇
solosquad schedule     # 자동 routine

# Option B — Docker (v0.5+ — deploy/docker/ 안에서)
cd deploy/docker && docker compose up -d --build
# 자세한 옵션·환경 변수: deploy/docker/README.md 참조
Step 9 — 첫 메시지

Slack 또는 Discord의 #owner-command안녕을 보내세요. 봇이 응답하면 성공.

4.3 기존 리포 마이그레이션

이미 코드 리포가 있고 거기에 AI 팀을 붙이고 싶을 때.

현재 (v0.2.4) 방법v0.2.4

  1. 먼저 §4.2 Step 1~7로 워크스페이스를 만듭니다 (조직 1개라도 생성).
  2. 리포를 워크스페이스로 등록:
    cd ~/solosquad-workspace
    solosquad add repo /path/to/existing-repo      # 로컬 경로
    solosquad add repo https://github.com/me/x.git # 또는 git URL (clone)
  3. 조직이 여러 개면 어느 조직 소속인지 물어봅니다. 단일이면 자동 배정.
  4. 리포가 <workspace>/<org>/repositories/<repo>/로 들어갑니다.
  5. 해당 리포에 자체 .claude/skills/CLAUDE.md가 있으면 그대로 유지 — 해당 리포의 작업 시 Claude Code가 자동으로 로드.

v0.5 분석기 흐름v0.5

기존 리포의 .claude/skills/를 SoloSquad 자산으로 흡수하는 분석기가 출시되었습니다.

solosquad analyze repo /path/to/legacy-repo
# → 4-라벨 분류 (role / workflow / codebase-fact / domain)
# → <org>/.solosquad/analysis/YYYY-MM-DD-*.md 보고서 생성
# → analysis-ledger.yaml에 path + SHA256[:12] 기록 (두 번째 실행은 신규/변경분만 LLM 호출)

solosquad analyze repo <path> --force            # 모델 업그레이드 시 전체 재분석
solosquad analyze repo <path> --prune-orphans    # 파일 사라진 ledger 항목 정리

solosquad add repo /path/to/legacy-repo --from-report 2026-XX-XX-initial.md
# → backup → 결정적 머지 → verify

solosquad add repo <path> --merge-policy append|override|replace
# → 머지 정책 명시 (기본 append)

4.5 기존 리포 가져오기 — 권장 5단계v0.8.3

사용자가 자기 product code를 SoloSquad 워크스페이스 안으로 옮기는 시점은 1회 — 실수의 비용이 크므로 dry-run을 default 권고로 합니다.

# [Step 1] 기존 작업 정리 + commit + push
cd ~/projects/my-saas
git status            # untracked·unstaged 0건 확인
git push origin main  # 안전망

# [Step 2] SoloSquad 초기화
mkdir ~/solosquad && cd ~/solosquad
solosquad init        # 워크스페이스 + 첫 org 생성

# [Step 3] dry-run 미리보기 (v0.8.3 신규)
solosquad add repo ~/projects/my-saas --dry-run
# 출력: From/To, 파일 수·사이즈, IDE 워크스페이스 감지, 심링크,
#       활성 프로세스(lsof/handle.exe), slug 충돌, 위험 요약

# [Step 4] 실제 이동
solosquad add repo ~/projects/my-saas
# 또는: --keep-original 으로 복사 모드 (디스크 2× 사용)

# [Step 5] 검증
solosquad sync                       # repositories/ ↔ .org.yaml 정합
cd ~/solosquad/main/repositories/my-saas
git status                           # working tree clean
git log -1                           # 직전 commit 그대로

4.6 위험 시나리오 + dry-run 감지v0.8.3

위험dry-run 출력
IDE/dev server가 파일 locklsof/handle.exe 호출 → 활성 PID 보고
외부에서 절대경로 심볼릭 링크가 이 리포 가리킴부모 디렉토리 1단계 + ~/에서 readlink 스캔 → 발견 시 경고
repo 내부에서 상위 디렉토리로 가는 절대경로 (config·docs)config/yaml/md grep — hit 파일 수·첫 매칭 표시
같은 org에 같은 slug 리포가 이미 존재"Slug collision: ... already exists" 경고 (실제 이동은 거부)
IDE workspace 파일에 절대경로 설정.vscode/settings.json 등에서 절대경로 패턴 감지 → 수동 갱신 권고
외부 cron/스크립트가 옛 경로 가리킴SoloSquad가 모르는 영역 — 안내 메시지로만

위 위험은 warn 레벨 — 사용자는 무시하고 진행 가능. dry-run 자체는 디스크 변경 0건.

4.4 이전 버전 사용자 업데이트

버전 규칙 (semver)

npm 실제 출시 번호는 별도 semver 트랙. 문서 라벨 v0.x ↔ npm 버전 1:1 매칭 아님 — 정책은 docs/product-roadmap.md §3.5.

현재 버전 확인

solosquad --version           # 설치된 CLI 버전
solosquad update              # 레지스트리 최신과 비교 (실제 업데이트 전 안내만)

일반 업데이트 (마이그레이션 불필요)

대부분의 patch 업데이트는 아래 한 줄로 끝.

solosquad update              # "New version available" → y → 자동 설치
# 또는 수동
npm install -g solosquad@latest
solosquad --version
solosquad doctor              # ✓ 다섯 줄 모두 통과해야 정상

구조 변경 업데이트 (마이그레이션 필요)

solosquad update가 다음과 같은 경고를 표시하면 마이그레이션 필요:

⚠ This update includes breaking changes to the workspace layout.
  A workspace migration is required. After updating the CLI, run:
    solosquad migrate --dry-run   (preview)
    solosquad migrate --apply     (perform)
Apply 전 필수 체크리스트
  • solosquad bot / solosquad schedule 완전히 종료 — 실행 중이면 파일 lock 때문에 이동 실패 가능 (Ctrl+C 또는 docker compose down)
  • VSCode / JetBrains IDE에서 해당 워크스페이스·repo 닫기 (Windows에서 파일 핸들 lock)
  • 외부 하드코딩 경로 점검 — C:\...\Documents\solosquad-repos\<slug> 같은 경로가 있으면 마이그레이션 후 <workspace>\<slug>로 수정
  • 먼저 dry-run 실행 — solosquad migrate(플래그 없음) 또는 --dry-run
  • 작업 중 코드는 미리 git commit / stash

실행 순서:

  1. npm install -g solosquad@latest — CLI 먼저
  2. 워크스페이스로 cd
  3. solosquad migrate --dry-run — 미리보기
  4. 출력 검토 후 solosquad migrate --apply
  5. solosquad doctor로 검증
  6. solosquad bot 재시작

Dry-run 출력 예시

$ solosquad migrate --dry-run
Workspace: /Users/you/solosquad-workspace
Detected structure: v0.1.x  (source)
Target version:     v0.2.0  (installed CLI)

Migration plan (0.1.x → 0.2.0):

  ✓ Move workspace config to .solosquad/
  ✓ Convert each product → organization directory
  ✓ Rename projects/ → workflows/
  ✓ Remove obsolete env vars (REPOS_BASE_PATH)

Estimated disk usage: +0 MB (moves only, no copies)
Backup location:      /Users/you/.solosquad-backups/2026-...

Nothing written yet. Re-run with `--apply` to perform the migration.

Dry-run은 아무것도 바꾸지 않습니다. 마음에 안 들면 그냥 무시.

Apply가 자동으로 해주는 것

여러 버전을 건너뛸 때 (체인 마이그레이션)

v0.1.2를 쓰다가 v0.3.0으로 직접 업데이트할 경우 마이그레이션이 체인으로 순차 실행됩니다:

Chaining migrations:
  0.1.x → 0.2.0  (layout restructure)
  0.2.0 → 0.4.0  (cross-repo enhancements)

각 단계는 dry-run 후 한꺼번에 apply. 중간 실패 시 해당 단계까지만 롤백.

v0.2.4 업데이트 특별 사항

v0.2.4는 메신저 채널 구조와 routine 모델을 바꾸고 Telegram 지원을 제거합니다.

전 사용자 공통:

Discord 사용자:

Slack 사용자:

Telegram 사용자 (지원 제거)v0.2.4 제거

알려진 이슈 (v0.1.x → v0.2.0 점프 시)

마이그레이션 후 첫 작업 — solosquad sync

v0.1.x → v0.2.0 마이그레이션 스크립트는 각 product를 org로 바꾸되 .git을 org 루트에 그대로 둡니다 (v0.1.x의 product=repo 자취). sync 첫 실행 시 두 가지 선택 제공:

⚠ bv-ai-native-po/ has a .git folder at the organization root (v0.1.x legacy layout).
  How would you like to handle this?
  ❯ Normalize — move code into repositories/<org-slug>/ (recommended)
    Keep legacy — register repo.yaml at org root, skip restructure

Docker 사용자 업데이트 흐름

# 모든 명령은 deploy/docker/ 안에서 (v0.5+)
cd deploy/docker

# 1. 컨테이너 중지
docker compose down

# 2. 호스트에서 CLI 업데이트 (마이그레이션 감지 + 실행용)
npm install -g solosquad@latest

# 3. 마이그레이션 필요 시 (워크스페이스 루트에서)
cd ../..
solosquad migrate --dry-run
solosquad migrate --apply

# 4. Docker 이미지 재빌드
cd deploy/docker
docker compose up -d --build

마이그레이션은 반드시 호스트에서. 컨테이너 안에서 하면 볼륨 매핑 혼란 가능. v0.5+ 컨테이너는 ~/.solosquad/ + ~/.solosquad-backups/를 추가로 마운트하므로 user-global SKILL override와 backup이 정상 작동합니다.

멀티 워크스페이스 업데이트

페르소나별 워크스페이스 여러 개 사용 시 CLI 업데이트는 한 번이지만 마이그레이션은 각 워크스페이스에서 개별 실행:

npm install -g solosquad@latest

cd ~/solopreneur
solosquad migrate --dry-run
solosquad migrate --apply

cd ~/elon-24-7
solosquad migrate --dry-run
solosquad migrate --apply

각 워크스페이스는 독립 백업 — 하나 실패해도 다른 워크스페이스 영향 없음.

롤백

solosquad migrate --rollback   # 가장 최근 백업으로 복원

주의: 롤백 후에는 복원된 버전에 맞는 CLI를 쓰세요. v0.2.0로 마이그레이션했다가 v0.1.5로 롤백했다면:

npm install -g solosquad@0.1.5

CLI와 워크스페이스 버전 불일치 시 doctor가 경고합니다.

백업 관리

백업 기본 위치: ~/.solosquad-backups/<ISO-타임스탬프>-v<소스버전>/

solosquad migrate --list-backups        # 목록
solosquad migrate --delete-backup <id>  # 수동 삭제

자동 보존: 최근 5개만 유지. 6번째 마이그레이션 시 가장 오래된 백업 삭제. 중요한 시점의 백업은 외장 디스크나 클라우드 드라이브로 별도 보관 권장.

업그레이드 실패 트러블슈팅

"Cannot find package.json" 류 에러

npm cache clean --force
npm uninstall -g solosquad
npm install -g solosquad@latest

마이그레이션 중단

solosquad migrate --rollback   # 가장 최근 백업으로 복원

그 다음 GitHub Issues에 로그와 함께 보고.

Claude Code 인증 풀림 — v0.2.0+ Docker 이미지가 ${HOME}/.claude를 마운트하므로 호스트의 claude login 상태가 컨테이너에 공유됩니다:

claude login
docker compose restart

베타·개발 채널

solosquad update --channel dev     # 베타 (안정성 보장 없음)
solosquad update --channel stable  # 기본

5.메신저 연결

AI가 메신저에서 메시지를 주고받으려면 봇 계정이 필요합니다. v1.0의 공식 지원 메신저는 Discord 한 종류입니다. Slack 어댑터 코드도 동봉되어 동작하지만 v1.0 SemVer 약속에 포함되지 않습니다 (post-v1.0 슬롯 — `docs/plan/v1.0-formal-launch.md` §5 참조). 한 워크스페이스당 1개 메신저만 선택합니다.

v1.0 권장 경로: §5.2 Discord 8-step 워크스루부터 시작하세요. §5.1 Slack 절은 post-v1.0 참고용으로 남겨 두며, v0.9.x 사용자가 이미 Slack으로 운영 중이라면 그대로 동작하지만 v1.0 출시 후 회귀·SemVer 보장 대상이 아닙니다.
플랫폼v1.0 상태추천 대상장점단점
Discord★ v1.0 공식 지원혼자 쓰되 친근한 UI봇이 채널 자동 생성, 설정 단순서버 이름에 제품 slug 포함 필요
Slackpost-v1.0 슬롯워크스페이스 중심 협업, 조용한 UI채널 구조 깔끔, 검색 강력설정 단계 가장 많음 + v1.0 SemVer 약속 외

5.1 Slack 봇 설정 (9단계) post-v1.0

본 절은 post-v1.0 슬롯 — v1.0 SemVer 약속 대상이 아닙니다. v0.9.x에서 이미 Slack을 운영 중이거나 향후 슬롯이 활성화될 때 참조하세요. 새로 시작하는 사용자는 §5.2 Discord를 권장합니다.

최종 결과물: .envSLACK_BOT_TOKEN=xoxb-...SLACK_APP_TOKEN=xapp-...가 저장되고, Slack 워크스페이스의 #owner-command 채널에서 봇이 응답.

Step 1 — Slack 앱 생성
  1. https://api.slack.com/apps 접속 (본인 Slack 계정 로그인)
  2. 우측 상단 Create New AppFrom scratch
  3. App Name 입력 (예: My AI Team) + 배포할 워크스페이스 선택 → Create App
Step 2 — OAuth & Permissions (봇 권한)

좌측 Features → OAuth & Permissions 이동 → Bot Token Scopes 블록에서 다음 6개 추가:

Scope왜 필요
channels:read봇이 어느 채널에 있는지 조회
channels:history공개 채널 메시지 읽기
chat:write응답 메시지 전송
app_mentions:read@봇이름 호출 감지
groups:read비공개 채널에서도 동작시키려면 필요
channels:manage루틴이 채널 자동 생성/변경 시
주의User Token Scopes가 아니라 Bot Token Scopes 블록에 추가해야 합니다.
Step 3 — 워크스페이스 1차 설치

OAuth Tokens for Your WorkspaceInstall to Workspace → Allow → Bot User OAuth Token (xoxb-...) 복사 → 메모장 저장. 이 값이 SLACK_BOT_TOKEN.

Step 4 — Socket Mode
  1. 좌측 Settings → Socket Mode
  2. Enable Socket Mode ON
  3. App-Level Token 생성 팝업에서 Token Name + Scope connections:write 추가 → Generate
  4. 생성된 xapp-1-... 즉시 복사 (페이지 벗어나면 못 봄). 이 값이 SLACK_APP_TOKEN.
자주 하는 실수App Token에 Signing Secret을 넣는 경우. App Token은 xapp-로 시작.
Step 5 — Event Subscriptions

좌측 Features → Event Subscriptions

  1. Enable Events ON
  2. Subscribe to bot events 확장 → Add Bot User Event:
    • message.channels (공개 채널)
    • message.groups (비공개 채널 — #owner-command가 🔒이면 필수)
    • app_mention (@봇 호출)
  3. Save Changes
이 단계 누락 시봇은 정상 기동하지만 메시지가 전혀 전달되지 않음.
Step 6 — 워크스페이스 재설치 (필수)

Scope/Event 변경 후 노란 배너 → reinstall your app 클릭. Bot Token이 새로 발급될 수 있음 — 새 값으로 메모장과 .env 갱신.

Step 7 — #owner-command 채널
  1. 채널 생성: owner-command (정확히 이 이름)
  2. 공개/비공개 선택 (비공개면 Step 5의 message.groups 필수)
  3. 채널 상단 → Integrations → Add apps → 본인 봇 → Add. 또는 /invite @봇이름
Step 8 — .env 작성
MESSENGER=slack
SLACK_BOT_TOKEN=xoxb-1234567890-...
SLACK_APP_TOKEN=xapp-1-...
SLACK_COMMAND_CHANNEL=owner-command
Step 9 — 검증
solosquad doctor --messenger-check
solosquad bot

Slack auth.test → <봇사용자명>이 ✓이고, #owner-command에 "안녕" → 응답 오면 성공.

5.2 Discord 봇 설정 (8단계)

최종 결과물: .envDISCORD_TOKEN=...이 저장되고, Discord 서버의 #owner-command에서 봇이 응답.

Step 1 — Application 생성
  1. https://discord.com/developers/applications 접속
  2. 우측 상단 New Application
  3. 이름 입력 → Create
Step 2 — Bot 토큰 발급
  1. 좌측 Bot 클릭
  2. Reset Token → Yes
  3. 나타난 토큰을 즉시 복사 (한 번만 보여줌). 이 값이 DISCORD_TOKEN.
Step 3 — Privileged Gateway Intents

같은 Bot 페이지 아래로 스크롤 → Privileged Gateway Intents:

  • Message Content Intent필수 (켜지 않으면 메시지 본문이 빈 문자열로 도착해 봇이 응답 못 함)

Save Changes.

Step 4 — OAuth2 URL Generator

좌측 OAuth2 → URL Generator

  • Scopes: bot, applications.commands
  • Bot Permissions: View Channels, Send Messages, Read Message History, Manage Channels, Create Public Threads (v0.2.4+)

Generated URL 복사 → 브라우저에서 열기 → 서버 선택 → Authorize.

Step 5 — 서버 이름 규칙

봇이 서버를 제품에 연결하려면 서버 이름에 제품 slug가 포함되어야 함.

  • 제품 등록: My Startup (slug: my-startup)
  • Discord 서버 이름이 My Startup · My Startup Workspace · my-startup-dev → 자동 매핑 성공
  • 이름이 Awesome Team이면 매핑 실패 → 서버 설정 → Overview → Server Name으로 변경
Step 6 — 채널 자동 생성 확인

봇 초대 후 solosquad bot 실행 시 자동 생성:

📁 AI Team Reports #daily-brief #signals #experiments #weekly-review #owner-command ← 여기서 봇에게 명령

이미 같은 이름 채널이 있으면 생성 생략.

Step 7 — .env 작성
MESSENGER=discord
DISCORD_TOKEN=MTIzNDU2...
Step 8 — 검증
solosquad doctor --messenger-check
solosquad bot

Discord /users/@me → <봇사용자명>이 ✓이고, #owner-command에 "안녕" → 응답 오면 성공.

5.3 동작 검증

두 플랫폼 공통:

solosquad doctor                    # 기본 환경 점검
solosquad doctor --messenger-check  # 메신저 토큰까지 live API로 검증
solosquad bot                       # 봇 기동, 콘솔에 로그 출력
solosquad bot --debug               # 자세한 로그

#owner-command안녕 → 봇이 [제품명 (agent-name)] ... 형태로 응답하면 전 구간 정상.

Telegram은? v0.2.4부터 Telegram 지원이 제거되었습니다. 사유는 native thread 부재로 인한 UX 격차, 단일 chat_id 구조와 멀티 워크플로 충돌, 사용자 비율 대비 유지 비용. 기존 사용자는 §4.4를 참조해 Discord 또는 Slack으로 전환하세요.

6.사용법

6.1 명령어 레퍼런스

현재 사용 가능 (v0.7.0 ~ v0.8.3)v0.7~v0.8.3

명령어도입역할
solosquad initv0.1워크스페이스 초기화 마법사 — 에이전트·routine 복사, 메신저 토큰 입력, 제품 등록
solosquad botv0.1메신저 봇 기동. v0.3 PM 모드 + v0.5 4채널 라우터 + atomic swap hot-reload
solosquad schedulev0.1자동 routine 스케줄러 기동 (cron)
solosquad statusv0.1대시보드: 등록 제품, 워크플로, 최근 활동
solosquad doctorv0.1환경 진단 (Node, git, claude, 토큰, 경로)
solosquad doctor --messenger-checkv0.2메신저 토큰을 live API로 검증
solosquad updatev0.1npm 최신 버전 비교 + 자동 설치 안내
solosquad run-routinev0.1대화형 routine 수동 실행
solosquad run-routine <name>v0.1특정 routine 실행 (signal-scan, morning-brief, ...)
solosquad run-routine --allv0.1모든 routine 순차 실행
solosquad migratev0.2버전 간 워크스페이스 구조 변환 (기본 dry-run)
solosquad migrate --applyv0.2실제 마이그레이션 수행
solosquad migrate --rollbackv0.2직전 backup으로 복원
solosquad add org <name>v0.2워크스페이스에 새 조직 추가
solosquad add repo <url|path>v0.2리포 등록 (clone 또는 로컬 이동)
solosquad add repo --from-report <file> [--merge-policy append|override|replace]v0.5분석 보고서 기반 결정적 머지 (backup → apply → verify)
solosquad syncv0.2repositories/ 스캔 + .org.yaml 동기화 + legacy .git 정리 안내
solosquad pm status / reset / compactv0.3PM session 상태·재시작·compaction
solosquad workflow list / show <id>v0.3워크플로 목록·상세
solosquad workflow focus <wf-id> [--clear]v0.3(user, org) 활성 워크플로 설정
solosquad rollback --workflow <id> [--to <sha>] [--list]v0.3워크플로 직전 spawn 결과 revert (snapshot.git)
solosquad goal new / list / show / run / status / stop / verifyv0.4자율 실행 goal 관리 + N시간 자율 실행 루프 (Codex /goal + AGENTS.md 2계층)
solosquad goal run <goal-id> [--hours N | --cycles N]v0.4background PM session 기동 → metric-driven keep/discard cycle
solosquad agent add --name X --team Yv0.5새 SKILL 스캐폴딩 (frontmatter 템플릿 + 빈 body)
solosquad agent list / infov0.5등록된 SKILL 인벤토리·상세
solosquad agent validate <path> [--all] [--corpus]v0.5SKILL.md 스키마 + 필수 섹션 검증. --all은 CI 게이트(npm run validate-skills)
solosquad analyze repo <path> [--force] [--prune-orphans]v0.5기존 리포 .claude/skills/ 4-라벨 분류 보고서. ledger 기반 증분 처리
solosquad readiness check [--target v0.6]v0.6workspace 스캔 — v0.5 데이터 N건·4종 워크플로 실행 카운트·author SKILL Y건·ledger 분석. 회고 본문 시작 전 자동 측정. 통과/부족 판정 + exit code
solosquad memory search <query> [--limit N] [--event-type X] [--org <slug>]v0.6FTS5 cold archive 전문 검색. --event-type로 routine_log / route_hit / route_miss / author_turn / spawn_decision 필터
solosquad memory stats [--disk] [--org <slug>]v0.6archive 행 수·oldest/newest·event_type 별 분포. --disk로 SQLite 파일 크기 보고
solosquad agent reload [--org <slug>]v0.6라우터 수동 재빌드 — fs_watch.mode: manual 환경에서 명시 호출 (§6.4)
solosquad uninstall [--mode full|keep|archive-only] [--dry-run] [--force] [--archive-path <p>]v0.7 (v0.8.4 surface)farewell archive 생성 후 SoloSquad 자산 정리. --mode: full(기본·완전 정리) / keep(workflows·memory·knowledge 보존, 재설치용) / archive-only(아카이브만, cleanup 스킵). --dry-run으로 미리 확인 권장. repositories/ 사용자 코드는 어떤 플래그로도 변경/삭제 0건. v0.8.4에서 --archive-only·--keep-workspace·--also-purge-backups는 deprecated alias로 전환(v1.0 제거 예정), --scrub-content는 즉시 제거
solosquad import <archive.zip> [--mode merge|replace]v0.8.1 (v0.8.4 surface)farewell archive를 새 워크스페이스로 복원. manifest SHA 검증 후 --mode merge(기본) 또는 --mode replace. v0.8.4에서 boolean --merge·--replace는 deprecated alias로 전환
solosquad archive verify <archive.zip>v0.8.1archive 무결성 검증 (manifest.tsv SHA + PII-NOTICE 스캔)
solosquad backup list | delete <id> | purge [--keep-recent N] [--dry-run]v0.8.4~/.solosquad-backups/ 라이프사이클 관리. 기존 migrate --list-backups·migrate --delete-backup·uninstall --also-purge-backups를 흡수 (1 minor deprecation 후 v1.0 제거)
solosquad messenger add <handle> [--platform discord|slack]v0.8멀티유저 등록 — command-<handle>·works-<handle> 채널 자동 부트스트랩 + author-guard 활성
solosquad add repo <path> [--dry-run] [--keep-original]v0.8.3 (v0.8.4 surface)--dry-run으로 위험 시나리오 5종 사전 점검 (디스크 0 write). --keep-original로 원본 보존 복사 모드. v0.8.4에서 --inspect 별칭은 deprecated (v1.0 제거)
solosquad logs [--level X] [--tail N] [--follow] [--since "1 hour ago"] [--type X]v0.8.3runtime + 4 operational jsonl 한 곳에서 조회. --type: runtime/costs/spawn/stop-hook/dev-confirm/migration (반복 지정 가능)

추후 추가 예정v1.1+

명령어 / 인프라버전역할
solosquad goal queue <id>v1.11-active-per-org 세마포어의 queue 진입
solosquad experiment new/list/show/run/stop/concludev1.1실험 인프라 (Amplitude 4 패턴 차용)
4 main 봇 직원화 (chief + designer + engineer + marketer)v1.1Hermes V2 Main+Specialist 2-tier. chief 는 organization 위계 + 도메인 전문가 겸업
디렉토리 재편 (assets/ 폐지 → 루트 5 디렉토리)v1.1agents/main + agents/specialists + skills/ + user/ + team/ + schedules/ (구 routines)
팀 4축 재편 (chief / engineering / design / marketing)v1.1구 strategy→chief / growth→marketing / experience→design. team/{team}/{KNOWLEDGE,OKR}.md
5 specialist 병합 (25 → 20)v1.1backend-engineer · data-engineer · idea-scoper · researcher · content-marketer 신설
Forum Channel + 9-hop diagnostic + Echo guardv1.2L1 Gateway 표면 (Discord 우선)
웹 대시보드 상호작용 클라이언트v1.x (cascade-shifted)구 v1.1 — 읽기 전용 시각화·인박스 (별도 리포)
지식 온톨로지 MCP 연결v1.x (cascade-shifted)구 v1.2 — Notion·Obsidian·외부 API·타 에이전트

6.2 일상 운영

메신저에서 일 시키기 (v0.6)v0.6

PM 세션과의 멀티턴 대화가 기본 흐름입니다. PM이 의도를 분류해 specialist를 Task tool로 spawn합니다. 라우터는 4채널(slash/explicit/keyword/freq) 우선순위로 적절한 SKILL을 컨텍스트에 inject.

입력 예시배정 에이전트
"랜딩페이지 카피 써줘"Content Writer (그로스)
"경쟁사 분석해줘"Desk Researcher (경험)
"이번 주 실험 결과 정리해줘"Data Analyst (전략)
"회원가입 API 설계해줘"API Developer (엔지니어링)
"로그인 화면 UI 만들어줘"UI Designer (경험)
"가격 정책 짜줘"Business Strategist (전략)
"이번 분기 GTM 계획 세워줘"GTM Strategist (그로스)

매칭 없으면 PM이 general 모드로 응답하거나 추가 명확화 질문.

PM 모드 멀티턴 대화v0.3

사용자: "랜딩페이지 리디자인 진행해줘"
PM:    기존 랜딩의 어떤 부분을 바꾸시려는가요?
        (1) 히어로 섹션  (2) 가격 섹션  (3) 전체 리뉴얼
사용자: 1번
PM:    [PRD 작성 → desk-researcher spawn → ui-designer spawn → ...]
       완료. stage-1-research/와 stage-2-design/에 산출물.

슬래시 명령v0.3

의도를 명시하고 싶으면 자연어 대신 슬래시 사용 (gstack 패턴 차용). [SLASH /xyz] <args>로 PM 프롬프트에 래핑되어 안정 파싱.

메신저에서 새 SKILL 만들기v0.5

"이런 작업 자주 하니까 자동화하고 싶다" → PM이 의도를 분류해 workflow-maker 메타-skill을 explicit 호출 → 1-2턴 명확화 → SKILL.md draft → 사용자 승인 → atomic swap → 다음 호출부터 즉시 사용 가능. §3.5 참조.

0.5 → 0.6 마이그레이션v0.6

v0.5에서 올라오는 사용자는 다음 순서로 진행합니다.

  1. npm install -g solosquad@latest — CLI 먼저 갱신
  2. solosquad migrate --dry-run — Pass 1 시뮬레이션 + 보고서 <org>/memory/migration-2026-XX-dryrun.md 생성. 파일시스템 변경 0건
  3. 보고서 검토 — 이동 N건 / 사람 검토 필요 M건 / 변경 0건(이미 final이었음) K건 분류
  4. solosquad migrate --apply --confirm--confirm 플래그 없으면 거부 (실수 방지)
  5. human_review_required: true 마킹된 항목은 사용자가 사후 수동 보강 후 재실행
  6. Pass 2 — solosquad agent validate --all 자동 실행 + 실패 항목 STDOUT 보고

마이그레이션 자체에 budget cap (workspace.yaml.migration.budget_usd, 기본 5 USD) 적용. 휴리스틱 fail-soft가 LLM fallback으로 떨어질 때 누적 토큰 폭증 방지. cap 도달 시 *나머지 항목은 human_review_required 마킹*하고 안전 종료. 누적은 <org>/memory/migration-costs.jsonl.

readiness checkv0.6

v0.6 회고 본문 시작 전 자동 측정 도구. solosquad readiness check --target v0.6 실행 시 workspace 스캔 → v0.5 사용 데이터(author-costs.jsonl 행 수) / 4종 워크플로 실행 카운트 X/4 / author SKILL Y건(<org>/.agents/ + ~/.solosquad/agents/) / ledger 분석 → "S1 시작 가능 ✓" 또는 "데이터 부족 — N주 추가 권고" 결정적 출력. exit code로 자동화 가능.

fs.watch mode 선택v0.6

v0.6은 외부 편집(VSCode 직접 수정 · git pull · 별도 CLI 조작)도 라우터에 자동 반영합니다 — chokidar 기반 3-tier watch + 300ms debounce. workspace.yaml.fs_watch.mode로 3 모드 선택:

추가 안전 모드 fs_watch.git_only: true 설정 시 *HEAD ≡ upstream + clean tree*만 자동 반영 — git pull로 검토 안 된 SKILL이 작동 중 봇에 즉시 반영되는 위험을 차단합니다.

6.3 권장 첫 작업 (온보딩 직후)

  1. solosquad doctor가 모두 ✓ 인지 확인.
  2. 메신저 #owner-command안녕 → 응답 확인.
  3. 첫 routine 수동 실행:
    solosquad run-routine signal-scan
    #workflow 채널의 system-daily-signals 스레드에 결과가 표시되는지 확인.
  4. 사용자 프로필 수정assets/core/OWNER.md (또는 .solosquad/core/OWNER.md)를 본인 이름·역할·관심사로 갱신. 모든 agent가 매 세션 이 파일을 참조.
  5. 행동 원칙core/PRINCIPLES.md에 본인의 의사결정 기준 적기 (예: "현금흐름 우선", "VC 펀딩 받지 않음", "주 50시간 이하 작업").
  6. 글쓰기 톤core/VOICE.md에 콘텐츠 어조 명시 (예: "전문적이지만 따뜻한 톤, 과장 표현 금지").
  7. 제품 이름 결정 + 워크플로 폴더 생성 (~/solosquad-workspace/<org>/workflows/wf-2026-XX-XX-test/ 직접 생성).
  8. brief 시각 조정 — .solosquad/workspace.yamlbriefings.morning.time 등 본인 생활 패턴에 맞춰 수정.

6.4 자동 루틴v0.8.5

4건. 사용자가 보는 brief 3건 + 시스템 인프라 1건. v0.8.5에서 분석 routine 4건(signal-scan / experiment-check / weekly-review / v06-retrospective-stats)을 영구히 제거하고, 인프라 2건(archive-rotate + log-rotate)을 단일 system-housekeeping으로 통합.

사용자가 보는 brief (3건)

기본 시각이름출력 위치역할
08:00 매일Morning Briefworks-<handle>야간 일과 요약 (활성 goal·진행 워크플로우·결정)
18:00 매일Evening Briefworks-<handle>오늘 결정·완료 + 내일 우선순위 (decisions.jsonl append)
23:00 매일 v0.3PM Compactionworks-<handle>system-pm-compaction완료 워크플로우 외부화 (memory/pm-skills/) — PM 컨텍스트 관리

시스템 인프라 (사용자 의식 X, 항상 활성, silent)

기본 시각이름역할
00:00 매일 v0.8.5System Housekeeping두 결정적 작업 순차 (try/catch 격리): ① JSONL → archive.sqlite FTS5 인덱싱 + retention pass · ② .solosquad/logs/ 14일 이전 파일 삭제

v0.8.5 변경 — routine 9건 → 4건:

업데이트 ↔ 마이그레이션 흐름v0.8.3

두 명령은 별개입니다. solosquad doctor가 CLI ↔ workspace version mismatch 감지 시 어느 쪽이 필요한지 명시적으로 안내합니다 (§7.3).

# 1. 진단
solosquad doctor
# ├─ "CLI: v0.8.3,  workspace: v0.8.3" → OK
# ├─ "CLI: v0.8.3,  workspace: v0.7.0" → solosquad migrate --apply 권고
# └─ "CLI: v0.7.0,  workspace: v0.8.3" → npm install -g solosquad@latest 권고

# 2. CLI 업그레이드 (npm 패키지 자체)
solosquad update          # npm registry 확인 + 자동 self-install
# 또는: npm install -g solosquad@latest

# 3. (CLI 새 버전이 되면) 워크스페이스 정합
solosquad migrate --dry-run    # 무엇이 바뀔지 미리보기
solosquad migrate --apply      # 적용 (자동 backup → apply → verify)
solosquad migrate --rollback   # 직전 backup으로 복원 (필요 시)

시간대·시각·활성화 변경

.solosquad/workspace.yaml을 직접 편집:

timezone: Asia/Seoul        # IANA tz 자유
briefings:
  morning:
    time: "08:00"
    enabled: true
  evening:
    time: "18:00"
    enabled: true
background_routines:
  signal_scan:
    time: "12:00"
    enabled: true
  experiment_check:
    time: "16:00"
    enabled: true
  weekly_review:
    day: "sunday"
    time: "20:00"
    enabled: true

수동 실행

solosquad run-routine                # 인터랙티브 메뉴
solosquad run-routine signal-scan    # 특정 루틴
solosquad run-routine --all          # 전부

7.용어 사전

AI/개발 초보자가 이 문서나 코드를 읽다 막힐 만한 모든 용어와 파일명을 친절히 설명합니다.

7.1 핵심 용어

Workspace (워크스페이스)
SoloSquad 사용자의 최상위 폴더. 보통 ~/solosquad-workspace. 안에 1개 이상의 organization을 담는다. 워크스페이스는 사용자 한 명의 "AI 비서 본부".
Organization (조직, org)
워크스페이스 안의 사업/제품 단위. 예: 본업, 사이드 프로젝트. 각자 메모리·워크플로·메신저 채널이 분리된다. 폴더명이 <slug>가 됨 (예: my-startup).
Repository (리포지토리, repo)
실제 코드가 있는 git 저장소. 조직 1개에 여러 repo가 있을 수 있다. 위치: <workspace>/<org>/repositories/<repo>/.
Agent (에이전트)
한 역할(예: Business Strategist)을 수행하는 AI 일꾼. SoloSquad는 25명의 specialist + 1명의 PM(v0.3+)이 있음.
Specialist (스페셜리스트)
특정 도메인 전문가 agent. 25명. PM(orchestrator)과 구분.
PM / Orchestrator (PM, 오케스트레이터)
사용자와 직접 대화하는 영구 에이전트. v0.3에서 도입. specialist를 spawn해서 멀티 단계 워크플로를 진행.
SKILL.md
한 agent의 정체성·작동 방식을 적은 매뉴얼 파일. Anthropic Agent Skills 공식 포맷.
KNOWLEDGE.md (v0.6)
한 팀(=도메인)의 공유 craft·정의·anti-pattern을 모은 파일. agents/{team}/KNOWLEDGE.md 위치 (v0.6 co-location). 같은 팀 agent가 spawn될 때 8-layer assemble의 [2] layer로 자동 inject.
Org Layer (v0.6)
조직별 색채를 흡수하는 3 신설 자산. <org>/core/{PRINCIPLES,VOICE}.md (조직 철학·톤) + <org>/agent-profile.yaml (25 agent modifier + budget) + <org>/domain/ (조직 도메인 지식). 워크스페이스 SKILL은 한 줄도 안 변경, 조직 색채는 이 3 자산에서만 들어옴.
Workspace Knowledge (v0.6)
.solosquad/knowledge/ — 사용자 누적 공용 지식 (의사결정 프레임워크·도메인 용어집). agent SKILL.md를 짧게 유지하기 위해 craft·도메인 지식을 분리. 키워드 매칭 시 selective inject.
8-layer JIT inject (v0.6)
spawn 시점에 workspace knowledge → team KNOWLEDGE → agent SKILL → org core → agent-profile → org domain → memory/handoff → repo 순으로 컨텍스트를 조립. max_context_tokens 도달 시 우선순위 낮은 layer부터 drop. §2.5 참조.
Budget envelope (v0.5 author + v0.6 agent)
paperclip 차용 LLM 호출 cap. v0.5에서 author 루프에만 적용, v0.6에서 org × agent 단위로 일반화. agent-profile.yamlbudget.daily_usd / weekly_usd / on_cap_action. 도달 시 spawn 거부 + PM 응답. 누적은 <org>/memory/agent-costs.jsonl.
FTS5 cold archive (v0.6)
<org>/memory/archive.sqlite — 8일 이상 된 JSONL을 SQLite FTS5 가상 테이블로 옮겨 검색 가능 형태로 보관. 매일 00:00 archive-rotate routine 자동 수행. 4 event_type 인덱싱(route_hit / route_miss / author_turn / spawn_decision) + 기존 routine_log. 라우터 미스 시 fallback 회상.
Trajectory 추출 (v0.6)
같은 (agent sequence + workflow template) 조합이 30일 내 3회+ 발생 시 자동 SKILL draft 제안. 야간 pm-compaction 단계. v0.5 applyDraft() 직접 재사용 (코드 중복 0). 자동 등록 없음 — 사람 게이트 유지.
Freq miner (v0.6)
FTS5 route_miss + author-draft 명확화 질문 N-gram → 기존 SKILL의 triggers.keyword에 추가 제안. applyDraft({ mode: "frontmatter-only" })로 본문 무변경 + frontmatter만 패치.
Stop-hook DSL (v0.6)
v0.5 loop_mode.spec-gate를 Anthropic 2025-12 stop-hook 플러그인으로 실 작동. 3 형식: command (exit 0) · metric (results.tsv 임계) · natural (LLM fallback + budget cap). 5초 timeout, 실패 시 보수적으로 계속.
collab_pattern (v0.6)
SKILL.md frontmatter 정식 필드 (v0.5에선 extra bag 처리). hierarchical | graph | dynamic. 25 agent 분배: 22 hierarchical · 2 graph (data-analyst, feature-planner) · 1 dynamic (content-writer). spawn 시 해당 변형 핸드오프 템플릿 자동 적용.
Hot-reload (chokidar, v0.6)
fs.watch 기반 라우터 자동 재빌드. 3-tier watch (workspace · org · user-global) + 300ms debounce + atomic swap. workspace.yaml.fs_watch.mode: auto / prompt (기본) / manual. git_only 안전 모드는 HEAD ≡ upstream + clean tree만 허용.
schema_version: 1 (v0.6)
v0.6 신설 자산(.org.yaml · agent-profile.yaml · v0.6 ledger)에 부착된 forward-compat 플래그. v0.7 마이그레이션이 version 체크로 호환성 분기.
Routine (루틴)
정해진 시각에 자동 실행되는 작업. SoloSquad에는 5종 (Morning Brief, Signal Scan, Experiment Check, Evening Brief, Weekly Review).
Workflow (워크플로)
여러 단계의 작업을 묶은 프로젝트. PMF Discovery·Feature Expansion·Rebranding·Rapid Prototype 4종 디폴트. 각 워크플로는 <org>/workflows/<id>/ 폴더로 존재.
Stage (스테이지)
워크플로 안의 한 단계. stage-1-research/ 같은 폴더로 산출물 저장.
Handoff (핸드오프)
한 stage가 끝날 때 다음 agent에게 컨텍스트를 넘기는 산출물. _handoff.md 파일에 Summary·Artifacts·Decisions 등 표준 섹션으로 작성.
Brief (브리프)
아침/저녁에 봇이 전달하는 요약 보고. Morning Brief = 야간 일과 + 오늘 예정. Evening Brief = 주간 일과 + 야간 예정.
Signal Scan (시그널 스캔)
시장에서 관련된 신호(트렌드·경쟁사 움직임·뉴스)를 자동으로 탐지하는 routine. 결과는 signals.jsonl에 누적.
Experiment Check (실험 점검)
진행 중인 가설/실험의 상태를 점검하는 routine. experiments.jsonl에 누적.
Agent Router (에이전트 라우터)
사용자 메시지를 보고 어떤 specialist를 호출할지 결정하는 모듈. v0.5에서 4채널 trigger(slash > explicit > keyword > freq) + 3-tier 검색 + atomic swap hot-reload로 진화. AGENT_ROUTES 하드코딩은 제거되고 각 SKILL.md의 triggers frontmatter에 분산.
Spawn (스폰)
PM(또는 router)이 specialist agent를 새 fresh session으로 시작시키는 동작. 매번 독립 — state는 외부 파일에 보관. v0.3+는 PM이 내장 Task tool로 spawn하며 [stage:<id> wf:<id>] 마커를 프롬프트에 부착.
4채널 라우팅 (v0.5)
SKILL 매칭 4채널 — slash(명시 의도) > explicit(PM 직접 호출) > keyword(1턴 매칭) > freq(N턴 누적 빈도 임계). 각 SKILL.md frontmatter의 triggers 필드가 부트 시 라우터 인덱스로 수집됨.
Freq cooldown (v0.5)
한 번 freq 채널로 자동 로드된 SKILL은 cooldown_turns (기본 6) 동안 재발화 금지 (hysteresis). 같은 주제 장기 대화 시 잡음 회피. 상태는 <org>/.solosquad/sessions/<user>.jsonfreqCooldowns 필드에 매 턴 decay.
Hot-reload / Atomic swap (v0.5)
새 SKILL.md 저장 시 라우터 인덱스를 background로 재빌드 → ref 교체. 빌드 중 도착한 메시지는 이전 인덱스로 처리. 봇 재시작 불필요.
Author 루프 (v0.5)
메신저에서 PM과 1-2턴 대화로 새 SKILL.md를 만드는 5단계 상태기 (CLARIFY → DRAFT → SANDBOX_PROMPT → AWAIT_CONFIRM → APPLIED). assets/agents/_meta/workflow-maker/SKILL.md 메타-skill이 시스템 프롬프트.
Spec-gate / Loop mode (v0.5)
SKILL.md loop_mode.kind: spec-gate면 Ralph 루프(stop_when 조건) 모드. author 루프가 자동으로 <org>/goals/<goal-id>/goal.md도 emit → v0.4 goal-runner에 자율 cycle로 등록.
3-tier SKILL 검색 (v0.5)
같은 이름 SKILL이 있을 때 우선순위: <org>/.agents/ > ~/.solosquad/agents/ > <workspace>/.solosquad/agents/ (번들). 상위 계층이 override.
Stateless / Stateful (무상태/유상태)
매 호출이 독립이면 stateless, 호출 간에 state를 들고 있으면 stateful. SoloSquad의 specialist는 stateless, PM session은 stateful.
JIT (Just-in-Time) Injection
모든 컨텍스트를 미리 로드하지 않고 *그 호출에 필요한 것만* 그때그때 주입하는 원칙. 토큰 비용 폭증 방지.
Memory (메모리)
routine·결정·신호 결과를 영속 저장하는 곳. v0.6 기준 JSONL append-only(signals/experiments/decisions/author-costs/agent-costs/spawn-decisions/stop-hook-events/migration-costs) + PM compaction 외부화(memory/pm-skills/) + per-org snapshot.git + FTS5 cold archive(archive.sqlite — 8일+ 자동 이전, 4 event_type 인덱싱).
P/E/T (Persistent / Episodic / Transient)
메모리를 영속/에피소드/일시 3계층으로 분류하는 어휘. SoloSquad의 SKILL은 Persistent, workflows는 Episodic, Claude session prompt는 Transient.
3-Layer Context
워크스페이스(Layer 0) / 조직(Layer 1) / 리포(Layer 2) 3 계층. 데이터 격리의 기본 단위.
PRD (Product Requirements Document)
제품 요구사항 문서. PM이 작성하여 specialist들에게 전달.
PMF (Product-Market Fit)
제품-시장 적합도. 사업이 "이 제품이 정말 필요한 시장이 있는가"를 검증하는 단계.
GTM (Go-To-Market)
시장 진입 전략. 어떤 채널·메시지·가격으로 첫 사용자를 얻을지 계획.
Anthropic / Claude
Anthropic은 Claude AI 모델을 만든 회사. Claude Code는 Anthropic이 만든 코딩 CLI. SoloSquad는 Claude Code를 백엔드 엔진으로 사용.
Claude Code
Anthropic이 만든 범용 코딩 CLI 도구. SoloSquad는 이 도구의 claude 명령을 호출해 AI 응답을 받는다. 별도 설치 필요: npm install -g @anthropic-ai/claude-code.
npm (Node Package Manager)
Node.js 패키지(라이브러리·CLI) 설치 도구. npm install -g solosquad로 SoloSquad 설치.
CLI (Command Line Interface)
명령줄 인터페이스. 터미널에서 명령어를 쳐서 사용하는 프로그램. solosquad가 CLI.
cron (크론)
정해진 시각에 작업을 반복 실행하는 표준 스케줄 형식. SoloSquad의 routine은 cron 기반.
JSONL (JSON Lines)
한 줄 = 한 JSON 객체인 텍스트 파일 포맷. append-only로 이벤트를 누적할 때 유용. SoloSquad 메모리의 기본 포맷.
FTS5 (Full-Text Search version 5)
SQLite 내장 전문검색 확장. 키워드 기반으로 텍스트를 빠르게 찾는다. v0.6에서 메모리 archive 인덱스로 정식 도입 (better-sqlite3 ^12.10.0 의존성).
MCP (Model Context Protocol)
AI 에이전트와 외부 도구·데이터를 잇는 표준 통신 규약. Anthropic이 2024년 발표. SoloSquad는 외부 연결(Notion·Figma 등)에 MCP 사용 가능.
IANA tz (시간대 데이터베이스)
국제 표준 시간대 이름 (예: Asia/Seoul, America/Los_Angeles). workspace.yaml의 timezone 값에 사용.
YAML
사람이 읽기 쉬운 설정 파일 포맷. SoloSquad는 workspace.yaml, .org.yaml, _status.yaml 등에 사용. JSON보다 들여쓰기로 구조를 표현.
Frontmatter (프론트매터)
Markdown 파일 맨 위에 ---로 감싼 YAML 메타데이터. SKILL.md의 name·description·triggers 등이 frontmatter.
Docker / docker-compose
컨테이너 가상화 도구. SoloSquad 봇·스케줄러를 백그라운드로 자동 재시작하며 돌리고 싶을 때 사용. 선택 사항.
VPS (Virtual Private Server)
클라우드의 가상 서버. PC를 24/7 켜둘 수 없을 때 SoloSquad를 클라우드에서 실행. 월 $4~6.
Slug
URL/폴더 친화적 이름. 소문자·하이픈만 사용. 예: "My Startup" → my-startup.

7.2 파일명 사전

워크스페이스나 코드에서 마주칠 모든 파일의 의미.

.env
환경 변수(API 토큰 등) 비밀 값을 담는 파일. SLACK_BOT_TOKEN·DISCORD_TOKEN 등. 절대 git에 커밋하지 말 것.
.env.example
.env의 템플릿. 어떤 변수를 채워야 하는지 보여주는 샘플. 토큰 값은 비어 있음. git에 포함 OK.
.gitignore
git이 추적하지 않을 파일 패턴. SoloSquad에서 .env·node_modules·dist·repos 등이 무시됨.
.npmignore
npm 패키지 배포 시 제외할 파일 패턴. dev 전용 파일들.
package.json
npm 패키지의 설명서. 이름·버전·의존성·실행 스크립트 명세. SoloSquad의 solosquad 명령이 어디서 시작되는지도 여기에 적혀 있음.
package-lock.json
의존성 버전을 정확히 고정한 자동 생성 파일. 직접 편집 안 함.
tsconfig.json
TypeScript 컴파일 설정. ES2022·strict 모드 등.
workspace.yaml
워크스페이스 전역 설정. .solosquad/workspace.yaml. timezone·briefings·background_routines 시각, 메신저 종류 등.
.org.yaml
조직별 설정. <org>/.org.yaml. 조직 이름·메신저·등록된 repo 목록.
repo.yaml
리포별 설정. <repo>/.solosquad/repo.yaml. repo slug·역할(main/sub)·target_org.
SKILL.md
에이전트 정의 매뉴얼. Anthropic Agent Skills 포맷. §3.1 참조.
KNOWLEDGE.md (v0.6)
팀(=도메인) 공유 지식. agents/{team}/KNOWLEDGE.md. §3.2 참조.
TEAM_KNOWLEDGE.md (v0.2.4, v0.6에서 폐지)
v0.6에서 agents/{team}/KNOWLEDGE.md로 이름·위치 변경되었습니다. _teams/ 평행 hierarchy는 완전 제거.
agent-profile.yaml (v0.6)
<org>/agent-profile.yaml. 25 agent의 조직별 modifier (tone·emphasis·voice·ban_phrases·budget). defaults + agent별 섹션 + schema_version: 1.
archive.sqlite (v0.6)
<org>/memory/archive.sqlite. FTS5 cold archive. 8일+ JSONL 이전 + 4 event_type 인덱싱 + retention 365일.
CLAUDE.md
Claude Code가 매 세션 자동 로드하는 프로젝트 지침. §3.3 참조.
OWNER.md
사용자 본인의 프로필·관심사·작업 패턴. 모든 agent가 매 세션 참조. assets/core/OWNER.md.
PRINCIPLES.md
본인의 의사결정 원칙. 모든 agent가 따라야 할 가이드. assets/core/PRINCIPLES.md.
VOICE.md
본인의 글쓰기 톤·문체. Content Writer 등 글을 쓰는 agent의 출력 톤 가이드. assets/core/VOICE.md.
_status.yaml
워크플로 진행 상태. 각 stage가 pending → in_progress → completed 어느 상태인지.
_handoff.md
stage 완료 시 다음 agent에게 전달하는 컨텍스트. Summary·Artifacts·Decisions·Open Questions 표준 섹션.
_events.jsonl (v0.3+)
PM session의 모든 이벤트 로그. PM 메시지·spawn·subagent 완료 등.
signals.jsonl
Signal Scan routine의 결과. 시장 신호를 한 줄씩 누적.
experiments.jsonl
Experiment Check routine의 결과. 진행 중 실험 상태.
decisions.jsonl
Evening Brief·Weekly Review에서 정한 결정 누적.
routine-logs/*.jsonl
routine 실행 전체 로그. 디버깅·회고에 사용.
Dockerfile (deploy/docker/Dockerfile)
Docker 이미지 빌드 레시피. SoloSquad 봇/스케줄러를 컨테이너로 만들 때. v0.5부터 deploy/docker/로 이동.
docker-compose.yml (deploy/docker/docker-compose.yml)
여러 컨테이너(bot + scheduler)를 한 번에 실행하는 설정. v0.5부터 ~/.solosquad/ + ~/.solosquad-backups/도 마운트 — user-global SKILL override와 backup 호환.
README.md
프로젝트 첫인상 문서. npm/GitHub에 표시되는 메인 설명. SoloSquad의 README는 설치·빠른 사용법.
LICENSE
라이선스 파일. SoloSquad는 MIT 라이선스.
CONTRIBUTING.md
이 프로젝트에 기여하는 방법 안내 (개발자용).

7.3 약어 사전

API
Application Programming Interface. 소프트웨어 간 통신 규약. Slack API·Claude API 등.
CAC
Customer Acquisition Cost. 고객 1명을 얻는 데 드는 비용. 마케팅 지표.
CLI
Command Line Interface. 명령줄 도구.
CRUD
Create·Read·Update·Delete. 데이터의 기본 4 연산.
DAG
Directed Acyclic Graph. 방향성 있고 순환이 없는 그래프. 워크플로 단계 의존성 표현.
E2E
End-to-End. 전체 사용자 흐름을 테스트하는 방식.
ESM
ECMAScript Module. JavaScript 모듈 표준 (Node16+).
FDE
Forward Deployed Engineer. 고객 현장에 깊이 들어가는 엔지니어. SoloSquad 엔지니어링 팀의 한 agent.
FTS5
Full-Text Search v5. SQLite 내장 전문검색 확장.
GTM
Go-To-Market. 시장 진입 전략.
IANA
Internet Assigned Numbers Authority. 인터넷 표준 명명을 관리하는 기관. SoloSquad는 IANA의 시간대 이름(Asia/Seoul 등)을 사용.
JIT
Just-in-Time. 필요한 순간에만 로드/실행. 컨텍스트 관리 원칙.
LTV
Lifetime Value. 한 고객으로부터 얻는 전체 매출. LTV:CAC ≥ 3:1이 SaaS 통상 건강 지표.
MCP
Model Context Protocol. AI ↔ 외부 도구 표준.
npm
Node Package Manager. JavaScript 패키지 관리자.
PaaS
Platform-as-a-Service. 서버 관리 없이 앱만 올리면 되는 클라우드. Railway·Fly.io.
PMF
Product-Market Fit. 제품-시장 적합도.
PRD
Product Requirements Document. 제품 요구사항 문서.
QA
Quality Assurance. 품질 보증·테스트.
SaaS
Software-as-a-Service. 구독형 소프트웨어.
SDK
Software Development Kit. 특정 플랫폼에 앱 만들 때 쓰는 도구 모음.
SQL
Structured Query Language. 데이터베이스 질의 언어.
SSH
Secure Shell. 원격 서버 접속 프로토콜. VPS 운영 시 사용.
TS
TypeScript. JavaScript에 정적 타입을 더한 언어. SoloSquad의 구현 언어.
TTL
Time-To-Live. 데이터/캐시 유효 시간.
tz
timezone (시간대) 약어.
UI / UX
User Interface (사용자 인터페이스) / User Experience (사용자 경험).
VPS
Virtual Private Server. 가상 사설 서버. 클라우드.
YAML
YAML Ain't Markup Language. 사람이 읽기 쉬운 설정 파일 포맷.

8.버전별 차이

현재 npm에서 받을 수 있는 기능과 향후 출시 예정 기능을 명확히 구분합니다.

8.1 현재 npm 배포 가능 (v0.7.0 ~ v0.8.3)사용 가능

코어 기능 (v0.1~v0.2)

PM 모드 + 멀티 에이전트 오케스트레이션v0.3

자율 실행 엔진 (Goal Runner)v0.4

워크플로 메이커 + SKILL 시스템 통합v0.5

디폴트 워크플로 튜닝 + 메모리 인프라 + 자가 진화v0.6

v0.3~v0.5에서 누적된 실전 데이터를 회고할 인프라 + 누적 메모리의 FTS5 검색 + 반복 패턴 자동 SKILL 추출 + org × agent 색채/budget 분리 + chokidar hot-reload + CI PR 봇 + 0.5→0.6 마이그레이션을 한 릴리스에 통합. 코드 분량 ~12,000 LOC, 신규 테스트 152 (총 회귀 421/421 그린).

Uninstall & Lifecycle (Farewell Archive)v0.7

install ↔ uninstall 2단으로 라이프사이클을 닫는다. solosquad reset·solosquad clean 같은 "초기화" 명령은 영구히 추가하지 않음 (재설치 = uninstall + farewell + 새 워크스페이스 init).

Multi-User Messengerv0.8.0

워크스페이스가 1인 운영자 모델에서 다수 사용자 컨텍스트를 다룰 수 있는 구조로 확장. 모든 메시지 라우팅은 command-<handle>·works-<handle> 채널 쌍에 author-guard로 차단된다 (도용 방지). 상세는 docs/plan/v0.8-multiuser-messenger.md.

Security & Lifecycle Pairv0.8.1

v0.7 archive 포맷의 reverse path를 잠그고 secret/PII 처리를 강화. 상세는 docs/plan/v0.8.1-security-lifecycle-pair.md.

Dev Capabilityv0.8.2

"PR까지 만들어줘" 패턴을 SKILL의 dev_capability frontmatter로 표준화. dev confirmation 흐름(30분 timeout)으로 봇이 직접 git 변경을 만들기 전 사용자 확인을 받는다. 상세는 docs/plan/v0.8.2-dev-capability.md.

Onboarding UX + Observabilityv0.8.3

처음 SoloSquad를 만났을 때의 경험 + 문제가 생겼을 때 디버깅 경험을 동시에 잡는 마지막 v0.8.x 패치. 상세는 docs/plan/v0.8.3-onboarding-ux-observability.md.

제거됨

8.2 추후 업데이트기획 단계

v1.0 — 정식 출시 (Formal Launch)

v1.0.4 — Discord config.yaml 자동 생성 + Slack author-guard 통째 cleanupv1.0.4

v1.0.3 — Discord 5-bug fix (migrate · sudo · 메신저 연결 · update next-step · 카테고리 이름)v1.0.3

v1.0.2 — Discord author-guard 정합 + 온보딩 reorderv1.0.2

v1.0.1 — Discord deprecation + 다중-repo 라우팅v1.0.1

v1.1 — Multi-Agent Team Architecturev1.1

v1.2 — 메신저 연결 (Discord 우선)v1.2

v1.x — cascade-shifted 슬롯v1.x

참고 문서

9.운영 가이드

9.1 24/7 운영 방식 선택

봇이 메신저와 연결을 유지하려면 solosquad bot이 계속 실행 중이어야 합니다. 방식 비교:

방식대상난이도유지비PC 전원
A. 로컬 데스크탑Mac Mini 등 항상 켜두는 PC낮음전기비만항상 켜둬야 함
B. 클라우드 VPS집에 서버 없음, 완전 24/7월 $4~6+PC 꺼도 무관

A-1. 터미널 열어두기 (가장 간단)

solosquad bot

터미널이 열려 있는 동안만 동작. Ctrl+C나 창 닫으면 멈춤. PC 슬립 시 연결 끊김.

macOS 슬립 방지 (Mac Mini에 특히 유용):

caffeinate -dims

또는 시스템 설정 → 에너지 절약 → "디스플레이 끄기 제외" + 절전 모드 비활성화.

Windows 슬립 방지: 설정 → 시스템 → 전원 → "절대 절전 모드로 설정 안 함".

스케줄러도 병행하려면 별도 터미널:

solosquad schedule

A-2. Docker Compose (백그라운드 + 자동 재시작, 권장)

전제: Docker Desktop 설치 (https://docs.docker.com/desktop/). macOS Apple Silicon/Intel 모두 동작. solosquad initDockerfiledocker-compose.yml을 워크스페이스에 복사했는지 확인.

cd ~/solosquad-workspace
docker compose up -d --build      # 최초 빌드 + 백그라운드 기동
docker compose logs -f bot        # 봇 로그
docker compose logs -f scheduler  # 스케줄러 로그
docker compose ps                 # 서비스 상태
docker compose restart            # 재시작
docker compose down               # 정지

Claude Code 인증 공유: 컨테이너 내부의 claude CLI도 인증이 필요. docker-compose.yml이 호스트의 ${HOME}/.claude를 컨테이너의 /root/.claude로 마운트 → 호스트 로그인 세션 공유.

  1. 호스트에서 claude login 완료
  2. docker compose up -d --build
  3. 컨테이너 안의 claude가 호스트 자격증명을 읽어 동일 계정으로 동작

다른 경로면 .env에 명시:

CLAUDE_AUTH_DIR=/Users/youruser/.claude

PC 재부팅 후: Docker Desktop 자동 시작 설정 시 (Docker Desktop 설정 → "Start Docker Desktop when you log in") 컨테이너는 restart: unless-stopped 정책으로 자동 복귀.

Windows Docker 주의 ${HOME}/.claude 볼륨 마운트는 macOS/Linux 기준. Windows에서 Docker를 쓴다면 CLAUDE_AUTH_DIRC:/Users/yourname/.claude 같은 절대 경로로 명시하거나, A-1 또는 A-3 방식 권장.

A-3. macOS launchd / Windows NSSM (서비스화)

Docker 없이 네이티브 프로세스를 로그인 시 자동 시작하려면.

macOS — launchd. ~/Library/LaunchAgents/com.solosquad.bot.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.solosquad.bot</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/solosquad</string>
    <string>bot</string>
  </array>
  <key>WorkingDirectory</key><string>/Users/YOURNAME/solosquad-workspace</string>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardOutPath</key><string>/tmp/solosquad-bot.log</string>
  <key>StandardErrorPath</key><string>/tmp/solosquad-bot.err</string>
</dict>
</plist>

경로(/usr/local/bin/solosquad)는 which solosquad로 확인. 등록/시작:

launchctl load ~/Library/LaunchAgents/com.solosquad.bot.plist
launchctl start com.solosquad.bot
tail -f /tmp/solosquad-bot.log

스케줄러도 동일하게 com.solosquad.scheduler.plist 추가.

Windows — NSSM:

  1. https://nssm.cc 에서 NSSM 다운로드 → nssm.exe를 PATH에 추가
  2. 관리자 PowerShell:
    nssm install SolosquadBot "C:\Users\YOU\AppData\Roaming\npm\solosquad.cmd" bot
    nssm set SolosquadBot AppDirectory "C:\Users\YOU\solosquad-workspace"
    nssm start SolosquadBot

B. 클라우드 VPS (고급)

"집에 서버 둘 생각 없음" 또는 "PC 꺼도 봇은 살아있어야" 할 때.

고려 시점:

제공업체월 비용특징
Hetzner~$4유럽 기반, 가성비 최고
Vultr$5서울 리전 있음
Linode$5안정적
DigitalOcean$6커뮤니티 자료 풍부
Railway (PaaS)$5+GitHub 연동 자동 배포, 서버 관리 불필요
Fly.io (Docker PaaS)$5+도쿄 리전, 글로벌 배포
AWS ECS Fargate$10~15엔터프라이즈급

빠른 요약 (VPS + systemd):

# VPS SSH 접속 후
sudo apt update && sudo apt install -y nodejs npm git
npm install -g @anthropic-ai/claude-code solosquad
mkdir ~/solosquad && cd ~/solosquad
solosquad init
claude login
# systemd 서비스 등록 — 상세는 docs/cloud-deployment.md
상세 가이드 docs/cloud-deployment.md에 VPS 최초 설정, Node.js 설치, solosquad 글로벌 설치, systemd 서비스 등록, 로그 관리, 업데이트, 백업이 정리되어 있습니다.

9.2 멀티 워크스페이스 (페르소나 분리)

본업/사이드 페르소나를 분리하고 싶을 때 Discord 워크스페이스를 여러 개 만듭니다. (Slack 어댑터로 분리하는 것도 코드상 가능하지만 v1.0 SemVer 약속 외.)

~/solopreneur/      # Discord 봇, 본업 페르소나
~/personal-lab/     # Discord 봇, 사이드 페르소나

각각 독립된 .env·토큰·봇 계정을 갖습니다. 서로 간섭 없이 동시 운영 가능. 이 제약은 v0.2.0부터 — 이전 v0.1.x의 MESSENGER=discord,slack 복수 지정은 더 이상 지원하지 않습니다.

업데이트 시: CLI 업데이트는 한 번이면 되지만 마이그레이션은 각 워크스페이스에서 개별 실행 (§4.4 참조).

9.3 제품 여러 개 운영 (조직·저장소 관리)

한 워크스페이스 안에 조직(=제품/사업)을 여러 개 둘 수 있습니다. 각 조직은 완전 격리된 메모리·워크플로·메신저 채널을 갖습니다.

조직 추가

solosquad add org <name>                        # 대화형 (provider/remote_url 질의)
solosquad add org my-side --provider github --remote-url https://github.com/my-side

<workspace>/<name>/ 폴더 + .org.yaml + memory/ (routine-logs/ + 4개 JSONL 스키마) + workflows/ + repositories/ + 메신저 폴더 자동 생성.

저장소 추가

URL이면 clone, 경로면 등록(필요시 이동).

solosquad add repo https://github.com/foo/bar.git                       # clone + 등록
solosquad add repo ./existing-local-repo                                # 이동(확인 후) + 등록
solosquad add repo https://github.com/foo/bar.git --org tesla --role frontend
solosquad add repo <url|path> --slug my-custom-slug                     # 폴더명 override

org 자동 판정 순서:

  1. --org <slug> 명시 → 즉시 사용
  2. 워크스페이스에 조직이 하나뿐 → 자동 선택 (묻지 않음)
  3. 현재 cwd가 특정 org 폴더 안 → 그 org 자동
  4. 복수 org + 위 모두 해당 안 됨 → 대화형 선택

자동 추출:

Bulk 동기화

이미 repositories/에 clone해둔 repo들을 한 번에 등록:

solosquad sync                # 모든 org 스캔
solosquad sync --org tesla    # 특정 org만
solosquad sync --dry-run      # 미리보기 (아무 것도 쓰지 않음)

동작:

Cross-repo workflow (v0.2.1+)

v0.2.1 런타임은 워크플로우 _status.yaml의 stage에 target_repo 필드가 있으면 해당 stage 실행 시 그 repo를 cwd로 사용합니다. 여러 repo에 걸친 작업 흐름을 하나의 workflow로 조율 가능:

# <org>/workflows/model-y-refresh/_status.yaml
stages:
  - id: stage-1-vision
    target_repo: autopilot-vision       # Claude가 이 repo를 cwd로
    status: in_progress
    depends_on: []

  - id: stage-2-planner
    target_repo: autopilot-planner      # 다른 repo
    status: pending
    depends_on: [stage-1-vision]

활성 stage 판정:

  1. status: in_progress인 stage가 있으면 그것
  2. 없으면 status: pendingdepends_on이 모두 completed인 첫 stage
  3. 둘 다 없으면 role=main repo → org 루트 순 fallback

stage 상태 전환 (pending → in_progress → completed)은 v0.3 PM 모드에서 자동화됩니다 — PM이 specialist를 spawn하기 전에 in_progress로 표시하고, Task tool 응답을 합치며 completed로 갱신.

9.4 보안 체크리스트

이 시스템은 AI가 코드와 명령을 실행합니다. 다음을 꼭 확인.

상세: docs/plan/v0.2-safety-security.md, docs/plan/v0.8.1-security-lifecycle-pair.md

9.5 정기 백업 + 관측성v0.8.3

운영 중 정기 백업 + 로그 관측을 위한 흐름.

10.트러블슈팅 & FAQ

10.1 설치·실행 문제

"solosquad를 찾을 수 없습니다"

"claude를 찾을 수 없습니다"

npm install -g @anthropic-ai/claude-code
claude login
solosquad doctor       # 최종 확인

메신저에서 봇이 응답하지 않음

먼저 환경 불일치 확인:

solosquad doctor                    # 기본 진단
solosquad doctor --messenger-check  # 토큰 live API 검증

.env vs process.env mismatch 경고가 뜨면 solosquad 최신 버전으로 업데이트해야 합니다 (.env 로드 버그는 v0.1.3에서 수정).

Slack 체크리스트 (§5.1 Step 9 재확인):

Discord 체크리스트 (§5.2 마지막 체크리스트):

기존 Telegram 사용자: v0.2.4부터 지원 제거. .solosquad/.envMESSENGER=telegramdiscord 또는 slack으로 변경하고 setup 새로 진행 (§4.4 참조).

루틴이 실행되지 않음

Docker: claude: command not found (컨테이너 내부)

업데이트 후 동작 이상

solosquad doctor
solosquad update                    # 이미 최신이면 안내만 출력
docker compose up -d --build        # Docker 사용 시 이미지 재빌드

git push 인증 실패 (에이전트 dev_capability 사용 시)

에이전트가 commit까지는 했는데 push 단계에서 fatal: Authentication failed 또는 Permission denied (publickey)로 실패한 경우:

cd <repo>
git push --dry-run    # 직접 실행해서 동일 에러 재현되는지 확인

인증 자체는 SoloSquad 외부 영역입니다. 자세한 절차는 GitHub 공식 docs 참조.

10.2 마이그레이션 트러블슈팅

"Cannot find package.json" 류 에러

npm cache clean --force
npm uninstall -g solosquad
npm install -g solosquad@latest

마이그레이션 중단

solosquad migrate --rollback   # 가장 최근 백업으로 복원

그 다음 GitHub Issues에 로그와 함께 보고.

마이그레이션 후 bot이 안 뜸

solosquad doctor

출력 확인. 토큰 누락·.env 위치 이상이 흔한 원인.

Claude Code 인증 풀림

claude login
docker compose restart    # Docker 사용 시

어떤 버전으로 업그레이드할지 모르겠음

릴리스 노트를 먼저 확인:

breaking change가 포함된 minor 업데이트는 중요 프로젝트용으로는 일주일 정도 관찰 후 올라가는 것도 합리적.

10.3 자주 묻는 질문 (FAQ)

Q. 비용이 얼마나 드나요?
A. Claude Code 사용 가능한 플랜 구독료만 있으면 시작 가능 (Max 권장). SoloSquad는 v0.9 기준 *Claude Code via OAuth* 단일 백엔드. 클라우드 운영 시 VPS 월 $4~6 추가.

Q. v1.0에서 Slack은 지원되나요?
A. v1.0 공식 지원 메신저는 Discord 한 종류. Slack 어댑터는 코드상 동봉되어 v0.9.x에서 사용하던 사용자는 계속 동작하지만, v1.0 SemVer 약속 대상이 아닙니다 (post-v1.0 슬롯). 새로 시작하면 Discord 사용을 권장합니다. 페르소나를 분리하고 싶으면 Discord 워크스페이스 2개로 분리: ~/solopreneur/ + ~/elon-24-7/ 각자 독립된 .env·토큰·봇 계정. 이 제약은 v0.2.0+ — 이전 MESSENGER=discord,slack multi-target 문법은 미지원.

Q. 시간대가 한국이 아니면?
A. .envTZ=를 변경 (예: TZ=America/Los_Angeles). Docker도 동일.

Q. AI가 틀린 답을 하면?
A. AI는 도구입니다. 중요한 결정은 반드시 본인이 직접 확인. solosquad rollback --workflow <id> (v0.3+)로 spawn 결과 revert 가능. v0.4 자율 실행은 per-cycle git-snapshot keep/discard로 자동 보호.

Q. Mac Mini 대신 Raspberry Pi로 돌릴 수 있나요?
A. Node.js 18+이 돌면 가능. 단, Claude Code CLI는 arm64 기반 리눅스를 공식 지원하는지 먼저 확인 필요.

Q. 완전 오프라인에서 쓸 수 있나요?
A. 불가. Claude API와 Slack/Discord 서버 통신이 필수.

Q. 업데이트 전에 꼭 해야 할 일이 있나요?
A. solosquad bot / schedule이 실행 중이면 먼저 정지. docker compose down 또는 터미널 Ctrl+C.

Q. 매번 업데이트해야 하나요?
A. 아닙니다. 안정적으로 쓰고 있다면 급할 이유는 없음. 다만 보안 hotfix(예: v0.1.3 dotenv 누락)는 빠르게 적용 권장.

Q. 업데이트 자동화가 가능한가요?
A. Docker 환경이면 docker compose up -d --build를 cron에 걸면 이미지 최신화됩니다. 단 마이그레이션 필요 시엔 자동화 불가 — 사람의 확인이 들어가는 게 원칙.

Q. 예전 버전으로 고정하고 싶어요.
A. npm install -g solosquad@0.1.5처럼 명시적 버전으로 설치. solosquad update가 업그레이드 제안해도 거절하면 됨.

Q. 여러 사람이 한 머신에서 씁니다.
A. 각자 OS 계정을 다르게 쓰고, 각 계정의 홈 디렉토리에 독립된 워크스페이스를 두세요. 마이그레이션도 계정별로 따로 진행.

Q. 베타·개발 채널이 있나요?
A. solosquad update --channel dev로 전환 가능 (단, 안정성 보장 없음). --channel stable이 기본.

Q. v0.5에서 v0.6으로 업그레이드는 어떻게 하나요?
A. npm install -g solosquad@latest 후 워크스페이스 루트에서 solosquad migrate --dry-run 실행 → 보고서(<org>/memory/migration-2026-XX-dryrun.md) 검토 → 문제 없으면 solosquad migrate --apply --confirm. --confirm 플래그 없으면 거부됩니다 (실수 방지). 마이그레이션 후 solosquad agent validate --all이 자동 실행되어 실패 항목을 STDOUT에 보고합니다.

Q. 마이그레이션이 "human_review_required" 항목을 보고하면?
A. v0.5 ledger의 일부 자산은 휴리스틱 기반 재배치라 100% 정확 불가 — SKILL 본문에서 "조직 색채" 추출 매칭 0건 케이스 등이 해당. 해당 항목은 human_review_required: true 마킹되어 자동 적용이 거부됩니다. 사용자가 보고서를 보고 수동으로 <org>/agent-profile.yaml의 해당 agent 섹션을 보강한 후 마이그레이션을 재실행하세요. 비파괴 원칙으로 원본은 손대지 않습니다.

Q. v0.6 자율 reload가 너무 적극적이에요. 직접 트리거하고 싶어요.
A. workspace.yaml.fs_watch.mode: manual로 설정하면 자동 reload가 꺼집니다. SKILL 변경 후 solosquad agent reload로 명시 호출. fs_watch.mode: prompt(기본)는 PM이 메신저에서 적용 여부를 묻는 중간 모드입니다.

Q. (v0.8.3) solosquad updatesolosquad migrate의 차이는?
A. updateCLI 바이너리(npm 패키지) 자체를 갱신, migrate워크스페이스 스키마/레이아웃을 새 CLI 버전에 맞게 변환. 일반적인 흐름: ① solosquad doctor로 CLI ↔ workspace mismatch 확인 → ② npm install -g solosquad@latest 또는 solosquad update로 CLI 갱신 → ③ solosquad migrate --dry-run 미리보기 → ④ solosquad migrate --apply로 적용. doctor가 어느 명령이 필요한지 명시적으로 안내합니다 (v0.8.3 §7.3).

Q. (v0.8.3) 기존 product code를 SoloSquad 워크스페이스 안으로 어떻게 옮기나요?
A. ① cd ~/projects/my-saas && git status로 untracked 정리·git push로 안전망 확보 → ② mkdir ~/solosquad && cd ~/solosquad && solosquad init → ③ solosquad add repo ~/projects/my-saas --dry-run으로 폴더 매핑·사이즈·위험 5종(IDE lock·심링크·외부 절대경로·slug 충돌·활성 프로세스) 미리 확인 → ④ solosquad add repo ~/projects/my-saas로 실제 이동(또는 --keep-original로 복사). 원본 사용자 파일은 byte-identical (v0.7 클래스 A 룰). SoloSquad가 추가하는 건 <repo>/.solosquad/repo.yaml 1개뿐.

Q. (v0.8.3) 기존 리포 이동 후 IDE 경로가 깨졌어요.
A. .vscode/settings.json·.idea/workspace.xml 같은 IDE 설정에 절대경로가 들어있는 경우 SoloSquad는 사용자 파일을 변형하지 않으므로 사용자가 수동으로 갱신해야 합니다. solosquad add repo <path> --dry-run 출력에 절대경로 설정이 감지된 IDE 파일 경고가 표시됩니다. cron 작업·alias·CI runner 경로도 동일 — 외부 시스템이 옛 경로를 가리키면 사용자가 갱신.

Q. (v0.8.3) 봇이 무엇을 하고 있는지 보고 싶어요 — 로그가 어디 있나요?
A. 환경변수 SOLOSQUAD_LOG_FILE=1을 설정하면 <workspace>/.solosquad/logs/solosquad-YYYY-MM-DD.log에 일별 rolling. solosquad logs --tail 200 --follow로 실시간 tail. --type costs/spawn/stop-hook/dev-confirm/migration로 4 operational jsonl 직접 조회. 보존은 14일(매일 00:30 log-rotate routine이 자동 정리).

Q. (v0.8.3) solosquad logout은 어디로 갔나요?
A. v0.7에서 추가됐다가 v0.8.3에서 제거됐습니다. 사용 가치 < 구현 복잡도 판정. 대체 흐름: 봇 일시 중지는 Ctrl+C로 프로세스 종료(다시 시작은 solosquad bot), .env 시크릿 마스킹/REVOKE 체크리스트는 solosquad uninstall --archive-only가 동일하게 제공, sessions 보관은 <org>/.solosquad/sessions/에서 직접 이동 또는 solosquad pm reset --user <id>. 기존 logout.lock 파일은 v0.8.3에서 inert가 되었으므로 수동 삭제 가능.

Q. (v0.8.3) trajectory 자동 등록은 언제 활성화되나요?
A. v0.6에서 정의한 ROI 4지표(① 30일 제안 ≥ 5건 ② 채택률 ≥ 60% ③ 채택 SKILL의 30일 사용률 ≥ 평균 ④ reject cooldown < 30%) 중 모두 통과 시 v0.9에서 workspace.yaml.trajectory.auto_register: true가 기본값이 됩니다. 1개라도 fail이면 "제안만 영구" 잠금. v0.8.3 패치는 측정값을 CHANGELOG에 박제만 합니다 (자동 등록 코드는 v0.9에서 추가).

10.4 Uninstall · 재설치 · 마이그레이션 회피v0.8.5

안전한 uninstall 순서

npm v7+가 preuninstall 훅을 글로벌 패키지에서 호출하지 않는 한계(npm/cli#3042) 때문에, 사용자가 직접 순서를 지켜야 farewell archive와 REVOKE-CHECKLIST가 생성됩니다.

  1. 봇·스케줄러 정지 (필수) — 실행 중이면 archive snapshot SHA가 불일치합니다.
    # macOS / Linux
    docker compose down              # Docker 사용 시
    # 또는 봇/스케줄러 터미널에서 Ctrl+C
    
    # Windows (PowerShell)
    docker compose down
    # 또는 봇·스케줄러 터미널에서 Ctrl+C
    # 또는 PID 강제 종료:
    Stop-Process -Id <pid1>,<pid2> -Force
    solosquad doctor의 "solosquad bot/schedule processes alive (pid ...)" 경고로 잔존 PID 확인 가능. solosquad uninstall 자체 precheck도 live PID 감지 시 --force 없이는 진입을 거부합니다.
    v0.9.2 hotfix — v0.9.1 이하 Windows 사용자는 봇이 안 도는데도 precheck가 phantom PID로 차단하던 버그가 있었습니다 (WMI 쿼리가 자기 자신을 매칭). 회피책은 --force였고, v0.9.2부터는 $_.Name -eq 'node.exe' 가드로 정상 동작합니다. 자세히 CHANGELOG.md §[0.9.2].
  2. uninstall dry-run으로 미리보기
    solosquad uninstall --dry-run
    # 출력: archive zip 경로, 무엇이 archive로 / 삭제 / 보존되는지,
    #       REVOKE 대상 외부 자원 (Discord/Slack/Anthropic 토큰), 디스크 free space
  3. uninstall 실행 — mode 3종
    solosquad uninstall                          # 기본 --mode full (완전 정리)
    solosquad uninstall --mode keep              # workflows·memory·knowledge 보존 (재설치용)
    solosquad uninstall --mode archive-only      # archive zip만 생성, cleanup 스킵
    repositories/<repo>/ 사용자 코드는 어떤 mode·플래그로도 변경/삭제되지 않습니다 (v0.7 class A 불가침).
  4. archive zip 안전 보관~/solosquad-archive-<workspace>-<ts>.zip 자동 생성. 외부 디스크·클라우드 드라이브로 별도 보관 권장. 검증:
    solosquad archive verify ~/solosquad-archive-...zip
    # manifest.tsv SHA256 정합 + PII-NOTICE 스캔
  5. 외부 자원 정리 — REVOKE-CHECKLIST.md — 워크스페이스 루트와 archive zip 양쪽에 사본. 다음을 안내:
    • Discord Application ID — Developer Portal에서 봇 삭제 또는 token reset
    • Slack workspace ID — App management에서 봇 제거 또는 OAuth revoke
    • Anthropic Claude — ~/.claude/projects/<path-hash>/ 추정 경로 (수동 정리는 사용자 판단)
    • pm2 / systemctl / crontab — 외부 자동화 등록이 있으면 해제 명령 자동 추출
  6. npm 패키지 제거 (선택)
    npm uninstall -g solosquad
    재설치 예정이면 이 단계는 건너뛰어도 OK — npm install -g solosquad@latest가 덮어쓰기.

uninstall + 재설치로 마이그레이션 우회

워크스페이스를 처음부터 다시 만들고 싶거나, 큰 마이그레이션 chain을 건너뛰고 싶을 때:

# 1. 위 안전 순서로 uninstall (--mode archive-only로 데이터 보존 zip만 만들기 가능)
solosquad uninstall --mode archive-only

# 2. CLI 최신화 (이미 됐으면 skip)
npm install -g solosquad@latest

# 3. 새 워크스페이스 init (v0.8.5 wizard — workspace.yaml.version이 처음부터 0.8.5)
mkdir new-workspace
cd new-workspace
solosquad init

# 4. (선택) 이전 데이터 import — workflows·memory·knowledge 복원
solosquad import ~/solosquad-archive-<old>-<ts>.zip --mode merge
# 또는 --mode replace (워크스페이스 비어 있어야)

이 흐름은 마이그레이션 chain을 한 번에 건너뛰는 우회 경로입니다. v0.4 워크스페이스에서 v0.8.5까지 9개 migration 돌리는 대신 archive → re-init → import로 한 번에 새 포맷으로 점프. 단점: archive zip이 v0.7 포맷 기준이라 일부 v0.6 이전 raw 자산은 보존되지만 v0.8 멀티유저 구조로 재배치되지 않을 수 있음 (사용자 확인 필요).

재설치 후 doctor 경고 0건 만들기

새 init 직후 solosquad doctor 경고들이 *항상* 뜨는 정보성 항목 vs *조치 필요* 항목 구분:

경고분류조치
△ PowerShell 7+ (Windows만)선택 권장winget install Microsoft.PowerShell — Windows 5.1로도 동작하지만 일부 명령에서 UTF-8/Get-CimInstance 안정성 ↑
△ gh CLI not founddev_capability 쓸 때만 필수https://cli.github.com/ 설치 + gh auth login
△ Docker (optional)선택24/7 운영 시 권장. 미설치도 solosquad bot 터미널 실행은 OK
△ npm v7+ has no global uninstall hook항상 표시 (informational)무시. uninstall 시점에 순서 안내 목적
△ CLI vX.Y.Z > workspace vA.B.C조치 필요solosquad migrate --apply (v0.8.5 신규 init은 발생 안 함)
△ solosquad bot/schedule processes alive (pid ...)봇 실행 중일 때 표시uninstall 직전에만 정지 필요. 평소 운영엔 정상 신호
△ stale uninstall.lock이전 uninstall 비정상 종료수동 삭제: rm <workspace>/.solosquad/uninstall.lock
주의 — uninstall 직전 PID 정지 필수 solosquad uninstall이 jsonl 파일들을 streaming SHA256으로 매니페스트 작성합니다. 봇이 동시에 jsonl append하면 매니페스트 SHA 불일치 → archive 검증 실패. --force로 우회 가능하지만 archive 무결성을 잃습니다.

10.5 봇 · 스케줄러 · 에이전트 git 작업v0.8.2~v0.8.6

스케줄러는 디폴트 실행되지 않음

SoloSquad는 데몬 / 백그라운드 자동 시작이 없습니다. solosquad init이 cron 등록을 하지 않으며, OS 부팅 시 자동 실행도 없음. 다음 명령으로 *명시적으로* 시작해야 합니다:

solosquad bot         # 메신저 봇 (Socket Mode + fs.watch)
solosquad schedule    # cron routine 실행기 (morning/evening brief, system-housekeeping)

두 명령은 별개 프로세스. 둘 다 24/7 동작이 필요하면 각각 다른 터미널 또는 Docker compose 서비스로 실행. solosquad doctor△ solosquad bot/schedule processes alive (pid ...) 경고는 *둘 중 하나라도* 살아 있을 때 표시 — Windows에서는 Get-CimInstance Win32_Process로 commandLine이 solosquad + (bot|schedule|run-routine) 패턴인 node.exe 프로세스를 찾습니다.

에이전트의 dev_capability — *git push까지* (v0.8.6 현재 범위)

v0.8.2 dev_capability 기능을 활용하면 메신저 대화만으로 에이전트가 *코드 작성 → 커밋 → push*까지 자동 수행합니다. **PR 생성·리뷰·토론·머지는 사용자가 GitHub 웹 UI에서** 직접 진행. v0.8.6 기준 *범위 명시*:

단계주체v0.8.6 지원
코드 작성·분석spawn된 에이전트
git checkout -b <branch>에이전트
git add / commit에이전트
git push origin <branch>에이전트 (dev-confirm gate)✓ 30분 timeout
"compare URL" 회신 (PR 생성 가이드)에이전트가 메신저에 회신
PR 생성사용자가 GitHub 웹 UI— (사용자 책임)
PR 리뷰·코멘트사용자가 GitHub 웹 UI— (사용자 책임)
머지사용자가 GitHub 웹 UI— (사용자 책임)
전제 조건 — 모두 *사용자 사전 셋업* (SoloSquad가 자동화하지 않음)
  1. git 설치 + push 인증 — §4.2 Step 1 준비물 설치만 따라가면 OK. Windows·macOS는 첫 push 시 OS가 자동 처리. Linux는 SSH key 또는 PAT 별도 셋업 필요할 수 있음 (git/GitHub docs). 검증:
    cd <workspace>/<org>/repositories/<repo>
    git push --dry-run
    # "Everything up-to-date" 또는 "To <url>..." → ✓ 통과
    # "Authentication failed" → 트러블슈팅 §10.1 참조
  2. repo 등록
    solosquad add repo https://github.com/me/my-saas.git --org my-saas
  3. workspace.yaml dev_capability 활성
    # <workspace>/.solosquad/workspace.yaml
    dev_capability:
      enabled: true                      # 마스터 토글 (기본 true)
      require_push_confirmation: true    # git push 시 사용자 확인 (영구 true, 변경 불가)
      bash_denylist:                     # workspace-strict 차단 명령 (선택)
        - "rm -rf /"
        - "shutdown"
에이전트의 push 흐름
사용자 (command-<handle>):  "결제 모듈 Stripe 통합해줘"
                ↓
PM이 의도 분류 → Backend Developer SKILL spawn (dev_capability: true)
                ↓
BD가 repo cwd로 이동 → 코드 분석 → src/payments/ 추가 → 테스트
                ↓
git checkout -b feat/stripe-payment
git add src/payments/
git commit -m "feat: Stripe payment integration"
                ↓
🛑 [dev-confirm gate] PM이 사용자에게 메신저로 통지:
   "git push origin feat/stripe-payment? (30분 timeout) [y/N]"
                ↓
사용자 "y"  → push 실행
                ↓
BD의 마지막 회신 (works-<handle>):
   "✓ Branch pushed.
    PR 생성하려면 아래 URL 클릭:
    https://github.com/me/my-saas/compare/main...feat/stripe-payment"
                ↓
[여기서부터 사용자 책임]
사용자가 URL 클릭 → GitHub 웹 UI에서 PR 생성 → 코드 검토 → 머지

git pushSENSITIVE_BASH_PREFIXES에 박혀 있어 30분 timeout dev-confirmation 게이트를 통과해야 실행 (src/bot/dev-confirm.ts). 사용자가 timeout 내 응답 안 하면 push 자동 abort + <org>/memory/dev-confirmations.jsonl에 기록.

온보딩에 추가할 항목 (dev_capability 사용자용)

§4.2 9-step 외 dev_capability 사용자가 추가로 챙겨야 할 것 — *gh CLI 설치는 v0.8.6 범위에서 불필요*:

v1.x 후속 — PR API 자동화 + 다중 에이전트 토론 v0.8.6은 *git push까지*가 에이전트 책임 경계입니다. 이후 PR 생성·리뷰·머지를 자동화하는 방향은 v1.x autonomous engine 확장 슬롯:
  • gh CLI 트랙gh pr create·gh pr review·gh pr merge를 bash로 호출. dev-confirm gate가 이미 gh pr merge 매칭. 사용자가 gh auth login 1회 + 워크플로 정의에 auto_pr: true 명시
  • MCP 트랙 — Anthropic 공식 @modelcontextprotocol/server-github를 Claude Code MCP config로 연결. native tool call로 PR 라이프사이클 다룸. structured 입출력으로 다중 에이전트 토론에 유리
  • 다중 에이전트 PR 토론 — workflow.yaml schema v2의 reviewers 섹션 기반 자동 spawn (QA·Security·BusinessStrategist 등) + PM aggregation. discussion_rounds cap + auto_merge: false 영구 박제
상세 설계: docs/plan/v0.8.6-migrate-hotfix-pr-workflow.md §3, docs/plan/v1.x-workflow-goal-routine-evolution.md (PR workflow §추가 슬롯)