Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
27faa58
learn(detection-gaps, testing-shape, ui-loop): snippet-call class, 40…
MendixMau Oct 14, 2026
247677d
new(mdl-scan): refuse scannable STOP-row patterns before the apply (#…
claude Oct 14, 2026
5e6bb68
Merge origin/master into learn/2026-10-14-snippet-class-403-restart
claude Oct 14, 2026
190a2d7
fix(ui-loop, testing-shape): scope the restart claim to its evidence;…
claude Oct 14, 2026
dde1473
fix(close-task): resolve checkpoint.sh instead of printing it bare (#…
claude Oct 14, 2026
7916efe
log(bug-logs): upstream draft for run --watch theme rebuild dropping …
claude Oct 14, 2026
680fefc
process(testing): three check tiers — every exec, module close, relea…
claude Oct 14, 2026
0b9b931
log(bug-logs): #284 draft states only what the issue says about stale…
claude Oct 14, 2026
3c1563f
fix(dg2, obligations): DG2 column REPLACE is a whole-page re-emit; ol…
claude Oct 14, 2026
9eaa901
learn(mdl-preflight): STOP row 29 for the microflow header grammar (#…
claude Oct 14, 2026
40321c1
fix(test-agent): name ${JOURNEY_DIR} as a write location (#359)
claude Oct 14, 2026
62e3784
new(journey-proof): named controls prove each journey's own claim can…
claude Oct 14, 2026
6164bc6
fix(close-task): quote printed checkpoint paths; hooks copy prints si…
claude Oct 14, 2026
870c5b5
fix(mdl-scan): review of #355 — warn-only severities, two false hits …
claude Oct 14, 2026
e31d3e6
chore(context): move stories and history out of always-loaded skills …
claude Oct 14, 2026
9fa8020
chore(context): runbook slice for helpers; runbook drops its copy of …
claude Oct 14, 2026
bbc67b0
refactor(app-restart, test-scratch): share the mxtest guard and mxcli…
claude Oct 14, 2026
3e44721
learn(design-spacing, module-review): crumbs are links; LOOK asks "ca…
claude Oct 14, 2026
296d772
learn(lint): stock-rule findings on toolkit conventions + #169 candid…
claude Oct 14, 2026
98662db
Merge #340: learn: snippet-call class never reaches the DOM; 403 boun…
claude Oct 14, 2026
4349cf8
learn(microflow-patterns): move the header-grammar rule out of the pr…
claude Oct 14, 2026
c7c4fd6
fix(journey-proof): controls are named *.control.json; --out= creates…
claude Oct 14, 2026
4933b1c
process(testing): review fixes for #364 — check moments, exec chain, …
claude Oct 14, 2026
ad749d3
fix(obligations): old-shots FAULT stamps the model commit, restores a…
claude Oct 14, 2026
5be2e41
learn(lint): drop the local VALID_PREFIXES edit from the CUSTOM002 an…
claude Oct 14, 2026
2ef2b22
Merge #363: log(bug-logs): upstream draft for run --watch theme rebui…
claude Oct 14, 2026
7097167
fix(check-moved-text): exit 2 on a source with no diff; fixture; revi…
claude Oct 14, 2026
7bde7d3
test(check-moved-text): fixture git identity matches the other fixtur…
claude Oct 14, 2026
ae897b4
new(app-facts): incremental loop sweep and app-map freshness in statu…
claude Oct 14, 2026
6550815
fix(app-facts): drop figures taken from an out-of-scope repository (#…
claude Oct 14, 2026
2ffa277
test(bench): trim-noloss prints its summary line and exits on LEFT lines
claude Oct 14, 2026
f741b42
Merge #362: fix(close-task): resolve checkpoint.sh instead of printin…
claude Oct 14, 2026
3b6ca76
Merge #355: new(mdl-scan): flag scannable STOP-row patterns before th…
claude Oct 14, 2026
89ed1b2
fix(pipefail): here-strings for the last grep -q pipelines in sync-pr…
claude Oct 14, 2026
1649f31
fix(app-facts): open the catalog through an escaped read-only URI
claude Oct 14, 2026
a6ebec4
Merge #370: refactor(app-restart, test-scratch): share the mxtest gua…
claude Oct 14, 2026
b46e99e
Merge #368: new(journey-proof): named controls prove each journey's o…
claude Oct 14, 2026
6887f84
fix(test-agent): journeys live in journeys/, never relocated (review …
claude Oct 14, 2026
e35c883
learn(design-spacing): StyleGallery crumb separators, trimmed LOOK qu…
claude Oct 14, 2026
9eda5f5
Merge #364: process(testing): three check tiers — every exec, module …
claude Oct 14, 2026
9a2a02f
Merge #365: fix(dg2, obligations): DG2 column REPLACE is a whole-page…
claude Oct 14, 2026
a406512
chore(context): per-role on-demand token in the routing agents column…
claude Oct 14, 2026
e52e778
fix(app-facts): review fixes for the incremental sweep (#297)
claude Oct 14, 2026
4e96758
Merge #366: learn(microflow-patterns): the microflow header grammar, …
claude Oct 14, 2026
d885f69
Merge #372: learn(lint): stock-rule findings on toolkit conventions, …
claude Oct 14, 2026
d2597d8
Merge #367: fix(test-agent): name journeys/ as a write location (#359)
claude Oct 14, 2026
8f89ad2
Merge #371: learn(design-spacing, module-review): crumbs are links; L…
claude Oct 14, 2026
9342b15
Merge #376: fix(pipefail): here-strings for the last grep -q pipeline…
claude Oct 14, 2026
5f3f682
Merge #369: chore(context): move stories and history out of always-lo…
claude Oct 14, 2026
32d4941
Merge #373: new(app-facts): incremental loop sweep + app-map freshnes…
claude Oct 14, 2026
b97c9f6
fix(app-facts): fall back to an inline read-only URI when _common.sh …
claude Oct 14, 2026
394f132
fix(context): full pack counts the runbook once; helper slice carries…
claude Oct 14, 2026
62af781
merge: #378 review fixes (slice not double-counted; slice carries ver…
claude Oct 14, 2026
91f37d1
docs(changelog): behaviour A/B result on the T1 line; drop the stale …
claude Oct 14, 2026
760a423
docs(changelog): stub diet A — mdl Stage 5 figure is 43,599 after the…
claude Oct 14, 2026
df20118
merge: #378 CHANGELOG figure (mdl Stage 5 43,599)
claude Oct 14, 2026
966caff
docs(changelog): stub diet B — measured figures (mdl 43,599 → 30,647,…
claude Oct 14, 2026
dc3f96c
Merge #377: fix(app-facts): open the catalog through an escaped read-…
claude Oct 14, 2026
57eed6a
Merge #378: chore(context): runbook slice for helpers; runbook drops …
claude Oct 14, 2026
c9bc073
Merge #380: chore(context): per-role on-demand token in the routing a…
claude Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -771,11 +771,12 @@ Then filter by Role(s). A helper dispatched with a role stub (ba, architect, mdl

| Always relevant for | Reference this | Stage(s) | Role(s) |
|---|---|---|---|
| Before writing any .js or .sh for a check, gate or report — and before adding a rule to an existing one: judgement goes in a skill, code only fetches facts a reader cannot | `skills/skills-over-scripts.md` | every stage | every role |
| Before writing any .js or .sh for a check, gate or report — and before adding a rule to an existing one: judgement goes in a skill, code only fetches facts a reader cannot | `skills/skills-over-scripts.md` | every stage | every role except mdl, review (on demand for those) |
| Any pass whose input is missing, stale or unresolvable — before recording UNMEASURED, N/A or a silent skip: name what was missing, say what you assessed against instead, still deliver a verdict | `skills/degrade-to-judgement.md` | every stage | every role |
| Any time an exit code, a tool's output or a subagent's report is about to become a stated finding — verify before you conclude | `skills/tool-output-is-not-ground-truth.md` | every stage | every role |
| Before obeying any learned-* STOP or workaround that costs a detour — probe the binary you actually have, then stamp the verdict back into the rule | `skills/retesting-learned-rules.md` | every stage | every role |
| Any pipeline work at all — every session, before producing any stage artifact: read §1b plus your own stage's section, not the whole file (gate-check.sh prints the line spans); READMEs and the guide are orientation only | `skills/conversion-runbook.md` | P,0,1,2,3,4,5,6,7 | every role |
| Any pipeline work at all — every session, before producing any stage artifact: read §1b plus your own stage's section, not the whole file (gate-check.sh prints the line spans); READMEs and the guide are orientation only | `skills/conversion-runbook.md` | P,0,1,2,3,4,5,6,7 | lead, ba, architect |
| Any pipeline work at all, as a helper — every dispatch, before producing anything: run the toolkit's bin/runbook-slice.sh <stage>, which prints §1b plus your stage's section of the conversion runbook; never open skills/conversion-runbook.md whole | `bin/runbook-slice.sh` | P,0,1,2,3,4,5,6,7 | mdl, gate, test, review |
| Any question before asking the user or writing anything — query the model, then read the source, then ask the human, in that order | `skills/query-the-model.md` | P,0,1,2,3,4,5,6,7 | every role |
| Putting a question TO the user — any gate, any stage: ask in chat not in a file, two named options plus your recommendation, one batch per gate then end the turn | `skills/interview-protocol.md` | P,0,1,2,3,4,5,6,7 | lead, ba, architect |
| The user gives feedback or asks for a change mid-project — "change X", "it also needs Y", a remark on a screenshot or the running app, a stakeholder's ask relayed in chat: log a CR row in PROJECT.md ## Change log BEFORE any edit, size it, then edit the highest artifact it alters (BRD, decision, architecture, wireframe), never the MDL first | `skills/change-intake.md` | 2,3,4,5,6,7 | lead, ba |
Expand All @@ -796,20 +797,20 @@ Then filter by Role(s). A helper dispatched with a role stub (ba, architect, mdl
| Writing a microflow with any loop, a retrieve/commit/call inside a loop, nested or multiple loops, >20 activities counting loop bodies, or a list built from a list — post the checklist before the first MDL line | `skills/microflow-preflight.md` | 5 | mdl |
| Building any page or snippet — before the first widget. Wireframe, tokens, gallery reuse, cross-check; no wireframe means STOP | `skills/ui-preflight-pages.md` | 5 | mdl |
| Writing or reviewing any page or snippet — the spacing scale (8/16/24/32/48), section rhythm, and the page-header scaffold every full page starts with; sections at 0px apart and pages with no H1 are the defects it retires | `skills/design-spacing.md` | 5 | mdl, review |
| After every page-building script, and any time the UI looks wrong — the cheap repeatable look during the build: one page, one screenshot, four questions, scored when a wireframe exists. Feeds Gate: UI, never replaces it | `skills/ui-loop.md` | 5 | mdl, review |
| After every page-building script, and any time the UI looks wrong — the cheap repeatable look during the build: one page, one screenshot, four questions, scored when a wireframe exists. Feeds Gate: UI, never replaces it | `skills/ui-loop.md` | 5 | review (mdl: on demand) |
| After the FIRST build that follows any design-system port, and before any page is built on it — reads the BUILT stylesheet and reports how many framework knobs point at a design token, how many tokens arrived, how many component classes arrived, each with its denominator. Measured on a real run: 55 tokens ported correctly into the right file, 0 of 35 knobs bound and 0 of 20 classes present, two build phases shipped in the framework's default blue with mx check, mxcli lint, the MDL suite and two e2e journeys all green | `project-bin/check-design-reaches-app.sh` | 3,5 | architect, mdl, gate, review |
| Before exec'ing ANY page script — compares the drafted MDL's shell against the wireframe's: page column, layout/nav shell, one H1. Measured 0/10 pages on a real first build, repaired wholesale 47 scripts later | `project-bin/check-page-shell.sh` | 5 | mdl, gate, review |
| After drafting and again after exec'ing any page script — scores the page MDL (or `mxcli describe` output on stdin) against its wireframe: headings/actions/content/classes, weighted. The scored companion to check-page-shell's binary gate; 32% median measured without it, 90% first-draft with it. Every run is appended to the project's docs/PAGE-FIDELITY.tsv — first non-stub row per page = first-build score of record vs the ≥80% target (forward-reference stubs score with --stub, exempt) | `project-bin/page-fidelity.js` | 5 | mdl, gate, review |
| Reviewing any module before calling it done — the ONE pass: build, gate, prove, LOOK (is it logical, does it look right, does it match our design, over every page not just the tested ones), confirm with the denominator stated | `skills/module-review.md` | 5,6 | mdl, review, test |
| Reviewing any module before calling it done — the ONE pass: build, gate, prove, LOOK (is it logical, does it look right, does it match our design, over every page not just the tested ones), confirm with the denominator stated | `skills/module-review.md` | 5,6 | review, test (mdl: on demand) |
| Before any mxcli exec / exec.sh / --mcp write — ask or run? the knob decides | `bin/exec-approval.sh` | 5,6 | mdl, gate |
| Before calling any module tested, or before re-running tests after a change — what testing a module means, which re-runs a change owes (UI-only vs logic lane), and the false-green register of confirmed ways a test reports green over a broken feature | `skills/testing-shape.md` | 5,6 | test, gate, review |
| Finishing any module — before calling it done. One command that runs every instrument and keeps "instrument faulted" apart from "feature failed"; in a wired project run the installed copy at bin/verify-module.sh | `project-bin/verify-module.sh` | 5,6 | mdl, gate, test, review |
| A style change that appears to have done nothing, a focus ring that paints on every page landing, or an app still grey after a design port every instrument called green — the three ways a correct rule paints nothing (matches nothing / matches chrome / loses the cascade), the two reads that tell them apart, and the class that arrived in the stylesheet and is bound to no widget | `skills/learned-css-that-never-applied.md` | 5,6 | mdl, review, gate |
| A style change that appears to have done nothing, a focus ring that paints on every page landing, or an app still grey after a design port every instrument called green — the three ways a correct rule paints nothing (matches nothing / matches chrome / loses the cascade), the two reads that tell them apart, and the class that arrived in the stylesheet and is bound to no widget | `skills/learned-css-that-never-applied.md` | 5,6 | review, gate (mdl: on demand) |
| Before trusting a green check/exec/DESCRIBE result as proof, or when a runtime symptom appears over a fully green model — the register of constructs that pass early rungs and fail later ones | `skills/learned-detection-gaps.md` | 5,6 | mdl, gate, review |
| Creating any entity, or calling a module security-ready — entity and grants land in one script, and ready means SHOW SECURITY MATRIX proves it | `skills/security-is-not-a-later-script.md` | 5 | mdl, gate, review |
| A CE error or behavior that looks like a known mxcli quirk rather than a modeling mistake — `bin/bug-lookup.sh CE0117` / `BUG-102` / "keyword" prints the matching ledger entries, so the session reads one entry, not the 32k-word ledger | `bin/bug-lookup.sh` | 5,6 | mdl, gate |
| The first command of every session, and any time someone asks "where are we" or "what next" — one screen: stage, done/overdue, the ONE next action, from the instruments, never from memory | `bin/status.sh` | P,0,1,2,3,4,5,6,7 | every role |
| Any session that will push a model to Mendix Team Server, and BEFORE telling the user a Team Server push is blocked — which remote is authoritative, settle-then-push order, and the four checks that have to fail first | `skills/teamserver-alignment.md` | 5,6,7 | mdl, gate, review |
| Any session that will push a model to Mendix Team Server, and BEFORE telling the user a Team Server push is blocked — which remote is authoritative, settle-then-push order, and the four checks that have to fail first | `skills/teamserver-alignment.md` | 5,6,7 | gate (mdl, review: on demand) |
<!-- ROUTING:END -->

**Why this has to be explicit instead of implicit:** a project's own skill files are usually written before a given toolkit learning exists, or before a new one is added later — they never grow a cross-reference to it on their own. When you `git pull` this toolkit and it brings in a new baseline-worthy skill (most often a new `learned-*.md`), update every consuming project's routing to match — don't assume the next session will find it by chance.
Expand Down
Loading
Loading