{"_id":"@alivnavc/dev-lifecycle","name":"@alivnavc/dev-lifecycle","dist-tags":{"latest":"0.2.1"},"versions":{"0.2.1":{"name":"@alivnavc/dev-lifecycle","version":"0.2.1","description":"Claude Code plugin: full SDLC co-pilot for Kubernetes-based mixed-language microservices monorepo on GitLab. Includes workflow guardrails, subagent orchestration, codebase analysis, and post-push AI code review iteration.","keywords":["claude-code","claude-code-plugin","sdlc","gitlab","kubernetes","monorepo"],"author":{"name":"Naveen"},"license":"MIT","_id":"@alivnavc/dev-lifecycle@0.2.1","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-I4Ww1Lun7FOBXbA8lRhGUlhZB9W/5B9EghzqZon2dlJK5I+mcVWv2e6Dd48xqnQP4GbBUOqG00XPEEmOze+hwA==","shasum":"e09826299768e366a7ae245bdcb46e77146155bc","tarball":"https://registry.npmjs.org/@alivnavc/dev-lifecycle/-/dev-lifecycle-0.2.1.tgz","fileCount":27,"unpackedSize":73593,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD5aDZCTT5ieLQpNb4vd+rQZGy0L4ffoS58s1bx6o6OLwIhAO2dHBjhgcxZ5DXi2HciaNMgRmqWnSUH9E3TeHhEfT/Q"}]},"_npmUser":{"name":"alivnav","email":"naveenchowdary5175@gmail.com"},"directories":{},"maintainers":[{"name":"alivnav","email":"naveenchowdary5175@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dev-lifecycle_0.2.1_1779861132548_0.15443068841337992"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-27T05:52:12.393Z","0.2.1":"2026-05-27T05:52:12.675Z","modified":"2026-05-27T05:52:12.883Z"},"maintainers":[{"name":"alivnav","email":"naveenchowdary5175@gmail.com"}],"description":"Claude Code plugin: full SDLC co-pilot for Kubernetes-based mixed-language microservices monorepo on GitLab. Includes workflow guardrails, subagent orchestration, codebase analysis, and post-push AI code review iteration.","keywords":["claude-code","claude-code-plugin","sdlc","gitlab","kubernetes","monorepo"],"author":{"name":"Naveen"},"license":"MIT","readme":"# dev-lifecycle\n\nA Claude Code plugin that turns Claude into a full SDLC co-pilot for a Kubernetes-based, mixed-language microservices monorepo on GitLab, **including post-push code review automation**.\n\n## What it does\n\nWhen you ask Claude to \"fix this bug\" or \"build feature X,\" the plugin:\n\n1. **Analyzes** the codebase (cached, refreshed on demand)\n2. **Plans** the work — classifies the task, decides which specialist agents to dispatch, parallel vs. sequential\n3. **Enforces workflow rules** — branches always come from latest `origin/main`, pushes always rebase first\n4. **Dispatches specialist subagents** — architect, developer, AI/ML, tester, debugger, infra\n5. **After push**, automatically watches the MR pipeline, fetches AI code review feedback, and iterates on fixes until approved or the iteration budget is exhausted\n\n## Setup (first time)\n\nWhen the plugin is enabled, Claude Code prompts for:\n\n| Setting | What it is |\n|---|---|\n| `gitlab_token` | Personal access token with `api` scope. Stored securely in the OS keychain. |\n| `gitlab_host` | e.g. `gitlab.sonic-dev.net` |\n| `gitlab_project_path` | URL-encoded path, e.g. `sonicjobs%2Fsonicjobs` |\n| `gitlab_project_id` | Numeric project ID (find in GitLab project settings) |\n| `max_review_iterations` | Default fix-and-repush cycles before giving up (default 3) |\n\nAt every session start, Claude asks you to confirm or override `max_review_iterations`.\n\n## Components\n\n### Skills (auto-triggered)\n\n| Skill | When it fires |\n|---|---|\n| `task-planner` | Any \"fix/build/implement/debug/deploy/investigate\" — runs FIRST, orchestrates the rest |\n| `codebase-conventions` | Code-editing tasks — matches existing style |\n| `monorepo-navigation` | Cross-service work, \"where is X\" |\n| `k8s-context` | Deployment/infra/\"how do I run this\" |\n| `mr-feedback-loop` | After any `git push`, or \"check the MR\" / \"wait for review\" |\n\n### Subagents\n\n| Agent | Owns |\n|---|---|\n| `architect` | System design, cross-service changes, API contracts |\n| `developer` | Application code following conventions |\n| `ai-ml-engineer` | GenAI/LLM and classical ML |\n| `tester` | Unit / integration / e2e tests |\n| `debugger` | Root-cause investigation |\n| `infra-engineer` | K8s, helm, Docker, CI/CD |\n\n### Hooks\n\n| Hook | What it does |\n|---|---|\n| `SessionStart` | Builds/refreshes codebase map; writes session config; prompts for iteration count |\n| `PreToolUse: git checkout -b / switch -c / branch X` | Blocks unless on latest `origin/main` |\n| `PreToolUse: git push` | Blocks unless rebased on `origin/<default>` |\n| `PostToolUse: git push` | Captures MR link from output, triggers `mr-feedback-loop` skill |\n\n### Slash commands\n\n| Command | Use |\n|---|---|\n| `/dev-lifecycle:analyze-codebase` | Force-refresh the codebase map |\n| `/dev-lifecycle:plan <task>` | Plan without executing |\n| `/dev-lifecycle:run-locally <service>` | Get commands to run a service locally |\n| `/dev-lifecycle:deploy-check` | Pre-deployment validation |\n| `/dev-lifecycle:watch-mr [iid]` | Manually watch an MR (uses last push if no IID) |\n\n## The MR feedback loop in detail\n\nAfter `git push`:\n\n```\nPostToolUse hook parses output → writes .claude/dev-lifecycle/last-push.json\n                                ↓\nmr-feedback-loop skill triggers\n                                ↓\npoll-mr.sh starts:\n  wait 5 min → check pipeline\n  wait 5 min → check pipeline  (10 min total)\n  every 2 min → check pipeline (up to ~1 hour cap)\n                                ↓\nduring wait, Claude asks: \"anything else to work on?\"\n                                ↓\nAI code review job done → gitlab-mr-review.py --review-only fetches feedback\n                                ↓\n                ┌───────────────┴───────────────┐\n                ↓                               ↓\n        approved / LGTM                  change requests\n                ↓                               ↓\n        ✅ \"all set\"                  dispatch developer to fix\n                                              ↓\n                                      commit, push (rebase enforced)\n                                              ↓\n                                      loop back (iteration counter ++)\n                                              ↓\n                                  stop when approved OR budget exhausted\n```\n\n## Installation\n\n### Local test\n\n```bash\nclaude --plugin-dir ./dev-lifecycle\n```\n\nYou'll be prompted for the GitLab settings on first run.\n\n### Distribute via marketplace\n\nCreate a marketplace repo with `.claude-plugin/marketplace.json`:\n\n```json\n{\n  \"name\": \"your-team\",\n  \"owner\": { \"name\": \"Platform Team\" },\n  \"plugins\": [\n    { \"name\": \"dev-lifecycle\", \"source\": \"./dev-lifecycle\" }\n  ]\n}\n```\n\nTeammates install:\n\n```\n/plugin marketplace add https://gitlab.sonic-dev.net/your-org/your-marketplace.git\n/plugin install dev-lifecycle@your-team\n```\n\n## Customization\n\n- **GitLab API specifics** live in `scripts/gitlab-mr-review.py`. Adapt the URL paths if your GitLab is older.\n- **AI code review job name detection** is in `scripts/gitlab-mr-review.py` and `scripts/poll-mr.sh`. They both look for `\"ai code review\"` in the job name (case-insensitive). Update the substring if your job is named differently.\n- **Polling schedule** is in `scripts/poll-mr.sh`. Adjust `WAITS` and `LATER_WAIT`.\n- **Subagent prompts** in `agents/*.md` — bake in your team's preferences.\n\n## Validation\n\n```bash\nclaude plugin validate ./dev-lifecycle\n```\n\n## Troubleshooting\n\n- **\"GITLAB_TOKEN not found\"** → re-run plugin enable; the userConfig prompt should appear. Or set `GITLAB_TOKEN` env var as fallback.\n- **MR link not captured** → check the push output had the GitLab `remote:` lines. Some CI configs suppress them.\n- **Hooks not firing** → ensure scripts are executable (`chmod +x scripts/*.sh scripts/*.py`).\n- **AI review job not found** → confirm the job name contains \"ai code review\" (case-insensitive); update the substring in `scripts/gitlab-mr-review.py` if not.\n- **Polling never completes** → check `~/.claude/logs/` for stderr from the poller. Increase `MAX_LATER_CHECKS` in `scripts/poll-mr.sh` if your pipelines are slower than 1 hour.\n","readmeFilename":"README.md","_rev":"1-75ddf17503fea6d22dc71531cd131c8a"}