probematrix-learnings-coach
AGENTS.md0 starsChanged 27 days agoMITView on GitHub
Instructions for coding and analysis agents (OpenAI Codex, Claude Code, and any agent that reads AGENTS.md) working with this repository. A set of agent skills that turn one ProbeMatrix investigation export (.xlsx) into learnings for every part and level of an organisation. ProbeMatrix by Eyekyam is a human-in-the-loop, AI-assisted incident investigation service built on the four-level Human Factors Analysis and Classification System (HFACS). Contact: ashley@eyekyam.com. The user manual, docs/manual/Home.md (repository only; also on the project wiki), documents every skill, command…
- Installs packages
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,542 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository24 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- auditor-assurance-packSkill
- barrier-learningsSkill
- board-briefSkill
- causal-mapSkill
- cluster-learning-dossierSkill
- emergency-response-learningsSkill
- engineering-integrity-learningsSkill
- frontline-learning-cardsSkill
- interface-learningsSkill
- investigator-coachSkill
- learning-clustersSkill
- learnings-coachSkill
- learnings-registerSkill
- manager-coachSkill
- organisation-learning-mapSkill
- precursor-timelineSkill
- report-comparisonSkill
- safety-committee-guideSkill
- site-leadership-coachSkill
- supervisor-coachSkill
- supply-chain-contractor-learningsSkill
- top-management-briefSkill
- training-designerSkill
The file
We split this AGENTS.md into the rules it gives an agent
5 rules. About 0 are common, 0 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 14
Read skills/learnings-coach/references/learning-principles.md before writing any learning.
- Very specific: line 48
Keep each SKILL.md under ~150 lines.
- Very specific: line 53
Every change starts with a GitHub issue and a branch.
- Very specific: line 54
v2.0 Features Edition: all v2.0 work goes only on feature/v2.0-features-edition, tracked by epic issue #1.
- Very specific: line 55
Commit messages read <type>(<area>): <what> (#N), for example fix(engine): keep role overrides in classify (#1).
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md: ProbeMatrix Learnings Coach
Instructions for coding and analysis agents (OpenAI Codex, Claude Code, and any agent that reads AGENTS.md) working with this repository.
What this repo is
A set of agent skills that turn one ProbeMatrix investigation export (.xlsx) into learnings for every part and level of an organisation. ProbeMatrix by Eyekyam is a human-in-the-loop, AI-assisted incident investigation service built on the four-level Human Factors Analysis and Classification System (HFACS). Contact: ashley@eyekyam.com.
Where to start
- Skills live in
skills/<name>/SKILL.md(Agent Skills format: YAML front matter withnameanddescription, then instructions)..agents/skillspoints to the same folder for Codex. - Always start with
skills/learnings-coach/SKILL.md. It sets up the workspace and routes to the other 22 skills. - The engine is
skills/learnings-coach/scripts/pmlc.py(Python 3.9+,pip install openpyxl). Runpython3 skills/learnings-coach/scripts/pmlc.py -h. - Read
skills/learnings-coach/references/learning-principles.mdbefore writing any learning.
Typical run
pip install openpyxl
E=skills/learnings-coach/scripts/pmlc.py
python3 $E ingest path/to/<export>.xlsx --slug <site>-<event> [--date YYYY-MM-DD]
WS=path/to/pmlc-runs/<YYYY-MM-DD>-<site>-<event>/workspace # printed by ingest
python3 $E profile $WS --out $WS/profile.md
python3 $E classify $WS
python3 $E status $WS # which derived files are stale after a re-ingest
python3 $E dashboard $WS # -> <run>/outputs/organisation-learning-map.html
python3 $E select $WS --tier T2 --level 3 --brief # feed an audience skill
python3 $E check-language $WS <run>/outputs/board-brief.json # just-culture language check (check-pack runs it too)
python3 $E pack $WS <run>/outputs/board-brief.json # -> board-brief.html + .md (DRAFT until signed off)
python3 $E sign-off $WS <run>/outputs/board-brief.json --role "<reviewer's role>" --status approved # only after a person says they reviewed itThe user manual, docs/manual/Home.md (repository only; also on the project wiki), documents every skill, command and flag with Hazira examples, including sharing a masked copy outside the organisation (--share external|public).
Then follow the audience skill (e.g. skills/board-brief/SKILL.md) and write its pack JSON to <run>/outputs/<skill>.json, then run python3 $E check-pack $WS <pack> and python3 $E pack $WS <pack> (python3 $E run-path $WS prints the folder). learnings-register writes a register JSON instead: check it with python3 $E check-register $WS <register.json>, then python3 $E register-xlsx <register.json> writes the workbook. python3 $E causal-item $WS prints the top causal links as a ready graph item for a pack. Both checks also run the just-culture language lint (rules JC1 to JC12); python3 $E check-language $WS <json> runs it alone. After a person has reviewed a pack or register, python3 $E sign-off $WS <file> --role "<their role>" records it (handling block with a content hash; refused until the investigation status is completed, and while no finding is marked as edited by a person; any later edit reverts it to draft).
Rules for agents
- Ground every sentence in the export: cite Finding IDs and Evidence IDs. Add no outside facts about the incident.
- Just culture: roles only, no personal names, no blame or punishment language, prefer system fixes over retraining.
- Count learnings, not finding instances. Several findings can describe one condition.
- Mark outputs "Learning purposes: not a statutory document" and keep the ProbeMatrix footer from
skills/learnings-coach/references/output-style.md. - Run folders are strict:
<export-dir>/pmlc-runs/<YYYY-MM-DD>-<site>-<event>/{workspace,outputs}/.pmlc-runs/is git-ignored. Do not commit real incident data that is not public record. For a public-record incident, committed samples may include the official public report and ProbeMatrix material (export, report, outputs) unmodified; no name scan is required. Generated learnings still follow just culture (roles only, no blame). De-identification tooling (scan-names,--names) remains available for organisations' own runs. To publish a run, createsamples/<slug>/withtools/make-public-sample.py --slug <slug>, copy the outputs intosamples/<slug>/outputs/, and add a README;python3 $E check-samplesmust pass.
Development
- Setup:
python3 -m venv .venv && .venv/bin/pip install -r requirements-dev.txt. Tests:.venv/bin/python -m pytest tests(they build a synthetic export; no real data needed; the JS tests need Node and are skipped without it). - Keep each
SKILL.mdunder ~150 lines; put shared material inskills/learnings-coach/references/. - New audience skill: copy an existing audience skill, change the audience, the
selectfilters and the structure, and add it toreferences/audiences.mdand the README table.
Workflow: issue, branch, pull request
- Every change starts with a GitHub issue and a branch; nothing is committed to
maindirectly. Branch names:feature/,fix/ordocs/plus<issue#>-<slug>. - v2.0 Features Edition: all v2.0 work goes only on
feature/v2.0-features-edition, tracked by epic issue #1. Check the current branch before the first commit of a session. - Commit messages read
<type>(<area>): <what> (#N), for examplefix(engine): keep role overrides in classify (#1). Push after every task. - Each v2.0 phase ends with an annotated tag
v2.0.0-alpha.N(version2.0.0aN), a CHANGELOG entry, the phase ticked in the issue and a summary comment. Mergemaininto the branch when it moves; never rebase. - The branch reaches
mainthrough one pull request ("Closes #1"), merged with a merge commit (not squash or rebase).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

