session-end — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited session-end (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.
Session-end is a reconciliation step, not a reconstruction step. The journal has everything that happened. Your job is to review it, fill gaps, and ensure structured files are in sync.
If you do not already know the project data path, the plugin data root is ${CLAUDE_PLUGIN_DATA}. Follow the bootstrap procedure in ${CLAUDE_PLUGIN_ROOT}/references/context-bootstrap.md. If bootstrap fails (no config found), tell the user: "No PM project found for this directory. Run /pm to set up." and stop.
Read sessions/YYYY-MM-DD-journal.md.
If the journal doesn't exist or is empty: No session was formally tracked today. Ask the user: "I don't have a record of today's session. What did you work on, and what did you accomplish?" Then manually create journal entries based on their answers before proceeding with reconciliation.
If the journal exists: Parse all entries. Build a summary of:
For each TASK_START without a matching TASK_DONE, ask the user: "You started <task> but I don't have a completion record. Is it done, still in progress, or blocked?"
Based on answers, append the appropriate journal entries (TASK_DONE, BLOCKER, etc.).
Ask: "Did you work on anything else that isn't in the journal?" If yes, create journal entries for those tasks.
Ask: "Any blockers to flag?" If yes, append BLOCKER entries to the journal.
Now that the journal is complete, dispatch Sonnet sub-agents to update structured files. Use the Agent tool with model: sonnet and run_in_background: true for each.
Sub-agent 1: Task Reconciliation
Prompt:
"Read<data-path>/tasks.md. Make these status updates: - Set <list of task IDs> todone- Set <list of task IDs> toin-progress- Set <list of task IDs> toblocked(if any) Preserve all other columns. Write the updated file."
Sub-agent 2: Estimates Logging
Prompt:
"Read <data-path>/estimates.md. Append these rows: | <task> | <category> | <calibrated est> | <user est> | <actual from timestamps> | <ratio> | <today's date> | (one row per completed task that has both a TASK_START and TASK_DONE in the journal) Preserve all existing rows. Write the updated file."Sub-agent 3: Blockers and Overrules Sync
Prompt:
"Read<data-path>/blockers.md. Add these new blockers: <list>. Resolve these blockers (set Resolved date to today): <list>. Then read<data-path>/overrules.md. Add these new overrules: <list>. Write both updated files."
Sub-agent 4: Milestone Recalculation
Prompt:
"Read<data-path>/tasks.md(after sub-agent 1 completes). Count done/total tasks per milestone. Read<data-path>/milestones.md. Update: - Tasks Done and Tasks Total columns - Status: set toat-riskif deadline is within 2 days and < 80% done - Status: set tooverdueif deadline has passed and not 100% done - Status: set tocompletedif 100% done Write the updated file."
Note: Sub-agent 4 depends on sub-agent 1. Either run it after sub-agent 1 completes, or include the task status changes in its prompt so it can calculate independently.
Sub-agent 5: Journal Finalization
Prompt:
"Read<data-path>/sessions/YYYY-MM-DD-journal.md. Append this entry:[HH:MM] SESSION_END — completed: <list>. Incomplete: <list>.Write the updated file."
After milestone recalculation, check for at-risk or overdue milestones. Alert the user:
Read overrules.md. For any entry with outcome tbd that is older than 1 week, ask the user: "You overruled my [type] warning on [date]. How did that turn out — was it the right call?" Update outcome to correct, costly, or neutral.
Give the user a brief summary:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.