Skip to main content
Glama

Front Office

AIとの会話で構築されたプロジェクトのためのデザインオペレーションズのシステム・オブ・レコード:決定ログ、未解決の質問、そして生成されたビューとしてのドキュメント — すべてのセッション(人間またはAI、今日または数ヶ月後、並行または逐次)がチャットのスクロールバックではなく同じ頭脳から作業できるように。

実際の問題から生まれた:長いAIセッションにわたるゲームの設計で46件のログされた決定が生まれ、「それは実際に承認されたのか?」という監査が常に必要だった。Front Officeは監査証跡を主要な成果物にする。

コアアイデア

  • 決定ログはイベントログである。 すべての決定はいつ/誰が/なぜ、来歴タグ — [A] 明示的な人間の裁定 · [A→C] 人間の指示、AIの仕様 · [C→A] AIの提案、人間が批准 · [C] AIが想定、有効だが拒否可能 — そしてステータス(✅ 決定済み · 🕐 ドキュメント待ち · 💬 提案中)を持つ。修正は古いエントリを参照する新しいエントリであり、決して編集ではない。

  • 未解決の質問はレコードであり、スクロールバックではない。 未回答の項目は解決されるまで追跡されたファイルに存在する — ログエントリとともに。

  • ドキュメントはビルドである。 コンテキストパックとステータスビューはレコードから生成される。markdownはストレージかつ交換フォーマットであり、ロックインはない — ファイルはツールなしでも有用である。

  • ライダーガード。 承認された決定に添付された提案は、その承認を決して継承しない。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/はgitignoreされている — テナントデータはあなたのものであり、プライベートのままである。 --project <dir>またはFO_PROJECT_DIRで別の場所を指定する。

Web 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