Problem
The knowledge base is being reorganized (branch reorg/top-level-domains), and
the recipe tag has been retired. Every meal-planning skill that enumerates
recipes by that tag will silently return zero results once the reorg merges.
This is a silent failure, not an error: the search succeeds and returns nothing.
What changed in the KB
-
type: recipe now exists. Per-directory .kb-schema.yaml files landed,
so food/recipes/.kb-schema.yaml narrows the inherited type enum to exactly
[recipe]. The recipe tag only ever existed because type was globally
fixed and rejected recipe — that constraint is gone, and the contracts
document said so explicitly under "Open".
-
lifestyle/kitchen/ is now food/. Recipes live at food/recipes/,
the meal plans at food/plans/, and the contracts at
food/meal-planning-contracts.md.
-
Protein / cuisine / method are no longer tags. They were stored twice —
as tags and in the planning block — on 21 of 23 recipes. They now live
only in planning as typed enums, filterable via dot-path. Recipe tags now
carry only what planning does not express: equipment, dish type, dietary.
-
type: meal-plan replaces type: project for plan documents. The
meal-plan tag is deliberately retained for now precisely so this
migration doesn't have to happen under time pressure — but it should also
move to type eventually.
Affected files
plugins-claude/meal-planning/skills/meal-plan/SKILL.md:36 — "Enumerate the
recipe collection by searching for the recipe tag, not ..."
plugins-claude/meal-planning/skills/add-recipe/SKILL.md:218-219 — "An
unretrofitted recipe is invisible to search. The recipe tag is what makes
a recipe enumerable ..."
plugins-claude/meal-planning/skills/add-recipe/SKILL.md:180-183 — tagging
guidance that references the tag-vocabulary exception; the exception mechanism
changed (vocabularies are now per-directory schemas, not a global list with a
carve-out).
plugins-claude/meal-planning/skills/whats-for-dinner/SKILL.md,
grocery-cart/SKILL.md, README.md — reference recipe/plan lookup; audit for
the same assumption.
Suggested fix
Enumeration should move to list_documents, which is the tool built for
exactly this. search is relevance-ranked and returns chunks, not documents,
with a hard cap and no total — it cannot reliably enumerate a set. This was a
real observed failure: listing 17 recipe-tagged documents returned 15, silently.
list_documents always returns total and has_more, so truncation is never
silent.
Note search's tags filter is match-any (OR), not AND — another reason
tag-based enumeration was fragile. list_documents supports all_of.
Caveat
planning.* fields are filterable via list_documents today, but not via
search's dedicated parameters — deep indexed: true in a .kb-schema.yaml
does not create a Qdrant payload index. Don't plan on narrowing a semantic
search by planning.* until that's wired up server-side.
Dependencies
- md-kb-rag
list_documents must be deployed (it is implemented on
feature-list-documents-tool).
- The KB reorg branch
reorg/top-level-domains must be merged. Until it is,
the current tag-based skills still work — this is not yet urgent, but it
will break the moment that branch lands.
food/meal-planning-contracts.md has been updated with the new schema and
carries this migration note in its "Open" section.
Problem
The knowledge base is being reorganized (branch
reorg/top-level-domains), andthe
recipetag has been retired. Every meal-planning skill that enumeratesrecipes by that tag will silently return zero results once the reorg merges.
This is a silent failure, not an error: the search succeeds and returns nothing.
What changed in the KB
type: recipenow exists. Per-directory.kb-schema.yamlfiles landed,so
food/recipes/.kb-schema.yamlnarrows the inheritedtypeenum to exactly[recipe]. Therecipetag only ever existed becausetypewas globallyfixed and rejected
recipe— that constraint is gone, and the contractsdocument said so explicitly under "Open".
lifestyle/kitchen/is nowfood/. Recipes live atfood/recipes/,the meal plans at
food/plans/, and the contracts atfood/meal-planning-contracts.md.Protein / cuisine / method are no longer tags. They were stored twice —
as tags and in the
planningblock — on 21 of 23 recipes. They now liveonly in
planningas typed enums, filterable via dot-path. Recipe tags nowcarry only what
planningdoes not express: equipment, dish type, dietary.type: meal-planreplacestype: projectfor plan documents. Themeal-plantag is deliberately retained for now precisely so thismigration doesn't have to happen under time pressure — but it should also
move to
typeeventually.Affected files
plugins-claude/meal-planning/skills/meal-plan/SKILL.md:36— "Enumerate therecipe collection by searching for the
recipetag, not ..."plugins-claude/meal-planning/skills/add-recipe/SKILL.md:218-219— "Anunretrofitted recipe is invisible to search. The
recipetag is what makesa recipe enumerable ..."
plugins-claude/meal-planning/skills/add-recipe/SKILL.md:180-183— taggingguidance that references the tag-vocabulary exception; the exception mechanism
changed (vocabularies are now per-directory schemas, not a global list with a
carve-out).
plugins-claude/meal-planning/skills/whats-for-dinner/SKILL.md,grocery-cart/SKILL.md,README.md— reference recipe/plan lookup; audit forthe same assumption.
Suggested fix
Enumeration should move to
list_documents, which is the tool built forexactly this.
searchis relevance-ranked and returns chunks, not documents,with a hard cap and no total — it cannot reliably enumerate a set. This was a
real observed failure: listing 17 recipe-tagged documents returned 15, silently.
list_documentsalways returnstotalandhas_more, so truncation is neversilent.
Note
search'stagsfilter is match-any (OR), not AND — another reasontag-based enumeration was fragile.
list_documentssupportsall_of.Caveat
planning.*fields are filterable vialist_documentstoday, but not viasearch's dedicated parameters — deepindexed: truein a.kb-schema.yamldoes not create a Qdrant payload index. Don't plan on narrowing a semantic
searchbyplanning.*until that's wired up server-side.Dependencies
list_documentsmust be deployed (it is implemented onfeature-list-documents-tool).reorg/top-level-domainsmust be merged. Until it is,the current tag-based skills still work — this is not yet urgent, but it
will break the moment that branch lands.
food/meal-planning-contracts.mdhas been updated with the new schema andcarries this migration note in its "Open" section.