{
  "skill_id": "gf-po-pages-function-smoke-maps",
  "name": "Pages Function Smoke Maps",
  "evaluation": "free",
  "quality": "agent-decision-grade",
  "functional": true,
  "price_usd": 6.49,
  "category": "Launch",
  "tier": "standard",
  "kind": "good",
  "tags": [
    "x402",
    "quality-factory",
    "good",
    "decision-grade",
    "functional",
    "sealed-runtime",
    "gf-complete"
  ],
  "summary": "Route-level smoke maps for Cloudflare Pages Functions covering critical marketplace and unlock paths after every promote.",
  "when_to_use": [
    "Pages promotes succeed in the dashboard while unlock, catalog API, or health Functions regress without an automated click path.",
    "You want a single smoke map juniors can run in five minutes after promote, including preview versus production base URLs.",
    "Function routes moved and old smoke scripts still hit static 200s that hide missing API handlers."
  ],
  "outline": [
    "Map each critical route to its Function or static target: method, path, auth expectation, and success body marker or JSON field.",
    "Define smoke tiers: L0 health under one minute, L1 unlock and catalog under five, L2 deep agent tool stubs under fifteen.",
    "Script execution notes for preview vs production base URLs, required headers, and safe non-destructive POST patterns only.",
    "Attach rollback owners and previous deployment IDs so a failed smoke immediately freezes further promote and restores last green.",
    "Version the smoke map with each route change and fail CI when new Functions land without a matching smoke row."
  ],
  "capabilities": [
    "Route-to-Function smoke map template with methods and body markers",
    "L0/L1/L2 smoke tier definitions for time-boxed post-promote checks",
    "Preview-versus-production execution notes with safe request patterns",
    "Rollback owner and deployment-ID cards linked to failed smoke",
    "CI gate rule that requires smoke rows for new Function routes"
  ],
  "artifact_outputs": [
    "pages-function-smoke-map.csv",
    "smoke-tier-runbook.md",
    "post-promote-rollback-card.md"
  ],
  "decision_criteria": [
    "Outline steps are specific to this skill (not generic templates)",
    "Sealed pack exposes createSkill().run with outline-driven steps",
    "Artifacts are named concrete deliverables",
    "No revenue guarantees or banned claims",
    "Free eval path works without payment"
  ],
  "sealed_after_pay": [
    "Full src/index.js runtime (createSkill, run, plan)",
    "src/runbook.js with skill-specific steps",
    "src/tools.js registry for agent ToolRegistry",
    "WORKBOOK.md operator procedure",
    "templates/ checklist and artifact shells",
    "schemas/output.schema.json"
  ],
  "runtime": {
    "entry": "src/index.js",
    "export": "createSkill",
    "install": "node scripts/install-unlocked-pack.mjs unlock.json ./skills"
  },
  "challenge": "https://lvlltd.com/api/pay?skill=gf-po-pages-function-smoke-maps",
  "sample": "https://lvlltd.com/skills/gf-po-pages-function-smoke-maps/sample.md",
  "pack_meta": "https://lvlltd.com/api/packs?skill=gf-po-pages-function-smoke-maps",
  "teaser": "https://lvlltd.com/sealed/gf-po-pages-function-smoke-maps/",
  "proof": "https://lvlltd.com/api/proof",
  "standards": [
    "x402",
    "ERC-7857"
  ],
  "operator_notes": [
    "Confirm pay path with GET /api/pay before purchasing.",
    "Dry-run createSkill().run({ goal, dry_run: true }) after unlock.",
    "Persist payment.txHash with skill_id for re-redeem.",
    "Never commit private keys or OPS_SECRET into pack usage.",
    "Category focus: Launch. Kind: good.",
    "Claim scrub: no guaranteed ROI, no fake testimonials.",
    "If outline 404s on production, redeploy public/skills after completion pass."
  ]
}