{"_id":"@bobby_z/phspec","_rev":"6-e24b06a656416abdee79f2430a9bb7ca","name":"@bobby_z/phspec","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"@bobby_z/phspec","version":"0.0.1","keywords":["phspec","specs","cli","ai","development"],"author":{"name":"zhangluka"},"license":"MIT","_id":"@bobby_z/phspec@0.0.1","maintainers":[{"name":"bobby_z","email":"zhangluuka@gmail.com"}],"homepage":"https://github.com/zhangluka/OpenSpec","bugs":{"url":"https://github.com/zhangluka/OpenSpec/issues"},"bin":{"phspec":"bin/phspec.js"},"dist":{"shasum":"a92778f1ebc0465d9c6f5434a7a6809560007617","tarball":"https://registry.npmjs.org/@bobby_z/phspec/-/phspec-0.0.1.tgz","fileCount":234,"integrity":"sha512-1AR0zWwoW8EGQRiva2gzH/OVZ37VEBZstxZJSFtf1wyJQ58c7S66Wg+e2mK4D61NRlUrngoyJ5NV3G5/GA0vSQ==","signatures":[{"sig":"MEUCIQDg3ijTeNcL97srp3gCAaXMf7jk4ljqrFZVcpIzzZuSsgIgc0LFkdFlSZeLozSkk0HVLjdDUULyP9k3Um78PnR/eA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":792007},"type":"module","_from":"file:bobby_z-phspec-0.0.1.tgz","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"node build.js","dev:cli":"pnpm build && node bin/phspec.js","release":"pnpm run release:ci","test:ui":"vitest --ui","changeset":"changeset","release:ci":"pnpm run check:pack-version && pnpm exec changeset publish","test:watch":"vitest","postinstall":"node scripts/postinstall.js","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"bobby_z","email":"zhangluuka@gmail.com"},"_resolved":"/private/var/folders/9k/59k0m48s4b97zyr7nhr6565w0000gn/T/b83889e1a71a93015e0a68464f0032f7/bobby_z-phspec-0.0.1.tgz","_integrity":"sha512-1AR0zWwoW8EGQRiva2gzH/OVZ37VEBZstxZJSFtf1wyJQ58c7S66Wg+e2mK4D61NRlUrngoyJ5NV3G5/GA0vSQ==","repository":{"url":"git+https://github.com/zhangluka/OpenSpec.git","type":"git"},"_npmVersion":"10.8.2","description":"AI-native system for spec-driven development","directories":{},"_nodeVersion":"22.8.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","yaml":"^2.8.2","chalk":"^5.5.0","commander":"^14.0.0","fast-glob":"^3.3.3","posthog-node":"^5.20.0","@inquirer/core":"^10.2.2","@inquirer/prompts":"^7.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.2.0","@changesets/cli":"^2.27.7","typescript-eslint":"^8.50.1","@changesets/changelog-github":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/phspec_0.0.1_1772004005259_0.4484932097357479","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@bobby_z/phspec","version":"0.0.2","keywords":["phspec","specs","cli","ai","development"],"author":{"name":"zhangluka"},"license":"MIT","_id":"@bobby_z/phspec@0.0.2","maintainers":[{"name":"bobby_z","email":"zhangluuka@gmail.com"}],"homepage":"https://github.com/zhangluka/OpenSpec","bugs":{"url":"https://github.com/zhangluka/OpenSpec/issues"},"bin":{"phspec":"bin/phspec.js"},"dist":{"shasum":"2624859d9a9cb9061eb662325b3d5212a3454cfe","tarball":"https://registry.npmjs.org/@bobby_z/phspec/-/phspec-0.0.2.tgz","fileCount":234,"integrity":"sha512-vRpvCpYDFacT045MBZKVtdoSPAWcAApS0j/1yp7pAw0DIYWPAChPw+Vwi1Wn4lYSa4JjdFDFOr8Yh6Qb/3KRbg==","signatures":[{"sig":"MEUCID+MMfR+dbkN39kPBDAQckcj+nYkqlEaHk8LxXRjqgFUAiEAlo1N+dkg5vJUKQDoBuSVCt/DoWgyDY5Jb9n82fIfVTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":772224},"type":"module","_from":"file:bobby_z-phspec-0.0.2.tgz","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"node build.js","dev:cli":"pnpm build && node bin/phspec.js","release":"pnpm run release:ci","test:ui":"vitest --ui","changeset":"changeset","release:ci":"pnpm run check:pack-version && pnpm exec changeset publish","test:watch":"vitest","postinstall":"node scripts/postinstall.js","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"bobby_z","email":"zhangluuka@gmail.com"},"_resolved":"/private/var/folders/9k/59k0m48s4b97zyr7nhr6565w0000gn/T/1e860469a7d6cdc077d9e2dd7a738133/bobby_z-phspec-0.0.2.tgz","_integrity":"sha512-vRpvCpYDFacT045MBZKVtdoSPAWcAApS0j/1yp7pAw0DIYWPAChPw+Vwi1Wn4lYSa4JjdFDFOr8Yh6Qb/3KRbg==","repository":{"url":"git+https://github.com/zhangluka/OpenSpec.git","type":"git"},"_npmVersion":"10.8.2","description":"AI-native system for spec-driven development","directories":{},"_nodeVersion":"22.8.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","yaml":"^2.8.2","chalk":"^5.5.0","commander":"^14.0.0","fast-glob":"^3.3.3","posthog-node":"^5.20.0","@inquirer/core":"^10.2.2","@inquirer/prompts":"^7.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.2.0","@changesets/cli":"^2.27.7","typescript-eslint":"^8.50.1","@changesets/changelog-github":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/phspec_0.0.2_1772074479437_0.973669228250154","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@bobby_z/phspec","version":"0.0.3","keywords":["phspec","specs","cli","ai","development"],"author":{"name":"zhangluka"},"license":"MIT","_id":"@bobby_z/phspec@0.0.3","maintainers":[{"name":"bobby_z","email":"zhangluuka@gmail.com"}],"homepage":"https://github.com/zhangluka/OpenSpec","bugs":{"url":"https://github.com/zhangluka/OpenSpec/issues"},"bin":{"phspec":"bin/phspec.js"},"dist":{"shasum":"bc9a0fcca2f8d2e23234c1e9e44bd735007ab126","tarball":"https://registry.npmjs.org/@bobby_z/phspec/-/phspec-0.0.3.tgz","fileCount":239,"integrity":"sha512-YC0AoDQDUlqgDddmSyhGMKZWyD0YcTnpg3BR7g2AsIfplFqXlWYa363K8TMEvvXt7C0OpeKQrVnGD7yEoOFhDA==","signatures":[{"sig":"MEUCIQD6bgaMvYb9tI5ZjdJJUhc+71eeNQJRjxdpaIqAP3bcxwIgHYAUpAyVzQj4tV8mHEGQcTYuBROhkJ0Jn/NWPFgNVgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":800873},"type":"module","_from":"file:bobby_z-phspec-0.0.3.tgz","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"node build.js","dev:cli":"pnpm build && node bin/phspec.js","release":"pnpm run release:ci","test:ui":"vitest --ui","changeset":"changeset","release:ci":"pnpm run check:pack-version && pnpm exec changeset publish","test:watch":"vitest","postinstall":"node scripts/postinstall.js","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"bobby_z","email":"zhangluuka@gmail.com"},"_resolved":"/private/var/folders/9k/59k0m48s4b97zyr7nhr6565w0000gn/T/0f10734f13ded4528a40eabf8bfebbc7/bobby_z-phspec-0.0.3.tgz","_integrity":"sha512-YC0AoDQDUlqgDddmSyhGMKZWyD0YcTnpg3BR7g2AsIfplFqXlWYa363K8TMEvvXt7C0OpeKQrVnGD7yEoOFhDA==","repository":{"url":"git+https://github.com/zhangluka/OpenSpec.git","type":"git"},"_npmVersion":"10.9.0","description":"OpenSpec-based system with internalization support and internal Agent tools for spec-driven development","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","yaml":"^2.8.2","chalk":"^5.5.0","commander":"^14.0.0","fast-glob":"^3.3.3","posthog-node":"^5.20.0","@inquirer/core":"^10.2.2","@inquirer/prompts":"^7.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.2.0","@changesets/cli":"^2.27.7","typescript-eslint":"^8.50.1","@changesets/changelog-github":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/phspec_0.0.3_1773314952688_0.4380858774215042","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@bobby_z/phspec","version":"0.0.4","keywords":["phspec","specs","cli","ai","development"],"author":{"name":"zhangluka"},"license":"MIT","_id":"@bobby_z/phspec@0.0.4","maintainers":[{"name":"bobby_z","email":"zhangluuka@gmail.com"}],"homepage":"https://github.com/zhangluka/OpenSpec","bugs":{"url":"https://github.com/zhangluka/OpenSpec/issues"},"bin":{"phspec":"bin/phspec.js"},"dist":{"shasum":"0f6dd2ce5988167f90791e539d46b78dd94f89ad","tarball":"https://registry.npmjs.org/@bobby_z/phspec/-/phspec-0.0.4.tgz","fileCount":239,"integrity":"sha512-KuZpwWwjVnSN7jsOSAqx2XRWg2Tqv1bFtVXJ/HLlYZgmYZfyoOeL88WTzG7dX3NmIIYFUgRYWEwW/kwu6vYQ+Q==","signatures":[{"sig":"MEUCIQCxl3+NYoyOYS9y22EAtgEP1Bsqifu5aBJRlBcIIbfBeAIgWdFHkCY4vim4lCyz8KqUTuA/ORF+T3LvPPBfJmZCm60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":800873},"type":"module","_from":"file:bobby_z-phspec-0.0.4.tgz","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"node build.js","dev:cli":"pnpm build && node bin/phspec.js","release":"pnpm run release:ci","test:ui":"vitest --ui","changeset":"changeset","release:ci":"pnpm run check:pack-version && pnpm exec changeset publish","test:watch":"vitest","postinstall":"node scripts/postinstall.js","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"bobby_z","email":"zhangluuka@gmail.com"},"_resolved":"/private/var/folders/9k/59k0m48s4b97zyr7nhr6565w0000gn/T/5bf8ad9238059bdd63cbbf40e68a2cc2/bobby_z-phspec-0.0.4.tgz","_integrity":"sha512-KuZpwWwjVnSN7jsOSAqx2XRWg2Tqv1bFtVXJ/HLlYZgmYZfyoOeL88WTzG7dX3NmIIYFUgRYWEwW/kwu6vYQ+Q==","repository":{"url":"git+https://github.com/zhangluka/OpenSpec.git","type":"git"},"_npmVersion":"10.9.0","description":"OpenSpec-based system with internalization support and internal Agent tools for spec-driven development","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","yaml":"^2.8.2","chalk":"^5.5.0","commander":"^14.0.0","fast-glob":"^3.3.3","posthog-node":"^5.20.0","@inquirer/core":"^10.2.2","@inquirer/prompts":"^7.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.2.0","@changesets/cli":"^2.27.7","typescript-eslint":"^8.50.1","@changesets/changelog-github":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/phspec_0.0.4_1773317585297_0.1035444791263298","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@bobby_z/phspec","version":"0.0.5","keywords":["phspec","specs","cli","ai","development"],"author":{"name":"zhangluka"},"license":"MIT","_id":"@bobby_z/phspec@0.0.5","maintainers":[{"name":"bobby_z","email":"zhangluuka@gmail.com"}],"homepage":"https://github.com/zhangluka/OpenSpec","bugs":{"url":"https://github.com/zhangluka/OpenSpec/issues"},"bin":{"phspec":"bin/phspec.js"},"dist":{"shasum":"9909cad2241471709011d227f904300b09bbb387","tarball":"https://registry.npmjs.org/@bobby_z/phspec/-/phspec-0.0.5.tgz","fileCount":239,"integrity":"sha512-bfgJdyxuOg57I6i/L7ZwgBGRKxd07KD0pxSeZ1X0SDeKBqzQpZqWUSpT1k5jWLH078jeb4zqEjK5xXYYJUYsgw==","signatures":[{"sig":"MEQCIC97k260LZ6X61mQBbQE618Qin1VYWKCvHW2rpNfeGoDAiB9uwV44Sys/27FDnrha+CLQS1e+uLxnAF8X2gHfYTvvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":847119},"type":"module","_from":"file:bobby_z-phspec-0.0.5.tgz","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"node build.js","dev:cli":"pnpm build && node bin/phspec.js","release":"pnpm run release:ci","test:ui":"vitest --ui","changeset":"changeset","release:ci":"pnpm run check:pack-version && pnpm exec changeset publish","test:watch":"vitest","postinstall":"node scripts/postinstall.js","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"bobby_z","email":"zhangluuka@gmail.com"},"_resolved":"/private/var/folders/9k/59k0m48s4b97zyr7nhr6565w0000gn/T/d8b57161b48b976adf297e85433d20e8/bobby_z-phspec-0.0.5.tgz","_integrity":"sha512-bfgJdyxuOg57I6i/L7ZwgBGRKxd07KD0pxSeZ1X0SDeKBqzQpZqWUSpT1k5jWLH078jeb4zqEjK5xXYYJUYsgw==","repository":{"url":"git+https://github.com/zhangluka/OpenSpec.git","type":"git"},"_npmVersion":"10.9.0","description":"OpenSpec-based system with internalization support and internal Agent tools for spec-driven development","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","yaml":"^2.8.2","chalk":"^5.5.0","commander":"^14.0.0","fast-glob":"^3.3.3","posthog-node":"^5.20.0","@inquirer/core":"^10.2.2","@inquirer/prompts":"^7.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.2.0","@changesets/cli":"^2.27.7","typescript-eslint":"^8.50.1","@changesets/changelog-github":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/phspec_0.0.5_1776817521472_0.23022977351113183","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@bobby_z/phspec","version":"0.0.6","description":"OpenSpec-based system with internalization support and internal Agent tools for spec-driven development","keywords":["phspec","specs","cli","ai","development"],"homepage":"https://github.com/zhangluka/OpenSpec","repository":{"type":"git","url":"git+https://github.com/zhangluka/OpenSpec.git"},"license":"MIT","author":{"name":"zhangluka"},"type":"module","publishConfig":{"access":"public"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"bin":{"phspec":"bin/phspec.js"},"engines":{"node":">=20.19.0"},"devDependencies":{"@changesets/changelog-github":"^0.5.2","@changesets/cli":"^2.27.7","@types/node":"^24.2.0","@vitest/ui":"^3.2.4","eslint":"^9.39.2","typescript":"^5.9.3","typescript-eslint":"^8.50.1","vitest":"^3.2.4"},"dependencies":{"@inquirer/core":"^10.2.2","@inquirer/prompts":"^7.8.0","chalk":"^5.5.0","commander":"^14.0.0","fast-glob":"^3.3.3","ora":"^8.2.0","posthog-node":"^5.20.0","yaml":"^2.8.2","zod":"^4.0.17"},"scripts":{"lint":"eslint src/","build":"node build.js","dev":"tsc --watch","dev:cli":"pnpm build && node bin/phspec.js","test":"vitest run","test:watch":"vitest","test:ui":"vitest --ui","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs","release":"pnpm run release:ci","release:ci":"pnpm run check:pack-version && pnpm exec changeset publish","changeset":"changeset"},"_id":"@bobby_z/phspec@0.0.6","bugs":{"url":"https://github.com/zhangluka/OpenSpec/issues"},"_integrity":"sha512-FZrIAttAjHqSnhjAJJC60SQX64jfRFB1qv1MP9V2kGwy8DRGIVCCtbEAYXWFNSVb5XKMag0vzm0h0EqJfDmFLA==","_resolved":"/private/var/folders/9k/59k0m48s4b97zyr7nhr6565w0000gn/T/792d8d7548814ab05e81d5f81a5ce457/bobby_z-phspec-0.0.6.tgz","_from":"file:bobby_z-phspec-0.0.6.tgz","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-FZrIAttAjHqSnhjAJJC60SQX64jfRFB1qv1MP9V2kGwy8DRGIVCCtbEAYXWFNSVb5XKMag0vzm0h0EqJfDmFLA==","shasum":"83dbdab2fa03d9856ff7525ba95332ace536124a","tarball":"https://registry.npmjs.org/@bobby_z/phspec/-/phspec-0.0.6.tgz","fileCount":239,"unpackedSize":849470,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFgzkAWD4+4ipRBEUXgz2YDqJjv5TYwJ/eN73qfK93hiAiALxBCUUVBmBli6DiwH2jFkv60TQX5DLNtPxBpk4n5rkQ=="}]},"_npmUser":{"name":"bobby_z","email":"zhangluuka@gmail.com"},"directories":{},"maintainers":[{"name":"bobby_z","email":"zhangluuka@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/phspec_0.0.6_1776838753293_0.2965369910287432"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-25T07:20:05.147Z","modified":"2026-04-22T06:19:13.644Z","0.0.1":"2026-02-25T07:20:05.462Z","0.0.2":"2026-02-26T02:54:39.671Z","0.0.3":"2026-03-12T11:29:12.895Z","0.0.4":"2026-03-12T12:13:05.490Z","0.0.5":"2026-04-22T00:25:21.701Z","0.0.6":"2026-04-22T06:19:13.528Z"},"bugs":{"url":"https://github.com/zhangluka/OpenSpec/issues"},"author":{"name":"zhangluka"},"license":"MIT","homepage":"https://github.com/zhangluka/OpenSpec","keywords":["phspec","specs","cli","ai","development"],"repository":{"type":"git","url":"git+https://github.com/zhangluka/OpenSpec.git"},"description":"OpenSpec-based system with internalization support and internal Agent tools for spec-driven development","maintainers":[{"name":"bobby_z","email":"zhangluuka@gmail.com"}],"readme":"<p align=\"center\">\n  <a href=\"https://github.com/zhangluka/PhSpec\">\n    <picture>\n      <source srcset=\"assets/phspec_bg.png\">\n      <img src=\"assets/phspec_bg.png\" alt=\"PhSpec logo\">\n    </picture>\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/zhangluka/PhSpec/actions/workflows/ci.yml\"><img alt=\"CI\" src=\"https://github.com/zhangluka/PhSpec/actions/workflows/ci.yml/badge.svg\" /></a>\n  <a href=\"https://www.npmjs.com/package/@bobby_z/phspec\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/@bobby_z/phspec?style=flat-square\" /></a>\n  <a href=\"./LICENSE\"><img alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square\" /></a>\n  <a href=\"https://discord.gg/YctCnvvshC\"><img alt=\"Discord\" src=\"https://img.shields.io/discord/1411657095639601154?style=flat-square&logo=discord&logoColor=white&label=Discord&suffix=%20online\" /></a>\n</p>\n\n<details>\n<summary><strong>The most loved spec framework.</strong></summary>\n\n[![Stars](https://img.shields.io/github/stars/zhangluka/PhSpec?style=flat-square&label=Stars)](https://github.com/zhangluka/PhSpec/stargazers)\n[![Downloads](https://img.shields.io/npm/dm/@bobby_z/phspec?style=flat-square&label=Downloads/mo)](https://www.npmjs.com/package/@bobby_z/phspec)\n[![Contributors](https://img.shields.io/github/contributors/zhangluka/PhSpec?style=flat-square&label=Contributors)](https://github.com/zhangluka/PhSpec/graphs/contributors)\n\n</details>\n<p></p>\nOur philosophy:\n\n```text\n→ fluid not rigid\n→ iterative not waterfall\n→ easy not complex\n→ built for brownfield not just greenfield\n→ scalable from personal projects to enterprises\n```\n\n> [!TIP]\n> **New workflow now available!** We've rebuilt PhSpec with a new artifact-guided workflow.\n>\n> Run `/phsx:onboard` to get started. → [Learn more here](docs/phsx.md)\n\n<p align=\"center\">\n  Follow <a href=\"https://x.com/0xTab\">@0xTab on X</a> for updates · Join the <a href=\"https://discord.gg/YctCnvvshC\">PhSpec Discord</a> for help and questions.\n</p>\n\n### Teams\n\nUsing PhSpec in a team? [Email here](mailto:teams@phspec.dev) for access to our Slack channel.\n\n<!-- TODO: Add GIF demo of /phsx:new → /phsx:archive workflow -->\n\n## See it in action\n\n```text\nYou: /phsx:new add-dark-mode\nAI:  Created phspec/changes/add-dark-mode/\n     Ready to create: proposal\n\nYou: /phsx:ff   # \"fast-forward\" - generate all planning docs\nAI:  ✓ proposal.md — why we're doing this, what's changing\n     ✓ specs/       — requirements and scenarios\n     ✓ design.md    — technical approach\n     ✓ tasks.md     — implementation checklist\n     Ready for implementation!\n\nYou: /phsx:apply\nAI:  Implementing tasks...\n     ✓ 1.1 Add theme context provider\n     ✓ 1.2 Create toggle component\n     ✓ 2.1 Add CSS variables\n     ✓ 2.2 Wire up localStorage\n     All tasks complete!\n\nYou: /phsx:archive\nAI:  Archived to phspec/changes/archive/2025-01-23-add-dark-mode/\n     Specs updated. Ready for the next feature.\n```\n\n<details>\n<summary><strong>PhSpec Dashboard</strong></summary>\n\n<p align=\"center\">\n  <img src=\"assets/phspec_dashboard.png\" alt=\"PhSpec dashboard preview\" width=\"90%\">\n</p>\n\n</details>\n\n## Quick Start\n\n**Requires Node.js 20.19.0 or higher.**\n\nInstall PhSpec globally:\n\n```bash\nnpm install -g @bobby_z/phspec@latest\n```\n\nThen navigate to your project directory and initialize:\n\n```bash\ncd your-project\nphspec init\n```\n\nNow tell your AI: `/phsx:new <what-you-want-to-build>`\n\n> [!NOTE]\n> Not sure if your tool is supported? [View the full list](docs/supported-tools.md) – we support 20+ tools and growing.\n>\n> Also works with pnpm, yarn, bun, and nix. [See installation options](docs/installation.md).\n\n## Docs\n\n→ **[Getting Started](docs/getting-started.md)**: first steps<br>\n→ **[Workflows](docs/workflows.md)**: combos and patterns<br>\n→ **[Commands](docs/commands.md)**: slash commands & skills<br>\n→ **[CLI](docs/cli.md)**: terminal reference<br>\n→ **[Supported Tools](docs/supported-tools.md)**: tool integrations & install paths<br>\n→ **[Concepts](docs/concepts.md)**: how it all fits<br>\n\n→ **[Brownfield & SDD Best Practices](docs/brownfield-sdd-best-practices.md)**: 棕地接入与业务开发流程规范（团队/公司接入必读）<br>\n→ **[Multi-Language](docs/multi-language.md)**: multi-language support<br>\n→ **[Customization](docs/customization.md)**: make it yours\n\n## Why PhSpec?\n\nAI coding assistants are powerful but unpredictable when requirements live only in chat history. PhSpec adds a lightweight spec layer so you agree on what to build before any code is written.\n\n- **Agree before you build** — human and AI align on specs before code gets written\n- **Stay organized** — each change gets its own folder with proposal, specs, design, and tasks\n- **Work fluidly** — update any artifact anytime, no rigid phase gates\n- **Use your tools** — works with 20+ AI assistants via slash commands\n\n### How we compare\n\n**vs. [Spec Kit](https://github.com/github/spec-kit)** (GitHub) — Thorough but heavyweight. Rigid phase gates, lots of Markdown, Python setup. PhSpec is lighter and lets you iterate freely.\n\n**vs. [Kiro](https://kiro.dev)** (AWS) — Powerful but you're locked into their IDE and limited to Claude models. PhSpec works with the tools you already use.\n\n**vs. nothing** — AI coding without specs means vague prompts and unpredictable results. PhSpec brings predictability without the ceremony.\n\n## Updating PhSpec\n\n**Upgrade the package**\n\n```bash\nnpm install -g @bobby_z/phspec@latest\n```\n\n**Refresh agent instructions**\n\nRun this inside each project to regenerate AI guidance and ensure the latest slash commands are active:\n\n```bash\nphspec update\n```\n\n## Usage Notes\n\n**Model selection**: PhSpec works best with high-reasoning models. We recommend Opus 4.5 and GPT 5.2 for both planning and implementation.\n\n**Context hygiene**: PhSpec benefits from a clean context window. Clear your context before starting implementation and maintain good context hygiene throughout your session.\n\n## Contributing\n\n**Small fixes** — Bug fixes, typo corrections, and minor improvements can be submitted directly as PRs.\n\n**Larger changes** — For new features, significant refactors, or architectural changes, please submit an PhSpec change proposal first so we can align on intent and goals before implementation begins.\n\nWhen writing proposals, keep the PhSpec philosophy in mind: we serve a wide variety of users across different coding agents, models, and use cases. Changes should work well for everyone.\n\n**AI-generated code is welcome** — as long as it's been tested and verified. PRs containing AI-generated code should mention the coding agent and model used (e.g., \"Generated with Claude Code using claude-opus-4-5-20251101\").\n\n### Development\n\n- Install dependencies: `pnpm install`\n- Build: `pnpm run build`\n- Test: `pnpm test`\n- Develop CLI locally: `pnpm run dev` or `pnpm run dev:cli`\n- Conventional commits (one-line): `type(scope): subject`\n\n## Other\n\n<details>\n<summary><strong>Telemetry</strong></summary>\n\nPhSpec collects anonymous usage stats.\n\nWe collect only command names and version to understand usage patterns. No arguments, paths, content, or PII. Automatically disabled in CI.\n\n**Opt-out:** `export PHSPEC_TELEMETRY=0` or `export DO_NOT_TRACK=1`\n\n</details>\n\n<details>\n<summary><strong>Maintainers & Advisors</strong></summary>\n\nSee [MAINTAINERS.md](MAINTAINERS.md) for the list of core maintainers and advisors who help guide the project.\n\n</details>\n\n## License\n\nMIT\n","readmeFilename":"README.md"}