diff --git a/docs/scrum4me-backlog.md b/docs/scrum4me-backlog.md index f006f03..3d37001 100644 --- a/docs/scrum4me-backlog.md +++ b/docs/scrum4me-backlog.md @@ -23,6 +23,7 @@ De MVP is klaar wanneer Lars — de primaire persona — de volledige cyclus kan | M4: Claude Code REST API | Alle endpoints, tokenbeheer | ST-401 – ST-410 | | M5: Todo-lijst | Todo CRUD, promotie naar PBI/story; Data Table + detail-kaart | ST-501 – ST-506, ST-509 – ST-510 | | M6: Polish & Launch-ready | Foutafhandeling, toegankelijkheid, CI/CD, beveiliging | ST-601 – ST-612 | +| M7: MCP-server voor Claude Code | Native MCP-laag bovenop Scrum4Me-DB (aparte repo `scrum4me-mcp`) | ST-701 – ST-710 | --- @@ -467,6 +468,53 @@ De MVP is klaar wanneer Lars — de primaire persona — de volledige cyclus kan - Voer handmatig de volledige Lars-flow uit: product aanmaken → PBI's en stories aanmaken → Sprint starten → stories slepen → taken aanmaken → API-token aanmaken → curl `next-story` → curl `log` (plan, test, commit) → activiteitenlog controleren in UI - Done when: volledige flow werkt zonder fouten of onverwacht gedrag; alle API-responses correct JSON +### M7: MCP-server voor Claude Code + +Aparte repo: [`madhura68/scrum4me-mcp`](https://github.com/madhura68/scrum4me-mcp). Native Prisma-toegang (geen REST-tussenlaag), stdio-transport, Scrum4Me-schema gevendord als git submodule. Tokens hergebruikt uit `api_tokens`. v1 is alleen dev-flow tools — geen PBI/sprint-creatie of profielbeheer. + +- [x] **ST-701** Repo-skeleton scrum4me-mcp + - npm init, tsconfig strict, .gitignore, MCP SDK 1.29, Prisma 7, zod, tsx; lege `src/index.ts` die op stdio start + - Done when: `npx tsx src/index.ts` print `running on stdio` zonder crash; `tsc --noEmit` slaagt + +- [x] **ST-702** Schema-sync via git submodule + - Submodule `vendor/scrum4me`, `scripts/sync-schema.sh` kopieert `schema.prisma` en strip de `generator erd`-block, `npm run prisma:generate` als postinstall + - Done when: `npm run sync-schema && npm run prisma:generate` werkt op een verse clone + +- [x] **ST-703** Auth en Prisma-singleton + - `src/auth.ts` SHA-256 hash van `SCRUM4ME_TOKEN` → lookup in `api_tokens`, cached `{ userId, isDemo }`; `requireWriteAccess()` throwt `PermissionDeniedError` voor demo + - `src/prisma.ts` lazy proxy zodat bootstrap niet crasht zonder `DATABASE_URL` + - Done when: ongeldig token geeft `SCRUM4ME_TOKEN is invalid or revoked`; demo-tokens blokkeren writes + +- [x] **ST-704** Status-mappers + error-helpers + - `src/status.ts` zelfde mappers als REST `lib/task-status.ts` + - `src/errors.ts` `formatZodError`, `toolError`, `toolJson`, `withToolErrors` wrapper + - Done when: zod-fouten en `PermissionDenied` worden als gestructureerde MCP-errors teruggegeven + +- [x] **ST-705** Read-tools — `health`, `list_products`, `get_claude_context` + - `health` doet `SELECT 1`; `list_products` met product-access filter; `get_claude_context` bundelt product + active sprint + next story (met tasks) + 50 open todos + - Done when: smoke-test tegen live DB groen voor alle drie + +- [x] **ST-706** Write-tools tasks — `update_task_status`, `update_task_plan` + - Status-input lowercase (`todo|in_progress|review|done`), conversie via mapper; access-check via story → product → membership/owner + - Done when: niet-eigenaar krijgt 'not accessible'; demo geeft `PERMISSION_DENIED` + +- [x] **ST-707** Log-tools — `log_implementation`, `log_test_result`, `log_commit` + - Append `StoryLog` met juiste `type`; optioneel `metadata` JSONB + - Done when: drie logs verschijnen in story-activiteit met `type`/`status`/`commit_hash`/`metadata` zoals meegegeven + +- [x] **ST-708** `create_todo`-tool + - Optionele `description` (max 2000) en `product_id` (gevalideerd via access-check) + - Done when: nieuwe todo verschijnt in `/todos` voor de tokengebruiker + +- [x] **ST-709** Prompt `implement_next_story` + - Workflow: `get_claude_context` → plan → log_implementation → per task `in_progress`/`done` → tests → `log_test_result` → `log_commit` + - Done when: prompt zichtbaar in MCP-clients met argument `product_id` + +- [x] **ST-710** README + Claude Code-config + smoke-test + - README beschrijft setup, tools-tabel, schema-sync, `~/.claude/mcp_servers.json` snippet, risico's + - `scripts/smoke-test.ts` valideert read-tools tegen live DB + - Done when: smoke-test groen; MCP Inspector toont 9 tools + 1 prompt + --- ## v2 Backlog (na MVP)