【必須】現在のアクティビティを完了にする、または完了にせず中断して寝かせる。「/af」「この作業完了」「クローズして」「一旦ここまで」「今日はここで止める」「いったん置いておく」など終える・中断する意図で発動。このスキルを経由せずにupdate_activityでcompleted・pending・snoozed・shelvedにしない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
セッション終了前にtranscriptを解析し、トピック・決定・ログ・アクティビティを一括で記録する。「同期して」「今日の分を記録して」「セッション終わるから残しておいて」などで発動。人が読まない場面では`--minimal`で最小形にする。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
このセッションの会話内容(transcript)を解析し、以下の記録・更新をすべて実行してください。
引数なしなら標準形(下記1〜6)を実行する。--minimal 引数(/sync-memory --minimal など)が渡された場合は最小形を実行する。
このセッションがorchタグの付いたアクティビティ(orch)の担い手で、ユーザーがこの窓口を閉じると言っているなら、以下の手順に入る前にorch skillの「空ける」を先に実行する。閉じないsync-memory(途中の記録など)では空けない。
まだ記録されていない区間(トピック・決定事項・ログ・資材・アクティビティ)を洗い出す。ここで洗い出した範囲を次のステップでまとめて記録する。同じ突き合わせをステップ4以降でやり直す必要はない。
アクション:
get_decisions(entity_type="topic", entity_id=...) と get_logs(entity_type="topic", entity_id=...) を実行し、直近の決定事項・ログを取得get_activities(status="active") で未完了アクティビティを取得(pending + in_progress)重複防止の判定基準:
ステップ1で特定した範囲を、トピック・資材・決定事項・ログ・関連に振り分けて記録する。
transcriptを解析し、議論されたテーマを特定する。
チェック項目:
アクション:
add_topic で作成tags に domain: タグ(必須)+内容を表すタグを付けるセッション中に生成・確認された「静的な情報」を資材として保存する。資材はセッション終了とともに揮発するため、ここで永続化する。
materialに入れるもの(静的な情報 = 事実・成果物・スナップショット):
logとの棲み分け:
アクション:
add_material でタグ付きで保存する(タグ必須)search() で対象 material を特定してから update_material(material_id, ...) で更新するrelated で関連するアクティビティやトピックとリレーションを張る合意が成立した内容(decision)と、議論の経緯(log)を記録する。
決定事項の判定基準:
(正本は decision-record skill の「合意判定基準」節。本ステップの記述と食い違う場合はそちらに従う)
ログの記録対象(議論の流れ・判断プロセス):
チェック項目:
アクション:
add_decision で記録add_log で記録topic_id は関連するトピックを指定tags で内容を表すタグを付ける(省略時はtopicのタグを継承)add_activity で作成する(ステップ3で未登録の場合)CALM自身の不具合・使用感の違和感・既存記録との矛盾に気づいた場合は
add_logs ではなく report_signal を使う(kind一覧は report_signal ツールの
docstringを正とする)。
reasonの定型節(任意):
議論の中で他案を検討して採らなかった・適用範囲が限定的・実測して確認した、といった
情報があれば、reason本文の末尾に定型節(却下案:/適用条件:/適用外:/検証:/隣接確認:)で書く。
書式の詳細は decision-record skillを参照する。将来のセッションが同じ案を再提案したり
射程外に誤適用したりすることを防ぐ。節はすべて任意で、該当なしなら書かない(空項目・
ダミー項目を作らない)。
add_decisions はこの節をパースして precedent としてレスポンスにechoする。書いたつもりの
節がechoに現れなければ書式ゆれの可能性がある(precedent_warnings を確認する)。
議論が途中で終わった論点・アイデア・検討事項を記録する。決定していなくても記録する。
[議論中] の記録基準の正本は decision-record skill の「未決論点の記録: [議論中]」節であり、本ステップの記述と食い違う場合はそちらに従う。[未完] はアクティビティ側の関心事であり、ステップ3で扱う。
記録すべきもの:
チェック項目:
アクション:
add_decision で記録(決定事項と同じテーブルで管理)[議論中]([未完] はアクティビティのタイトル用で、decisionには付けない)tags で内容を表すタグを付けるdecision: "[議論中] Skillの発動条件をどう改善するか(選択肢: A案, B案, C案)"
reason: "議論は出たが結論未定。次セッションで継続"
記録したトピック・アクティビティ間の関連を add_relation で追加する。ここまでトピック・アクティビティの新規作成も既存エンティティへの記録もなかった場合はこの節をスキップする。
判断基準:
remove_relation で消せるため、迷ったら張るチェック項目:
アクション:
add_relation(source_type, source_id, targets=[{"type": "...", "ids": [...]}]) で追加自セッションが触った(言及・着手・作業した)アクティビティに限り、次の3つを行う。全アクティビティを対象にした整理はステップ4a(棚卸し)の役割であり、ここでは扱わない。
実装予定・作業予定をすべて登録する。ここで登録したアクティビティは、資材保存の紐づけ先になる。
アクティビティの判定基準:
チェック項目:
アクション:
add_activity で登録tags に domain: タグ(必須)+内容を表すタグを付けるset_goal(activity_id, goal={"new": {...}}) をopenの条件として書く。候補が複数で定まらない、またはそもそも推せないときは書かない(事後の一括処理でユーザーに聞く相手がいないため、未定義のまま残す)判定対象は、節見出しのとおり自セッションが触ったアクティビティに限る。以下の基準(フェーズ遷移済み等)はDB状態だけで機械的に真偽が付くが、それでも自セッションが触っていないアクティビティには適用しない。ステップ1で取得した全アクティブアクティビティのうち、自セッションが触っていないものは、基準に該当していてもここでは判定しない(該当すればステップ4aの棚卸しの対象になりうる)。
既存アクティビティの完了状態を以下の確信度で判定する:
update_activity(status="completed", closed_by="claude") を実行する。ユーザー確認不要
intent:implement のアクティビティで、対応するPRがまだマージされていないものは、上記のいずれに該当してもこのステップでは閉じないアクション:
update_activity で completed にする(自動クローズしたものはステップ6で事後報告する)。ただし対象が goal に紐づいている場合は update_activity では completed にせず goal 機構側で扱う(get_goal(activity_id=...) で確認する)。外部の完了(PRのマージ状況など)を根拠にする条件は、gh など実際の手段で確かめられれば該当条件を update_goal で satisfied に書き、確かめた事実を add_material か add_logs に残す。確かめられないものは推測のまま satisfied にしない。確かめた結果で全条件が終端すれば judge_goal も呼んでよい(open_questions の扱いはcheck-inの「goalフィールドの扱い」節に従う)[議論] 完了 → [設計] を作成)。既に存在すればスキップ。確信が持てなければ作成せず現状のまま残す[未完])セッション中に途中で終わった話・作業がある場合、次のセッションでこのアクティビティだけ見れば文脈が取れるレベルでアクティビティを登録する。
対象:
アクティビティの書き方:
[未完] 〜 のプレフィックスをつけるtags に domain: タグ(必須)+内容を表すタグを付けるフォーマット例:
title: "[未完] sync-memoryに未完アクティビティ自動作成機能を追加"
description: "「sync-memory改善」トピックで議論中。決定事項の記録はそのまま残し、追加でadd_activityでも登録する方針で合意済み(decision A案)。残作業:SKILL.mdへのステップ追加と動作確認。"
注意:
[議論中] decision とは別に、アクティビティとしても登録する(役割が異なる:decisionは「何が未決定か」、アクティビティは「次に何をすべきか」)set_goal(new) を書く。候補が複数で定まらない、またはそもそも推せないときは書かないステップ4a〜4bの判定に基づき、ユーザーに確認せずClaudeが判断してその場で処理する。ただし4bでrememberの判定が承認を要求する置き場になったものは、承認なしに書ける置き場へ格下げしてその場で書く(下の4b参照)。処理内容はステップ6の完了報告にまとめて記載する。4aが何も無ければ4aは黙ってスキップしてよい。4bは省略せず必ず実行し、結果(訂正の件数)を完了報告に必ず書く。
(本節の判定基準が recompose-context skill の全体モードの「3. 処遇判定」節と食い違う場合は、そちらを正本とする)
goal付きアクティビティの扱い: 以下の判定でcompletedにする(または重複統合で閉じる側にする)前に、対象が goal に紐づいていないか get_goal(activity_id=...) で確認する。goal に紐づいている場合、この棚卸しの推定だけではcompletedにせず、judge_goal も呼ばない(このセッションに根拠のある充足だけが判定材料になり得るが、推定に基づくこのステップの判定はその根拠にならない)。ただし外部の完了を、ステップ3の確信度「高」と同じ基準(gh など実際の手段で確かめられれば update_goal で該当条件を satisfied に書き、終端すれば judge_goal も呼んでよい)で確認できた場合はその限りではない。重複判定(下記1)でも、goal付きのアクティビティは閉じる側にしない(残す側にする。両方がgoal付きなら、このステップでは統合せず現状のまま残す)。
まずスキップ判定: ステップ1で取得したアクティビティを以下のカテゴリに照合し、該当が1件もなければ即座にスキップする。 ユーザーにアクティビティ一覧を見せたり、「該当なし」と報告する必要はない。
判断基準 — いずれかに該当するアクティビティがある場合のみ処理対象とする:
(確信度「高」のアクティビティはステップ3で自動クローズ済みのため、ここでは扱わない)
確信度「中」(完了の可能性が高いがエージェント判断では確定できないもの):
update_activity(status="completed", closed_by="external") で自動的にcompletedにする(ステップ3の確信度「高」と同様の扱い)確信度「低」(整理・棚卸し対象):
update_activity(status="completed", closed_by="claude") にする。判定優先順位: まず情報量(description・タグ・関連リレーションの充実度)が少ない方を選ぶ。情報量が同程度の場合のみ updated_at が古い方を選ぶmax(updated_at, last_heartbeat_at) から7日以上経過しているpendingアクティビティ → 前提が変わらずまだ必要と判断すれば update_activity(activity_id, status="snoozed") で寝かせる(snooze期間経過後に自動でpendingに復活する)、状況を見て不要と判断すれば update_activity(status="completed", closed_by="claude") にするupdate_activity(status="completed", closed_by="claude") にする。description先頭に理由を追記する(例: 「YYYY-MM-DD sync-memoryで前提変更によりcompleted」)update_activity(status="completed", closed_by="claude") にするいずれも判断に迷う場合は、より安全な側(消さない・completedにしない、現状のまま残す)に倒す。
セッションのtranscriptを振り返り、記憶すべき知見を収集・判定する。最初に人間の訂正を拾う。 他の収集パターンはその後にする。
手順(この順で行う):
get_feedback_entries() を1回呼ぶ(50件以下なら引数なしで全件、超えるなら訂正の語で絞り、絞ったときは完了報告の注意事項にそう書く)。文脈内のauto-memory索引・habits/rules・触れたタグのtag-notesも合わせて見る。リストの訂正をこの索引とまとめて突き合わせ、各訂正を「新規」か「再発(既存の教訓名)」に振り分ける。訂正ごとのCALM searchは回さない(判例decisionの要否判定が要るネタだけ、rememberの手順でsearchする)置き場の決め方と書き込みの注意(承認の要る置き場の格下げ、tag notesの全文置換への注意など)はremember側の手順に従う。ただしsync-memoryは事後の一括処理でユーザーに聞く相手がいないため、次のとおり読み替える。
訂正が0件で、他にも記録すべきものがなければ、書き込みなしで終える(完了報告には「訂正: 0件」の行を書く)。
セッション中にClaudeがユーザーへ聞き返した質問(AskUserQuestion)と、「これ前に決めなかったっけ」のような過去の議論を指す定型の発話を機械抽出し、既存記録との類似照合を経て「既存記録で答えられたはずだったか」を判定する。yesと判定した候補は report_signal(kind="precedent_miss") で計測台帳に積む。
注意: 抽出が拾うのはAskUserQuestionの呼び出しと数個の固定フレーズだけである。「〜しないで」のような通常の訂正は拾わない(それは4bの担当)。実績では抽出が0件のことが大半で、0件でも異常ではない。
前提スキップ: 候補が0件のときはこのステップ全体をサイレントスキップする。ユーザーへ「該当なし」と報告する必要はない。
手順:
detect_reask_candidates(transcript_path=<path>) を1回呼ぶ。旧来の抽出スクリプト(scripts/detect_reask_candidates.py相当)・excluded_reason が付いた候補の除外・残候補のうち先頭N件(上限あり。Nを超える候補は判定対象外とし、超過した旨を完了報告に一行残す)への search バッチ実行までを内部で行い、各候補に既存記録top-3(top_hits。閾値は本ステップ末尾の実装ノート参照)が付いた candidates を返すsearch 呼び出しは発生しない(手順2に集約済み)candidate.degraded(内部で行われた search バッチ呼び出しの degraded を候補単位に反映したもの)で degraded=true のときは判定を保守側に倒す(該当候補についてはprecedent_miss記録を行わない。skipした事実は完了報告に一行残す)top_hits(閾値は本ステップ末尾の実装ノート参照。detect_reask_candidatesが内部で閾値判定済み)を「高類似ヒット」として扱う。高類似ヒットが1件もない候補は判定・記録の対象外とする。高類似ヒットがある候補についてのみ、Claudeが「この既存記録があれば、この聞き返しはそもそも不要だったか」を判定する。この判定はClaudeの主観判断であり、同じ候補・同じ既存記録でも判定がぶれうるreport_signal(kind="precedent_miss", summary=..., detail=..., refs=[高類似ヒットの各id], context={"missed_ids": [...]}) を呼ぶ。summaryのフォーマットは下記参照(dedup fingerprintの安定性のため決定論的な文字列に固定する)記録で答えられない性質の候補は除外する:
report_signalのsummaryフォーマット:
summaryは決定論的な文字列 missed: <最上位ヒットの既存記録type>#<id> に固定する(自由記述の要約はdetailに書く)。高類似ヒットが複数件ある場合は、refsのうち最もscoreが高いものを代表として使う。summaryはfingerprint計算にそのまま使われるため、自由記述にすると同じ既存記録を別セッションで踏み直したときに文言が実行ごとに揺れ、fingerprintが一致せずdedupが発火しない。
実装ノート(初期値、観察後に確定値へ差し替え):
detect_reask_candidatesのsearch_top_n引数、既定8件)detect_reask_candidatesのscore_threshold引数、既定0.4)scripts/detect_reask_candidates.py の組み込み既定を使う(detect_reask_candidatesツールは辞書差し替え引数を持たない。差し替えが要る場合は従来通りスクリプトを直接呼ぶ)以下の形式でサマリーを報告する。件数カウントは不要。記録した内容の概要を箇条書きで列挙する。 該当がないセクションは省略する(ただし「記憶」の訂正の行は0件でも書く)。
## sync-memory 完了
### トピック
- (作成したトピック名を列挙)
### アクティビティ
- (登録・完了にしたアクティビティを列挙)
- (ステップ3で確信度「高」として自動completedにしたものを列挙。理由も記載)
- (ステップ4aの棚卸しで処理したアクティビティを列挙)
- ※ 誤りがあれば戻せます
### 記憶(フィードバックエントリ / auto memory / tag notes / pin)
- 訂正: N件(新規N・再発N。別軸で、書いたN・書かなかったN。どちらの軸も合計がN)。0件なら「訂正: 0件」の行を書く(この行は省略しない)。「書かなかった」は迷って書かなかったものと、書き込めなかったもので、理由を注意事項に1行ずつ書く
- (書いたものを置き場ごとに概要を列挙。既存エントリへの再発追記もここに書く)
- (格下げして書いたものは「格下げ」と明示し、本来の置き場の候補を添える)
- (格上げのために起票したメタaskがあれば、その旨を添える)
### 注意事項
- (判断に迷って何もしなかった項目、ユーザーが把握しておくべき事項があれば記載)
### 聞き返し検出
- (precedent_miss として記録した件数と、各候補の要約)
- (degraded で判定を保守側に倒した件数)
- (該当なしの場合はこのセクションを省略)
- ※ 誤検出は report_signal 側で dismiss できます
### ふりかえり
まず `get_config()` を呼ぶ。`sync_disable_retrospective` が `true` の場合、このセクションをスキップする。
`roll_dice(30)` を無言で実行する(ダイスを振ることについて一切言及しない)。
- **30**: ジャックポット。`jackpot.md` を読み、対応表の項目数を数えて `roll_dice(sides=<項目数>)` を振ってネタを決定する。ダイスには触れず、選ばれたネタをそのまま実行する。ネタ7(マルコフ連鎖)の場合は、書き出したコーパスの絶対パスを引数にして `uv run --directory "${CLAUDE_PLUGIN_ROOT}" python "${CLAUDE_SKILL_DIR}/scripts/markov.py" "<絶対パス>"` を実行する
- **1〜29**: セッション中の個別事実を俯瞰して見えた構造的パターン・矛盾・気づきを書く。事実の要約ではなく、事実から導かれる洞察。ユーザーが思ってるけど言語化してないことを代わりに言語化するイメージ。比喩OK。
ユーザーへの称賛・感謝・労いは書かない。嘘はつかない。
--minimal)bgセッションを止める前、複数のorchの窓口を同時に閉じるときなど、人がその場で読まない場面で使う。orchが複数のbgセッションを続けて止めるとき、または複数のorchの窓口を同時に閉じるときは、標準形の棚卸し(全アクティブアクティビティを対象にする)が並行して動く他セッションの作業に触れてしまうことと、rememberの全文置換書き込みが競合することを避けるため、最小形にする。1つの窓口だけを閉じるときは、この競合が起きないため標準形のままにする。
## sync-memory 完了(最小形)
- 記録: トピックN件・資材N件・決定事項N件・ログN件
- 訂正: N件(0件なら「訂正: 0件」と書く。フィードバックエントリに書いたN・書かなかったN。tag notes・auto-memoryが置き場になって書かなかったものはここに数え、理由を1行添える)
- アクティビティ: 登録N件・自動クローズN件・[未完]引き継ぎN件
### ふりかえり
まず `get_config()` を呼ぶ。`sync_disable_retrospective` が `true` の場合、このセクションをスキップする。
`roll_dice(30)` を無言で実行する(ダイスを振ることについて一切言及しない)。
- **30**: ジャックポット。`jackpot.md` を読み、対応表の項目数を数えて `roll_dice(sides=<項目数>)` を振ってネタを決定する。ダイスには触れず、選ばれたネタをそのまま実行する。ネタ7(マルコフ連鎖)の場合は、書き出したコーパスの絶対パスを引数にして `uv run --directory "${CLAUDE_PLUGIN_ROOT}" python "${CLAUDE_SKILL_DIR}/scripts/markov.py" "<絶対パス>"` を実行する
- **1〜29**: セッション中の個別事実を俯瞰して見えた構造的パターン・矛盾・気づきを書く。事実の要約ではなく、事実から導かれる洞察。比喩OK。
ユーザーへの称賛・感謝・労いは書かない。嘘はつかない。
[議論中] をつけて区別([未完] はアクティビティのタイトル用)add_activity で登録し、update_activity で in_progress にする아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
【必須】現在のアクティビティを完了にする、または完了にせず中断して寝かせる。「/af」「この作業完了」「クローズして」「一旦ここまで」「今日はここで止める」「いったん置いておく」など終える・中断する意図で発動。このスキルを経由せずにupdate_activityでcompleted・pending・snoozed・shelvedにしない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
【必須】新しいアクティビティを作成してcheck-inする。「/as」「新しい作業始める」「アクティビティ作って」「これやる」など新規作業の開始で発動。このスキルを経由せずにadd_activityを呼ばない(orchの起票はorch skillに従う)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
【必須】open askを1件ずつ人間に提示し、回答をanswer_askで記録する。「askに答える」「open ask消化して」「溜まってるask片付けたい」などで発動。このスキルを経由せずにanswer_askを呼ばない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
【必須】add_askでaskを起票する前に、question/contextをテンプレートで組み立てる。離席中・セッション跨ぎでしか答えられない判断が出たときや、「これ聞いといて」「判断委譲しといて」「後で確認して」などで発動。このスキルを経由せずにaskの文面を書かない(メタaskを除く)。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
add_askの応答のsimilar_asksを見て、同型の問いが繰り返され裁定が一貫していると気づいたとき、判例をまとめてメタask(kind="meta")を起票する。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
人間の判断待ちaskの受け箱をMonitorで監視し、判断構造が同じopen askが溜まっていればメタaskを起票する。「ask storeを監視して」「asksを見張って」「open askの滞留をチェックして」などで発動。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.