diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 390a286..30d7187 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -6,7 +6,39 @@ "Bash(git commit *)", "Bash(git push *)", "Bash(npx eslint *)", - "Bash(npm run *)" + "Bash(npm run *)", + "Bash(npx tsx *)", + "mcp__scrum4me__list_products", + "mcp__scrum4me__get_claude_context", + "Bash(gh pr *)", + "Bash(git -C /Users/janpetervisser/Development/Scrum4Me branch --show-current)", + "Bash(git -C /Users/janpetervisser/Development/Scrum4Me log --oneline main..HEAD)", + "Bash(git -C /Users/janpetervisser/Development/Scrum4Me checkout main)", + "Bash(git -C /Users/janpetervisser/Development/Scrum4Me pull --ff-only)", + "Bash(git -C /Users/janpetervisser/Development/Scrum4Me branch -d feat/ST-1001-qr-login-milestone-plan)", + "Bash(git -C /Users/janpetervisser/Development/Scrum4Me checkout -b feat/M10-qr-login)", + "Bash(git -C /Users/janpetervisser/Development/Scrum4Me log --oneline -3)", + "mcp__scrum4me__log_implementation", + "mcp__scrum4me__update_task_status", + "mcp__scrum4me__log_test_result", + "mcp__scrum4me__log_commit", + "Bash(npx vitest *)", + "Bash(echo \"=== exit: $? ===\")", + "Bash(npm test *)", + "Bash(echo \"exit: $?\")", + "Bash(npx prisma *)", + "Bash(npm install *)", + "Bash(git checkout *)", + "Bash(git pull *)", + "Bash(git branch *)", + "Read(//Users/janpetervisser/Development/**)", + "Bash(git -C /Users/janpetervisser/Development/scrum4me-mcp status -sb)", + "Bash(git -C /Users/janpetervisser/Development/scrum4me-mcp submodule status)", + "Bash(git -C /Users/janpetervisser/Development/scrum4me-mcp log --oneline -5)", + "Bash(git -C /Users/janpetervisser/Development/scrum4me-mcp/vendor/scrum4me log --oneline -3)", + "Bash(git -C /Users/janpetervisser/Development/scrum4me-mcp/vendor/scrum4me branch -a)", + "Bash(git fetch *)", + "Bash(git reset *)" ] } } diff --git a/.gitignore b/.gitignore index 6bdfa09..4ff2246 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ next-env.d.ts #Screenshots (lokale bron-bestanden negeren, maar /public/screenshots wordt wel gecommit) screenshots/ !public/screenshots/ + +# Testomgeving +jp.sh \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index 07da6e8..7dad5ee 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -262,17 +262,22 @@ docs(ST-XXX): document profile feature Scrum4Me heeft een eigen MCP-server in repo [`madhura68/scrum4me-mcp`](https://github.com/madhura68/scrum4me-mcp) die de REST-API als native tools voor Claude Code aanbiedt. Schema's worden gedeeld via een git submodule (`vendor/scrum4me`), niet gedupliceerd. -### Tools beschikbaar in Claude Code (13) +### Tools beschikbaar in Claude Code (16) **Read / context:** - `mcp__scrum4me__health` — service + DB ping - `mcp__scrum4me__list_products` — producten waar de tokengebruiker toegang tot heeft - `mcp__scrum4me__get_claude_context` — bundled product / actieve sprint / next story (met tasks) / open todos +**Authoring (PBI/Story/Task aanmaken):** +- `mcp__scrum4me__create_pbi` — `{ product_id, title, description?, priority, sort_order? }`; auto sort_order = last+1 binnen prio-groep +- `mcp__scrum4me__create_story` — `{ pbi_id, title, description?, acceptance_criteria?, priority, sort_order? }`; product_id afgeleid uit PBI; status=OPEN +- `mcp__scrum4me__create_task` — `{ story_id, title, description?, implementation_plan?, priority, sort_order? }`; sprint_id geërfd van story; status=TO_DO +- `mcp__scrum4me__create_todo` — losse todo (optioneel product-scoped) + **Task / story writes:** - `mcp__scrum4me__update_task_status`, `mcp__scrum4me__update_task_plan` - `mcp__scrum4me__log_implementation`, `mcp__scrum4me__log_test_result`, `mcp__scrum4me__log_commit` -- `mcp__scrum4me__create_todo` **Vraag-antwoord-kanaal (M11):** - `mcp__scrum4me__ask_user_question` — post een vraag over een story; optionele `wait_seconds` (max 600) polt voor het antwoord diff --git a/docs/erd.svg b/docs/erd.svg index ac0fd15..17e265e 100644 --- a/docs/erd.svg +++ b/docs/erd.svg @@ -1 +1 @@ -

user

enum:role

user

user

product

pbi

product

sprint

assignee

enum:status

story

enum:type

enum:status

product

enum:status

story

sprint

enum:status

product

user

user

product

Role

PRODUCT_OWNER

PRODUCT_OWNER

SCRUM_MASTER

SCRUM_MASTER

DEVELOPER

