{"_id":"@anies1212/specsentinel","_rev":"2-1e7ba906d8ecb47a8c8d1dda35459dd4","name":"@anies1212/specsentinel","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@anies1212/specsentinel","version":"0.1.0","_id":"@anies1212/specsentinel@0.1.0","maintainers":[{"name":"anies1212","email":"arakakiseina1212@gmail.com"}],"bin":{"specsentinel":"dist/cli.js"},"dist":{"shasum":"73f4e3460508aaf681b62da72fd540749a1ec6a3","tarball":"https://registry.npmjs.org/@anies1212/specsentinel/-/specsentinel-0.1.0.tgz","fileCount":16,"integrity":"sha512-xizeNFm1yjbltGQ8FQ8GIgfNIhc3RWkJKE8AMjaKxaE+T5Df1ru9sXf6sGsX8Z7ibv2O6PjdG22Oz1gLEpA+mg==","signatures":[{"sig":"MEYCIQDgVOH+KkAXDeIk7ZkL3xOj2yWoyrwFxzwGpqeIwymdYgIhANgwPh9Ob5UmFDO/kiqGRxHJCMscb8agpkY/cFh8NpI+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26168},"main":"dist/index.js","type":"commonjs","gitHead":"53c64898c86d30322015f9449d43acb5a77cd6e0","scripts":{"build":"tsc -p tsconfig.json","start":"node dist/cli.js"},"_npmUser":{"name":"anies1212","email":"arakakiseina1212@gmail.com"},"_npmVersion":"10.8.2","description":"CLI to compare Flutter widget specs with Figma design","directories":{},"_nodeVersion":"20.19.5","dependencies":{"minimist":"^1.2.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0","@types/minimist":"^1.2.5"},"_npmOperationalInternal":{"tmp":"tmp/specsentinel_0.1.0_1764685177860_0.28059089798404435","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anies1212/specsentinel","version":"0.1.1","description":"CLI to compare Flutter widget specs with Figma design","bin":{"specsentinel":"dist/cli.js"},"main":"dist/index.js","publishConfig":{"access":"public"},"type":"commonjs","scripts":{"build":"tsc -p tsconfig.json","start":"node dist/cli.js"},"dependencies":{"minimist":"^1.2.8"},"devDependencies":{"typescript":"^5.3.3","@types/node":"^20.11.0","@types/minimist":"^1.2.5"},"_id":"@anies1212/specsentinel@0.1.1","gitHead":"05dd136c84fb3cc44f3bd08e4e0cc5d3b958926c","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ePa1p+B0j+MRD9i68OHjEN0mBbB5daMkAc1wduTphWUU096Gtdzkjquti2gnbNNz3WXsCMYakdiJa8Ho4Qjt0w==","shasum":"b66fb9e41f9eb3d96d5614108f80d691dbc9d9c1","tarball":"https://registry.npmjs.org/@anies1212/specsentinel/-/specsentinel-0.1.1.tgz","fileCount":17,"unpackedSize":27017,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+mwbCk5kqWNbJMKKzIAY67Hi+9aL/dm3HGbdT9SrhEgIhAIPFL/RvFVyhmjXcGXwzBmBAZa4r0ykhMbHpoZSN4xPg"}]},"_npmUser":{"name":"anies1212","email":"arakakiseina1212@gmail.com"},"directories":{},"maintainers":[{"name":"anies1212","email":"arakakiseina1212@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/specsentinel_0.1.1_1764685620905_0.6562592227580637"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T14:19:37.781Z","modified":"2025-12-02T14:27:01.298Z","0.1.0":"2025-12-02T14:19:38.043Z","0.1.1":"2025-12-02T14:27:01.097Z"},"description":"CLI to compare Flutter widget specs with Figma design","maintainers":[{"name":"anies1212","email":"arakakiseina1212@gmail.com"}],"readme":"# @anies1212/specsentinel\n\nSpecSentinel compares Flutter UI specs (static Dart source parsing) with Figma design specs. This package provides the CLI.\n\n## Install\n```\nnpm install -g @anies1212/specsentinel\n```\nor use without global install:\n```\nnpx @anies1212/specsentinel check ...\n```\n\n## Usage\n```\nFIGMA_TOKEN=xxxxx npx @anies1212/specsentinel check \\\n  --screen LoginPage \\\n  --figma-file <FILE_KEY> \\\n  --figma-node <NODE_ID> \\\n  --mode static \\\n  --output-dir build/specsentinel \\\n  --cwd <project-root>\n```\n- Static only: parses `lib/**/<screen>.dart` for literal Text/Padding/SizedBox values and writes `<output-dir>/<screen>.json`.\n- Fetches Figma via `/v1/files/{fileKey}/nodes?ids={nodeId}` and compares; writes `<output-dir>/<screen>.diff.json` on mismatch.\n\n## Required env\n- `FIGMA_TOKEN`: Figma Personal Access Token.\n\n## License\nMIT\n","readmeFilename":"README.md"}