Skip to main content
Glama

Front Office

AI와의 대화로 구축된 프로젝트를 위한 디자인-옵스 기록 시스템: 의사결정 로그, 미해결 질문, 생성된 뷰로서의 문서 — 그래서 모든 세션(인간 또는 AI, 오늘 또는 몇 달 후, 병렬 또는 순차)이 채팅 스크롤백 대신 같은 두뇌에서 작업합니다.

실제 문제에서 탄생: 긴 AI 세션에 걸쳐 게임을 설계하면서 46개의 기록된 결정이 생성되었고, "그게 실제로 승인되었나?"라는 질문은 계속 감사가 필요했습니다. Front Office는 감사 추적을 기본 아티팩트로 만듭니다.

핵심 아이디어

  • 의사결정 로그는 이벤트 로그입니다. 모든 결정은 언제 / 누가 / 왜와 출처 태그 — [A] 명시적 인간 판정 · [A→C] 인간 지시, AI 사양 · [C→A] AI 제안, 인간 비준 · [C] AI 가정, 유효하지만 거부 가능 — 및 상태(✅ 결정됨 · 🕐 문서 대기 중 · 💬 제안됨)를 담습니다. 수정은 이전 항목을 참조하는 새 항목이며, 편집이 아닙니다.

  • 미해결 질문은 레코드이지 스크롤백이 아닙니다. 답변되지 않은 항목은 해결될 때까지 추적 파일에 남아 있습니다 — 로그 항목과 함께.

  • 문서는 빌드입니다. 컨텍스트 팩과 상태 뷰는 레코드에서 생성됩니다; 마크다운은 저장 및 교환 형식이므로 잠금이 없습니다 — 파일은 도구 없이도 유용합니다.

  • 라이더 가드. 승인된 결정에 첨부된 제안은 그 승인을 절대 상속하지 않습니다. AI가 작성한 초안은 항상 💬입니다.

Related MCP server: kb

사용

npm ci
npm run fo -- status                 # counts, unratified [C] list, pending rulings
npm run fo -- decisions --provenance C --status decided
npm run fo -- open --section A
npm run fo -- show 12
npm run fo -- pack                   # writes projects/<p>/context-pack.md
npm run fo -- validate               # CI-able: exit 1 on invariant violations

프로젝트 데이터는 projects/<name>/에 있으며 *decision-log.md 및 *open-items.md를 포함합니다(형식은 test/fixtures/ 참조). projects/는 gitignored입니다 — 테넌트 데이터는 귀하의 것이며 비공개로 유지됩니다. --project <dir> 또는 FO_PROJECT_DIR로 다른 위치를 지정하세요.

웹 UI

npm run fo -- pack   # optional: regenerate views first
npm run web          # http://localhost:4747 (FO_PORT / FO_PROJECT_DIR to override)

동일한 파일에 대한 라이브 대시보드: 출처/상태 칩과 필터가 있는 결정 피드, 주의 스트립(대기 중인 판정, 비준되지 않은 [C]), 섹션별 미해결 항목, 통계 — 및 초안 양식(초안은 항상 💬). 100% UI/로직 분리: 클라이언트는 비즈니스 로직이 전혀 없습니다; 모든 파생 값은 /api/state에서 미리 계산되어 도착하며, 브라우저는 렌더링하고 명령을 보낼 뿐입니다.

MCP 서버 (두뇌 연결)

레코드를 모든 Claude Code 세션에 노출:

claude mcp add front-office --scope user -- npx tsx <repo>/src/mcp/server.ts

도구: get_context_pack · list_decisions · list_open_items · draft_decision(항상 💬) · get_stats. 서버 환경에서 FO_PROJECT_DIR을 설정하여 프로젝트를 선택하세요.

아키텍처

프로젝트 자체의 교리에 따라(네, 그 설계 결정은 Front Office 로그에 추적됩니다):

  • src/core, src/adapters, src/views — 순수(엄격한 함수형 ESLint 프로필: let/루프/클래스/변이 없음, 시계와 난수는 주입되어야 함).

  • src/shell, src/mcp — 이펙트 엣지(중간 프로필).

  • 파서는 원시 셀을 그대로 유지 → 직렬화 왕복이 정확히 일치합니다(parse(serialize(parse(x))) ≡ parse(x), 속성 테스트됨).

npm run typecheck && npm run lint && npm test

MIT.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A database-backed MCP server that acts as a project memory bank, enabling AI assistants to store, retrieve, and search structured context like decisions, tasks, and architecture using SQLite and vector embeddings.
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local MCP server that provides a shared context and learning foundation across multiple AI tools (Claude, Copilot, Codex) for multiple projects, enabling persistent knowledge, decisions, and gap reflection through note storage.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that records decisions, rejected alternatives, and justifications, and retrieves them later to avoid re-litigating past choices. It stores data locally in SQLite and Markdown.
    2
    62 PyPI
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for BRIEF.md that captures decisions, constraints, and questions during AI chats, enabling seamless project re-entry across different AI tools.
    8 npm
    MIT