name: datalog-debug-skill description: freee API から同期したデータ、または任意の What-if データを DataLog (オンメモリ監査エンジン) に投入し、クエリ・監査・可視化で分析するためのスキル。会計税務・労務・社内統制の整合性監査、仮想シナリオ検証、グラフ探索を行う際に使う。

DataLog Skill

freee 会計・人事労務データを「事実 (Facts) と規則 (Rules) の集合」として取り込み、クエリ・監査・インタラクティブなグラフで分析するスキル。本番 freee データへの書き込みは発生せず (オンメモリ独立環境)、多様な入り口 (API 同期 / 自由 transact / LLM 試作) を同じグラフモデルに吸収する。

初期設定 (必須・非自動)

DataLog は MCP サーバー起動時に空の状態で立ち上がる。freee API データは 明示的に datalog_sync_* を呼ばない限り 1 件も投入されない (自動同期は無い)。クエリや監査を走らせる前に、対象ドメインに応じて以下を順に実行すること。

  1. freee_auth_status で OAuth トークンが有効か確認 (期限切れなら freee_authenticate)
  2. freee_set_current_company で対象事業所を選択
  3. datalog_reset でクリーンな環境を確保 (再 sync 時は必須)
  4. 対象データを sync (会計監査なら deals/partners/account_items/tax_codes、社労士監査なら employees/work_record_summaries)
  5. datalog_visualize で取り込み結果を確認

注意点:

ツール早見表

ツール 役割
datalog_schema 現在のスキーマ情報 (固定 + 登録済み + 動的統計 + 推奨クエリ) を一括で返す
datalog_query 任意の datalog クエリを実行
datalog_reset DataLog 環境を初期化
datalog_transact 任意 datom を投入 (persist=true で durable 永続化)
datalog_retract durable に永続化した datom のうち指定したものだけを撤回 (= 検証フィクスチャの後始末。 reset 全消しと違い対象限定)
datalog_sync_* freee API からデータ同期 (account_items / partners / tax_codes / deals / user_matchers / employees / work_record_summaries)
datalog_visualize HTML 可視化 (自動更新)
datalog_audit_list / datalog_audit_get / datalog_audit_create / datalog_audit_update / datalog_audit_delete / datalog_audit_run_all AuditQuery (監査クエリ) CRUD + 全件走行 (現行の正典モデル)。query は [:find ?x :where ...] selector。GUI と同じ store に書くのはこちら
datalog_predicate_list / datalog_predicate_get / datalog_predicate_create / datalog_predicate_update / datalog_predicate_delete DomainPredicate (IDB / 派生述語) CRUD (現行の正典モデル)。query が rule body。is_detail_of 等のドメイン述語をここで作る
datalog_testcase_list / datalog_testcase_get / datalog_testcase_create / datalog_testcase_update / datalog_testcase_delete / datalog_testcase_run TestCase (header: title / dataSource / kind / statuteDescription) CRUD + 配下 row 一括走行。parentKind=audit_query | domain_predicate + parentId で親に紐付く
datalog_testrow_list / datalog_testrow_get / datalog_testrow_create / datalog_testrow_update / datalog_testrow_delete TestRecordV2 row (nodeKey / expectedKind / businessExpectation / freeeReqBody) CRUD。TestCase 配下の test データ 1 行
datalog_server_info サーバ build 情報 (commit / deploy 時刻) を返す。版数文字列が再デプロイ跨ぎで据え置きでも、どのビルドを叩いているか判別できる (= FB 切り分け用)

test の設計・作成は TestCase + testrow の親子モデル (datalog_testcase_* + datalog_testrow_*、上表) を使う。TestCase 1 件 = header (title / dataSource / kind / statuteDescription) で、その配下に複数 testrow (= nodeKey / expectedKind / businessExpectation / freeeReqBody)。走行は datalog_testcase_run。観点設計は audit-test-design-skill / freee-api-test-record-skill を参照。

基本ワークフロー

A. 実データ監査 (会計・税務)

freee_set_current_company → datalog_reset → datalog_sync_account_items
→ datalog_sync_partners → datalog_sync_tax_codes → datalog_sync_deals
→ datalog_sync_user_matchers (任意: 自動仕訳ロジック監査用)
→ datalog_visualize

datalog_sync_user_matchers は freee の自動登録ルール (UserMatcher) を取り込む。明細の自動仕訳ロジック (条件 / 適用 act / 適用先 account_item) を DataLog で照合できるようになり、「ルール適用結果と実 account_item の乖離」「無効化されたまま放置されたルール」等の監査が可能。

B. 人事労務データ (社労士観点)

freee_set_current_company → datalog_sync_employees
→ datalog_sync_work_record_summaries year=YYYY month=M → datalog_visualize

