{"_id":"@bytesbrains/pi-project-gate","_rev":"3-08542ad42dcd235a3552502311690f2e","name":"@bytesbrains/pi-project-gate","dist-tags":{"latest":"1.2.3"},"versions":{"1.2.1":{"name":"@bytesbrains/pi-project-gate","version":"1.2.1","keywords":["pi-package","pi-extension","governance","project-management","release-notes","issue-tracking"],"author":{"name":"nandal","email":"nandal@users.noreply.github.com"},"license":"MIT","_id":"@bytesbrains/pi-project-gate@1.2.1","maintainers":[{"name":"nandal","email":"sandeep@nandal.in"}],"homepage":"https://github.com/nandal/pi-ext/tree/main/project-gate","bugs":{"url":"https://github.com/nandal/pi-ext/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d028e42b6c31b8f9e94d5d57c11dd58ca97a89c5","tarball":"https://registry.npmjs.org/@bytesbrains/pi-project-gate/-/pi-project-gate-1.2.1.tgz","fileCount":11,"integrity":"sha512-4G8Zb7Dy6wALOBnUHyw+MXUOes68izWaWnoxyv/jJfY0hHATgjbXcvE55weDB+nevYyqEcRYCs2jXmIl9e2jig==","signatures":[{"sig":"MEQCIGzwjUqE4+OZDmX9mj81pnYmf3peVYOv7LELBU2KyDUoAiBnq5142ERICX9DaBEvgCe+TubJSWvjQX9mYY1VbtWdgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50426},"main":"./src/index.ts","engines":{"node":">=18"},"gitHead":"1fca2cfdcbdf155b60d39efd9495773b47cb49a1","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"nandal","email":"sandeep@nandal.in"},"repository":{"url":"git+https://github.com/nandal/pi-ext.git","type":"git","directory":"project-gate"},"_npmVersion":"11.3.0","description":"Project orchestration gate for AI agents — structured issues, WIP limits, dependency blocking, and auto-generated release notes.","directories":{},"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-project-gate_1.2.1_1778871421003_0.29621914631604485","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bytesbrains/pi-project-gate","version":"1.2.2","keywords":["pi-package","pi-extension","governance","project-management","release-notes","issue-tracking"],"author":{"name":"nandal","email":"nandal@users.noreply.github.com"},"license":"MIT","_id":"@bytesbrains/pi-project-gate@1.2.2","maintainers":[{"name":"nandal","email":"sandeep@nandal.in"}],"homepage":"https://github.com/nandal/pi-ext/tree/main/project-gate","bugs":{"url":"https://github.com/nandal/pi-ext/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"93ca7118144e3890258403e8fc937e1647fbba8d","tarball":"https://registry.npmjs.org/@bytesbrains/pi-project-gate/-/pi-project-gate-1.2.2.tgz","fileCount":11,"integrity":"sha512-3VsKtawg5jUsXQ0HicLfswaDEyZ6J+dVIhc+Sr5d1hVcClvcy+Lcf7W82bjNhNu/FTe0nG7BZOQRcB9Wtac4WA==","signatures":[{"sig":"MEUCID+VjyNuDAqSunp0oUvOOkeiepZlwczmoWx8M9DukLqTAiEAw+ejAhUIl3j36VrDcLVxtheXjiqtcJTSHZUOEzjIIM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50837},"main":"./src/index.ts","engines":{"node":">=18"},"gitHead":"e4e2429e2adc1b2e9efcd229763481f5f1707c58","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"nandal","email":"sandeep@nandal.in"},"repository":{"url":"git+https://github.com/nandal/pi-ext.git","type":"git","directory":"project-gate"},"_npmVersion":"11.3.0","description":"Project orchestration gate for AI agents — structured issues, WIP limits, dependency blocking, and auto-generated release notes.","directories":{},"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-project-gate_1.2.2_1779068951167_0.6127395518119743","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bytesbrains/pi-project-gate","version":"1.2.3","description":"Project orchestration gate for AI agents — structured issues, WIP limits, dependency blocking, and auto-generated release notes.","keywords":["pi-package","pi-extension","governance","project-management","release-notes","issue-tracking"],"author":{"name":"BytesBrains Pte Ltd","url":"https://bytesbrains.com"},"repository":{"type":"git","url":"git+https://github.com/bytesbrains/pi-project-gate.git"},"homepage":"https://github.com/bytesbrains/pi-project-gate#readme","bugs":{"url":"https://github.com/bytesbrains/pi-project-gate/issues"},"license":"MIT","main":"./src/index.ts","engines":{"node":">=18"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","typebox":"*"},"pi":{"extensions":["./src/index.ts"]},"scripts":{"test":"vitest run","test:watch":"vitest"},"devDependencies":{"vitest":"^2.1.9"},"_id":"@bytesbrains/pi-project-gate@1.2.3","gitHead":"1c0d664a1f382d08304bf75097b345f5f051d663","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-ozx8eUDtzUuOXDRH5kBeM8Y+JK/CiDRO3/DB4aPLqL9FHR5Nol2alw4CbcjhrH6IfGRw5m1L/uXNL3tYNbatjQ==","shasum":"7d7f44b5ad28dbda915d0ab7f3d3f349062b6e6f","tarball":"https://registry.npmjs.org/@bytesbrains/pi-project-gate/-/pi-project-gate-1.2.3.tgz","fileCount":11,"unpackedSize":51026,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICL/KCd2HyApPYpz4dVkceuGZp8znj2cjIecrxKxdyrvAiEAocbMbS3rib5fW7ALu0cGFCZa1duKlAPoJAHRJXKjl8M="}]},"_npmUser":{"name":"nandal","email":"sandeep@nandal.in"},"directories":{},"maintainers":[{"name":"nandal","email":"sandeep@nandal.in"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-project-gate_1.2.3_1783472799827_0.03437732788038517"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T18:57:00.863Z","modified":"2026-07-08T01:06:40.146Z","1.2.1":"2026-05-15T18:57:01.170Z","1.2.2":"2026-05-18T01:49:11.307Z","1.2.3":"2026-07-08T01:06:40.041Z"},"bugs":{"url":"https://github.com/bytesbrains/pi-project-gate/issues"},"author":{"name":"BytesBrains Pte Ltd","url":"https://bytesbrains.com"},"license":"MIT","homepage":"https://github.com/bytesbrains/pi-project-gate#readme","keywords":["pi-package","pi-extension","governance","project-management","release-notes","issue-tracking"],"repository":{"type":"git","url":"git+https://github.com/bytesbrains/pi-project-gate.git"},"description":"Project orchestration gate for AI agents — structured issues, WIP limits, dependency blocking, and auto-generated release notes.","maintainers":[{"name":"nandal","email":"sandeep@nandal.in"}],"readme":"# Project Gate for Pi\n\n[![npm version](https://img.shields.io/npm/v/@bytesbrains/pi-project-gate)](https://www.npmjs.com/package/@bytesbrains/pi-project-gate)\n[![license](https://img.shields.io/npm/l/@bytesbrains/pi-project-gate)](./LICENSE)\n\n> Project orchestration gate for AI agents — structured issues, WIP limits, dependency blocking, and auto-generated release notes. **Agents work from issues, not vibes.**\n\n## Philosophy\n\n`pi-contrib-gate` handles the *contribution* side (branch → commit → PR).  \n`pi-review-gate` handles the *review* side (check → approve → merge).  \n`pi-project-gate` handles the *project* side (issue → plan → release).\n\n## Install\n\n```bash\npi install npm:@bytesbrains/pi-project-gate\n```\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `project_check(issue_id)` | Validate issue readiness — template, complexity, dependencies |\n| `project_start(issue_id)` | Start work on an issue — checks WIP, dependencies, template |\n| `project_status()` | Project board — active issues, WIP counts, blockers |\n| `project_release_notes(from, to)` | Generate release notes from conventional commits |\n\n## Gates\n\n| Gate | Config | Description |\n|---|---|---|\n| Issue template | `requiredSections` | Block work start if issue is missing required sections |\n| WIP limit | `maxWip` | Max concurrent open PRs per agent (default: 3) |\n| Dependency blocking | `dependencyPattern` | Prevent starting issues with unresolved dependencies |\n| Complexity tracking | `complexityLevels` | Ensure issues are scoped with complexity labels |\n| Release notes | `releaseNoteGroups` | Auto-generate grouped release notes from conventional commits |\n\n## Configuration\n\nCreate `.projectrc.yml`:\n\n```yaml\n# Max open PRs per agent\nmaxWip: 3\n\n# Required sections in issue body (comma-separated)\nrequiredSections: \"## Problem,## Proposed Solution,## Acceptance Criteria\"\n\n# Complexity levels\ncomplexityLevels: trivial,small,medium,large,epic\n\n# Area labels for categorization\nareas: backend,frontend,infra,docs,tooling\n\n# Grouping order for release notes\nreleaseNoteGroups: feat,fix,perf,refactor,chore,docs,test,ci,build\n\n# Include commit hashes in release notes\nreleaseNoteIncludeHashes: false\n\n# Regex pattern for issue dependencies\ndependencyPattern: \"(?:Depends on|Blocked by|Requires)\\\\s+#(\\\\d+)\"\n```\n\n## Workflow\n\n```\nproject_check(#42)               ← validate issue readiness\n  │\n  ▼\nproject_start(#42)               ← start work (WIP + deps checked)\n  │\n  ▼\ncontrib_start_work(#42)          ← create branch\n  │\n  ▼\n[implement]\n  │\n  ▼\ncontrib_propose(...)             ← validate + commit\n  │\n  ▼\ncontrib_submit(...)              ← push + create PR\n  │\n  ▼\n[CI + review gates pass]\n  │\n  ▼\nMERGED → project_status()        ← WIP freed, blockers resolved\n```\n\n## Release Notes\n\n```bash\n# Generate notes from last tag to HEAD\nproject_release_notes()\n\n# Generate notes between two tags\nproject_release_notes(from=\"v1.0.0\", to=\"v1.1.0\")\n```\n\nExample output:\n\n```\n# Release v1.1.0 (2026-05-14)\n\n### 🚀 Features\n- **auth**: add OAuth2 support\n- **api**: new user endpoint\n\n### 🐛 Bug Fixes\n- fix null pointer in login flow\n- fix race condition in task queue\n\n### 🔧 Chores\n- update dependencies\n```\n\n## Integration\n\nInstall all three gates for full agent governance:\n\n```bash\npi install npm:@bytesbrains/pi-contrib-gate\npi install npm:@bytesbrains/pi-review-gate\npi install npm:@bytesbrains/pi-project-gate\n```\n\n## License\n\nMIT © [nandal](https://github.com/nandal)\n\n---\n\nBuilt and maintained by [BytesBrains](https://bytesbrains.com) — AI automation & agents, engineered to production standards.\n*The model proposes, code guarantees.*\n","readmeFilename":"README.md"}