skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
rheinmir/setup197 installs

record-episode

Ghi một SESSION EPISODE có cấu trúc (tầng nhớ episodic) vào memory store để phiên sau truy hồi được 'phiên trước làm gì' — theo NGỮ NGHĨA, không chỉ theo [[wikilink]]. Bọc mem-rank.py (engine). On-demand, KHÔNG auto-hook (ADR-004). Trigger: 'ghi episode', 'record episode', 'chốt phiên này vào nhớ', 'lưu lại phiên trước làm gì', 'session episode', '/record-episode'.

How do I install this agent skill?

npx skills add https://github.com/rheinmir/setup --skill record-episode
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill records session history into a local memory store by executing a Python script via shell commands. While functional, it is vulnerable to command injection if user-supplied inputs contain shell metacharacters that escape the provided quoting.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

What does this agent skill do?

Skill: record-episode

Tầng nhớ episodic cho overstack (4/4 tầng nhớ — working/semantic/procedural/episodic). Wiki giữ tri thức chưng cất (semantic); skill giữ quy trình (procedural); .claude/memory giữ sự thật phẳng. Còn thiếu: sự kiện phiên cụ thể — "phiên trước đã làm gì, đụng file nào, kết quả ra sao". Skill này ghi đúng thứ đó vào mem-rank store để phiên sau query truy hồi được theo NGHĨA (không cần ai đặt [[wikilink]]).

WHAT

Purpose và context

  • Purpose: ghi một session episode có cấu trúc (did · files · outcome · session) vào memory store để phiên sau truy hồi "phiên trước làm gì" theo NGỮ NGHĨA, không cần [[wikilink]].
  • Trigger (when to use):
    • Cuối một phiên/mốc có ý nghĩa (đóng issue, xong một tính năng, một quyết định) — chốt lại làm gì.
    • Khi muốn phiên sau tự nhớ được "việc X đã làm ở đâu, kết quả gì" mà không phải đọc lại git log.
    • User nói "ghi episode", "record episode", "chốt phiên này vào nhớ", "lưu lại phiên trước làm gì", "session episode", /record-episode.
  • Non-goals: KHÔNG dùng cho tri thức bền (→ đó là wiki /ingest) hay sự thật phẳng người dùng (→ .claude/memory). Không tự chạy qua hook.

Mental model

phiên làm việc → did (1 câu) + files + outcome + session → mem-rank.py episode → harness/metrics/memory.jsonl → retrieve --kind-filter episode. Episode là SỰ KIỆN (episodic), trỏ về phiên; wiki (semantic) vẫn là nguồn chân lý. Sửa episode = supersede có link thời gian, không ghi đè.

Input và output contract

FieldRequired?Ý nghĩa
In"<did>"cóhành động chính (động từ + đối tượng), đủ term để truy hồi
In--fileskhôngpath đụng tới, ngăn cách phẩy (lấy từ git diff --name-only nếu cần)
In--outcomekhôngkết quả kiểm chứng được (test xanh / issue đóng / PR số mấy)
In--sessionkhôngtên phiên / issue
In--id <ID> --supersedes <ID>chỉ khi sửathay bản cũ, giữ link supersedes
Outepisode trong harness/metrics/memory.jsonlcó"xong" = retrieve ... --kind-filter episode trả lại được episode vừa ghi

Rules và capabilities

  • RULE-01 (MUST): On-demand, KHÔNG auto-hook — không đăng ký Stop-hook tự ghi (ADR-004: /fdk on-demand only).
  • RULE-02 (MUST): Episode là sự kiện, không phải tri thức — nếu nội dung là bài học bền, chưng cất vào wiki qua /ingest; episode chỉ trỏ "làm ở phiên nào", không thay wiki (wiki vẫn là nguồn chân lý).
  • RULE-03 (MUST): Store là local/travel-được — harness/metrics/memory.jsonl (đã gitignore); không kéo cloud.
  • RULE-04 (SHOULD): Ranker hiện là token-overlap (tất định); embedding là adapter mem-rank.config.yaml (verified:false) — bật khi có backend, không chặn việc dùng ngay.
  • Capabilities: ghi append vào memory store local + truy hồi xếp hạng; không mạng, không hook.

