Automated summary
Validates session completion by checking that progress is recorded in active_context.yaml and proof exists in .proof/session_log.jsonl before ending work.
Strengths
- Prevents loss of work by ensuring state is saved before termination
- Provides a structured session summary with progress and issues
- Identifies orphaned steps, stale pointers, and missing context
- Replaces Claude Code's Stop hook for Codex CLI environments
Limitations
- Must be invoked manually – no automatic trigger
- Cannot block termination, only warns
- Relies on specific file conventions (active_context.yaml and .proof/session_log.jsonl)
At the end of any coding session when finishing work, closing Codex CLI, or switching projects.
For quick checks when detailed validation is unnecessary, or when the user needs to exit immediately without saving progress.
Security analysis
SafeThe skill only reads local state files and runs a safe ls command to check for proof file existence. No external network calls, no destructive operations, no obfuscated code, and no data exfiltration.
No concerns found
How this analysis is madeExamples
I'm done for today. Please run the session completion check and let me know if everything is saved properly.Before I close the CLI, validate my session to make sure all progress and proof are captured.name: edge-done description: Validate session completion before ending work. Use when finishing a coding session to ensure state was saved and proof exists.
Session Completion Validation
This skill replaces the Stop hook from Claude Code. Run it before ending your session to validate that work was properly recorded.
When to Use
Call this skill when:
- Finishing work for the session
- Before closing Codex CLI
- When switching to a different project
- The user says "done", "finished", "that's all", "goodbye"
Instructions
1. Read Current State
Load active_context.yaml and check:
| Check | Requirement | Validation |
|-------|-------------|------------|
| State exists | active_context.yaml file present | File can be read |
| Objective set | objective field has value | Not null or empty |
| Plan exists | plan array has items | At least one step |
| Progress made | At least one step completed OR in_progress | Status check |
2. Check for State Modification
Compare the current state against what was loaded at session start:
- Were any steps advanced?
- Were any steps marked completed?
- Was any memory added?
If NO state modification occurred:
WARNING: No progress recorded this session
- No steps were completed
- No steps were advanced
- State is unchanged from session start
Did you forget to update active_context.yaml?
3. Check for Proof
Look for evidence of work in .proof/session_log.jsonl:
# Check if proof file exists and has entries
ls -la .proof/session_log.jsonl
| Condition | Status | |-----------|--------| | File exists with entries | Proof captured | | File missing or empty | No proof recorded |
If NO proof exists:
WARNING: No proof captured this session
- .proof/session_log.jsonl is missing or empty
- Run $edge-log to record what you did
4. Validate Plan Consistency
Check for orphaned or inconsistent states:
| Issue | Detection | Suggestion | |-------|-----------|------------| | Step marked in_progress but no current_step | Orphaned work | Mark complete or reset | | current_step points to completed step | Stale pointer | Advance current_step | | Blocked steps without notes | Missing context | Add blocking reason |
5. Generate Session Summary
Produce a summary of the session:
========================================
SESSION COMPLETION CHECK
========================================
Session: [session.id]
Objective: [objective]
Progress:
Steps completed this session: [N]
Current step: [current_step] - [description]
Overall progress: [completed/total] steps
State Changes:
- [List of what changed in active_context.yaml]
Proof Captured:
- [N] log entries in .proof/session_log.jsonl
- Last entry: [timestamp] - [action summary]
Validation:
[x] State file modified
[x] Proof file has entries
[x] Plan is consistent
[ ] Issue: [if any]
Status: READY TO END | NEEDS ATTENTION
========================================
6. Block or Allow
If all checks pass:
Session validation PASSED
You may end this session. Progress and proof are recorded.
Next session: Run $edge-context to reload state.
If checks fail:
Session validation FAILED
Issues that need attention:
1. [Issue 1]
2. [Issue 2]
Suggested actions:
- [How to fix issue 1]
- [How to fix issue 2]
Please resolve these before ending the session, or acknowledge:
"End anyway - I understand progress may be lost"
Comparison to Claude Code Stop Hook
| Claude Code (Hook) | Codex CLI (Skill) | |--------------------|-------------------| | Automatic - runs when session ends | Manual - user must invoke | | Blocks termination if checks fail | Warns but cannot block | | State hash comparison | Manual state review | | Proof file existence check | Same check, manual |
Quick Validation
For a fast check without full summary:
Quick Session Check:
- State modified: [yes/no]
- Proof exists: [yes/no]
- Ready to end: [yes/no]
Tips
- Run early, run often: Check validation before committing to end
- Log as you go: Use
$edge-logafter each major action - Update state promptly: Mark steps complete immediately after finishing
Integration with Other Skills
The $edge-step skill should automatically call $edge-log after completing each step, which means proof should accumulate naturally.
Recommended workflow:
$edge-context- Load state at session start$edge-step(repeats) - Execute work$edge-done- Validate before ending
If Validation Fails
No state modification
# Add a note to active_context.yaml showing session activity
# Even if no steps completed, document what was investigated
No proof captured
# Create proof retroactively
mkdir -p .proof
echo '{"timestamp":"<now>","type":"session_summary","action":"<what you did>","outcome":"<result>"}' >> .proof/session_log.jsonl
Inconsistent plan state
# Fix in active_context.yaml
current_step: [correct value]
plan:
- description: "..."
status: [correct status]
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/session-completion-validation-mm78nnu0/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/session-completion-validation-mm78nnu0' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/session-completion-validation-mm78nnu0/download' --output '.skill-downloads/session-completion-validation-mm78nnu0/SKILL.md.part' && mv '.skill-downloads/session-completion-validation-mm78nnu0/SKILL.md.part' '.skill-downloads/session-completion-validation-mm78nnu0/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/session-completion-validation-mm78nnu0/SKILL.md' && test -s '.skill-downloads/session-completion-validation-mm78nnu0/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/edge-done' && cp -R '.skill-downloads/session-completion-validation-mm78nnu0' '.claude/skills/edge-done'Codex
test -f '.skill-downloads/session-completion-validation-mm78nnu0/SKILL.md' && test -s '.skill-downloads/session-completion-validation-mm78nnu0/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/edge-done' && cp -R '.skill-downloads/session-completion-validation-mm78nnu0' '.agents/skills/edge-done'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/session-completion-validation-mm78nnu0'openskills read 'session-completion-validation-mm78nnu0'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/session-completion-validation-mm78nnu0/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
PDF Reader
Productivity
Read and extract text from PDF files, including documents, reports, contracts, and spreadsheets. Works with local files, URLs, and WhatsApp attachments. Use whenever PDF content is needed, even if not explicitly requested.
Discord Messaging Workflows
Productivity
Use the message tool to send, edit, and moderate Discord messages with interactive components.
Interactive Verdict Preview
Productivity
Generate an interactive HTML preview of keep/drop verdicts for maintainer review, then process the pasted feedback JSON.