session-to-meeting-log — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited session-to-meeting-log (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
~/.claude/projects/.../*.jsonl".$0 — [session-id-or-path]: the session id, or a full path to the .jsonl. Strongly recommended — see the fallbackunder "Locating the session file" when it is missing (the placeholder stays as literal $0).
$1 — [topic]: kebab-case topic for meetings/{YYYY-MM-DD}_{topic}.md. Optional — whenno second argument is passed the placeholder stays as literal $1; derive the topic from the session's dominant subject instead.
~/.claude/projects/<encoded-project-path>/<sessionId>.jsonl — don'tcompute <encoded-project-path> (the encoding rule is unofficial and unverified for every character); locate the file by id instead: ls ~/.claude/projects/*/<sessionId>.jsonl.
<sessionId>: a UUID-like string, passed as the first argument. context: fork runsthis skill in a subagent with no conversation history and no way to ask the user to confirm a guess — so the invoker should run echo $CLAUDE_CODE_SESSION_ID before dispatching (set automatically in Bash tool subprocesses) and pass the result as [session-id-or-path].
$CLAUDE_CODE_SESSION_ID in this fork's own Bash tool andaccept it only if ls ~/.claude/projects/*/<that-id>.jsonl finds exactly one file. The docs don't say whether a fork sees the invoker's id or its own, and a fork's own transcript lives under <sessionId>/subagents/, so a wrong id fails this check instead of silently picking another session. If the variable is empty or the check doesn't find exactly one file, fail immediately and print the invoker instruction above rather than guessing from directory mtime.
One JSON event per line; common type fields:
| type | Content |
|---|---|
user | User prompt, or a tool-execution result — a tool result is a user line whose message.content[] contains a {type: "tool_result", …} block and carries a top-level toolUseResult field. Filter these out before summarising; they are not human input. |
assistant | Assistant response (incl. tool_use blocks) |
system, attachment, file-history-snapshot, … | Harness metadata (queue state, mode, cost, permission state); skip anything that is not user/assistant. There is no top-level tool_result or summary type. |
Key fields: timestamp, message.content, message.role, uuid, parentUuid. Also present but not narrative content: isSidechain, isMeta, and isCompactSummary boolean flags (observed in local transcripts, not officially documented) — a line with any of these set to true is harness-internal bookkeeping or an auto-generated compaction summary, not a primary user/assistant turn; filter it out the same way as the non-user/assistant types above (use it as background context at most, never as a source for Decisions). Sub-agent transcripts live in a separate file, <sessionId>/subagents/agent-*.jsonl, not inline in the main log — combined with these flags, "no subagent noise" becomes a mechanical filter rather than a judgment call.
Write to meetings/{YYYY-MM-DD}_{topic}.md:
# {YYYY-MM-DD} — {Topic}
Session id: `<sessionId>`
Mode: <e.g. AI Collaboration Mode (Leader/Developer)>
## Goal
<one-line statement of the session's goal>
## Timeline (milestones only)
- <milestone 1, e.g. "§How.3 round 1 accepted">
- <milestone 2, e.g. "Code Reviewer dispatch produced 7 BLOCKERs">
## Decisions
1. <decision 1>
2. <decision 2>
## Rejected alternatives
- <rejected option> — reason: <reason>
## Hand-offs
- <sub-agent dispatched / next session expected to ...>
## Open questions
- <open question 1>
## Next session
<one-line statement of the next session's intent>YYYY-MM-DD_<topic-kebab>.md, date in local timezone.kickoff / spec-phase / cr-round1).{date}_{topic-a}.md / {date}_{topic-b}.md.<sessionId>/subagents/agent-*.jsonl, not the main session file, so this needs no filtering step of its own.methodology-pattern-extractor: meeting logs produced here are the input for methodology pattern extraction.backlog-routing-by-topic: open questions that can be classified can also be routed to the matching file's §Backlog.references/official-docs.md.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.