{"_id":"@appboypov/opensplx","_rev":"8-b82f16ec214f48ee0839283b9726413c","name":"@appboypov/opensplx","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@appboypov/opensplx","version":"0.1.0","keywords":["openspec","specs","cli","ai","development"],"author":{"name":"OpenSpec Contributors"},"license":"MIT","_id":"@appboypov/opensplx@0.1.0","maintainers":[{"name":"appboypov","email":"info@codaveto.com"}],"homepage":"https://github.com/appboypov/OpenSplx","bugs":{"url":"https://github.com/appboypov/OpenSplx/issues"},"bin":{"plx":"bin/plx.js","openspec":"bin/openspec.js"},"dist":{"shasum":"98e1021f451689330db1356f2246c05b566cb8a5","tarball":"https://registry.npmjs.org/@appboypov/opensplx/-/opensplx-0.1.0.tgz","fileCount":224,"integrity":"sha512-0E8oCXI0S10uv7EY7X1OlyRRtI8RVPK3A1y5yyAd3sVwkQcvfZ7zEsXzpkgi9y410nN7FLpSciMbQDbv37Zy4g==","signatures":[{"sig":"MEUCIDwGR4WW3wXKcLtTSaCnKsvLgjPPV8G+I+BLPhR644S0AiEAxwjA/lPjSQj/XOQHevUgZNaVkDiA9WJtLdSxXHpxciM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":481425},"type":"module","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"2dc08721e4244e178ff9b13e911819a80bfedcd0","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"node build.js","dev:cli":"pnpm build && node bin/openspec.js","prepare":"pnpm run build","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","release:local":"pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish","test:coverage":"vitest --coverage","prepublishOnly":"pnpm run build","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"appboypov","email":"info@codaveto.com"},"deprecated":"This package has been renamed to @appboypov/open-splx","repository":{"url":"git+https://github.com/appboypov/OpenSplx.git","type":"git"},"_npmVersion":"11.3.0","description":"AI-native system for spec-driven development","directories":{},"_nodeVersion":"24.1.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","chalk":"^5.5.0","commander":"^14.0.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"},"_npmOperationalInternal":{"tmp":"tmp/opensplx_0.1.0_1766598048146_0.8193765828019042","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@appboypov/opensplx","version":"0.2.0","keywords":["openspec","specs","cli","ai","development"],"author":{"name":"OpenSpec Contributors"},"license":"MIT","_id":"@appboypov/opensplx@0.2.0","maintainers":[{"name":"appboypov","email":"info@codaveto.com"}],"homepage":"https://github.com/Fission-AI/OpenSpec","bugs":{"url":"https://github.com/Fission-AI/OpenSpec/issues"},"bin":{"plx":"bin/plx.js","openspec":"bin/openspec.js"},"dist":{"shasum":"05c8e9de22d121c62e09005eb7ef63f9c5d1a789","tarball":"https://registry.npmjs.org/@appboypov/opensplx/-/opensplx-0.2.0.tgz","fileCount":232,"integrity":"sha512-oDmgte8H8VrPIABssCkUrg6UZr8elGbaOI8diDgv6eD4EGx0lyeC7d1AbxuLDuf5623KEWh6r+PMb5mKARtKBA==","signatures":[{"sig":"MEUCIQCmQhSXcWKfMH4KJlFrzXaydREA0qi5MeyAMjzDWHVqhQIgG3wkD38ffg6wOks929WNvp3c+Dn9R6t2GV9NwowEP98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":516146},"type":"module","_from":"file:appboypov-opensplx-0.2.0.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/openspec.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","release:local":"pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"appboypov","email":"info@codaveto.com"},"_resolved":"/private/var/folders/fh/kwjz4grx18nbq8pgvbzvn8rc0000gn/T/1d96d70830dd190fa1dba5e290421cdd/appboypov-opensplx-0.2.0.tgz","_integrity":"sha512-oDmgte8H8VrPIABssCkUrg6UZr8elGbaOI8diDgv6eD4EGx0lyeC7d1AbxuLDuf5623KEWh6r+PMb5mKARtKBA==","deprecated":"This package has been renamed to @appboypov/open-splx","repository":{"url":"git+https://github.com/Fission-AI/OpenSpec.git","type":"git"},"_npmVersion":"11.3.0","description":"AI-native system for spec-driven development","directories":{},"_nodeVersion":"24.1.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","chalk":"^5.5.0","commander":"^14.0.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"},"_npmOperationalInternal":{"tmp":"tmp/opensplx_0.2.0_1766684626601_0.9279602191178278","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@appboypov/opensplx","version":"0.3.0","keywords":["openspec","specs","cli","ai","development"],"author":{"name":"OpenSpec Contributors"},"license":"MIT","_id":"@appboypov/opensplx@0.3.0","maintainers":[{"name":"appboypov","email":"info@codaveto.com"}],"homepage":"https://github.com/Fission-AI/OpenSpec","bugs":{"url":"https://github.com/Fission-AI/OpenSpec/issues"},"bin":{"plx":"bin/plx.js","openspec":"bin/openspec.js"},"dist":{"shasum":"6d041062218bca021bd693cd4ebb7e0c9fb2ecd7","tarball":"https://registry.npmjs.org/@appboypov/opensplx/-/opensplx-0.3.0.tgz","fileCount":232,"integrity":"sha512-bVwGYaIQ3K7msMd5BcUcOfZn+kj2JbqliIklRQ4jRCrzNDa9YTcowFKnW4JGX7GDgetESLkP4AIUurzHqSGd+A==","signatures":[{"sig":"MEUCIQDFQJNWdbMdk86WGfKXE6pOfeqs9+R9YB1JP3ANhw4rKwIgF+/hLjZdfEBHcf7tmSklr2J0DyE2BCKAo9KvNYPNZj8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":516146},"type":"module","_from":"file:appboypov-opensplx-0.3.0.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/openspec.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","release:local":"pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"appboypov","email":"info@codaveto.com"},"_resolved":"/private/var/folders/fh/kwjz4grx18nbq8pgvbzvn8rc0000gn/T/7c0c69d2f589937076562f726ce3a138/appboypov-opensplx-0.3.0.tgz","_integrity":"sha512-bVwGYaIQ3K7msMd5BcUcOfZn+kj2JbqliIklRQ4jRCrzNDa9YTcowFKnW4JGX7GDgetESLkP4AIUurzHqSGd+A==","deprecated":"This package has been renamed to @appboypov/open-splx","repository":{"url":"git+https://github.com/Fission-AI/OpenSpec.git","type":"git"},"_npmVersion":"11.3.0","description":"AI-native system for spec-driven development","directories":{},"_nodeVersion":"24.1.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","chalk":"^5.5.0","commander":"^14.0.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"},"_npmOperationalInternal":{"tmp":"tmp/opensplx_0.3.0_1766684656026_0.5322073523505497","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@appboypov/opensplx","version":"0.4.0","keywords":["openspec","specs","cli","ai","development"],"author":{"name":"OpenSpec Contributors"},"license":"MIT","_id":"@appboypov/opensplx@0.4.0","maintainers":[{"name":"appboypov","email":"info@codaveto.com"}],"homepage":"https://github.com/appboypov/OpenSplx","bugs":{"url":"https://github.com/appboypov/OpenSplx/issues"},"bin":{"plx":"bin/plx.js","openspec":"bin/openspec.js"},"dist":{"shasum":"f0fe659b4d389bcd67cb35969bedd153ad98a2cb","tarball":"https://registry.npmjs.org/@appboypov/opensplx/-/opensplx-0.4.0.tgz","fileCount":238,"integrity":"sha512-ob7cHbCSN/+8P3MsoiJvgmoRuBHlSRFIa9GsOtfqrJBnV9/1jPqhTRrQAjlIN3S3/M1AvVgdGwSemy/XMyhpxw==","signatures":[{"sig":"MEUCIA/IbKXzPf9TBzerzUIin8MLKQVNkgTaeSo++ycFHjIOAiEAu5/hRZrbo86zlSoTZUyh7lVs1L+wNwCGeXb1IJeoWSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appboypov%2fopensplx@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":552158},"type":"module","_from":"file:appboypov-opensplx-0.4.0.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/openspec.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","release:local":"pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2633e77-8bd3-49b9-b981-748153605f85"}},"_resolved":"/tmp/c4a1b33a5f7726f5e62cf4f903a9d121/appboypov-opensplx-0.4.0.tgz","_integrity":"sha512-ob7cHbCSN/+8P3MsoiJvgmoRuBHlSRFIa9GsOtfqrJBnV9/1jPqhTRrQAjlIN3S3/M1AvVgdGwSemy/XMyhpxw==","deprecated":"This package has been renamed to @appboypov/open-splx","repository":{"url":"git+https://github.com/appboypov/OpenSplx.git","type":"git"},"_npmVersion":"11.6.2","description":"AI-native system for spec-driven development","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","chalk":"^5.5.0","commander":"^14.0.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"},"_npmOperationalInternal":{"tmp":"tmp/opensplx_0.4.0_1766712790783_0.7801108542205735","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@appboypov/opensplx","version":"0.5.0","keywords":["openspec","specs","cli","ai","development"],"author":{"name":"OpenSpec Contributors"},"license":"MIT","_id":"@appboypov/opensplx@0.5.0","maintainers":[{"name":"appboypov","email":"info@codaveto.com"}],"homepage":"https://github.com/appboypov/OpenSplx","bugs":{"url":"https://github.com/appboypov/OpenSplx/issues"},"bin":{"plx":"bin/plx.js","openspec":"bin/openspec.js"},"dist":{"shasum":"14f9be6d157c0a48aea2839adaad450abb32c068","tarball":"https://registry.npmjs.org/@appboypov/opensplx/-/opensplx-0.5.0.tgz","fileCount":256,"integrity":"sha512-JIxxHM5JlzpQuqLu+yC6K9+BJjzkVKpPZ1Pm0AdrLNt9e6+nHfk+3ENqIT9fJ/iQRVxVlYPgdUaACESpe4ZpGg==","signatures":[{"sig":"MEQCIG4261HdTeONI7N3b8kOTHOojRn6pIjn68tOxslYJoyuAiAXOfxyGFjeoCRwI3VJ5qF7pnCeTsQmPWiHFPNSh/35Fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@appboypov%2fopensplx@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":672621},"type":"module","_from":"file:appboypov-opensplx-0.5.0.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/openspec.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","release:local":"pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish","test:coverage":"vitest --coverage","test:postinstall":"node scripts/postinstall.js","check:pack-version":"node scripts/pack-version-check.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2633e77-8bd3-49b9-b981-748153605f85"}},"_resolved":"/tmp/ee0ea5fa8623128f62ad84e3a5865fbc/appboypov-opensplx-0.5.0.tgz","_integrity":"sha512-JIxxHM5JlzpQuqLu+yC6K9+BJjzkVKpPZ1Pm0AdrLNt9e6+nHfk+3ENqIT9fJ/iQRVxVlYPgdUaACESpe4ZpGg==","deprecated":"This package has been renamed to @appboypov/open-splx","repository":{"url":"git+https://github.com/appboypov/OpenSplx.git","type":"git"},"_npmVersion":"11.6.2","description":"AI-native system for spec-driven development","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.2.0","zod":"^4.0.17","chalk":"^5.5.0","ignore":"^7.0.5","commander":"^14.0.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"},"_npmOperationalInternal":{"tmp":"tmp/opensplx_0.5.0_1766930768505_0.1175001575631689","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-12-24T17:40:47.979Z","modified":"2026-01-12T20:23:16.775Z","0.1.0":"2025-12-24T17:40:48.314Z","0.2.0":"2025-12-25T17:43:46.766Z","0.3.0":"2025-12-25T17:44:16.152Z","0.4.0":"2025-12-26T01:33:10.922Z","0.5.0":"2025-12-28T14:06:08.748Z"},"bugs":{"url":"https://github.com/appboypov/OpenSplx/issues"},"author":{"name":"OpenSpec Contributors"},"license":"MIT","homepage":"https://github.com/appboypov/OpenSplx","keywords":["openspec","specs","cli","ai","development"],"repository":{"url":"git+https://github.com/appboypov/OpenSplx.git","type":"git"},"description":"AI-native system for spec-driven development","maintainers":[{"name":"appboypov","email":"info@codaveto.com"}],"readme":"<p align=\"center\">\n  <a href=\"https://github.com/appyboypov/OpenSplx\">\n    <picture>\n      <source srcset=\"assets/opensplx_pixel_dark.svg\" media=\"(prefers-color-scheme: dark)\">\n      <source srcset=\"assets/opensplx_pixel_light.svg\" media=\"(prefers-color-scheme: light)\">\n      <img src=\"assets/opensplx_pixel_light.svg\" alt=\"OpenSplx logo\" height=\"64\">\n    </picture>\n  </a>\n\n</p>\n<p align=\"center\">Spec-driven development for AI coding assistants.</p>\n<p align=\"center\">\n  <a href=\"https://github.com/Fission-AI/OpenSpec\"><img alt=\"Fork of OpenSpec\" src=\"https://img.shields.io/badge/Fork%20of-OpenSpec-blue?style=flat-square\" /></a>\n  <a href=\"https://nodejs.org/\"><img alt=\"node version\" src=\"https://img.shields.io/node/v/@fission-ai/openspec?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</p>\n\n<p align=\"center\">\n  <img src=\"assets/openspec_dashboard.png\" alt=\"OpenSplx dashboard preview\" width=\"90%\">\n</p>\n\n# OpenSplx\n\n> **Fork Notice:** OpenSplx is a community fork of [OpenSpec](https://github.com/Fission-AI/OpenSpec).\n> It adds the `plx` command alias and extended features while maintaining full compatibility\n> with the original OpenSpec workflow.\n\n## What's Different in OpenSplx\n\n| Feature | OpenSpec | OpenSplx |\n|---------|----------|----------|\n| Command | `openspec` | `openspec` + `plx` alias |\n| Task Structure | Single `tasks.md` | `tasks/` directory with numbered files |\n| Task Status | Checkbox-based | YAML frontmatter (`to-do`, `in-progress`, `done`) |\n| Task Selection | Manual | `plx get task` for prioritized selection |\n| Item Retrieval | — | `get change`, `get spec`, `get tasks` by ID |\n| Content Filtering | — | `--constraints`, `--acceptance-criteria` flags |\n| Auto-completion | — | Detects fully checked tasks, auto-advances |\n| Auto-transition | — | `get task` auto-transitions to-do → in-progress |\n| Complete/Undo | — | `complete task`, `complete change`, `undo task`, `undo change` |\n| Review System | — | `plx review`, `plx parse feedback` with feedback markers |\n| Architecture Docs | `openspec/project.md` | `ARCHITECTURE.md` |\n| Issue Tracking | — | External issue tracking in proposals |\n| Install | `npm i -g @fission-ai/openspec` | `npm i -g @appboypov/opensplx` |\n\n### Task Directory Structure\n\nOpenSplx uses a `tasks/` directory with numbered task files instead of a single `tasks.md`:\n\n```\ntasks/\n├── 001-<first-task>.md\n├── 002-<second-task>.md\n└── NNN-<last-task>.md\n```\n\nEach task file is scoped for one AI conversation. The apply command auto-detects the next incomplete task and processes only that one. Legacy `tasks.md` files are auto-migrated on first CLI access.\n\n### Get Command\n\nOpenSplx extends the `get` command with subcommands for retrieving project artifacts:\n\n```bash\n# Task retrieval and workflow\nplx get task                          # Get the next prioritized task\nplx get task --id 001-implement       # Get specific task by filename\nplx get task --did-complete-previous  # Mark current task done, get next\nplx get task --constraints            # Show only Constraints section\nplx get task --acceptance-criteria    # Show only Acceptance Criteria section\n\n# Item retrieval by ID\nplx get change --id add-feature       # Retrieve change proposal by ID\nplx get spec --id user-auth           # Retrieve spec by ID\nplx get tasks                         # List all open tasks\nplx get tasks --id add-feature        # List tasks for specific change\n\n# All commands support --json for machine-readable output\n```\n\n**Prioritization logic:**\n1. Changes with highest completion percentage are prioritized first\n2. When percentages are equal, older proposals (by birthtime) take precedence\n3. Within a change, finds the first task with `status: to-do` or `status: in-progress`\n\n**Task status tracking:** Tasks use YAML frontmatter for status:\n```yaml\n---\nstatus: to-do  # or: in-progress, done\n---\n```\n\n**Checkbox auto-completion:** When using `--did-complete-previous`, all checkboxes in the `## Implementation Checklist` section are automatically marked as complete. Checkboxes in `## Constraints` and `## Acceptance Criteria` sections are preserved unchanged.\n\n**Auto-transition:** When retrieving a task via `plx get task` or `plx get task --id`, tasks with `status: to-do` are automatically transitioned to `in-progress`. JSON output includes a `transitionedToInProgress` field when this occurs.\n\n**Automatic task completion:** When running `plx get task`, if the current in-progress task has all Implementation Checklist items checked, it is automatically marked as `done` and the next `to-do` task is marked as `in-progress`. The output shows the new task without repeating change documents. JSON output includes an `autoCompletedTask` field when this occurs.\n\n**Content filtering:** Use `--constraints` and `--acceptance-criteria` to filter task output to specific sections. Combine flags to show multiple sections.\n\n### Complete and Undo Commands\n\nOpenSplx provides explicit commands for task and change completion:\n\n```bash\n# Complete tasks and changes\nplx complete task --id 001-implement     # Mark task as done, check all Implementation Checklist items\nplx complete change --id add-feature     # Complete all tasks in a change\n\n# Undo completion\nplx undo task --id 001-implement         # Revert task to to-do, uncheck Implementation Checklist items\nplx undo change --id add-feature         # Revert all tasks in a change to to-do\n\n# All commands support --json for machine-readable output\n```\n\n### Review Commands\n\nOpenSplx provides a structured review workflow for validating implementations:\n\n```bash\n# Output review context\nplx review --change-id add-feature    # Review a change\nplx review --spec-id user-auth        # Review a spec\nplx review --task-id 001-implement    # Review a task\n\n# Parse feedback markers from code\nplx parse feedback review-name --change-id add-feature\n\n# List and archive reviews\nplx list --reviews                     # List active reviews\nplx archive review-name --type review  # Archive completed review\n\n# All commands support --json for machine-readable output\n```\n\n**Feedback markers:** Add inline markers in code during review:\n- `// #FEEDBACK #TODO | feedback text` (C-style: .ts, .js, .go, .rs, etc.)\n- `# #FEEDBACK #TODO | feedback text` (Python/Shell: .py, .sh, .yaml, etc.)\n- `<!-- #FEEDBACK #TODO | feedback text -->` (HTML/Markdown)\n\nFor spec-impacting feedback, add suffix: `(spec:<spec-id>)`\n\n### PLX Slash Commands\n\nWhen you run `plx init`, these additional commands are installed:\n\n- **`/plx/get-task`** - Get the next prioritized task across active changes\n- **`/plx/init-architecture`** - Generate comprehensive `ARCHITECTURE.md` from codebase analysis\n- **`/plx/update-architecture`** - Refresh architecture documentation based on current codebase state\n- **`/plx/review`** - Review implementations against specs/changes/tasks\n- **`/plx/parse-feedback`** - Parse feedback markers and generate review tasks\n- **`/plx/refine-architecture`** - Create or update `ARCHITECTURE.md`\n- **`/plx/refine-review`** - Create or update `REVIEW.md` template\n\n### Quick Start (OpenSplx)\n\n```bash\nnpm install -g @appboypov/opensplx\nplx --version  # or openspec --version\n```\n\n---\n\n<details>\n<summary><strong>Original OpenSpec Documentation</strong> (click to expand)</summary>\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\">OpenSpec Discord</a> for help and questions.\n</p>\n\n# OpenSpec\n\nOpenSpec aligns humans and AI coding assistants with spec-driven development so you agree on what to build before any code is written. **No API keys required.**\n\n## Why OpenSpec?\n\nAI coding assistants are powerful but unpredictable when requirements live in chat history. OpenSpec adds a lightweight specification workflow that locks intent before implementation, giving you deterministic, reviewable outputs.\n\nKey outcomes:\n- Human and AI stakeholders agree on specs before work begins.\n- Structured change folders (proposals, tasks, and spec updates) keep scope explicit and auditable.\n- Shared visibility into what's proposed, active, or archived.\n- Works with the AI tools you already use: custom slash commands where supported, context rules everywhere else.\n\n## How OpenSpec compares (at a glance)\n\n- **Lightweight**: simple workflow, no API keys, minimal setup.\n- **Brownfield-first**: works great beyond 0→1. OpenSpec separates the source of truth from proposals: `openspec/specs/` (current truth) and `openspec/changes/` (proposed updates). This keeps diffs explicit and manageable across features.\n- **Change tracking**: proposals, tasks, and spec deltas live together; archiving merges the approved updates back into specs.\n- **Compared to spec-kit & Kiro**: those shine for brand-new features (0→1). OpenSpec also excels when modifying existing behavior (1→n), especially when updates span multiple specs.\n\nSee the full comparison in [How OpenSpec Compares](#how-openspec-compares).\n\n## How It Works\n\n```\n┌────────────────────┐\n│ Draft Change       │\n│ Proposal           │\n└────────┬───────────┘\n         │ share intent with your AI\n         ▼\n┌────────────────────┐\n│ Review & Align     │\n│ (edit specs/tasks) │◀──── feedback loop ──────┐\n└────────┬───────────┘                          │\n         │ approved plan                        │\n         ▼                                      │\n┌────────────────────┐                          │\n│ Implement Tasks    │──────────────────────────┘\n│ (AI writes code)   │\n└────────┬───────────┘\n         │ ship the change\n         ▼\n┌────────────────────┐\n│ Archive & Update   │\n│ Specs (source)     │\n└────────────────────┘\n\n1. Draft a change proposal that captures the spec updates you want.\n2. Review the proposal with your AI assistant until everyone agrees.\n3. Implement tasks that reference the agreed specs.\n4. Archive the change to merge the approved updates back into the source-of-truth specs.\n```\n\n## Getting Started\n\n### Supported AI Tools\n\n<details>\n<summary><strong>Native Slash Commands</strong> (click to expand)</summary>\n\nThese tools have built-in OpenSpec commands. Select the OpenSpec integration when prompted.\n\n| Tool | Commands |\n|------|----------|\n| **Amazon Q Developer** | `@openspec-proposal`, `@openspec-apply`, `@openspec-archive` (`.amazonq/prompts/`) |\n| **Antigravity** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.agent/workflows/`) |\n| **Auggie (Augment CLI)** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.augment/commands/`) |\n| **Claude Code** | `/openspec:proposal`, `/openspec:apply`, `/openspec:archive` |\n| **Cline** | Workflows in `.clinerules/workflows/` directory (`.clinerules/workflows/openspec-*.md`) |\n| **CodeBuddy Code (CLI)** | `/openspec:proposal`, `/openspec:apply`, `/openspec:archive` (`.codebuddy/commands/`) — see [docs](https://www.codebuddy.ai/cli) |\n| **Codex** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (global: `~/.codex/prompts`, auto-installed) |\n| **CoStrict** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.cospec/openspec/commands/`) — see [docs](https://costrict.ai)|\n| **Crush** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.crush/commands/openspec/`) |\n| **Cursor** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` |\n| **Factory Droid** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.factory/commands/`) |\n| **Gemini CLI** | `/openspec:proposal`, `/openspec:apply`, `/openspec:archive` (`.gemini/commands/openspec/`) |\n| **GitHub Copilot** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.github/prompts/`) |\n| **iFlow (iflow-cli)** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.iflow/commands/`) |\n| **Kilo Code** | `/openspec-proposal.md`, `/openspec-apply.md`, `/openspec-archive.md` (`.kilocode/workflows/`) |\n| **OpenCode** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` |\n| **Qoder (CLI)** | `/openspec:proposal`, `/openspec:apply`, `/openspec:archive` (`.qoder/commands/openspec/`) — see [docs](https://qoder.com/cli) |\n| **Qwen Code** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.qwen/commands/`) |\n| **RooCode** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.roo/commands/`) |\n| **Windsurf** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.windsurf/workflows/`) |\n\nKilo Code discovers team workflows automatically. Save the generated files under `.kilocode/workflows/` and trigger them from the command palette with `/openspec-proposal.md`, `/openspec-apply.md`, or `/openspec-archive.md`.\n\n</details>\n\n<details>\n<summary><strong>AGENTS.md Compatible</strong> (click to expand)</summary>\n\nThese tools automatically read workflow instructions from `openspec/AGENTS.md`. Ask them to follow the OpenSpec workflow if they need a reminder. Learn more about the [AGENTS.md convention](https://agents.md/).\n\n| Tools |\n|-------|\n| Amp • Jules • Others |\n\n</details>\n\n### Install & Initialize\n\n#### Prerequisites\n- **Node.js >= 20.19.0** - Check your version with `node --version`\n\n#### Step 1: Install the CLI globally\n\n```bash\nnpm install -g @fission-ai/openspec@latest\n```\n\nVerify installation:\n```bash\nopenspec --version\n```\n\n#### Step 2: Initialize OpenSpec in your project\n\nNavigate to your project directory:\n```bash\ncd my-project\n```\n\nRun the initialization:\n```bash\nopenspec init\n```\n\n**What happens during initialization:**\n- You'll be prompted to pick any natively supported AI tools (Claude Code, CodeBuddy, Cursor, OpenCode, Qoder,etc.); other assistants always rely on the shared `AGENTS.md` stub\n- OpenSpec automatically configures slash commands for the tools you choose and always writes a managed `AGENTS.md` hand-off at the project root\n- A new `openspec/` directory structure is created in your project\n\n**After setup:**\n- Primary AI tools can trigger `/openspec` workflows without additional configuration\n- Run `openspec list` to verify the setup and view any active changes\n- If your coding assistant doesn't surface the new slash commands right away, restart it. Slash commands are loaded at startup,\n  so a fresh launch ensures they appear\n\n### Optional: Populate Architecture Documentation\n\nAfter `openspec init` completes, you'll receive a suggested prompt to help populate your architecture documentation:\n\n```text\nPopulate your architecture documentation:\n\"Please read ARCHITECTURE.md and help me fill it out with details about my project, tech stack, and conventions\"\n```\n\nUse `ARCHITECTURE.md` (at project root) to define project-level context, conventions, standards, architectural patterns, and other guidelines that should be followed across all changes.\n\n### Create Your First Change\n\nHere's a real example showing the complete OpenSpec workflow. This works with any AI tool. Those with native slash commands will recognize the shortcuts automatically.\n\n#### 1. Draft the Proposal\nStart by asking your AI to create a change proposal:\n\n```text\nYou: Create an OpenSpec change proposal for adding profile search filters by role and team\n     (Shortcut for tools with slash commands: /openspec:proposal Add profile search filters)\n\nAI:  I'll create an OpenSpec change proposal for profile filters.\n     *Scaffolds openspec/changes/add-profile-filters/ with proposal.md, tasks.md, spec deltas.*\n```\n\n#### 2. Verify & Review\nCheck that the change was created correctly and review the proposal:\n\n```bash\n$ openspec list                             # Confirm the change folder exists\n$ openspec validate add-profile-filters     # Validate spec formatting\n$ openspec show add-profile-filters         # Review proposal, tasks, and spec delta\n```\n\n#### 3. Refine the Specs\nIterate on the specifications until they match your needs:\n\n```text\nYou: Can you add acceptance criteria for the role and team filters?\n\nAI:  I'll update the spec delta with scenarios for role and team filters.\n     *Edits openspec/changes/add-profile-filters/specs/profile/spec.md and tasks.md.*\n```\n\n#### 4. Implement the Change\nOnce specs look good, start implementation:\n\n```text\nYou: The specs look good. Let's implement this change.\n     (Shortcut for tools with slash commands: /openspec:apply add-profile-filters)\n\nAI:  I'll work through the tasks in the add-profile-filters change.\n     *Implements tasks from openspec/changes/add-profile-filters/tasks.md*\n     *Marks tasks complete: Task 1.1 ✓, Task 1.2 ✓, Task 2.1 ✓...*\n```\n\n#### 5. Archive the Completed Change\nAfter implementation is complete, archive the change:\n\n```text\nAI:  All tasks are complete. The implementation is ready.\n\nYou: Please archive the change\n     (Shortcut for tools with slash commands: /openspec:archive add-profile-filters)\n\nAI:  I'll archive the add-profile-filters change.\n    *Runs: openspec archive add-profile-filters --yes*\n     ✓ Change archived successfully. Specs updated. Ready for the next feature!\n```\n\nOr run the command yourself in terminal:\n```bash\n$ openspec archive add-profile-filters --yes  # Archive the completed change without prompts\n```\n\n**Note:** Tools with native slash commands (Claude Code, CodeBuddy, Cursor, Codex, Qoder, RooCode) can use the shortcuts shown. All other tools work with natural language requests to \"create an OpenSpec proposal\", \"apply the OpenSpec change\", or \"archive the change\".\n\n## Command Reference\n\n```bash\nopenspec list               # View active change folders\nopenspec view               # Interactive dashboard of specs and changes\nopenspec show <change>      # Display change details (proposal, tasks, spec updates)\nopenspec validate <change>  # Check spec formatting and structure\nopenspec archive <change> [--yes|-y]   # Move a completed change into archive/ (non-interactive with --yes)\n```\n\n## Example: How AI Creates OpenSpec Files\n\nWhen you ask your AI assistant to \"add two-factor authentication\", it creates:\n\n```\nopenspec/\n├── specs/\n│   └── auth/\n│       └── spec.md           # Current auth spec (if exists)\n└── changes/\n    └── add-2fa/              # AI creates this entire structure\n        ├── proposal.md       # Why and what changes\n        ├── tasks.md          # Implementation checklist\n        ├── design.md         # Technical decisions (optional)\n        └── specs/\n            └── auth/\n                └── spec.md   # Delta showing additions\n```\n\n### AI-Generated Spec (created in `openspec/specs/auth/spec.md`):\n\n```markdown\n# Auth Specification\n\n## Purpose\nAuthentication and session management.\n\n## Requirements\n### Requirement: User Authentication\nThe system SHALL issue a JWT on successful login.\n\n#### Scenario: Valid credentials\n- WHEN a user submits valid credentials\n- THEN a JWT is returned\n```\n\n### AI-Generated Change Delta (created in `openspec/changes/add-2fa/specs/auth/spec.md`):\n\n```markdown\n# Delta for Auth\n\n## ADDED Requirements\n### Requirement: Two-Factor Authentication\nThe system MUST require a second factor during login.\n\n#### Scenario: OTP required\n- WHEN a user submits valid credentials\n- THEN an OTP challenge is required\n```\n\n### AI-Generated Tasks (created in `openspec/changes/add-2fa/tasks.md`):\n\n```markdown\n## 1. Database Setup\n- [ ] 1.1 Add OTP secret column to users table\n- [ ] 1.2 Create OTP verification logs table\n\n## 2. Backend Implementation  \n- [ ] 2.1 Add OTP generation endpoint\n- [ ] 2.2 Modify login flow to require OTP\n- [ ] 2.3 Add OTP verification endpoint\n\n## 3. Frontend Updates\n- [ ] 3.1 Create OTP input component\n- [ ] 3.2 Update login flow UI\n```\n\n**Important:** You don't create these files manually. Your AI assistant generates them based on your requirements and the existing codebase.\n\n## Understanding OpenSpec Files\n\n### Delta Format\n\nDeltas are \"patches\" that show how specs change:\n\n- **`## ADDED Requirements`** - New capabilities\n- **`## MODIFIED Requirements`** - Changed behavior (include complete updated text)\n- **`## REMOVED Requirements`** - Deprecated features\n\n**Format requirements:**\n- Use `### Requirement: <name>` for headers\n- Every requirement needs at least one `#### Scenario:` block\n- Use SHALL/MUST in requirement text\n\n## How OpenSpec Compares\n\n### vs. spec-kit\nOpenSpec’s two-folder model (`openspec/specs/` for the current truth, `openspec/changes/` for proposed updates) keeps state and diffs separate. This scales when you modify existing features or touch multiple specs. spec-kit is strong for greenfield/0→1 but provides less structure for cross-spec updates and evolving features.\n\n### vs. Kiro.dev\nOpenSpec groups every change for a feature in one folder (`openspec/changes/feature-name/`), making it easy to track related specs, tasks, and designs together. Kiro spreads updates across multiple spec folders, which can make feature tracking harder.\n\n### vs. No Specs\nWithout specs, AI coding assistants generate code from vague prompts, often missing requirements or adding unwanted features. OpenSpec brings predictability by agreeing on the desired behavior before any code is written.\n\n## Team Adoption\n\n1. **Initialize OpenSpec** – Run `openspec init` in your repo.\n2. **Start with new features** – Ask your AI to capture upcoming work as change proposals.\n3. **Grow incrementally** – Each change archives into living specs that document your system.\n4. **Stay flexible** – Different teammates can use Claude Code, CodeBuddy, Cursor, or any AGENTS.md-compatible tool while sharing the same specs.\n\nRun `openspec update` whenever someone switches tools so your agents pick up the latest instructions and slash-command bindings.\n\n## Updating OpenSpec\n\n1. **Upgrade the package**\n   ```bash\n   npm install -g @fission-ai/openspec@latest\n   ```\n2. **Refresh agent instructions**\n   - Run `openspec update` inside each project to regenerate AI guidance and ensure the latest slash commands are active.\n\n## Contributing\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## License\n\nMIT\n\n</details>\n","readmeFilename":"README.md"}