skills/session-learning/SKILL.md
Capture session observations through opt-in hooks, review learning candidates, and promote stable lessons into AGENTS.md, README.md, skills, or docs without letting hooks mutate canonical project files directly.
npx skillsauth add keelim/keelim-skill session-learningInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill at the end of meaningful sessions, after a complex task succeeds, after a user correction, or when repeated errors reveal a reusable workflow. The goal is to turn session experience into durable project knowledge without polluting canonical docs.
This skill borrows four concepts from Hermes-style agents:
Learning artifacts live under the active project root:
.omx/learning/
observations.jsonl
candidates/
promoted/
archive/
Generated observations and candidates are ignored by git by default. Promote only the distilled rule, workflow, or document change that is worth keeping.
Hook install scope and promotion scope are intentionally separate:
project or global).project, workspace, user-global, skill, or archive).Even global hooks write observations under the active project's .omx/learning directory. Global promotion remains advisory until a human or explicit follow-up task edits a durable global policy file.
After installing this skill into a project, preview project-scoped hook registration:
python3 .agents/skills/session-learning/scripts/install_hooks.py
Apply the hook registration:
python3 .agents/skills/session-learning/scripts/install_hooks.py --apply
Install hooks globally for every project:
python3 .agents/skills/session-learning/scripts/install_hooks.py --scope global --apply
Remove only the hooks registered for this project:
python3 .agents/skills/session-learning/scripts/install_hooks.py --uninstall --apply
Remove the global hook registration:
python3 .agents/skills/session-learning/scripts/install_hooks.py --scope global --uninstall --apply
The installer updates Codex and Claude hook config files. Project-scoped registrations carry SESSION_LEARNING_SCOPE_ROOT=<project-root>, so events outside that project are skipped. Global registrations omit that scope root and write observations under each active project's .omx/learning directory.
Inspect current registration without writing config:
python3 .agents/skills/session-learning/scripts/install_hooks.py --status
python3 .agents/skills/session-learning/scripts/install_hooks.py --scope global --status
The opt-in hook adapter is:
bash skills/session-learning/hooks/observe.sh prompt
bash skills/session-learning/hooks/observe.sh pre
bash skills/session-learning/hooks/observe.sh post
bash skills/session-learning/hooks/observe.sh stop
bash skills/session-learning/hooks/observe.sh pre-compact
bash skills/session-learning/hooks/observe.sh post-compact
Hooks must only write .omx/learning artifacts. They must not edit AGENTS.md, README.md, skills/*, or other canonical project files.
.omx/learning/candidates/*.md.project: stable project instruction future agents must follow, usually AGENTS.md, README.md, or project docs.workspace: multi-repo or root/child-repo operating rules for the current workspace.user-global: user-wide preferences or policies that apply across projects, usually a global Codex/Claude policy surface.skill: reusable procedural workflow that belongs in skills/<name>/SKILL.md.archive: weak, stale, duplicate, or too session-specific..omx/learning/promoted/ when useful.Preview promotion routing:
python3 skills/session-learning/scripts/review_candidates.py --roots .
python3 skills/session-learning/scripts/review_candidates.py --roots /path/to/project-a /path/to/project-b --since-days 30
The review script prints recommendations only. It must not edit canonical project files.
Promote when at least one is true:
Do not promote:
Promotion scope defaults:
project for repo-specific commands, routes, schemas, tests, build steps, or conventions.workspace for root coordination rules, child-repo autonomy, or cross-repo boundaries.user-global for durable personal preferences that should affect future Codex/Claude sessions everywhere.skill when the reusable lesson is mostly procedural and has a clear trigger.archive when the candidate lacks a future trigger, duplicates an existing rule, or only records temporary state.Run a curator pass periodically:
python3 skills/session-learning/scripts/test_learning_observer.py.python3 skills/session-learning/scripts/test_install_hooks.py.python3 skills/session-learning/scripts/test_review_candidates.py.git diff --check.tools
Use when writing first-person technical posts in a personal engineer voice, especially build logs, case studies, workflow write-ups, or series posts about tools, systems, and engineering habits.
tools
Build a secure offline HTML dashboard and JSON summary from Codex and Claude session JSONL logs. Use when the user wants to track agent tool usage, skill invocations, subagent kinds, session harness activity, or usage counts for Codex/Claude runs without exposing raw prompts, tool arguments, or tool outputs.
tools
Use when preparing a date-based Android release from develop to main, updating versionCode, aligning an existing release PR with recent conventions, or dispatching app_deploy through GitHub Actions.
tools
Read Jira tickets through Atlassian MCP, merge local handling rules for intentionally ignored or deferred work, optionally consult Lazyweb for desktop dashboard design references, and render a secure offline pure HTML personal ticket desk from a reusable template plus replaceable JSON data. Use when the user wants to review, triage, plan, or report on Jira tickets without mutating Jira.