graph-memory-bank について
graph-memory-bankは、リポジトリ内のプロジェクト記憶グラフを構築・維持するエージェントスキルです。YAMLメタデータ付きの小さなMarkdownノードと双方向リンクで情報を整理し、初期構築から変更追跡、継続的な更新まで扱います。
主な機能
- 01情報を小さなMarkdownノードに分割
- 02各ノードにYAML frontmatterを付与
- 03リンク、インデックス、バックリンクを管理
- 04タスク・プロジェクト・プロセスの層で整理
- 05テンプレートとグラフ検査スクリプトを提供
活用シーン
- 01コーディングエージェントにアーキテクチャの文脈を提供
- 02リリース履歴からタスクと変更を記録
- 03ページ、API、データ、連携の関係を整理
- 04コード変更後にリンクや孤立ノードを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ smart-tinker/ graph-memory-bank --skill graph-memory-bankインストール後、Claude Code で/graph-memory-bankを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/quality-bar.mdtemplates.mdscripts/graph_memory_lint.py詳細
Graph Memory Bank
Цель
Сформировать и поддерживать графовую память проекта (как в Obsidian), чтобы ИИ-агенты быстро собирали точный минимальный контекст:
- много маленьких файлов, каждый про одну сущность/идею;
- связи через обычные markdown-ссылки;
- у каждого узла есть краткий YAML frontmatter (машиночитаемый);
- есть обратные ссылки (backlinks), чтобы граф был двунаправленным.
Результат (что должно получиться)
Обычно: docs/graph/ в репозитории, где есть 3 слоя:
tasks/(история изменений: релизы/задачи/коммиты, “что менялось”)project/(семантика: архитектура, ключевые сущности, контракты, API, БД, интеграции, “куда смотреть в коде”)processes/илиprocess/(процессы: правила ведения графа, как обновлять, как читать, качество, генераторы)
Важно: если в репозитории уже есть один из вариантов (process/ или processes/) или другая устоявшаяся структура, не переименовывай “ради красоты”. Подстраивайся под текущую структуру, а в индексах дай явные ссылки.
Если слой процессов пока не нужен, начинай с первых двух, но держи место под третий слой.
Инварианты (жесткие правила)
- Дроби информацию: один файл = одна сущность/идея/контракт.
- Держи узлы короткими: как правило, до 200-300 строк; если разрастается, выноси подузлы.
- У каждого узла есть YAML frontmatter (минимум:
id,type,title,description,status,tags). - Всегда добавляй связи:
- outbound links: “см. также”, “используется в”, “зависит от”
- backlinks: “где используется” (явные ссылки обратно на индексы/хабы)
- Если в проекте есть
_generated/или другие generated-секции: не редактируй руками, правь генератор или исходный узел. - Если есть сомнения/риски: подсвечивай и задавай вопросы (лучше уточнить, чем зацементировать неверную семантику).
Рекомендованная схема frontmatter (минимум)
Делай frontmatter максимально стабильным (для индексирования агентами):
id: глобально уникальный идентификатор узлаtype: тип узла (project,dev_task,release_review,screen,rf_procedure,db_table, ...)title: человекочитаемое имяdescription: 1 предложение “зачем этот узел”status:stub | curated | generatedtags: плоский список тегов (короткие)
Опционально (если реально помогает): releases, source_paths, owner, risk_level.
Как оформлять индексы (важно)
В индексах пиши не только ссылки, но и микро-аннотацию, чтобы не открывать каждый файл:
- [DEV-12345](...): 6-10 слов, что внутри.
Что НЕ делать
- Не тащи секреты/токены/пароли в
docs/(максимум: “ищется в переменных окружения X/Y”). - Не дублируй большие куски кода/SQL: вместо этого “якоря” + короткая выжимка + ссылка на файл.
Быстрый workflow (универсальный)
0) Подготовка
- Создай отдельную ветку (например
graph+memory). - Уточни ограничение записи:
- по умолчанию пиши только в
docs/(или другой явно согласованный каталог).
- по умолчанию пиши только в
- Найди, есть ли уже документация/конвенции (
docs/,ADR,mkdocs,docusaurus).
1) Сбор каркаса (bootstrap)
- Создай
docs/graph/index.md(входная точка). - Создай индексы:
docs/graph/tasks/index.mddocs/graph/project/index.mddocs/graph/processes/index.mdилиdocs/graph/process/index.md(в зависимости от структуры репозитория)
- Зафиксируй соглашения:
- схема
id(обычно префикс + путь, напримерgraph:project/<slug>) - статусы:
stub | curated | generated - теги: короткие, стабильные (не плодить)
- схема
Шаблоны и чек-листы: см. references/templates.md и references/quality-bar.md.
2) リリース/タグごとの確認(リリース主導)
目的:「重要なエンティティ」のうち、実際に変更されたものをすばやく見つけます。
各リリースについて:
- リリース成果物を見つけます:リリースノート/タグ/変更履歴/マージコミット。
- git の範囲を算出します(通常はリリースノートのコミットまたはタグ間)。
- 「エンティティの一覧」を作成します:
- タスク/チケット
- 変更されたパス(モジュール/サブシステム)
- 新規または変更された画面フォーム/コントラクト/DB マイグレーション
- リリースレビューのノード(type
release_review)とエンティティの一覧を作成します。 - 各 DEV タスクについて:
dev_taskノードを作成/更新しますsource_pathsを追加します(最小限のアンカーパスの一覧)- セマンティックノード(
project/*)にリンクします
- インデックスとバックリンクを更新します。
3) エンティティごとの確認(エンティティ主導)
目的:リリースに含まれたものだけでなく、「すべての重要なエンティティ」を対象に、把握できていない箇所をなくします。
重要:「エンティティ」は汎用的なものにします。WMS では 画面/RF 手順、Web サイトでは ページ/API、CRM では オブジェクト/ファネル、データバスでは トピック/スキーマ/コネクタ などが該当します。
手順:
- プロジェクトにとって本当に重要なエンティティのカテゴリを 5~12 個選びます。
- カテゴリごとにカタログ(インデックス/ハブ)を作成し、その後ノードを 1 つずつ追加します。
- 各エンティティに「相互リンク」を設けます:UI/操作/データ/統合/設定。
推奨カテゴリ(関連するものを選択し、すべてを選ぶ必要はありません):
- インタラクションの入口(entrypoints):
- Web/UI:ページ、ルート、主要コンポーネント、フォーム。
- API:エンドポイント、コントローラー/ハンドラー、公開コントラクト。
- CLI/Jobs:コマンド、cron/quartz、ワーカー、バックグラウンドタスク。
- Events/Streams:トピック、イベント、コンシューマー/プロデューサー。
- 操作/コマンド/シナリオ(actions):
- 「システムが実行すること」:ユースケース、サービスメソッド、コマンド、ワークフローのステップ。
- データとコントラクト(data/contracts):
- DB テーブル/モデル、マイグレーション、メッセージスキーマ、DTO、OpenAPI/AsyncAPI、JSON schema。
- 統合(integrations):
- 外部システム、プロトコル(HTTP/JMS/Kafka/SFTP)、再試行、タイムアウト、冪等性。
- 設定とフラグ(config/feature flags):
- ランタイム設定、機能フラグ、環境パラメーター、シークレット(「取得元」のみを記載し、値は記載しません)。
- セキュリティとアクセス(security):
- 認証/認可、ロール/権限、SSO、監査。
- 信頼性と運用(ops):
- メトリクス/ログ/トレース、アラート、SLO、縮退動作、復旧プロセス。
最も重要なルール:「すべてを手作業で説明する」ことを目指さないでください。以下を行います:
- カタログとハブ(ファミリー/モジュール/ドメイン)。
- 根拠を備えたアトミックなノード。
- カテゴリ間のリンク(例:ページ -> API -> サービス -> テーブル -> イベント)。
4) 変更に応じた保守(段階的なメンテナンス)
main への新しいコミットごとに:
- 影響を受けるエンティティを特定します(差分/パス/キーワードから)。
- 余計なコンテキストを広げずに、該当するノードを更新します:
- 「変更内容」の説明を 1~3 文追加します
- コントラクト/コード/DB へのリンクを追加します
- バックリンク/インデックスを更新します
- 簡易チェックを実行します:
- 重複した
id - frontmatter の欠落
- ノード間のリンク切れ
- orphan nodes(
docs/graph内に被リンクのないノード) - 壊れた相対リンク(時間があれば)
- 重複した
基本的なチェックには scripts/graph_memory_lint.py を使用できます。
例:
python3 scripts/graph_memory_lint.py --root docs/graph
必要に応じて、一部のチェックを無効にできます:
python3 scripts/graph_memory_lint.py --root docs/graph --no-check-links
python3 scripts/graph_memory_lint.py --root docs/graph --no-check-orphans
skill のリソース
references/templates.md:ノードの簡易テンプレート。references/quality-bar.md:品質基準と「危険信号」。scripts/graph_memory_lint.py:簡易リンター(frontmatter + 重複したid)。
適切な用途: テンプレート、ボイラープレートコード、ドキュメントテンプレート、画像、アイコン、フォント、またはコピーや最終出力での使用を目的としたファイル。
すべての skill で、3 種類すべてのリソースが必要になるわけではありません。