{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-ai/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown","redocly_category":"Development","owner":"MB"},"seo":{"title":"AI - Skill: Find Incomplete Products","description":"A reusable AI skill that scans the Norce product catalogue for products missing required data — primary category, publication flags, required parametrics, or images. Dynamically discovers required parametrics from category assignments and scans full category subtrees.","keywords":"MCP, skill, incomplete products, data quality, PIM, parametrics, flags, missing data, lookup products, Claude Code"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"skill-find-incomplete-products"},"children":["Skill: Find Incomplete Products"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Scans the Norce product catalogue for products that are missing required data — no primary category, active but not published, missing required parametric values, or no images. Returns a deduplicated, prioritised list showing which products have the most gaps, so you know where to focus enrichment work."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When given a category scope, the skill automatically expands to include all subcategories and only counts primary category assignments. Required parametrics are discovered dynamically from the category configuration — no hardcoded IDs needed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is the complement to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ai/norce-backend-mcp-skill-check-product-readiness"},"children":["Check Product Readiness"]},": that skill checks a specific list of SKUs in depth; this skill finds the SKUs that need attention across your whole catalogue or a specific category."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Required MCP server:"]}," Product MCP"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Who it is for:"]}," PIM managers running data quality sweeps, pre-launch validation, or ongoing catalogue maintenance."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-skill"},"children":["The skill"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"markdown","header":{"controls":{"copy":{}}},"source":"---\nname: find-incomplete-products\ndescription: Scans the Norce product catalogue for products missing required data — primary category, publication flags, required parametrics, or images. Expands category scope to include all subcategories and discovers required parametrics dynamically from category configuration.\n---\n\nYou are scanning the Norce product catalogue for incomplete products.\n\nApplication ID: Use the application ID from your session instructions. If no\napplication ID is available, ask the user which storefront to scan before\nproceeding.\nScope: $ARGUMENTS\n\nPublication flag configuration — choose one option and remove the other:\n\nOption A — Flag group (recommended): the skill looks up all flags in the group\nat runtime. Add new markets by adding their published flag to this group in\nNorce Admin — no skill update needed.\n  Publication flag group ID: [PUBLISHED_FLAG_GROUP_ID]\n\nOption B — Explicit flag IDs: list each published flag directly.\n  Publication flag IDs:\n  - [PUBLISHED_FLAG_ID_1]\n  - [PUBLISHED_FLAG_ID_2]\n\n**Step 0 — Resolve scope, publication flags, and required parametrics**\n\nBefore running any checks, complete the following:\n\n1. **Resolve publication flags.**\n   - If a flag group ID is configured (Option A), call norce_product_list_flags\n     and collect all active flag IDs that belong to that group. Use this list\n     for Check 2.\n   - If explicit flag IDs are configured (Option B), use those directly.\n\n2. **Resolve the category scope.**\n   - If no scope is provided, the scan covers the full active catalogue. Skip\n     to Step 1.\n   - If a category name or ID is provided, call norce_product_list_categories\n     to find that category and all its subcategories. Collect every category ID\n     in the subtree. All checks below (except Check 1) will be scoped to\n     products whose **primary category** is one of these IDs.\n\n3. **Discover required parametrics.**\n   For each in-scope category, call norce_product_get_category to retrieve its\n   parametric assignments. Collect all parametrics where IsRequired is true,\n   including any that are globally required across all categories. Deduplicate\n   by parametric ID. This list drives Check 3 — no hardcoded IDs are needed.\n   If no required parametrics are found, note this and skip Check 3.\n\nRun the following checks using norce_product_lookup_products. For each check,\nretrieve the PartNo, product name, and primary category of matching products.\nRun all checks in parallel before compiling the report.\n\n**Check 1 — Missing primary category**\nUse filter: Product/PrimaryCategory eq null\nThis check always runs against the full catalogue — products with no primary\ncategory cannot be scoped by category.\n\n**Check 2 — Active but not published**\nFind active products that have none of the configured publication flags active.\nBuild the filter dynamically from the publication flag IDs above:\nProduct/IsActive eq true and not Product/Flags/any(f: f/IsActive eq true and\n(f/FlagId eq [ID_1] or f/FlagId eq [ID_2] or ...))\nApply the category scope: primary category must be in the resolved category set.\n\n**Check 3 — Missing required parametrics**\nFor each required parametric discovered in Step 0, find in-scope products where\nthat parametric has no value assigned. Run one lookup per parametric.\n\n**Check 4 — No active images**\nUse filter: not Product/Files/any(f: f/IsActive eq true)\nApply the category scope.\n\nAfter all checks are complete, compile a single deduplicated report. Each\nproduct should appear only once, with all its issues listed together.\n\n---\n**Incomplete products — summary**\n- Scope: [full catalogue / category name including N subcategories]\n- Required parametrics checked: [list names, or \"none found for this scope\"]\n- Products with at least one issue: [N]\n- Missing primary category: [N] (full catalogue)\n- Active but not published: [N]\n- Missing required parametrics: [N per parametric name]\n- No images: [N]\n\n**Product list** (sorted by number of issues, most gaps first)\n\n| PartNo | Name | Primary Category | Issues |\n|---|---|---|---|\n| ... | ... | ... | ... |\n\n**Recommended focus**\nIdentify the most common issue type and suggest what to fix first to unblock\nthe most products.\n---\n\nIf the results are very large (more than 50 products with issues), summarise\nby category and ask whether the user wants to drill into a specific category\nor issue type before listing individual products.\n","lang":"markdown"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-to-install"},"children":["How to install"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Save this skill using the filename ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["find-incomplete-products"]}," and follow the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ai/norce-backend-mcp-skills-customization#installing-skills"},"children":["installation instructions"]}," for your client."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Client"},"children":["Client"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What to do"},"children":["What to do"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Claude Desktop"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SKILL.md"]}," inside a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["find-incomplete-products/"]}," folder, zip it, upload via Settings → Skills"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Claude Code"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Save as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".claude/commands/find-incomplete-products.md"]},", invoke with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/find-incomplete-products"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/find-incomplete-products Connectors"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["VS Code / Cursor"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Copy the skill content, replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$ARGUMENTS"]}," with a category name/ID or remove the Scope line for a full scan, paste into chat"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-to-customise"},"children":["What to customise"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only two things need to be configured before this skill is ready to run."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Placeholder"},"children":["Placeholder"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Replace with"},"children":["Replace with"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[PUBLISHED_FLAG_GROUP_ID]"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["(Option A — recommended)"]}," The ID of the flag group that contains all your published flags. Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["norce_product_list_flags"]}," to find the group. New markets just need their flag added to this group in Norce Admin — no skill update required."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[PUBLISHED_FLAG_ID_1]"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[PUBLISHED_FLAG_ID_2]"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["(Option B)"]}," Individual flag IDs if your published flags are not in a shared group. Add one line per flag."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Remove whichever option you are not using."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Required parametrics are discovered automatically from the category configuration — no hardcoded IDs needed. The skill calls ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["norce_product_get_category"]}," on the in-scope categories and uses whatever parametrics are marked ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IsRequired = true"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Remove checks that do not apply."]}," If your environment does not require images on all products, remove Check 4. The skill works with any subset of checks."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"example-usage"},"children":["Example usage"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/find-incomplete-products"]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["\"Find all products that are active but not published.\""]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["\"Scan the Lighting category for missing data and tell me what needs to be fixed before we can launch.\""]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["\"Run a data quality sweep across the full catalogue and group the results by category so I can see where the gaps are concentrated.\""]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related"},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ai/norce-backend-mcp-skill-check-product-readiness"},"children":["Check Product Readiness"]}," — deep check on a specific list of SKUs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ai/norce-backend-mcp-pim-manager"},"children":["PIM manager how-to"]}," — full workflow guide for PIM managers"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ai/norce-product-mcp-tool-reference"},"children":["Product MCP tool reference"]}]}]}]},"headings":[{"value":"Skill: Find Incomplete Products","id":"skill-find-incomplete-products","depth":1},{"value":"The skill","id":"the-skill","depth":2},{"value":"How to install","id":"how-to-install","depth":2},{"value":"What to customise","id":"what-to-customise","depth":2},{"value":"Example usage","id":"example-usage","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"seo":{"title":"AI - Skill: Find Incomplete Products","description":"A reusable AI skill that scans the Norce product catalogue for products missing required data — primary category, publication flags, required parametrics, or images. Dynamically discovers required parametrics from category assignments and scans full category subtrees.","keywords":"MCP, skill, incomplete products, data quality, PIM, parametrics, flags, missing data, lookup products, Claude Code"},"metadata":{"redocly_category":"Development","owner":"MB"}},"lastModified":"2026-09-16T06:55:22.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/ai/norce-backend-mcp-skill-find-incomplete-products","userData":{"isAuthenticated":false,"teams":["anonymous"]}}