Found twice independently on 2026-09-13/14, on the Qdrant Edge course.
.claude/skills/generate-spec/SKILL.md step 3 reads:
Read every material. Glob materials/notebooks/**/* and materials/transcripts/**/*, then read each non-empty file.
But the base guide's §5.5 design-argued route names a third source:
design-argued (course-argued) — the transcripts/slides explicitly present an alternative and argue a trade-off
So the guide expects slides to be mined, and the skill never opens them. Because both globbed directories are non-empty, the skill's "No materials found" refusal never fires — the omission is silent.
Why it matters here
courses/building-on-device-ai-memory-with-qdrant-edge/materials/slides/sc-Qdrant-C3-slide-descriptions.md (440 lines) carries content in neither the notebooks nor the transcripts. Folding it in by hand produced two changes to the spec that nothing else would have caught:
-
A business rule that was untestable without it. A slide states the payload filter is part of the query, not a post-processing step. The rule as originally written ("returns only points satisfying every condition") is satisfied by post-filtering too, and on a 21-point fixture corpus both implementations return identical ids. A discriminating criterion had to be added: filter a food question to an unrelated category and assert the lone member of that category comes back — a point no unfiltered top-3 would contain.
-
A genuine contradiction between materials. A Lesson 4 slide describes all modalities "merged into one inbox ranked by score". It appears in no video, and the shipped code renders three separate lanes and names the blended list as the thing not to do. Without the slides, the conflict is invisible; with them, it resolves as shipped-code-wins and gets recorded rather than silently decided.
The decks also carry a third lesson numbering from an abandoned six-lesson plan, off by one from the videos — exactly the §12.1 lesson-numbering trap, undetectable without reading them.
Implication
Any course shipping slides generates a spec missing whatever the slides uniquely argue, with no warning. The two sources also have different evidential weight — 8 of this course's slides appear in a lesson video, 15 exist only in the decks — which the guide has no vocabulary for.
Proposed fix — not applied
Deliberately deferred: widening the glob changes the no-flag path, which the --env work was committed on the explicit promise of leaving untouched. It should land on its own, with its own regeneration.
Two halves, and they should ship together:
SKILL.md step 3 — glob materials/slides/**/* as a third, optional source (absent in most courses; no refusal when missing).
- Guide §4 Pass B — say how slide evidence is weighted against narration and shipped code. Suggested: a slide that appears in a lesson video ranks with the transcripts; a slide that exists only in a deck is weaker than either, and where it conflicts with shipped code or narration, it loses and the conflict is recorded in CTX-C rather than resolved silently.
Half 1 without half 2 makes slides silently outrank the transcripts on a contradiction.
🤖 Generated with Claude Code
Found twice independently on 2026-09-13/14, on the Qdrant Edge course.
.claude/skills/generate-spec/SKILL.mdstep 3 reads:But the base guide's §5.5
design-arguedroute names a third source:So the guide expects slides to be mined, and the skill never opens them. Because both globbed directories are non-empty, the skill's "No materials found" refusal never fires — the omission is silent.
Why it matters here
courses/building-on-device-ai-memory-with-qdrant-edge/materials/slides/sc-Qdrant-C3-slide-descriptions.md(440 lines) carries content in neither the notebooks nor the transcripts. Folding it in by hand produced two changes to the spec that nothing else would have caught:A business rule that was untestable without it. A slide states the payload filter is part of the query, not a post-processing step. The rule as originally written ("returns only points satisfying every condition") is satisfied by post-filtering too, and on a 21-point fixture corpus both implementations return identical ids. A discriminating criterion had to be added: filter a food question to an unrelated category and assert the lone member of that category comes back — a point no unfiltered top-3 would contain.
A genuine contradiction between materials. A Lesson 4 slide describes all modalities "merged into one inbox ranked by score". It appears in no video, and the shipped code renders three separate lanes and names the blended list as the thing not to do. Without the slides, the conflict is invisible; with them, it resolves as shipped-code-wins and gets recorded rather than silently decided.
The decks also carry a third lesson numbering from an abandoned six-lesson plan, off by one from the videos — exactly the §12.1 lesson-numbering trap, undetectable without reading them.
Implication
Any course shipping slides generates a spec missing whatever the slides uniquely argue, with no warning. The two sources also have different evidential weight — 8 of this course's slides appear in a lesson video, 15 exist only in the decks — which the guide has no vocabulary for.
Proposed fix — not applied
Deliberately deferred: widening the glob changes the no-flag path, which the
--envwork was committed on the explicit promise of leaving untouched. It should land on its own, with its own regeneration.Two halves, and they should ship together:
SKILL.mdstep 3 — globmaterials/slides/**/*as a third, optional source (absent in most courses; no refusal when missing).Half 1 without half 2 makes slides silently outrank the transcripts on a contradiction.
🤖 Generated with Claude Code