mcpField
O
obelisk

obelisk

github.com/tommy0103エージェントワークフロー1392 回インストール1 週間前に更新
リポジトリ

obelisk について

obeliskは、obelisk CLIを使ってローカルのコーディングエージェント履歴を検索するスキルです。範囲を絞った検索や証拠の確認を通じて、過去のセッションや保存済みメモリを整理します。

主な機能

  1. 01範囲を指定した履歴検索
  2. 02セッションとメッセージの検索
  3. 03保存済みメモリの参照と検証
  4. 04制限付きJavaScriptクエリ
  5. 05証拠に基づく情報整理

活用シーン

  1. 01コーディングセッションの過去の決定を探す
  2. 02メッセージに照らして記憶の結論を確認する
  3. 03プロジェクトや期間を指定して作業を振り返る
  4. 04履歴に基づく簡潔な回答の作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tommy0103/obelisk-skill --skill obelisk

インストール後、Claude Code で/obeliskを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

package.json
references/
advanced-helpers.md
api-reference.md
memory-workflow.md
pitfalls.md
query-patterns.md
recap-patterns.md
recap-writing.md
retrieval-semantics.md
schema.md
references/recap/
overview.md
pattern1-cover.md
pattern2-thinking.md
pattern3-vibe.md
pattern4-workflow.md
pattern5-closing.md
writing1-cover.md
writing2-thinking.md
writing3-vibe.md
writing4-workflow.md
writing5-closing.md

詳細

obelisk

インストール済みの obelisk CLI を使って、ローカルのコーディングエージェントの履歴を取得します。 範囲を限定した JS クエリを記述し、その JSON 結果を読み、根拠に基づいて回答します。

取得ワークフロー

  1. プロジェクト、ファイル、セッション、期間、トピックのうち、最も狭い範囲を選びます。 クエリを記述する前に、以下の該当するリファレンスを読みます。
  2. 通常、新しいタスクでは overview({ limit: 6 }) から始めます。正確なセッション ID、メッセージ UUID、または絶対ファイルパスが指定されている場合は、事前の概要確認を省略します。概要はナビゲーションマップであり、根拠ではありません。
  3. memories() で過去の結論を呼び出し、search() または範囲を絞ったヘルパーを使ってセッションの根拠を確認します。メモリーの検索語には英語を使います。セッション全体を読み込むのではなく、選んだヒットを messages() で展開します。
  4. クエリ内でグループ化、重複排除、必要な項目の抽出を行います。安定した ID と短い抜粋を返し、可能であれば統合した JSON を 10k~12k 文字程度に収めます。
  5. 簡潔な根拠を示して回答します。過去のメモリーが回答に影響する場合は、自然な形でその旨を示します。永続化する新たな結論の保存を提案し、メモリーファイルの書き込みやメモリーレコードの変更は承認を得てから行います。

is_invoking: true は独立した過去の根拠ではなく、現在のセッションとして扱います。通常の会話の根拠となるのは、表示されている非メタテキストです。 思考内容とツール出力は、根拠としての役割が異なります。それらの情報を取得する前に、取得の意味を確認してください。また、置き換えられたブランチについても同様です。

クエリを実行する

クエリのパスが衝突しないよう、一意の一時ディレクトリを使用します。

qdir=$(mktemp -d /tmp/obq.XXXXXX 2>/dev/null || { d="/tmp/obq.$$.$RANDOM"; mkdir "$d"; echo "$d"; })
qfile="$qdir/query.mjs"
cat > "$qfile" <<'JS'
const hits = search('auth fix', { limit: 5 });
return hits.map(h => ({
  session_id: h.session.id, uuid: h.message.uuid,
  content_type: h.message.content_type,
  snippet: h.message.text?.slice(0, 240),
}));
JS
obelisk --query "$qfile"

CLI はファイルを非同期ラッパー内で実行します。return によって JSON が出力されます。クエリは読み取り専用であり、スクリプト内からファイルシステムやネットワークにはアクセスできません。広範な履歴を検索する場合は、この簡単なキーワード例ではなく、クエリパターンにある最初の検索用レシピを応用してください。

キーワードをすばやく検索するには:

obelisk --search "keyword" --nonce "obq-<unique-token-you-invent>"

一意なリテラルのノンスを指定してください。シェルの置換では、トランスクリプト内で呼び出しを特定できません。 クエリファイルは、記録されたパスまたはスクリプトの内容によって特定されます。

最新のインデックスと権限

取得の前に ~/.obelisk/obelisk.sqlite を更新するには、CLI の呼び出しが正常に完了する必要があります。更新に失敗した場合、古い読み取り専用インデックスに切り替えてはいけません。

コマンドが ~/.obelisk への書き込み権限エラー(SQLITE_READONLY、EACCES、EPERM など)で失敗した場合は、sandbox_permissions: "require_escalated" またはホストに相当する書き込み権限の仕組みを使って、同じコマンドを再実行してください。アクセスできない、または拒否された場合は、処理を中止してその障害を報告してください。SQLite や JSONL を直接読み取っても、正常な更新の代わりにはなりません。

ヘルパーを選ぶ

既定の取得インターフェイスは次のとおりです。

ヘルパー目的
overviewプロジェクトと最近のエントリーポイントを把握します。
sessions構造的なフィルターを使ってセッションを探します。
searchトピックに関するメッセージの根拠を検索します。
messages1 件のメッセージ、範囲を限定したウィンドウ、またはセッション内の区間を読み取ります(CLI 0.3.0 以降)。
memories以前に保存した結論を呼び出します。
summaries記録されたセッションの要約を読み取ります。
sql他のヘルパーでは対応できない結合や集計を行います。

特殊なヘルパーやレガシーヘルパーも引き続き呼び出せます。必要に応じて、それらの API コントラクトを確認してください。オプション名や行のフィールドに不確かな点がある場合は、それらを前提にする前に確認してください。

タスクに応じてリファレンスを読み込む

現在のタスクに必要なリファレンスだけを読み込みます。各リファレンスには、それぞれの契約や手順が記載されています。ディレクトリ全体を事前に読み込まないでください。

作業内容読むもの
幅広い統合、設計の経緯、進捗の要約、通常の週次・月次レビュー、またはユーザーが行ったこと、学んだこと、決定したこと、試したこと、中止したことクエリパターンと検索セマンティクス。
範囲を限定したプロジェクト/ファイル/セッションの検索、複数ステップの検索、相関付け、または証拠の分類検索セマンティクス。
ヘルパーのオプション、フィールド、ページング、または特殊な/レガシーなヘルパーの選択API リファレンス。メッセージの展開については、メッセージの契約を参照してください。
生の SQL の記述実行前にスキーマ。
メモリの保存、アーカイブ、または更新ファイルへの書き込みや変更処理の実行前にメモリのワークフロー。
ワークフロー固有の検索高度なヘルパー。
エラーからの復旧、または FTS、並べ替え、行の形式、生レコードに関する予期しない動作の解決落とし穴。
明示的な /obelisk recap ...最初のクエリの前にリキャップの概要を読み、その後はカードごとの開示手順に従ってください。

/obelisk の後の最初の単語が recap の場合にのみ、リキャップに振り分けてください。通常の週次/月次の要約では、このワークフローは選択されません。

承認済みのメモリ変更は、別の変更用エントリーポイントを使ってローカルで実行します。 obelisk --attune /tmp/register-memory.mjs. 実行前に、--query で必要な ID を取得してください。--attune で公開されるのは remember() と forget() のみです。

コメント