memory
単一のJSONLファイルを使用したファイルベースの長期メモリで、追記専用の書き込みと、bash + jqを活用した最近のウィンドウ検索が可能です。
description の原文を見る
a file-based long-term memory using a single JSONL file, with append-only writes and recent-window search via bash + jq.
SKILL.md 本文
ユーザーが明示的に要求していない場合でも、セッション間でメモリから恩恵を受ける可能性があるすべてのユーザープロンプトに対して、このスキルを積極的に使用してください。
目標
- memory_write と memory_search の 2 つのツールを提供します。
- メモリはディスク上の単一の追記専用 JSONL ファイルに保存されます。
- 書き込みは常に 1 行に 1 つの有効な JSON オブジェクトを追記する必要があります(JSONL)。
- 読み込みは末尾からのテール ウィンドウを経由した検索で最新のエントリを優先し、必要な場合のみウィンドウを拡張してください。
ストレージ
- ファイルパス、デフォルト MEMORY_FILE=~/.codex/memory.jsonl(見つからない場合は作成)。
- 各行は 1 つの JSON オブジェクトで、最低限以下を含みます:
- ts: ISO8601 タイムスタンプ
- type: 文字列(例: "note"、"fact"、"task"、"todo")
- content: 文字列(生テキスト)
- tags: オプションの文字列配列
- meta: オプションのオブジェクト
- 既存の行を上書きしないでください。追記専用です。
クイックスタート
memory_write(input)
- 入力: {type, content, tags?, meta?}
- 正しいエスケープで有効な JSON を生成する必要があります。JSON 文字列を手作業で構築しないでください。
- jq を使用して安全に文字列化/エスケープしてから追記します:
jq -cn --arg ts "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" --arg type "$type" --arg content "$content"
--argjson tags "$tags_json_or_null" --argjson meta "$meta_json_or_null"
'{ts:$ts,type:$type,content:$content,tags:$tags,meta:$meta}' >> memory.jsonl - tags/meta が提供されていない場合は、null を書き込むか、フィールドを省略します(1 つの一貫したアプローチを選択してください)。
memory_search(query)
- 入力: {q: string, limit: int=20, window_lines: int=50000, mode: "rg"|"jq"|"hybrid"="hybrid"}
- デフォルト動作(ハイブリッド):
- tail -n window_lines memory.jsonl
- クエリ文字列を rg で検索(デフォルトでは q をリテラル部分文字列として処理。q が /.../ で始まる場合はオプションで正規表現をサポート)
- マッチからの行を jq で解析/検証(不正形式の行は無視)
- 最新の結果を最初に返します(テール ウィンドウは最新であるため、ウィンドウ内の元の順序を保持するか、必要に応じて逆順)
- 結果が limit より少ない場合は、ウィンドウ幅を指数関数的に拡張します(例: *4)。最大値(例: 1,000,000 行)まで拡張してから停止します。
- 出力: {results: [json objects], truncated: bool, used_window_lines: int}
実行可能スクリプト
このスキルには 2 つのインターフェースのための実行可能なリファレンス実装が含まれています:
memory/scripts/memory_write(stdin から JSON を読み込み、1 JSONL 行を追記、JSON 結果を出力)memory/scripts/memory_search(stdin から JSON を読み込み、最近のウィンドウを検索、JSON 結果を出力)
例:
printf '%s' '{"type":"note","content":"User prefers Python.","tags":["preference"]}' | memory/scripts/memory_write
printf '%s' '{"q":"Python","limit":5}' | memory/scripts/memory_search
CLI 要件
- 標準 Unix ツールに依存します: bash、touch、tail、rg(ripgrep)、jq。
- フォールバックを提供します: rg がない場合は grep を使用、jq がない場合は明確なエラーで失敗します。
- 任意のユーザーテキストでコマンドを安全にしてください(適切なクォーティング)。
- スキルが生のテキスト ログではなく、構造化 JSON をエージェントに返すようにしてください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- Hongyu-yu
- ライセンス
- MIT
- 最終更新
- 2026/2/9
Source: https://github.com/Hongyu-yu/matsci-ai-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。