{
  "ok": true,
  "schema": "lvl-recommendations-v1",
  "skill": {
    "id": "gf-q-gitignore-artifacts",
    "name": "Artifacts Gitignore Notes",
    "category": "Coding",
    "price_usd": 1.29,
    "related_skills": [],
    "requires": [],
    "complements": []
  },
  "recommendations": [
    {
      "skill_id": "gf-q-node20-fetch",
      "name": "Node 20 Fetch Patterns",
      "price_usd": 0.99,
      "category": "Coding",
      "score": 11,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-node20-fetch",
      "outline": "https://lvlltd.com/skills/gf-q-node20-fetch/outline.json",
      "requires": false,
      "complements": false
    },
    {
      "skill_id": "gf-q-wrangler-pages-notes",
      "name": "Wrangler Pages Deploy Notes",
      "price_usd": 1.59,
      "category": "Coding",
      "score": 11,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-wrangler-pages-notes",
      "outline": "https://lvlltd.com/skills/gf-q-wrangler-pages-notes/outline.json",
      "requires": false,
      "complements": false
    },
    {
      "skill_id": "gf-q-json-schema-outline",
      "name": "Outline JSON Schema Pack",
      "price_usd": 0.99,
      "category": "Coding",
      "score": 11,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-json-schema-outline",
      "outline": "https://lvlltd.com/skills/gf-q-json-schema-outline/outline.json",
      "requires": false,
      "complements": false
    },
    {
      "skill_id": "gf-q-fetch-402-client",
      "name": "Fetch-402 Client Snippet Pack",
      "price_usd": 1.99,
      "category": "Coding",
      "score": 11,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-fetch-402-client",
      "outline": "https://lvlltd.com/skills/gf-q-fetch-402-client/outline.json",
      "requires": false,
      "complements": false
    },
    {
      "skill_id": "gf-q-skill-json-repair",
      "name": "skills.json Trailing Garbage Guard",
      "price_usd": 1.39,
      "category": "Coding",
      "score": 10.2,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-skill-json-repair",
      "outline": "https://lvlltd.com/skills/gf-q-skill-json-repair/outline.json",
      "requires": false,
      "complements": false
    },
    {
      "skill_id": "gf-q-function-route-map",
      "name": "Functions Route Map Card",
      "price_usd": 3.49,
      "category": "Coding",
      "score": 9.4,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-function-route-map",
      "outline": "https://lvlltd.com/skills/gf-q-function-route-map/outline.json",
      "requires": false,
      "complements": false
    },
    {
      "skill_id": "gf-q-pay-js-invariants",
      "name": "pay.js Invariant Checklist",
      "price_usd": 4.59,
      "category": "Coding",
      "score": 9.4,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-pay-js-invariants",
      "outline": "https://lvlltd.com/skills/gf-q-pay-js-invariants/outline.json",
      "requires": false,
      "complements": false
    },
    {
      "skill_id": "gf-q-skills-json-merge",
      "name": "skills.json Merge Discipline",
      "price_usd": 2.59,
      "category": "Coding",
      "score": 9.4,
      "reasons": [
        "same_category",
        "tag_overlap"
      ],
      "challenge": "https://lvlltd.com/api/pay?skill=gf-q-skills-json-merge",
      "outline": "https://lvlltd.com/skills/gf-q-skills-json-merge/outline.json",
      "requires": false,
      "complements": false
    }
  ],
  "bundles_including": [],
  "sources": {
    "explicit_fields": "related_skills / requires / complements when present",
    "co_purchase": "same wallet confirmed unlocks (ledger)",
    "structural": "same_category + tag_overlap"
  },
  "note": "Hand-curated bundles remain under /api/shop → bundles; this graph scales beyond editorial lists."
}