skills: the three skills are checked against the tree they describe - #429
Merged
Merged
Conversation
A skill that states something no longer true is worse than one that says nothing, because an agent acts on it with confidence and does not go and look. Every specific claim in the three was read against the current tree, and a surprising number had moved. The worst were not stale but invented: the driving skill's workflows told an agent to run evaluate_link, reception_ledger, find_sites and energy_forecast, none of which has ever existed. They are replaced by the verbs and subcommands that do, and where a capability is genuinely unreachable from outside, the skill now says so: internal/study/planning has no verb, and a link budget computed by link.pair reaches no reply, no snapshot and no client. What else moved. Refusals are the big one: a parameter the workbench cannot understand is now refused with a code from a closed set rather than quietly replaced, so "it answers no by returning a value" is only half the story and the half that is left is where scripts still die. Terrain now waits for consent, and a held warm does not hang, it finishes the links job as failed and measures nothing, which is the failure a skill exists to warn about. Five verbs that answered with a count now return their rows, and four still do not, so the skill names those four instead of claiming the class was closed. Miss causes gained collision, receiver-busy and unclassified, and floor stopped being the catch-all, which changes what code matching on floor now sees. The emulator toolchain is a download, so the advice that a board cannot be run locally is gone. ESP32-S3 and nRF52 are emulated, and the claim that only plain ESP32 and only repeaters could be was two releases out of date. On counts: verbdoc owns them, so the skills cite the generator rather than carrying a number nothing checks. Several written-down verb counts have already gone stale, which is the argument. In the interface skill, Panel.InWindowMenu and "Show all panels..." are gone, every panel names its own menu instead; the audit's targets moved to their own file; and the two /tmp scripts it told an agent to use are machine-local and have no committed replacement, which is worth saying plainly rather than pointing at a path nobody else has. The meshcoresim skill's front-matter name said "meshbench", which matched neither its directory nor anything an agent invokes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A13xB0
force-pushed
the
msim-skills-refresh
branch
from
September 1, 2026 22:38
b67d1ac to
1cc411e
Compare
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.
Every specific claim in
.claude/skills/read against the current tree, and corrected. A skill that states a stale fact is worse than one that says nothing, because an agent acts on it confidently and does not go and look.Branched from
mainat #421 so thesession.listline is true.The worst were invented, not stale
The driving skill's workflow section told an agent to run
evaluate_link,reception_ledger,find_sitesandenergy_forecast. None of the four has ever existed anywhere in this repository. They are replaced by what does:meshbench link/profilefor a budget,events.recentandevents.dumpfor a miss,coverage.computefor a raster,node.energyandenergy.for_selectionfor a solar budget,validate.fetch/validate.comparefor the comparison.Where a capability is genuinely unreachable from outside, the skill now says so rather than describing a workflow:
internal/study/planning(CoverArea,BaselineCoverage) has no caller outside its own tests. Site search is reachable from no verb and no subcommand.link.pairandlink.profilecompute a budget and return only the endpoints.budget.for_selectionanswers{budgets: n}.World.Budgetsreachesstate.Snapshotbut no summary and neither client, so the margins cannot be read back over the socket at all.What moved today
Refusedsubclass, Go returns a*Refused. The value-shaped no survives for state refusals such assim.startnodes.select_manynilstill clearsterrain.allow, and a held warm does not hang: it ends thelinksjob as failed and marks the session warmed, so a wait returns at once having measured nothingresource.listwas the fifth); four still have it, named in a table:budget.for_selection,sweep.run,schedule.add,assert.addengine.Classvalues, withfloorno longer the catch-all and whatunclassifiedis forEmulatableBoards()covers plain ESP32, ESP32-S3 and nRF52840 under Renode, and there is no role gate. The skill now points at that function instead of carrying a list--enable-gcryptresource.fetchwithkind: "toolchain", with the trap thatkinddefaults tosoftdevicetools/verbdoc/verbdoc.py, or asksession.verbs. No number that nothing checksNew surface written down where it saves a cycle:
setup.check,job.list,session.list,node.antenna/nodes.antenna/node.aim, and the polarisation charge that the link budget applies and the coverage raster does not.Interface skill
Panel.InWindowMenuand "Show all panels..." no longer exist; every panel names its ownMenuandSectionand the entries are generated.auditTargetsmoved toaudittargets_test.go, which is what "new panels joinauditTargets" now means in practice./tmpscripts it told an agent to use are machine-local and have no committed replacement. Said plainly, with what there is instead, rather than pointing at a path nobody else has.comp/break it.Housekeeping
meshcoresimskill's front-matternamesaidmeshbench, matching neither its directory nor anything an agent invokes..claude/skills/README.mdnow says the mirroring is a manual copy that nothing checks, and links the new docs page.Checks
Nothing outside
.claude/is touched, sogofmt,go vetandgo buildhave nothing to say about this diff. Facts were established by reading the tree;python3 tools/verbdoc/verbdoc.pywas run and left the tree clean.Not done here
Two em-dashes in shipped copy, out of scope for this PR and worth a separate one:
cmd/meshbench/cmd_rf.goprintsONE WAY ONLY - the %s direction failswith an em-dash, andinternal/firmware/diff.go:155carries one in a message.internal/layers_test.go:46's doc comment still says "seven" where the list says nine.Companion documentation page: MeshBench/docs#27.