learn(skills/doctor-triage.md): triage a red doctor.sh before proposing a fix - #130
Merged
Merged
Conversation
…ng a fix The 2026-09-22 macOS onboarding thread burned an afternoon across four people because three distinct failures render identically in doctor's output, and the first confident answer — "install Studio Pro 10.24.18" — could not have fixed any of them. The skill separates the three classes (my environment is wrong / the toolkit's own self-check is wrong / this red does not apply in my lane), makes Step 1 establish what is actually on the machine (`file` on the exact path doctor printed, which installs exist, whether each carries a bundled `mx`), and pairs each rule with the wrong output it prevents: the Linux-ELF mxbuild answered with a Studio Pro version, and the false `fail (unreadable error file)` from the self-test bug fixed in c0ea53c — a string that means the gate is broken, on a healthy gate. Also covered: the three toolchain lanes (bundled `mx`, with macOS shipping one only from Mendix 11; the Linux-only CDN toolchain; the container lane, which is runtime-agnostic although doctor currently probes only `docker` — noted as a limitation, not fixed here), a derivation for which FAILs block instead of a list that rots, the N+M-lines-dispositioned completion bound, and the VM/arch caveat that makes a sandboxed session's findings non-transferable. Routing: new `diagnose` row in bin/lib/skill-routing.tsv, surfaces re-rendered with bin/render-routing.sh; `--check` clean (baseline 73341 words, budget 80000). No version lists or clone paths are cached in the skill — two people in that thread had the toolkit at different paths. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0187r9bQWkZAEppyEqrDevjK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Direct lane (changes to
skills/,bug-logs/,bin/,project-bin/,project-tests/, pipelines)What changed and why (one paragraph):
New
skills/doctor-triage.mdcaptures "doctor.sh says red — what now?" so a session reads it from disk instead of re-deriving it in Slack. Its subject is the conflation: my environment is wrong / the toolkit's own self-check is wrong / this red does not apply in my lane render identically in doctor's output, so Step 1 is establishing what is actually on the machine (fileon the exact path doctor printed, which Studio Pro installs exist, whether each carries a bundledmx, OS/arch) rather than inferring from the message. It also carries the three toolchain lanes (bundledmx; the Linux-only CDN toolchain; the container lane, treated runtime-agnostically — Docker Desktop is not licensable for this team, Podman is what runs, and the skill notes thatdoctor.shcurrently probes onlydockeras a known limitation rather than fixing it here), a derivation for which FAILs block instead of a list that would rot, and the VM/arch caveat that makes a sandboxed session's binary findings non-transferable. Per the authoring rules it hardcodes no version lists, clone paths or file inventories — two people in the source thread had the toolkit checked out at different paths — and each rule is paired with the concrete wrong output it prevents.Field evidence — which real project this ran against / was observed in, and what it measured or fixed there:
The macOS onboarding thread of 2026-09-22: four people, one afternoon, three distinct failures treated as one.
filecall would have.…/Contents/modeler/mx; Mendix 11 is the first macOS build that carries one. On a Mac that is a platform requirement, not a toolkit preference.c0ea53c): it renamed the scratch model copy againstmprcontents' internal record of the real basename, so mxbuild bailed before writing any error file and the self-test reportedfail (unreadable error file)— the string meaning the gate itself is broken — on a healthy gate.Plus two lessons from the same thread, both in the skill: one colleague shipped with 2 FAILs open, correctly, and nobody else knew which two were ignorable (hence the N+M-lines-dispositioned completion bound); and a colleague diagnosing from a Linux ARM64 VM mounting a Mac folder produced findings that could not reproduce on the host.
CHANGELOG.mdbin/render-routing.sh --checkclean ("Routing surfaces in sync with the table; all skills routed or exempted. Baseline: 73341 words (budget 80000)"), whichCLAUDE.mdnames as the correct scoped check for a routing change.bin/check-docs-numbering.shverified by inspection against the new file (no<N>-stepprose claim, noGate <N>ordinals — grep returns nothing, so both its assertions are vacuously satisfied).tests/wave2/test-render-routing.shandtest-routing-tier.share the fixtures that cover this change and were not run — they would confirm the renderer/tier behaviour that--checkalready exercised on this exact table; happy to run either on request.bin/lib/skill-routing.tsv+bin/render-routing.sh)CHANGELOG.mdline appended in this PR, crediting the threadRouting row (group
diagnose, tierondemand, agentsall, stages-):New-file vs extend: surveyed
README.md(both tables),ROUTING.md,skills/conversion-runbook.md(Prerequisites),skills/cloud-dev-environment.md,skills/tool-output-is-not-ground-truth.mdandbin/doctor.sh's header. Nothing owns this trigger: the runbook's Prerequisites tells you to run doctor and assumes it came back clean,cloud-dev-environment.mdis scoped to the ephemeral-container lane, andtool-output-is-not-ground-truth.mdis the general principle for reading a model through tooling, not a setup-triage procedure. One skill, one situation.🤖 Generated with Claude Code
https://claude.ai/code/session_0187r9bQWkZAEppyEqrDevjK
Generated by Claude Code