DEVELOPER

StoryStatus

OPEN

OPEN

IN_SPRINT

IN_SPRINT

DONE

DONE

TaskStatus

TO_DO

TO_DO

IN_PROGRESS

IN_PROGRESS

REVIEW

REVIEW

DONE

DONE

LogType

IMPLEMENTATION_PLAN

IMPLEMENTATION_PLAN

TEST_RESULT

TEST_RESULT

COMMIT

COMMIT

TestStatus

PASSED

PASSED

FAILED

FAILED

SprintStatus

ACTIVE

ACTIVE

COMPLETED

COMPLETED

users

String

id

🗝️

String

username

String

email

String

password_hash

Boolean

is_demo

String

bio

String

bio_detail

Bytes

avatar_data

DateTime

created_at

DateTime

updated_at

user_roles

String

id

🗝️

Role

role

api_tokens

String

id

🗝️

String

token_hash

String

label

DateTime

created_at

DateTime

revoked_at

products

String

id

🗝️

String

name

String

code

String

description

String

repo_url

String

definition_of_done

Boolean

archived

DateTime

created_at

DateTime

updated_at

pbis

String

id

🗝️

String

code

String

title

String

description

Int

priority

Float

sort_order

DateTime

created_at

DateTime

updated_at

stories

String

id

🗝️

String

code

String

title

String

description

String

acceptance_criteria

Int

priority

Float

sort_order

StoryStatus

status

DateTime

created_at

DateTime

updated_at

story_logs

String

id

🗝️

LogType

type

String

content

TestStatus

status

String

commit_hash

String

commit_message

Json

metadata

DateTime

created_at

sprints

String

id

🗝️

String

sprint_goal

SprintStatus

status

DateTime

created_at

DateTime

completed_at

tasks

String

id

🗝️

String

title

String

description

String

implementation_plan

Int

priority

Float

sort_order

TaskStatus

status

DateTime

created_at

DateTime

updated_at

product_members

String

id

🗝️

DateTime

created_at

todos

String

id

🗝️

String

title

String

description

Boolean

done

Boolean

archived

DateTime

created_at

DateTime

updated_at

\ No newline at end of file +

active_product

user

enum:role

user

user

product

pbi

product

sprint

assignee

enum:status

story

enum:type

enum:status

product

enum:status

story

sprint

enum:status

product

user

user

product

user

story

task

product

asker

answerer

Role

PRODUCT_OWNER

PRODUCT_OWNER

SCRUM_MASTER

SCRUM_MASTER

DEVELOPER

DEVELOPER

StoryStatus

OPEN

OPEN

IN_SPRINT

IN_SPRINT

DONE

DONE

TaskStatus

TO_DO

TO_DO

IN_PROGRESS

IN_PROGRESS

REVIEW

REVIEW

DONE

DONE

LogType

IMPLEMENTATION_PLAN

IMPLEMENTATION_PLAN

TEST_RESULT

TEST_RESULT

COMMIT

COMMIT

TestStatus

PASSED

PASSED

FAILED

FAILED

SprintStatus

ACTIVE

ACTIVE

COMPLETED

COMPLETED

users

String

id

🗝️

String

username

String

email

String

password_hash

Boolean

is_demo

String

bio

String

bio_detail

Bytes

avatar_data

DateTime

created_at

DateTime

updated_at

user_roles

String

id

🗝️

Role

role

api_tokens

String

id

🗝️

String

token_hash

String

label

DateTime

created_at

DateTime

revoked_at

products

String

id

🗝️

String

name

String

code

String

description

String

repo_url

String

definition_of_done

Boolean

archived

DateTime

created_at

DateTime

updated_at

pbis

String

id

🗝️

String

code

String

title

String

description

Int

priority

Float

sort_order

DateTime

created_at

DateTime

updated_at

stories

String

id

🗝️

String

code

String

title

String

description

String

acceptance_criteria

Int

priority

Float

sort_order

StoryStatus

status

DateTime

created_at

DateTime

updated_at

story_logs

String

id

🗝️

LogType

type

String

content

TestStatus

status

String

commit_hash

String

commit_message

Json

metadata

DateTime

created_at

sprints

String

id

🗝️

String

sprint_goal

SprintStatus

status

DateTime

created_at

DateTime

completed_at

tasks

String

id

🗝️

String

title

String

description

String

implementation_plan

Int

priority

Float

sort_order

TaskStatus

status

DateTime

created_at

DateTime

updated_at

product_members

String

id

🗝️

DateTime

created_at

todos

String

id

🗝️

String

title

String

description

Boolean

done

Boolean

archived

DateTime

created_at

DateTime

updated_at

login_pairings

String

id

🗝️

String

secret_hash

String

desktop_token_hash

String

status

String

desktop_ua

String

desktop_ip

DateTime

created_at

DateTime

expires_at

DateTime

approved_at

DateTime

consumed_at

claude_questions

String

id

🗝️

String

question

Json

options

String

status

String

answer

DateTime

answered_at

DateTime

created_at

DateTime

expires_at

\ No newline at end of file