{
  "name": "figdown",
  "version": "0.5.1",
  "description": "A missing edge still looks fine. Text doesn't. A closed, deterministic figure language for Markdown whose source states the meaning, so the next reader can check the figure instead of only looking at it.",
  "license": "MIT",
  "author": "FigDown <hello@figdown.org>",
  "homepage": "https://figdown.org",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/FigDown/figdown.git"
  },
  "bugs": {
    "url": "https://github.com/FigDown/figdown/issues"
  },
  "keywords": [
    "figdown",
    "diagram",
    "figure",
    "markdown",
    "svg",
    "diagrams-as-code",
    "ai-agent",
    "deterministic"
  ],
  "type": "commonjs",
  "scripts": {
    "gate:conformance": "node conformance/run.js",
    "gate:conformance-experimental": "node conformance/run.js --experimental",
    "gate:comment": "node tools/comment-check.js --strict",
    "gate:editor": "node tools/editor-check.js --strict",
    "gate:fence": "node tools/fence-check.js --strict",
    "gate:page": "node tools/page-check.js",
    "gate:shape": "node tools/shape-check.js --strict",
    "gate:strip": "node tools/strip-check.js --strict",
    "gate:layout": "node tools/layout-lint.js --strict examples figures tools/layout-lint-fixtures/b66-typed-title",
    "gate:namespace": "node tools/namespace-check.js --strict",
    "gate:artifact": "node tools/artifact-check.js --strict",
    "gate:dist": "node tools/dist-check.js --strict",
    "gate:isolation": "node tools/isolation-check.js --strict",
    "gate:boundary": "node tools/boundary-check.js --strict",
    "gate:stability": "node tools/stability-check.js",
    "gate:locality": "node tools/layout-stability/run.js --strict",
    "gate:migrate": "node tools/migrate-check.js",
    "gate:skill-coverage": "node tools/skill-coverage.js --strict",
    "gate:legend": "node tools/legend-check.js --strict",
    "gate:registry": "node tools/registry-check.js --strict",
    "gate:capability": "node tools/capability-coverage.js --strict",
    "gate:archive": "node tools/archive-check.js --strict",
    "gate:standards": "node tools/standards-check.js --strict",
    "gate:plugin": "node tools/plugin-check.js --strict",
    "gate:mcp": "node integrations/mcp-server/test.js",
    "gate:proof": "node tools/make-proof.js --check",
    "gate:safesvg": "node tools/safe-svg-check.js --strict",
    "gate:schema": "node tools/schema-check.js --strict",
    "gate:alt": "node tools/alt-check.js --strict",
    "gate:manifest": "node tools/manifest-check.js --strict",
    "gate:a11y": "node tools/a11y-check.js --strict",
    "gate:bcp14": "node tools/bcp14-check.js --strict",
    "gate:vocab": "node tools/vocab-check.js --strict",
    "gate:actor": "node tools/actor-check.js --strict",
    "gate:harness": "node tools/harness-check.js --strict",
    "gates:list": "node -e \"const s=require(process.cwd()+'/package.json').scripts||{};const g=Object.keys(s).filter(k=>k.startsWith('gate:'));if(!g.length){console.error('gates:list — no gate:* scripts found');process.exit(2);}if(process.env.GATES_JSON)console.log(JSON.stringify(g));else g.forEach(k=>console.log(k+'  ->  '+s[k]));\"",
    "test": "node -e \"const s=require(process.cwd()+'/package.json').scripts||{};const sp=require('child_process').spawnSync;const g=Object.keys(s).filter(k=>k.startsWith('gate:'));if(!g.length){console.error('npm test — no gate:* scripts found; refusing to report success');process.exit(2);}const bad=[];g.forEach(k=>{const a=s[k].split(' ');const bin=a[0]==='node'?process.execPath:a[0];console.log('');console.log('=== GATE '+k+'  ['+s[k]+'] ===');const r=sp(bin,a.slice(1),{stdio:'inherit'});if(r.error)console.error('    spawn error: '+r.error.message);const c=(r.status===null||r.status===undefined)?1:r.status;console.log('--- '+k+': '+(c===0?'PASS':'FAIL (exit '+c+')')+' ---');if(c!==0)bad.push(k+'  ['+s[k]+']  exit '+c);});console.log('');console.log('=== GATE SUMMARY: '+(g.length-bad.length)+'/'+g.length+' passed ===');if(bad.length){console.log('FAILED GATES:');bad.forEach(b=>console.log('  '+b));process.exit(1);}console.log('ALL GATES GREEN');\"",
    "gate:reference": "node tools/reference-gate.js"
  },
  "main": "dist/figdown.js",
  "module": "dist/figdown.mjs",
  "exports": {
    ".": {
      "import": "./dist/figdown.mjs",
      "require": "./dist/figdown.js"
    }
  },
  "bin": {
    "figdown-svg": "skill/figdown/build-svg.js",
    "figdown-mcp": "integrations/mcp-server/server.js"
  },
  "files": [
    ".claude-plugin/plugin.json",
    "dist/figdown.js",
    "dist/figdown.mjs",
    "integrations/mcp-server/server.js",
    "integrations/mcp-server/README.md",
    "skill/figdown/SKILL.md",
    "skill/figdown/reference/",
    "skill/figdown/figdown.html",
    "skill/figdown/build-svg.js",
    "guide/showcase.md",
    "guide/expressing.md",
    "guide/layout.md",
    "examples/evpn-fabric.svg",
    "examples/showcase/*.svg"
  ],
  "engines": {
    "node": ">=18"
  }
}