C. What-if 仮想データ

datalog_transact {...} → datalog_query → datalog_visualize

D. スキーマ発見 (LLM 向け)

datalog_schema (初回のみで全体像取得)
→ 興味のある概念名を特定
→ datalog_query (返された recommendedQueries を参考に)
→ 必要なら datalog_audit_create で監査化 / datalog_predicate_create でドメイン述語化

詳細リファレンス

skill-only クライアント (= この skill を MCP 経由でしか読めない素の AI) は、上記 references を datalog_skill_list で一覧し datalog_skill_get(例 references/query-syntax.md)で本文取得できる。

よくある操作

運用鉄則 (厳守)

  1. local (datalog-store/<base>.local.<breaking>.json) は絶対に手編集しない
  2. common (datalog-store/<base>.<breaking>.json) のみ手編集可
  3. 監査クエリはドメイン述語 (DomainPredicate) を最大限活用
  4. 足りないドメイン述語は先に作る → その後監査クエリを書く
  5. 新規ドメイン述語 / 監査クエリは test 駆動 (現行モデル: TestCase + testrow)
  6. description は 3 系統で書く (audit query のみ statuteDescription 必須)
  7. status 4 値ライフサイクル (= rule / query の 稼働状況)
  8. runStatus 7 値 (= test / TestRecord の 走行・段階)
  9. AI は検証データを自発削除しない (厳守)

breaking version とファイル名

datalog-store/ 配下の common / local 両方にバージョンタグ (<major>.<minor>、ゼロ詰め無し) が埋め込まれる:

common: <base>.<breaking>.json         例: query.0.0.json
local : <base>.local.<breaking>.json   例: query.0.0.local.json

<breaking>package.json.version の major.minor 部分に追従する。

旧 breaking 版の local ファイルは並列に残せる (= 現行版でないものは識別可能)。書き直し完了後に git rm で削除可。MCP CRUD ツールは現行 breaking 版にのみ書き込む。

ドメイン述語ファースト (要点)

クエリを書く前に必ず datalog_predicate_list で既存ドメイン述語 (DomainPredicate / IDB) を確認し、活用可能なら畳む。型検査の繰り返し ([?e "is_a" ?c]...) は対応する述語 (例 is_detail_of) に畳み、:find 直後の :in$ % を必ず含める (忘れると Missing rules var '%' in :in で失敗、空返りではない)。試作は :in $ % 無しのアトミック述語で動作確認 → 安定後に datalog_predicate_create + datalog_audit_create で監査化。

good/bad の EDN 例、:in $ % 経路差 (audit 走行は自動注入 / ad-hoc datalog_query のみ inputs 明示)、Pre-flight チェックリストは idb-first-fewshot を参照。

注意事項

開発時の reconnect 最小化

原則: normal user 経路 (= MCP tool 連続呼び出し + 必要に応じた手編集) では reconnect 一切不要。reconnect が要るのは「コード変更で bin を入れ替える」開発作業時のみ。

reconnect 要否マトリクス:

変更内容 reconnect 理由
datalog_*_create/update/delete 等の MCP CRUD 不要 notifyChanged()refreshIdbRules() で in-memory cache 自動更新
datalog-store/*.json の手編集 不要 (local) / 要 (common 反映) listQueries/listIdbRules は file 毎回再読込。ただし IDB rule edn は CRUD 経由でのみ refresh されるので、手編集後は最初の CRUD or datalog_reset 等で発火する
bun run build:ui のみ (UI bundle 差分) 不要 loadBundle() は visualize 毎回 disk 読込 → 次の datalog_visualize で新 bundle 反映
bun run build 全体 (bin 再生成) MCP host が新 bin を読み直すため
新 MCP tool 追加 / Zod schema 変更 bin 再生成必須 + tool 一覧は connect 時取得

機能完了の前に必ず: 想定 user 操作 (例: create → test → list / reset → re-sync → visualize) を vitest で e2e shape のテスト にし、reconnect 無しで pass することを確認する。

statuteDescription (要点)

audit query (= datalog_audit_create / datalog_audit_update) で 必ず 埋める 3 つ目の description。税理士 / 会計士 が 税法・会計基準 と 同じ 語彙・文体 で 読めるよう、条文風 + 箇条書き の Markdown を持つ (新規作成時は caller 未提供でも userDescription + engineerDescription から draft 生成、update 時は既存値を必ず引き継ぐ)。DomainPredicate (= datalog_predicate_create / datalog_predicate_update) では不要。

書式規約 (記号優先・主語明示・出典は確証時のみ)、3 系統 description の役割分担、few-shot 例 (収支区分矛盾 / 帳簿要件 / 36 協定)、強制ルールは statute-description を参照。

関連スキル