skills: five process-domain skills + check_skills.py
gates / gates (push) Failing after 15s

The four existing skills cover the product; nothing covered how work is
reported. Two rules this project has paid for — check the artifact rather
than the report, and do not state a claim more firmly than the evidence
allows — lived only in the operator's head and in chat, where Claude Code
never read them.

- felhom-evidence      five confidence tiers, artifact-over-report
- felhom-diagnosis     no hypothesis until a command has been seen red
- felhom-plain-language ASD-STE100, two options, the re-pitch
- felhom-handoff       the note goes to a FILE, not the conversation
- felhom-doc-authoring the pointer decides whether material is reached

scripts/check_skills.py asserts what decides whether a skill is EVER
reached: frontmatter parses, name == directory, description and body
non-empty, under 150 lines, installed copy still samefile()s into the
repo. install_skills.py globs and never reads the file, so a missing
description installs perfectly and then silently never loads.

It convicted on its first run: felhom-build-deploy is 179 lines. NOT
trimmed here (pre-existing skills are out of scope, and trimming a
deploy skill without exercising its commands is how a wrong command
reaches a live host) — a named single-entry GRANDFATHERED exception,
WARNed every run, R-394. A new skill over the limit is convicted.

Red-proof run and seen failing: description removed from
felhom-evidence -> exit 1, "frontmatter field 'description' is missing
or empty". Restored, tree clean.

skills/SOURCES.md records both MIT upstreams, that these are adaptations
not copies, and the six pieces deliberately EXCLUDED with reasons.

Register: R-392 (no architecture doc covers the two-AI workflow),
R-393 (decision-log skill deferred, with the reason), R-394.
This commit is contained in:
2026-08-25 09:36:20 +02:00
parent ebdc04601d
commit c30430c530
12 changed files with 826 additions and 243 deletions
+42
View File
@@ -1,3 +1,45 @@
## check_skills.py v1.0.0 + five process-domain skills (2026-08-25)
**Five new skills under `skills/`, one new checker under `scripts/`, no product code touched and
nothing deployed.** The four existing skills all cover the *product*; nothing covered **how work is
reported**. Two rules this project has paid for — check the artifact rather than the report, and do
not state a claim more firmly than the evidence allows — lived only in the operator's head and in
chat, where Claude Code never read them.
- **`felhom-evidence`** — five confidence tiers, the words that carry confidence, the words to drop,
the embedded-hypothesis trap, and the artifact-over-report rule. Points at `felhom-testing` for the
red-proof rather than restating it, and cites workspace standing rules 2 and 3 in one line each.
- **`felhom-diagnosis`** — the loop-first gate: no hypothesis until one command has been *run* and its
output shown. Plural hypotheses, minimisation, and stale state before code on a restart fault.
- **`felhom-plain-language`** — ASD-STE100, the two-option decision format with what-if-nothing-happens,
and the re-pitch: rewrite shorter, never defend or ask which part was unclear.
- **`felhom-handoff`** — stop on an atomic boundary, write the note to a FILE (an in-context plan does
not survive compaction), and treat a pickup as inheritance rather than a restart.
- **`felhom-doc-authoring`** — the pointer decides everything; a must-have document behind a vague
pointer is a reliability defect, not a documentation preference.
**`scripts/check_skills.py`** asserts the properties that decide whether a skill is ever reached:
frontmatter parses, `name` equals the directory, `description` and body non-empty, under 150 lines,
and any installed copy still `samefile`s back into the repo. `install_skills.py` globs
`skills/*/SKILL.md` and never reads the file, so a missing `description` installs perfectly and then
silently never loads — that is the hole this closes. It reports every offence, not the first.
**It convicted on its first run.** `felhom-build-deploy` is 179 lines, over the limit written down the
same day. It is NOT trimmed here — the task scoped the pre-existing skills out, and trimming a
build-and-deploy skill without exercising its commands is how a wrong command reaches a live host. It
is a **named single-entry `GRANDFATHERED` exception printed as a WARN on every run** → **R-394**. A
new skill over the limit is convicted normally, so the set cannot grow silently.
Red-proof run and seen failing: `description` removed from `felhom-evidence` → exit 1,
`frontmatter field 'description' is missing or empty`. Restored, tree clean.
Also: `skills/SOURCES.md` records both MIT upstreams, that these are adaptations and not copies, and
the six pieces of upstream material deliberately EXCLUDED with the reason for each — so a future
session finding those repos sees a decision rather than an oversight. `documentation/runbooks/
workspace-CLAUDE.md` loses its stale skill COUNT ("the four Felhom skills" → "the Felhom skills") and
names the validator. Register: **R-392** (no architecture document covers the two-AI workflow),
**R-393** (decision-log skill deferred, with the reason), **R-394** (above).
## one_register_gate.py v1.0.0 + repo_gates registration — one register, enforced (2026-08-22)
**Operator ruling: one register.** `OPEN-ITEMS.md` calls itself the single source of truth for open