Failure boundaries

  • Nội dung là bài học bền / quyết định kiến trúc → clarify/redirect sang /ingest hoặc wiki ADR, không ghi episode.
  • Không có kết quả kiểm chứng được → ghi did + files, bỏ --outcome (partial), không bịa outcome.
  • retrieve không trả lại episode vừa ghi → failed, báo user, không coi là xong.

HOW

Main workflow

StepTypeInputsActionOutputs/exitFailure/next
W01judgmentphiênTóm tắt phiên thành 1 câu didcâu didnội dung là tri thức bền → /ingest
W02deterministicgit diff, kết quả test/issueThu --files + --outcometham sốkhông có outcome kiểm được → bỏ trống
W03effectdid + tham sốmem-rank.py episode ...dòng episode trong store—
W04effectepisode cũ saiSupersede bằng --id <ID> --supersedes <ID> (B01)episode mới + link—
W05deterministiccâu hỏimem-rank.py retrieve "<câu hỏi>" --kind-filter episodeepisode hiện trong kết quảkhông thấy → failed

Chi tiết từng bước (nguồn chân lý cho W01–W05):

Steps

  1. Tóm tắt phiên thành 1 câu did — hành động chính (động từ + đối tượng), đủ term để truy hồi.
  2. Thu file + kết quả: --files = các path đụng tới (lấy từ git diff --name-only nếu cần); --outcome = kết quả kiểm chứng được (test xanh / issue đóng / PR số mấy).
  3. Ghi episode:
    python3 harness/scripts/mem-rank.py episode "<did>" \
      --files "path1,path2" --outcome "<kết quả>" --session "<tên/issue>"
    
  4. Sửa lại một episode cũ (temporal supersede): dùng --id <ID> --supersedes <ID> — bản mới thay bản cũ và giữ link supersedes để trả lời "điều này đúng ở thời điểm nào".
  5. Kiểm nhanh: python3 harness/scripts/mem-rank.py retrieve "<câu hỏi>" --kind-filter episode.

Anti-patterns

  • Ghi episode dài như nhật ký — 1 câu did + file + outcome là đủ để truy hồi; dài = nhiễu.
  • Dùng episode làm nơi lưu quyết định kiến trúc bền — đó là việc của wiki ADR.

Branches

IDKindGuardHành viSkip / failureRejoin
B01user_optionalcần sửa một episode cũghi bản mới với --id <ID> --supersedes <ID> (temporal supersede)không sửa → skipW05
B02capability_optionalcó backend embedding, mem-rank.config.yaml verified:trueranker dùng embedding thay token-overlapchưa có → token-overlap (mặc định)W05

Validation và stopping

Xong khi W05 truy hồi được episode vừa ghi. Một episode = 1 câu did + file + outcome; dài hơn là nhiễu (xem Anti-patterns).

Examples

  • Positive: vừa đóng GH#9 → python3 harness/scripts/mem-rank.py episode "add episodic memory layer to mem-rank" --files "harness/scripts/mem-rank.py" --outcome "GH#9 closed, mem-proxy eval pass" --session "GH#9" → retrieve "episodic memory làm ở đâu" --kind-filter episode trả episode đó.
  • Boundary/failure: user muốn "ghi episode: quyết định dùng SQLite thay JSONL cho store" → đây là quyết định kiến trúc bền → không ghi episode, chuyển sang wiki ADR / /ingest.

Origin

  • Source: issue GH#9 (frontier-gap memory, 4/4 tầng nhớ); ledger 030726-memory-episodic-vector.md. Engine: harness/scripts/mem-rank.py (episode/retrieve/temporal). Eval: harness/scripts/mem-proxy.py.
  • Date: 2026-07-04

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/rheinmir/setup/record-episode">View record-episode on skillZs</a>