{"_id":"@aaaaorg/docdecay","name":"@aaaaorg/docdecay","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@aaaaorg/docdecay","version":"0.1.0","description":"Scan your docs for freshness, broken links, and staleness","type":"module","bin":{"docdecay":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/cli.js"},"keywords":["docs","documentation","freshness","stale","broken-links","cli","markdown"],"author":{"name":"kostadin","email":"kostadin@aaaaorg"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aaaaorg/docdecay.git"},"engines":{"node":">=18"},"dependencies":{"chalk":"^5.3.0","cli-table3":"^0.6.5","commander":"^12.1.0","fast-glob":"^3.3.2","simple-git":"^3.27.0"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.7.0"},"_id":"@aaaaorg/docdecay@0.1.0","bugs":{"url":"https://github.com/aaaaorg/docdecay/issues"},"homepage":"https://github.com/aaaaorg/docdecay#readme","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-yWOoCDXTf9XSnLI/I60bdlgSvRkx8JVJ2E9/1maMVoehORopUlBAftweHFpMS/OcMPkjAecT7cndCaJ5qymW0Q==","shasum":"a02042652d7a0f66785a9ce47280dcee4f468935","tarball":"https://registry.npmjs.org/@aaaaorg/docdecay/-/docdecay-0.1.0.tgz","fileCount":9,"unpackedSize":12598,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAsEmX/t9l4hEILF0OIgJff2W8SUcDwGDIoT46uq0jSOAiEAltx1n7X2MPWOHCQ9szTxrZs7iHSxd7lTJdUCeWLw84w="}]},"_npmUser":{"name":"koc","email":"kosekdraw@gmail.com"},"directories":{},"maintainers":[{"name":"koc","email":"kosekdraw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/docdecay_0.1.0_1771293750352_0.7660584473901757"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-17T02:02:30.248Z","0.1.0":"2026-02-17T02:02:30.508Z","modified":"2026-02-17T02:02:30.822Z"},"maintainers":[{"name":"koc","email":"kosekdraw@gmail.com"}],"description":"Scan your docs for freshness, broken links, and staleness","homepage":"https://github.com/aaaaorg/docdecay#readme","keywords":["docs","documentation","freshness","stale","broken-links","cli","markdown"],"repository":{"type":"git","url":"git+https://github.com/aaaaorg/docdecay.git"},"author":{"name":"kostadin","email":"kostadin@aaaaorg"},"bugs":{"url":"https://github.com/aaaaorg/docdecay/issues"},"license":"MIT","readme":"# docdecay\n\nScan your docs for freshness, broken links, and staleness. Get a quick health report of your documentation.\n\n## Install\n\n```bash\nnpm install -g @aaaaorg/docdecay\n```\n\n## Usage\n\n```bash\n# Scan current directory\ndocdecay\n\n# Scan specific directory\ndocdecay ./docs\n\n# JSON output (great for CI)\ndocdecay --json\n\n# Skip link checking (faster)\ndocdecay --no-links\n\n# Custom threshold (default: 50)\ndocdecay --threshold 70\n\n# Ignore files\ndocdecay --ignore \"**/archive/**\"\n\n# Custom max age (default: 365 days)\ndocdecay --max-age 180\n```\n\n## What it does\n\n- **Freshness scoring** — Each `.md` file gets a 0-100 score based on when it was last modified (via git history, falling back to file mtime)\n- **Broken link detection** — Finds broken internal links (relative paths) and optionally checks external URLs\n- **Word count & reading time** — Know how long each doc takes to read\n- **CI-friendly** — Exits with code 1 if stale files or broken links are found. Use `--json` for machine-readable output.\n\n## Example output\n\n```\n📄 Documentation Freshness Report\n\n┌──────────────────┬───────┬──────────┬───────┬───────────┐\n│ File             │ Score │ Days Old │ Words │ Read Time │\n├──────────────────┼───────┼──────────┼───────┼───────────┤\n│ getting-started  │ 95    │ 18       │ 1200  │ 6 min     │\n├──────────────────┼───────┼──────────┼───────┼───────────┤\n│ api-reference    │ 42    │ 211      │ 3400  │ 17 min    │\n└──────────────────┴───────┴──────────┴───────┴───────────┘\n\nSummary: 2 files scanned, 1 stale (< 50)\n\n🔗 All links OK\n```\n\n## Options\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `-t, --threshold <n>` | 50 | Minimum freshness score |\n| `--json` | false | Output JSON |\n| `--no-links` | false | Skip link checking |\n| `--ignore <glob>` | — | Ignore files matching glob |\n| `--max-age <days>` | 365 | Days after which score = 0 |\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-51a7ec9cd61f80f36db99a7e8a89cbf7"}