회사 간 크루·스킬 공유(전역 라이브러리) 제안
배경
여러 비영리 단체의 이사·운영을 겸하는 1인 사용자입니다. 단체마다 이사회·행사·강의·문서작업이 반복되는데, 하는 일의 종류(역할)는 단체를 가로질러 같고, 자료와 정책은 단체별로 엄격히 분리되어야 합니다. 단체 간 비공개 자료가 섞이면 안 되는 게 운영상 의무에 가깝습니다.
즉 제 구조는 역할 × 단체의 2차원 격자입니다.
- 가로줄(역할): 이사회 서기, 강의, 행사, 글쓰기 — 모든 단체에서 동일
- 세로줄(단체): 기억·자료·정책은 서로 섞이면 안 됨
Argo로 이걸 구성하려니 어느 쪽으로 놓아도 한쪽이 무너집니다.
현재 구조에서 막히는 지점
① 회사 하나에 단체를 프로젝트로 두는 경우 — 격리가 안 됩니다
src/chat.mjs:203 — "너의 회사 기억은 ${wsRoot}/vault 폴더 전체다" → 크루별 기억 스코프가 없음
src/chat.mjs:294 — 지정 작업 폴더: ${workRoots.join(' · ')} → 등록된 작업 폴더가 모든 크루에게 공통 주입
src/capabilities.mjs — capabilities가 wsId(회사) 단위 → 정책도 분리 불가
src/persona.mjs — 크루 카드 필드가 name·slug·role·team 뿐이라 담당 범위를 지정할 자리가 없음
vault/projects/는 vaultDocs()(src/memory.mjs)의 스캔 대상이 아니라 기억으로 동작하지 않음
결과적으로 A단체 문서를 작성하는 크루의 프롬프트에 B·C단체 폴더가 함께 들어갑니다.
② 회사를 단체별로 나누는 경우 — 역할 공유가 끊깁니다
src/workspace.mjs:47 — skills: join(root, 'skills') (root = 회사 폴더)
- 크루 카드도
agents/로 회사 폴더 하위
그래서 같은 "이사회 서기" 크루를 회사 수만큼 복사해야 하고, 한쪽에서 다듬은 개선이 다른 쪽으로 전파되지 않습니다. 시간이 지나면 같은 역할의 카드가 회사마다 조금씩 달라집니다.
제안
전역 라이브러리 폴더를 두고, 로딩 시 회사 것과 합쳐서 읽어주세요.
<ARGO_ROOT>/
├─ shared/
│ ├─ agents/ ← 공용 크루 카드
│ └─ skills/ ← 공용 스킬
├─ co-aaaa/ (A단체) agents/ skills/ vault/ capabilities.json
└─ co-bbbb/ (B단체) agents/ skills/ vault/ capabilities.json
- 크루·스킬 목록 =
shared/ + 회사 로컬을 합집합으로
- 같은
slug가 양쪽에 있으면 회사 로컬 우선(회사별 커스터마이즈 여지)
- UI에서는 공용/로컬을 구분 표시(예: 배지)해 주면 충분합니다
이 제안이 Argo 정체성을 건드리지 않는 이유
기억(vault/)과 정책(capabilities.json)은 그대로 회사 단위로 둡니다. "회사 = 하나의 기억"은 유지되고, 공유되는 것은 일하는 방식의 정의(크루 카드·스킬)뿐입니다. 자료 격리는 회사 분리가 이미 완벽히 해주고 있어서, 제게 필요한 건 그 위에 얹는 역할 공유 하나입니다.
검토했던 대안
- 심링크로
skills/ 공유 — sync/export가 심링크를 제외하도록 설계돼 있어(문서상 의도된 보안 정책) 안정적으로 쓰기 어렵다고 판단했습니다
- 회사 생성 시 다른 회사에서 복사 — 구현은 쉽겠지만 복사 시점 이후 갈라지는 문제는 그대로입니다
- 회사 내 프로젝트별 기억·정책 분리 — 이쪽이 더 근본적이지만 "회사 = 하나의 기억"이라는 제품 정체성을 흔들 것 같아 제안에서 뺐습니다
덧붙임 (있으면 좋은 정도)
MAX_WORK_ROOTS = 8(src/workroots.mjs:32)인데, 단체 수가 5~6이고 개인 프로젝트 폴더까지 더하면 상한에 근접합니다. 주석에 "필요가 실증되면 올린다"고 되어 있어 사례로 남깁니다.
소스를 읽고 쓴 제안이라 구현 사정과 안 맞는 부분이 있을 수 있습니다. 방향만 참고해 주셔도 감사하겠습니다. 좋은 제품 만들어 주셔서 고맙습니다.
회사 간 크루·스킬 공유(전역 라이브러리) 제안
배경
여러 비영리 단체의 이사·운영을 겸하는 1인 사용자입니다. 단체마다 이사회·행사·강의·문서작업이 반복되는데, 하는 일의 종류(역할)는 단체를 가로질러 같고, 자료와 정책은 단체별로 엄격히 분리되어야 합니다. 단체 간 비공개 자료가 섞이면 안 되는 게 운영상 의무에 가깝습니다.
즉 제 구조는 역할 × 단체의 2차원 격자입니다.
Argo로 이걸 구성하려니 어느 쪽으로 놓아도 한쪽이 무너집니다.
현재 구조에서 막히는 지점
① 회사 하나에 단체를 프로젝트로 두는 경우 — 격리가 안 됩니다
src/chat.mjs:203— "너의 회사 기억은${wsRoot}/vault폴더 전체다" → 크루별 기억 스코프가 없음src/chat.mjs:294—지정 작업 폴더: ${workRoots.join(' · ')}→ 등록된 작업 폴더가 모든 크루에게 공통 주입src/capabilities.mjs— capabilities가wsId(회사) 단위 → 정책도 분리 불가src/persona.mjs— 크루 카드 필드가name·slug·role·team뿐이라 담당 범위를 지정할 자리가 없음vault/projects/는vaultDocs()(src/memory.mjs)의 스캔 대상이 아니라 기억으로 동작하지 않음결과적으로 A단체 문서를 작성하는 크루의 프롬프트에 B·C단체 폴더가 함께 들어갑니다.
② 회사를 단체별로 나누는 경우 — 역할 공유가 끊깁니다
src/workspace.mjs:47—skills: join(root, 'skills')(root = 회사 폴더)agents/로 회사 폴더 하위그래서 같은 "이사회 서기" 크루를 회사 수만큼 복사해야 하고, 한쪽에서 다듬은 개선이 다른 쪽으로 전파되지 않습니다. 시간이 지나면 같은 역할의 카드가 회사마다 조금씩 달라집니다.
제안
전역 라이브러리 폴더를 두고, 로딩 시 회사 것과 합쳐서 읽어주세요.
shared/+ 회사 로컬을 합집합으로slug가 양쪽에 있으면 회사 로컬 우선(회사별 커스터마이즈 여지)이 제안이 Argo 정체성을 건드리지 않는 이유
기억(
vault/)과 정책(capabilities.json)은 그대로 회사 단위로 둡니다. "회사 = 하나의 기억"은 유지되고, 공유되는 것은 일하는 방식의 정의(크루 카드·스킬)뿐입니다. 자료 격리는 회사 분리가 이미 완벽히 해주고 있어서, 제게 필요한 건 그 위에 얹는 역할 공유 하나입니다.검토했던 대안
skills/공유 —sync/export가 심링크를 제외하도록 설계돼 있어(문서상 의도된 보안 정책) 안정적으로 쓰기 어렵다고 판단했습니다덧붙임 (있으면 좋은 정도)
MAX_WORK_ROOTS = 8(src/workroots.mjs:32)인데, 단체 수가 5~6이고 개인 프로젝트 폴더까지 더하면 상한에 근접합니다. 주석에 "필요가 실증되면 올린다"고 되어 있어 사례로 남깁니다.소스를 읽고 쓴 제안이라 구현 사정과 안 맞는 부분이 있을 수 있습니다. 방향만 참고해 주셔도 감사하겠습니다. 좋은 제품 만들어 주셔서 고맙습니다.