company-os-cli
재사용 가능한 Multi-Agent Company Operating System 스켈레톤을 pip으로 설치해 CLI 한 줄로 만들어내는 도구입니다. Role · Skill · Workflow · Memory를 Git Markdown(SSOT)으로 관리하고, LangGraph/LangChain 기반 Agent가 이를 읽어 추측 없이 협업하도록 설계되었습니다.
설치
# PyPI에 배포된 이후
pip install company-os-cli
# 배포 전 / 최신 개발 버전을 바로 쓰고 싶다면 GitHub에서 직접 설치
pip install git+https://github.com/as950118/ai-company.git
설치하면 company-os 명령이 생깁니다.
빠른 시작
A. 독립 Company OS 레포로 (SSOT 문서를 최상위에 그대로 노출)
이 프로젝트 자체가 "회사 운영체제"인 경우 — GitHub에서 열었을 때 company/, roles/, skills/가 바로 보이는 게 맞습니다.
company-os init \
--name "Acme Agent Co" \
--product "Acme Task Hub" \
--slug acme-task-hub \
--out ./my-company-os
cd my-company-os
B. 기존 프로젝트에 얹기 (숨김 폴더로 격리)
이미 소스코드가 있는 프로젝트에 Company OS를 추가하는 경우, --out을 생략하면 현재 폴더의 .company-os/(.git, .github, .vscode, .cursor와 같은 패턴)에 자동으로 만들어져 기존 폴더 구조(예: 이미 있는 docs/, runtime/)와 충돌하지 않습니다.
cd my-existing-project
company-os init --name "Acme Agent Co" --product "Acme Task Hub"
# → ./.company-os/ 에 생성됨
company-os --version
company-os init --help
옵션:
| 옵션 | 설명 | 기본값 |
|---|---|---|
--name |
회사 표시명 | (필수) |
--product |
제품명 | (필수) |
--out |
생성 경로 | 현재 폴더의 ./.company-os |
--slug |
경로/ID용 슬러그 | --product에서 자동 생성 |
--force |
비어있지 않은 폴더에 덮어쓰기 허용 | off |
--llm-provider |
기본 LLM 프로바이더 | openrouter |
--model |
기본 모델 ID | openrouter/free |
--langsmith-project |
LangSmith 프로젝트명 | slug와 동일 |
생성 후:
cd <out>후company/vision.md등 플레이스홀더 잔여({{…}}) 검색:rg '\{\{[A-Z0-9_]+\}\}'runtime/.env.example→.env복사, OpenRouter / LangSmith 키 설정workflows/create-feature.md로 첫 Feature 시작
생성되는 구조
my-company-os/
├── README.md ← 제품용 README (TEMPLATE_README.md에서 렌더링됨)
├── company/ ← Vision / Mission / Values / Org / Tech Stack / Glossary
├── roles/ ← Role별 R&R + System Prompt (9종)
├── skills/ ← 역할 공통 재사용 절차 (write-prd, write-adr, create-api …)
├── workflows/ ← create-feature / fix-bug / release / incident / onboarding
├── docs/ ← PRD·Architecture·API·Task·ADR 템플릿 + 협업 규칙
├── agents/ ← Role별 Agent YAML (도구·메모리·핸드오프·시스템 프롬프트)
├── langgraph/ ← Feature/BugFix/Release Graph 설계 (Markdown SSOT)
├── memory/ ← 5종 Memory 인덱스 (company/project/decision/task/lessons-learned)
├── projects/<slug>/ ← 첫 프로젝트 (prd/architecture/adr/api)
├── tasks/ ← Task 인덱스
└── runtime/ ← LangChain/LangGraph 최소 Python 스텁 (company_os 패키지)
설계 원칙 (Kit이 강제하는 것)
- Git Markdown = SSOT — 모든 지식은 Role/Skill/Workflow/Memory로 문서화
- Role / Skill / Workflow 분리 — 한 Agent가 모든 역할을 하지 않는다
- 승인 게이트 없이 Prod 금지 — Reviewer → QA → DevOps 순서 강제
- ADR로 결정 기록 — 기술 선택은 반드시
memory/decision-memory/에 남긴다 - 추측 금지 — 문서 없으면 질문
협업 파이프라인
CEO → PM → Architect → Backend/Frontend → Reviewer → QA → Release(DevOps)
↘ Technical Writer (문서화 지원, 전 단계 개입 가능)
생성된 프로젝트의 docs/agent-collaboration-rules.md에서 Stage Contract를 확인할 수 있습니다.
Cursor에서 쓰기
새 프로젝트에 스캐폴드한 뒤:
당신은 {{PRODUCT_NAME}} Company OS의 Architect다.
company/, roles/, workflows/를 읽고 추측하지 마라.
지금은 create-feature의 Design 단계만 수행한다.
이 레포 구조 (패키지 개발자용)
ai-company/ ← company-os-cli 패키지 소스 레포
├── pyproject.toml ← 패키징 메타데이터 (hatchling, entry point: company-os)
├── LICENSE
├── src/company_os_cli/
│ ├── __init__.py ← __version__
│ ├── cli.py ← Typer CLI (`company-os` 명령)
│ ├── scaffold.py ← 핵심 스캐폴딩 로직 (CLI 비의존, 테스트/재사용 가능)
│ └── template/ ← 위 "생성되는 구조"의 원본 (company/, roles/, skills/ …)
├── tests/test_scaffold.py ← scaffold() 함수 + CLI 엔드투엔드 스모크 테스트
└── .github/workflows/ ← CI (테스트) + publish (태그 push 시 PyPI 배포)
로컬 개발
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
company-os --version
python -m unittest discover -s tests -v
# 배포용 빌드 확인
python -m build
python -m zipfile -l dist/company_os_cli-*-py3-none-any.whl
릴리스 (PyPI 배포)
pyproject.toml의version을 올린다git tag v0.1.0 && git push origin v0.1.0.github/workflows/publish.yml이 태그 push 시 테스트 → 빌드 → PyPI 업로드까지 수행- PyPI API 토큰(https://pypi.org/manage/account/token/) 발급 후, GitHub 저장소의
pypiEnvironment(Settings → Environments → pypi)에PYPI_API_TOKEN시크릿으로 등록 - 프로젝트가 PyPI에 아직 없는 첫 배포라면 "Entire account" 스코프 토큰을 써야 합니다 (프로젝트 스코프 토큰은 프로젝트가 이미 존재해야 발급 가능). 첫 배포 성공 후엔
company-os-cli프로젝트 스코프로 좁힌 토큰으로 교체 권장
- PyPI API 토큰(https://pypi.org/manage/account/token/) 발급 후, GitHub 저장소의
실습 산출물 안내
실제 실행 로그, Review dump 등 산출물은 이 레포(Kit)에 포함하지 않습니다. company-os init으로 생성한 각 프로젝트의 memory/, projects/<slug>/에 쌓아가세요.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file company_os_cli-0.1.0.tar.gz.
File metadata
- Download URL: company_os_cli-0.1.0.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20ee8e7b5402dcdb8724f47e9d5137bcbb7d6b7868f58ab203c1edb0ec88f626
|
|
| MD5 |
27a4409be1d93d2650b276a029797091
|
|
| BLAKE2b-256 |
f4d7499d2b6e95f0b3fa28d6583d7c564b8d348954d9e65bbf639909b031cb70
|
File details
Details for the file company_os_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: company_os_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 48.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbd91f20b2398fdab09a3673ef6c1854cc4d1ecfe211ca27bbce9f9280b62936
|
|
| MD5 |
ba102e3a1d094c0a42f1345f14c304f1
|
|
| BLAKE2b-256 |
1eeee4ac2c7d35dea7a45cc8e72fb1c9994ceb0c87d47b80ec2e79dcbb83e091
|