{"_id":"@brunobrise/xfeat","_rev":"9-dc7b6c04358ecde25081ba3283fd12b0","name":"@brunobrise/xfeat","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"@brunobrise/xfeat","version":"1.0.0","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.0.0","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"2dd582be225ca33464b7c01e863a020906483b36","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.0.0.tgz","fileCount":18,"integrity":"sha512-Y3O8tYBNQHnU6QzJira85niem6YDsr/W4LWs4eHhl8mg0hOe3DCw0mEhFvWNzUYzZvZJu3YJvfGen/ngdxAVkw==","signatures":[{"sig":"MEUCIQDqLp8AOG+5qBwCwjwQtnuZVynzvQisxqd+2+Nbrd8yEQIgTk41cOIwu4Cx49mgXeYm8ANms2jWCFkS92EmyfQaB/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375547},"main":"index.js","type":"commonjs","gitHead":"1eb8d5ec7cac9a3f36508ab5867bd56f2ca898b1","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.6.2","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Node.js](https://img.shields.io/badge/Node.js-18.x-green.svg)](https://nodejs.org/)","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"24.11.1","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.0.0_1772314355179_0.5103293831487563","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@brunobrise/xfeat","version":"1.0.4","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.0.4","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"1c4d9e3cd554f0ccbabee272822a312dae84d540","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.0.4.tgz","fileCount":18,"integrity":"sha512-9yGs64osqnmgPPc5LxvCsq35/C3n25N+24DOIAKCCzHWXaYBW/8nizwaKXZgBwb9VGHVwnVA4GIAgUXXYm25fA==","signatures":[{"sig":"MEYCIQCRKlXecHZtbvjGDVwKc4i1nPN7txNoER5+n56bIcCUEAIhAP6dqE69faXsP4JUzqo71vzC5JfQh01KPgO98KJ9VxoP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375582},"main":"index.js","type":"commonjs","gitHead":"1eb8d5ec7cac9a3f36508ab5867bd56f2ca898b1","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.6.2","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Node.js](https://img.shields.io/badge/Node.js-18.x-green.svg)](https://nodejs.org/)","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"24.11.1","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.0.4_1772314634599_0.031999904802773704","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@brunobrise/xfeat","version":"1.0.5","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.0.5","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"45b8dbd53c4f8883dd004f6afa98b26788d265e9","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.0.5.tgz","fileCount":17,"integrity":"sha512-yLNXdlFIJzA8yIYCwQVZ5m25nVISYrT+85kitH65ErWWzp3A8qwRb0NiBDLSZOaGa9mb7U06RKvEdo9ih5J4+w==","signatures":[{"sig":"MEYCIQDdglvzPQJ8DjeVNzh8e1CKMLl6lDPQOgGePspmKuDjiwIhAPcelKNtq1cPox6aq0twZpjK9KwUAd+KakphD9DcpEk+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":374043},"main":"index.js","type":"commonjs","gitHead":"71807e957c42938710db8b4ed7d0ed5a16ab9043","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.11.0","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Node.js](https://img.shields.io/badge/Node.js-18.x-green.svg)](https://nodejs.org/)","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"22.22.0","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.0.5_1772314723362_0.9040802920408142","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@brunobrise/xfeat","version":"1.1.0","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.1.0","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"a1724bd8778b63a1d60b41e25bc12f885af2f2d6","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.1.0.tgz","fileCount":17,"integrity":"sha512-6JvR/fVtd6V0YZGwxRHsC39bD3N/zypEg/ygJqDnpV20O8KmViQU7h8pZ67+8JrxeA6vbmASJirKvfTjP8QwfQ==","signatures":[{"sig":"MEUCIQD1iGyj7FXzEIMiWhvAsRAcwhrpLd05XZ8GNyYnHbfgIwIgL2lSW8E64eYyzvAOhlwhvcBBKxBZXzi2G9UfcxsPnJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376498},"main":"index.js","type":"commonjs","gitHead":"fb000f8782aca9d9bd1c222da8896d5898ddd226","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.11.0","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Node.js](https://img.shields.io/badge/Node.js-18.x-green.svg)](https://nodejs.org/)","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"22.22.0","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","listr2":"^6.6.1","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.1.0_1772315480980_0.37850555965509924","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@brunobrise/xfeat","version":"1.1.1","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.1.1","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"f5448ff036f2257a7300bab3ed7c5b14ce71a8d3","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.1.1.tgz","fileCount":17,"integrity":"sha512-rba6cCQtABQCR/5y7WswTUXnrRB2jH1754UhJafo2bkYKvE3oWBv5t3edMWzHivs68QgeiH118KBk2/YwWWgnQ==","signatures":[{"sig":"MEUCIDydGs3Cm97WhIi6lLNkCASdWbmQjLsWrPb62gsF6D4LAiEA2ynNs+kwYpVsCWQ+NPCanTAEIAvxKGKGosIgt2r/reQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":376414},"main":"index.js","type":"commonjs","gitHead":"0c0e3517801c6c611abbcc2279e2043f32e644a5","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.11.0","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Node.js](https://img.shields.io/badge/Node.js-18.x-green.svg)](https://nodejs.org/)","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"22.22.0","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","listr2":"^6.6.1","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.1.1_1772315876447_0.4304039462205078","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@brunobrise/xfeat","version":"1.2.0","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.2.0","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"db6a087645c3b20c7d8425ce78b845ad0914d433","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.2.0.tgz","fileCount":17,"integrity":"sha512-ovF1BRTq1EPS0SoZ0XkRaLgfYiaCPtPzXFOfMJrf1Uged0SgKrGR1X7bx2CQ8pLGW6/kX9K8es+xU290yBBQBA==","signatures":[{"sig":"MEQCIArZsirTuIrTb5MgxWeE4EOGjQvyfzEwEjljPrETZagBAiBGt3HzaU3x0NZONMNS8HoKbUS6djbq2s7NFODQgyuvHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":382311},"main":"index.js","type":"commonjs","gitHead":"1d1941b49d19aedd189b85200c9df7f4b48d6648","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.11.0","description":"Automated AI-driven CLI for codebase analysis and feature extraction.","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"22.22.0","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","listr2":"^6.6.1","enquirer":"^2.4.1","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.2.0_1772327483123_0.7296392045220588","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@brunobrise/xfeat","version":"1.3.0","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.3.0","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"b6ee7801290aad7f58c37e01281417080bb9b263","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.3.0.tgz","fileCount":17,"integrity":"sha512-yn0DWbFu2Gqol4A1mKXdn8vAi8fZzy3e/RimjH6uj/CfNYuWfZ2dSRyPb7Eh2jcxM1MVIXDfrISlooeP1TLb3A==","signatures":[{"sig":"MEQCIC0eNOC8b8rDG10to2FXj/6Wu9UvBrSXt3py4IWsyEl5AiAYpM+w5xZ1K3fH9nfDJsj/aeeRBmE04OAGjUW4rUTDWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":382538},"main":"index.js","type":"commonjs","gitHead":"42f13caff18bd65e8a8091c30ae719e8d85662c8","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.11.0","description":"Automated AI-driven CLI for codebase analysis and feature extraction.","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"22.22.0","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","listr2":"^6.6.1","enquirer":"^2.4.1","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.3.0_1772327554442_0.11477326923990061","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@brunobrise/xfeat","version":"1.4.0","keywords":[],"author":"","license":"MIT","_id":"@brunobrise/xfeat@1.4.0","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"bin":{"xfeat":"index.js"},"dist":{"shasum":"3e49e6b5ed05a9bcd4bdacf865b0b0e1815c5200","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.4.0.tgz","fileCount":17,"integrity":"sha512-1cI7sf+/Dg1N3nuuM1iehyx0x9vLi10u4/RxUj2YziCvZA0gWEFKhR5TDM2FnEMLqAxthOAXb3PxFPoIgPTYrg==","signatures":[{"sig":"MEUCID1ObyAX0L+w5t/G+KAJS/KOCQ7+E8MMfct+Nrao2vqeAiEAz9Z6a122/phsV3VX8QtD8bO2qhq4dWOD6ztaaFvm/HY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384156},"main":"index.js","type":"commonjs","gitHead":"32edf25cf77f444b7c71f4722ac63b37ab1dfe72","scripts":{"dev":"nodemon index.js","lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"echo 'No build step required for this Node.js script'","start":"node index.js","format":"prettier --write .","prepare":"husky","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build"},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"_npmVersion":"11.11.0","description":"Automated AI-driven CLI for codebase analysis and feature extraction.","directories":{},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_nodeVersion":"22.22.0","dependencies":{"dotenv":"^17.3.1","ignore":"^7.0.5","listr2":"^6.6.1","enquirer":"^2.4.1","fast-glob":"^3.3.3","map-stream":"^0.0.7","tree-sitter-go":"^0.25.0","tree-sitter-css":"^0.25.0","tree-sitter-sql":"^0.1.0","web-tree-sitter":"^0.26.6","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-json":"^0.24.8","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-yaml":"^0.5.0","@anthropic-ai/sdk":"^0.78.0","tree-sitter-python":"^0.25.0","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^8.57.1","nodemon":"^3.1.14","prettier":"^3.8.1","lint-staged":"^16.3.0","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/xfeat_1.4.0_1772334927369_0.06470589630912782","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@brunobrise/xfeat","version":"1.5.0","description":"Automated AI-driven CLI for codebase analysis and feature extraction.","publishConfig":{"access":"public"},"main":"index.js","bin":{"xfeat":"index.js"},"scripts":{"test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node index.js","dev":"nodemon index.js","lint":"eslint .","format":"prettier --write .","pre-commit":"npx lint-staged && npm test && npm audit --audit-level=critical && npm run build","build":"echo 'No build step required for this Node.js script'","prepare":"husky"},"lint-staged":{"*.{js,jsx}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"keywords":[],"author":"","license":"MIT","type":"commonjs","dependencies":{"@anthropic-ai/sdk":"^0.78.0","dotenv":"^17.3.1","enquirer":"^2.4.1","fast-glob":"^3.3.3","ignore":"^7.0.5","listr2":"^6.6.1","map-stream":"^0.0.7","tree-sitter-bash":"^0.25.1","tree-sitter-css":"^0.25.0","tree-sitter-go":"^0.25.0","tree-sitter-html":"^0.23.2","tree-sitter-java":"^0.23.5","tree-sitter-javascript":"^0.25.0","tree-sitter-json":"^0.24.8","tree-sitter-php":"^0.24.2","tree-sitter-python":"^0.25.0","tree-sitter-rust":"^0.24.0","tree-sitter-sql":"^0.1.0","tree-sitter-toml":"^0.5.1","tree-sitter-typescript":"^0.23.2","tree-sitter-yaml":"^0.5.0","web-tree-sitter":"^0.26.6"},"devDependencies":{"@semantic-release/git":"^10.0.1","eslint":"^8.57.1","husky":"^9.1.7","jest":"^30.2.0","lint-staged":"^16.3.0","nodemon":"^3.1.14","prettier":"^3.8.1","semantic-release":"^25.0.3"},"gitHead":"ff05c5332bb8e05e03d69ad071a57ca19d20620b","_id":"@brunobrise/xfeat@1.5.0","_nodeVersion":"22.22.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-uBoxWOn4QZMNNigB000u76IOnf6E1n+/U80N37dO1FWJrT4YQ8tYptuC4AaVRYrTH+IJMS9+yepaVrAjNbprDw==","shasum":"a03383d25e1a9a51cc4e48bd92ea0c59525320d0","tarball":"https://registry.npmjs.org/@brunobrise/xfeat/-/xfeat-1.5.0.tgz","fileCount":17,"unpackedSize":388262,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGYuJMC4RcUoI2gbKfTSoPau6oLpitqgF6O18wBlDQRHAiAhTU8jAU8kjJ0ZDqFb+yS18MS7rqAuoPBRIxyPqQTmMw=="}]},"_npmUser":{"name":"brunobrise","email":"brise.bruno@gmail.com"},"directories":{},"maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/xfeat_1.5.0_1772335855225_0.19392115653871422"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-28T21:32:35.084Z","modified":"2026-03-01T03:30:55.482Z","1.0.0":"2026-02-28T21:32:35.318Z","1.0.4":"2026-02-28T21:37:14.744Z","1.0.5":"2026-02-28T21:38:43.519Z","1.1.0":"2026-02-28T21:51:21.117Z","1.1.1":"2026-02-28T21:57:56.606Z","1.2.0":"2026-03-01T01:11:23.321Z","1.3.0":"2026-03-01T01:12:34.581Z","1.4.0":"2026-03-01T03:15:27.522Z","1.5.0":"2026-03-01T03:30:55.370Z"},"license":"MIT","keywords":[],"description":"Automated AI-driven CLI for codebase analysis and feature extraction.","maintainers":[{"name":"brunobrise","email":"brise.bruno@gmail.com"}],"readme":"# @brunobrise/xfeat\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Node.js](https://img.shields.io/badge/Node.js-18.x-green.svg)](https://nodejs.org/)\n\n**@brunobrise/xfeat** is an automated, AI-driven CLI engine that deeply analyzes your codebase to extract product-level features, component architectures, and global system scopes. By combining precise AST-based structural parsing (via `web-tree-sitter`) with the reasoning capabilities of Anthropic's Claude Sonnet 4.6, this tool auto-generates comprehensive, human-readable documentation of what your code _actually_ does.\n\n## Key Features\n\n- **AST-Powered Parsing:** Fast and accurate structural footprint generation (classes, functions, exports, imports) for modern ecosystem languages.\n- **Agentic Source Code Reading:** Rather than guessing based off function identifiers, the AI utilizes a specialized `view_file` tool to selectively dive into the raw source code wherever AST context is insufficient.\n- **Automated Mermaid Diagrams:** Visually maps out how files interact at macro and global architecture levels.\n- **Structured Markdown Deliverables:** Produces a neat, hierarchical `FEATURES.md` report encompassing everything from the executive summary to granular file logic.\n- **Smart Directory Traversal:** Adheres to your local `.gitignore` and optional custom `.xfeatignore` rules to avoid processing build artifacts and generic dependencies.\n\n## How It Works\n\nThe engine executes in an expanding 4-stage pipeline:\n\n0. **AI Pre-filtering (Stage 0):**\n   - Interactively requests permission to AI-filter the target files.\n   - Cleans the file list by intelligently removing trivial boilerplate, config files, and UI assets dynamically, saving time and tokens.\n\n1. **Micro Analysis (File-Level):**\n   - Identifies granular structural signatures across source files.\n   - Leverages an LLM sub-agent loop to request file contents as needed.\n   - Outputs 1-2 sentence overviews alongside high-level feature bullet points for each file.\n\n2. **Macro Analysis (Component-Level):**\n   - Groups files logically by their enclosing directory.\n   - Synthesizes isolated file summaries into a curated **Component Summary**.\n   - Generates localized [Mermaid.js](https://mermaid.js.org/) flow/architecture diagrams per directory.\n\n3. **Global Analysis (System-Level):**\n   - Ties localized component summaries together into a master architecture overview.\n   - Documents the core pillars and overarching domain of the application.\n   - Renders a highly-abstracted global Mermaid architecture diagram representing the entire system interaction.\n\n## Installation\n\nYou can run `@brunobrise/xfeat` directly via `npx` without installing it globally:\n\n```bash\nnpx @brunobrise/xfeat\n```\n\n## Configuration\n\nCreate a `.env` file at the root of the project to define your API authorization:\n\n```env\n# Required: Your Anthropic API Key\nANTHROPIC_API_KEY=\"sk-ant-...\"\n\n# Optional Environment Overrides\nANTHROPIC_AUTH_TOKEN=\"\"\nANTHROPIC_BASE_URL=\"\"\nCLAUDE_CODE_SUBAGENT_MODEL=\"claude-sonnet-4-6\"\n```\n\n## Usage\n\nYou can scan the immediate working directory, or pass a relative/absolute path to dynamically scan another repository on your machine.\n\n### Scan Current Directory\n\n```bash\nnpx @brunobrise/xfeat\n```\n\n### Scan Remote Directory Path\n\n```bash\nnpx @brunobrise/xfeat /path/to/your/custom/project\n```\n\n### Development Tooling\n\nFor developers contributing to this tool, standard npm scripts are available:\n\n- `npm run dev` — Hot-reloads the analysis script using Nodemon.\n- `npm run lint` — Analyzes the source using ESLint against best practices.\n- `npm run format` — Standardizes code styling uniformly with Prettier.\n\n## Expected Output\n\nThe script concludes by generating a structured `FEATURES.md` record at your execution root. Inside, you can expect:\n\n1. **Global Architecture Overview** _(Executive Summary, Application Pillars, Main System Diagram)_\n2. **Component Breakdown** _(Directory-by-Directory Insights, Narrow Context Diagrams)_\n3. **File-Level Details** _(Deeply granular feature lists)_\n\n## Supported Languages\n\nThe foundational Tree-sitter AST parser natively understands:\n\n- JavaScript (`.js`, `.jsx`)\n- TypeScript (`.ts`, `.tsx`)\n- Python (`.py`)\n- Rust (`.rs`)\n- Go (`.go`)\n- Java (`.java`)\n- PHP (`.php`)\n\n## License\n\nThis tooling is open-sourced under the **MIT** License.\n\n---\n\n_Built organically with the [Anthropic SDK](https://github.com/anthropics/anthropic-sdk-typescript) and [Tree-sitter](https://tree-sitter.github.io/tree-sitter/)._\n","readmeFilename":"README.md"}