Repository navigation
fix(skill): AI skill drift — dead routing refs, phantom components (B24Slider/B24AuthForm), index.json desync, broken examples #93
Description
Activity
- addedbugSomething isn't workingSomething isn't workingdocumentationImprovements or additions to documentationImprovements or additions to documentation
on Jun 9, 2026 Fixed and merged in #343 🧭
Every box on the checklist is ticked, plus nine more of the same species that the review round flushed out of files this issue never named. Turns out when you go looking for one dead reference, you find its extended family.
The routing table no longer sends anyone to
auth,chat,docsoreditor. Those four were inherited from the nuxt/ui skill and never existed here, which is a fun kind of bug: the agent dutifully tries to load a file, finds nothing, and carries on with whatever it already believed. They now point at the sections ofcomponents.mdthat actually cover chat, the editor and markdown.detail-panel.mdandtask-form.md— 500 lines of genuinely good material that no row named — are routed too, andiconsfinally got the row it never had.The phantoms are gone.
B24SliderisB24Range(the links were right the whole time, only the name was wrong),UFieldGroupisB24FieldGroup, andB24AuthForm— which the skill recommended for every login page, alongside a Russian parenthetical quietly admitting there were no docs — never existed at all. Login pages now compose what does:<B24Form :schema="schema" :state="state" @submit="onSubmit"> <B24FormField label="Email" name="email"> <B24Input v-model="state.email" type="email" autocomplete="username" /> </B24FormField> <B24FormField label="Password" name="password"> <B24Input v-model="state.password" type="password" autocomplete="current-password" /> </B24FormField> </B24Form>
And the examples now run. The worst one was
card-pickers.md, which importedLayoutGridIcon,LayoutListIconandLayoutKanbanIconfrom a package that has no icon namedLayoutanything — and, in a detail I enjoyed rather more than I should have, that file was one of the two this same PR added toindex.json. It had just started shipping to agents, and it failed on first use. Also fixed: the CyrillicИin<И24Card>,:icon="{AchievementIcon}"binding an object where a component belongs,variant="ghost"on seven buttons (there is novariantprop — the skill's own forms guideline said so, two files away),color="neutral"matching no key in the theme, an undefinedPlusLIcons, andform.clearErrors()for what is actuallyclear().Special mention for Core rule 3, the single highest-traffic sentence in the package, which told every agent to read
.nuxt/ui/<component>.ts. We write to.nuxt/b24ui/. The sibling design-system guideline had it right; the rule had been quietly wrong since the fork.The part that matters most is that none of this can come back silently.
test/utils/skill-manifest.spec.tsruns ten checks in CI: component names under both registered prefixes (B24*andProse*— an earlier draft accepted 35 names that do not exist, because prose components are registered differently), icon imports against the very metadata file the skill tells agents to search, links that must resolve inside the installed package, manifest parity in both directions, and routing checked both ways — because "listed but unreachable" is exactly howdetail-panel.mdgot lost. Every check was mutation-tested against the defect it guards.Want to see it work? Try:
Using the b24ui skill, build a settings page with a layout picker (table / list / kanban) and a login form. Follow the routing table and load only the references it names.
Nothing in the npm package changed —
skills/is not published — so this ships as a docs entry rather than a version bump.Two follow-ups filed with full context: #344 (generate
index.jsonand thecomponents.mdtable from the docs frontmatter, so those two cannot drift at all) and #345 (guard prop and colour names, not just identifiers — the one gap the new checks can't see).Thanks from Igor 🙏
Generated by Claude Code
- added a commit that references this issue
on Sep 14, 2026
Background
Surfaced during the June 2026 multi-angle project audit (documentation review). The skill (
skills/b24-ui-nuxt/) is structurally sound (valid frontmatter, 155-line body, one-level-deep references) but has drifted from both the codebase and its own manifest — agents following it today emit non-compiling code.Checklist
SKILL.mdrows ~59 (auth), 61 (chat), 64 (docs), 66 (editor) reference files that don't exist underreferences/(inherited from the nuxt/ui skill). Existing files are only: guidelines/{component-selection,conventions,design-system,forms,icons}, layouts/{dashboard,landing}, recipes/{card-pickers,data-tables,detail-panel,navigation,overlays,settings,task-form}, components.md. Repoint (auth → forms; chat/editor → components.md sections) or delete the rows.references/recipes/detail-panel.md(203 lines) andtask-form.md(301 lines) are listed in no routing row and not in SKILL.md's Recipes section: an agent will never load them. Add them.component-selection.md:64recommendsB24AuthForm(does not exist anywhere insrc/; followed by a stray Russian parenthetical «(документация отсутствует, см. B24Form)»).component-selection.md:59andcomponents.md:62nameB24Slider; the real component isB24Range(links already point atrange.md— only the name is wrong). Full cross-check of allB24*names found exactly these two phantoms.skills/index.jsonout of sync with disk —filesomitsreferences/recipes/card-pickers.mdandsettings.md(referenced from SKILL.md lines 45-46, 57-58, 65), while listing detail-panel/task-form which SKILL.md never mentions. Since docs advertisenpx skills add bitrix24/b24ui, a manifest-driven install delivers a skill with dead routing targets. Regenerate from the tree and add a CI check that the manifest matchesfind skills -name '*.md'.design-system.md:70:<И24Card …>with a Cyrillic И instead ofB24Card;icons.md:43::icon="{AchievementIcon}"binds an object literal (and the template at line 24,:icon="{{ {icon} }}", teaches the same mistake) — should be:icon="AchievementIcon";conventions.md:102-103: duplicateimport PersonIcon(duplicate-identifier error).SKILL.md:22,conventions.md:55), "ou are using" (conventions.md:151), duplicated LLMs.txt paragraph (SKILL.md:12-14), "for Bitrix24 application" → "for a Bitrix24 application" (SKILL.md + index.json descriptions).Priority: P1 — this package is shipped to AI agents as ground truth.