@ripla/godd-mcp 1.0.4-canary.8 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -94
- package/dist/godd.cjs +349 -233
- package/dist/godd.js +2193 -838
- package/dist/index.js +152 -122
- package/{notes-api → notes/api}/.env.example +6 -1
- package/{notes-api → notes/api}/README.md +6 -5
- package/{notes-api → notes/api}/app/main.py +29 -2
- package/{notes-api → notes/api}/app/routers/auth.py +6 -1
- package/{notes-api → notes/api}/app/routers/issues.py +157 -1
- package/{notes-api → notes/api}/app/routers/pr.py +2 -2
- package/{notes-api → notes/api}/app/services/github_app_token.py +32 -1
- package/{notes-api → notes/api}/app/services/github_issues.py +101 -11
- package/{notes-api → notes/api}/app/services/github_pr.py +6 -1
- package/{notes-api → notes/api}/tests/test_github_app_token.py +49 -1
- package/{notes-api → notes/api}/tests/test_github_service.py +42 -0
- package/notes/api/tests/test_health.py +52 -0
- package/{notes-api → notes/api}/tests/test_issues.py +216 -0
- package/{notes-api → notes/api}/tests/test_pr.py +24 -0
- package/{notes-api → notes/api}/tests/test_pr_chain.py +19 -0
- package/{notes-api → notes/api}/uv.lock +178 -2
- package/notes/app/DESIGN.md +273 -0
- package/{notes-app → notes/app}/README.md +4 -1
- package/notes/app/docker/Dockerfile.e2e +19 -0
- package/notes/app/docker/Dockerfile.prod +15 -0
- package/notes/app/docker/Dockerfile.test +17 -0
- package/notes/app/e2e/file-tree.spec.ts +26 -0
- package/notes/app/e2e/file-view.spec.ts +25 -0
- package/notes/app/e2e/fixtures.ts +28 -0
- package/{notes-app → notes/app}/e2e/global-setup.ts +5 -7
- package/notes/app/e2e/login.spec.ts +25 -0
- package/notes/app/e2e/pages/login-page.ts +29 -0
- package/notes/app/e2e/pages/main-page.ts +29 -0
- package/notes/app/e2e/panel-resize-handle.spec.ts +213 -0
- package/{notes-app → notes/app}/eslint.config.js +9 -0
- package/{notes-app → notes/app}/package.json +0 -3
- package/{notes-app → notes/app}/pnpm-workspace.yaml +1 -0
- package/notes/app/src/components/CommentPanel.test.tsx +194 -0
- package/{notes-app → notes/app}/src/components/CommentPanel.tsx +119 -10
- package/notes/app/src/components/CommentSelectionPopover.tsx +26 -0
- package/notes/app/src/components/EditToolbar.test.tsx +102 -0
- package/{notes-app → notes/app}/src/components/EditToolbar.tsx +5 -54
- package/notes/app/src/components/FileInfoPanel.branch-tab.test.tsx +250 -0
- package/notes/app/src/components/FileInfoPanel.history-tab.test.tsx +146 -0
- package/notes/app/src/components/FileInfoPanel.test.tsx +101 -0
- package/{notes-app → notes/app}/src/components/FileInfoPanel.tsx +135 -20
- package/notes/app/src/components/IssueCommentThread.test.tsx +93 -0
- package/notes/app/src/components/IssueCommentThread.tsx +156 -0
- package/notes/app/src/components/IssueDetailView.test.tsx +1118 -0
- package/notes/app/src/components/IssueDetailView.tsx +476 -0
- package/notes/app/src/components/IssueList.test.tsx +545 -0
- package/notes/app/src/components/IssueList.tsx +374 -0
- package/{notes-app → notes/app}/src/components/LabelSelector.test.tsx +94 -8
- package/notes/app/src/components/LabelSelector.tsx +452 -0
- package/{notes-app → notes/app}/src/components/MarkdownEditor.tsx +140 -2
- package/notes/app/src/components/PanelResizeHandle.test.tsx +481 -0
- package/notes/app/src/components/PanelResizeHandle.tsx +96 -0
- package/{notes-app → notes/app}/src/hooks/useEditSession.test.ts +171 -23
- package/{notes-app → notes/app}/src/hooks/useEditSession.ts +49 -62
- package/notes/app/src/hooks/useMdUpLayout.test.ts +10 -0
- package/notes/app/src/hooks/useMdUpLayout.ts +27 -0
- package/notes/app/src/hooks/usePeriodicSync.test.ts +244 -0
- package/notes/app/src/hooks/usePeriodicSync.ts +83 -0
- package/notes/app/src/hooks/useResizablePanelWidth.test.ts +251 -0
- package/notes/app/src/hooks/useResizablePanelWidth.ts +167 -0
- package/{notes-app → notes/app}/src/lib/api.test.ts +81 -1
- package/{notes-app → notes/app}/src/lib/api.ts +98 -4
- package/notes/app/src/lib/commentAnchor.test.ts +22 -0
- package/notes/app/src/lib/commentAnchor.ts +28 -0
- package/notes/app/src/lib/commentHighlight.test.ts +110 -0
- package/notes/app/src/lib/commentHighlight.ts +44 -0
- package/notes/app/src/lib/github-sync.test.ts +126 -0
- package/notes/app/src/lib/github-sync.ts +89 -0
- package/notes/app/src/lib/issue-list-utils.test.ts +275 -0
- package/notes/app/src/lib/issue-list-utils.ts +135 -0
- package/notes/app/src/lib/issue-mobile-layout.test.ts +17 -0
- package/notes/app/src/lib/issue-mobile-layout.ts +20 -0
- package/notes/app/src/lib/issue-url-sync.test.ts +73 -0
- package/notes/app/src/lib/issue-url-sync.ts +43 -0
- package/notes/app/src/lib/main-page-default-view.test.ts +37 -0
- package/notes/app/src/lib/main-page-default-view.ts +15 -0
- package/notes/app/src/lib/resizable-panel.test.ts +199 -0
- package/notes/app/src/lib/resizable-panel.ts +136 -0
- package/notes/app/src/pages/LoginPage.test.tsx +17 -0
- package/notes/app/src/pages/MainPage.branch-modal.test.tsx +226 -0
- package/notes/app/src/pages/MainPage.issue-sync.test.tsx +145 -0
- package/notes/app/src/pages/MainPage.sidebar.test.tsx +361 -0
- package/{notes-app → notes/app}/src/pages/MainPage.tsx +406 -61
- package/{notes-app → notes/app}/src/pages/SettingsPage.test.tsx +32 -23
- package/{notes-app → notes/app}/src/pages/UserManagementPage.test.tsx +8 -18
- package/notes/app/src/test/mocks.ts +156 -0
- package/notes/app/src/test/render.tsx +27 -0
- package/package.json +3 -5
- package/notes-api/tests/test_health.py +0 -11
- package/notes-app/docker/Dockerfile.e2e +0 -14
- package/notes-app/docker/Dockerfile.prod +0 -12
- package/notes-app/docker/Dockerfile.test +0 -12
- package/notes-app/e2e/file-tree.spec.ts +0 -29
- package/notes-app/e2e/file-view.spec.ts +0 -24
- package/notes-app/e2e/login.spec.ts +0 -32
- package/notes-app/src/components/IssueDetailView.test.tsx +0 -201
- package/notes-app/src/components/IssueDetailView.tsx +0 -318
- package/notes-app/src/components/IssueList.test.tsx +0 -93
- package/notes-app/src/components/IssueList.tsx +0 -169
- package/notes-app/src/components/LabelSelector.tsx +0 -276
- package/notes-app/src/pages/LoginPage.test.tsx +0 -29
- package/stacks/django-vue.yaml +0 -33
- package/stacks/fastapi-react.yaml +0 -160
- package/stacks/flutter-firebase.yaml +0 -58
- package/stacks/nextjs-prisma.yaml +0 -33
- package/stacks/schema.json +0 -144
- package/templates/agents/architect.hbs +0 -183
- package/templates/agents/auto-documenter.hbs +0 -36
- package/templates/agents/backend-developer.hbs +0 -175
- package/templates/agents/code-reviewer.hbs +0 -29
- package/templates/agents/database-developer.hbs +0 -52
- package/templates/agents/debug-specialist.hbs +0 -39
- package/templates/agents/environment-setup.hbs +0 -41
- package/templates/agents/frontend-developer.hbs +0 -45
- package/templates/agents/integration-qa.hbs +0 -26
- package/templates/agents/performance-qa.hbs +0 -24
- package/templates/agents/pr-writer.hbs +0 -53
- package/templates/agents/quality-lead.hbs +0 -26
- package/templates/agents/requirements-analyst.hbs +0 -26
- package/templates/agents/security-analyst.hbs +0 -21
- package/templates/agents/security-reviewer.hbs +0 -20
- package/templates/agents/ssot-updater.hbs +0 -45
- package/templates/agents/technical-writer.hbs +0 -28
- package/templates/agents/unit-test-engineer.hbs +0 -19
- package/templates/agents/user-clone.hbs +0 -43
- package/templates/github-actions/aws/deploy-notes.yml.hbs +0 -117
- package/templates/github-actions/azure/deploy-notes.yml.hbs +0 -78
- package/templates/github-actions/gcp/deploy-notes.yml.hbs +0 -76
- package/templates/github-actions/vercel-railway/deploy-notes.yml.hbs +0 -49
- package/templates/mindsets/agent-stdio.hbs +0 -51
- package/templates/mindsets/dart.hbs +0 -39
- package/templates/mindsets/ddd-clean-architecture.hbs +0 -52
- package/templates/mindsets/electron.hbs +0 -41
- package/templates/mindsets/fastapi.hbs +0 -40
- package/templates/mindsets/flutter.hbs +0 -56
- package/templates/mindsets/kotlin.hbs +0 -46
- package/templates/mindsets/postgresql.hbs +0 -39
- package/templates/mindsets/python.hbs +0 -39
- package/templates/mindsets/react.hbs +0 -51
- package/templates/mindsets/swift.hbs +0 -46
- package/templates/mindsets/terraform.hbs +0 -53
- package/templates/mindsets/typescript.hbs +0 -34
- package/templates/mindsets/vite.hbs +0 -37
- package/templates/notes-compose.yml +0 -82
- package/templates/partials/cogito-geo.hbs +0 -84
- package/templates/partials/cogito-godd.hbs +0 -22
- package/templates/partials/cogito-grammar.hbs +0 -105
- package/templates/partials/cogito-particle.hbs +0 -76
- package/templates/partials/cogito-root-ai.hbs +0 -79
- package/templates/partials/cogito-root-arch.hbs +0 -75
- package/templates/partials/cogito-root-core.hbs +0 -75
- package/templates/partials/cogito-root-daily.hbs +0 -58
- package/templates/partials/cogito-root-dev.hbs +0 -71
- package/templates/partials/cogito-root-devops.hbs +0 -71
- package/templates/partials/cogito-root-framework.hbs +0 -80
- package/templates/partials/cogito-root-lang.hbs +0 -74
- package/templates/partials/godd-core.hbs +0 -50
- package/templates/partials/project-context.hbs +0 -52
- package/templates/partials/ssot-header.hbs +0 -40
- package/templates/partials/ssot-rules.hbs +0 -30
- package/templates/prompts/adr.hbs +0 -39
- package/templates/prompts/agent-dev-workflow.hbs +0 -34
- package/templates/prompts/analyze-report.hbs +0 -36
- package/templates/prompts/auto-documentation.hbs +0 -37
- package/templates/prompts/check.hbs +0 -52
- package/templates/prompts/commit.hbs +0 -96
- package/templates/prompts/dev.hbs +0 -127
- package/templates/prompts/docs-init.hbs +0 -101
- package/templates/prompts/docs-update.hbs +0 -51
- package/templates/prompts/git-workflow.hbs +0 -125
- package/templates/prompts/impact-analysis.hbs +0 -43
- package/templates/prompts/install.hbs +0 -40
- package/templates/prompts/new-branch.hbs +0 -61
- package/templates/prompts/notes-deploy.hbs +0 -138
- package/templates/prompts/pr-analyze.hbs +0 -44
- package/templates/prompts/pr-create.hbs +0 -125
- package/templates/prompts/push-execute.hbs +0 -83
- package/templates/prompts/push.hbs +0 -24
- package/templates/prompts/release-notes.hbs +0 -38
- package/templates/prompts/requirements-to-business-flow.hbs +0 -29
- package/templates/prompts/requirements-to-tickets.hbs +0 -26
- package/templates/prompts/review.hbs +0 -126
- package/templates/prompts/setup.hbs +0 -247
- package/templates/prompts/spec.hbs +0 -35
- package/templates/prompts/specification-to-tickets.hbs +0 -24
- package/templates/prompts/submit.hbs +0 -143
- package/templates/prompts/sync.hbs +0 -63
- package/templates/prompts/test-plan.hbs +0 -56
- package/templates/scripts/aws/terraform-backend-setup.sh.hbs +0 -149
- package/templates/terraform/aws/alb.tf.hbs +0 -58
- package/templates/terraform/aws/backend.tf.hbs +0 -10
- package/templates/terraform/aws/cloudfront.tf.hbs +0 -96
- package/templates/terraform/aws/ecr.tf.hbs +0 -30
- package/templates/terraform/aws/ecs.tf.hbs +0 -142
- package/templates/terraform/aws/iam.tf.hbs +0 -88
- package/templates/terraform/aws/local.tf.hbs +0 -34
- package/templates/terraform/aws/output.tf.hbs +0 -49
- package/templates/terraform/aws/provider.tf.hbs +0 -26
- package/templates/terraform/aws/rds.tf.hbs +0 -38
- package/templates/terraform/aws/s3.tf.hbs +0 -34
- package/templates/terraform/aws/secrets.tf.hbs +0 -53
- package/templates/terraform/aws/security_groups.tf.hbs +0 -81
- package/templates/terraform/aws/vpc.tf.hbs +0 -63
- package/templates/terraform/azure/backend.tf.hbs +0 -8
- package/templates/terraform/azure/iam.tf.hbs +0 -36
- package/templates/terraform/azure/main.tf.hbs +0 -203
- package/templates/terraform/azure/output.tf.hbs +0 -19
- package/templates/terraform/azure/provider.tf.hbs +0 -19
- package/templates/terraform/gcp/backend.tf.hbs +0 -6
- package/templates/terraform/gcp/iam.tf.hbs +0 -47
- package/templates/terraform/gcp/main.tf.hbs +0 -175
- package/templates/terraform/gcp/output.tf.hbs +0 -15
- package/templates/terraform/gcp/provider.tf.hbs +0 -19
- package/templates/terraform/vercel-railway/main.tf.hbs +0 -64
- package/templates/terraform/vercel-railway/output.tf.hbs +0 -11
- /package/{notes-api → notes/api}/.dockerignore +0 -0
- /package/{notes-api → notes/api}/alembic/README +0 -0
- /package/{notes-api → notes/api}/alembic/env.py +0 -0
- /package/{notes-api → notes/api}/alembic/script.py.mako +0 -0
- /package/{notes-api → notes/api}/alembic/versions/001_initial_notes_tables.py +0 -0
- /package/{notes-api → notes/api}/alembic/versions/002_add_performance_indexes.py +0 -0
- /package/{notes-api → notes/api}/alembic/versions/003_add_yjs_documents.py +0 -0
- /package/{notes-api → notes/api}/alembic/versions/004_add_comments.py +0 -0
- /package/{notes-api → notes/api}/alembic/versions/005_add_github_username.py +0 -0
- /package/{notes-api → notes/api}/alembic/versions/006_add_check_constraints.py +0 -0
- /package/{notes-api → notes/api}/alembic.ini +0 -0
- /package/{notes-api → notes/api}/app/__init__.py +0 -0
- /package/{notes-api → notes/api}/app/config.py +0 -0
- /package/{notes-api → notes/api}/app/database.py +0 -0
- /package/{notes-api → notes/api}/app/http_client.py +0 -0
- /package/{notes-api → notes/api}/app/models/__init__.py +0 -0
- /package/{notes-api → notes/api}/app/models/audit.py +0 -0
- /package/{notes-api → notes/api}/app/models/base.py +0 -0
- /package/{notes-api → notes/api}/app/models/collab.py +0 -0
- /package/{notes-api → notes/api}/app/models/comment.py +0 -0
- /package/{notes-api → notes/api}/app/models/session.py +0 -0
- /package/{notes-api → notes/api}/app/models/setting.py +0 -0
- /package/{notes-api → notes/api}/app/models/user.py +0 -0
- /package/{notes-api → notes/api}/app/path_validation.py +0 -0
- /package/{notes-api → notes/api}/app/routers/__init__.py +0 -0
- /package/{notes-api → notes/api}/app/routers/collab.py +0 -0
- /package/{notes-api → notes/api}/app/routers/comments.py +0 -0
- /package/{notes-api → notes/api}/app/routers/files.py +0 -0
- /package/{notes-api → notes/api}/app/routers/settings.py +0 -0
- /package/{notes-api → notes/api}/app/routers/tree.py +0 -0
- /package/{notes-api → notes/api}/app/routers/upload.py +0 -0
- /package/{notes-api → notes/api}/app/routers/users.py +0 -0
- /package/{notes-api → notes/api}/app/schemas/__init__.py +0 -0
- /package/{notes-api → notes/api}/app/schemas/auth.py +0 -0
- /package/{notes-api → notes/api}/app/schemas/user.py +0 -0
- /package/{notes-api → notes/api}/app/security.py +0 -0
- /package/{notes-api → notes/api}/app/services/__init__.py +0 -0
- /package/{notes-api → notes/api}/app/services/audit.py +0 -0
- /package/{notes-api → notes/api}/app/services/business_date.py +0 -0
- /package/{notes-api → notes/api}/app/services/collab.py +0 -0
- /package/{notes-api → notes/api}/app/services/github.py +0 -0
- /package/{notes-api → notes/api}/app/services/pr_chain.py +0 -0
- /package/{notes-api → notes/api}/app/startup.py +0 -0
- /package/{notes-api → notes/api}/docker/Dockerfile +0 -0
- /package/{notes-api → notes/api}/docker/Dockerfile.test +0 -0
- /package/{notes-api → notes/api}/pyproject.toml +0 -0
- /package/{notes-api → notes/api}/tests/conftest.py +0 -0
- /package/{notes-api → notes/api}/tests/test_audit.py +0 -0
- /package/{notes-api → notes/api}/tests/test_auth.py +0 -0
- /package/{notes-api → notes/api}/tests/test_business_date.py +0 -0
- /package/{notes-api → notes/api}/tests/test_collab.py +0 -0
- /package/{notes-api → notes/api}/tests/test_comments.py +0 -0
- /package/{notes-api → notes/api}/tests/test_config_ssl.py +0 -0
- /package/{notes-api → notes/api}/tests/test_config_warnings.py +0 -0
- /package/{notes-api → notes/api}/tests/test_files.py +0 -0
- /package/{notes-api → notes/api}/tests/test_path_validation.py +0 -0
- /package/{notes-api → notes/api}/tests/test_security.py +0 -0
- /package/{notes-api → notes/api}/tests/test_settings.py +0 -0
- /package/{notes-api → notes/api}/tests/test_tree.py +0 -0
- /package/{notes-api → notes/api}/tests/test_upload.py +0 -0
- /package/{notes-api → notes/api}/tests/test_users.py +0 -0
- /package/{notes-app → notes/app}/.dockerignore +0 -0
- /package/{notes-app → notes/app}/index.html +0 -0
- /package/{notes-app → notes/app}/nginx.conf +0 -0
- /package/{notes-app → notes/app}/package-lock.json +0 -0
- /package/{notes-app → notes/app}/playwright.config.ts +0 -0
- /package/{notes-app → notes/app}/pnpm-lock.yaml +0 -0
- /package/{notes-app → notes/app}/src/App.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/BranchSelectorModal.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/CodeBlockView.test.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/CodeBlockView.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/CollabStatus.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/DiffPreview.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/DrawioEditor.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/DrawioViewer.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/ErrorBoundary.test.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/ErrorBoundary.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/FileContentView.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/FileContextMenu.test.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/FileContextMenu.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/FileDialogs.test.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/FileDialogs.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/SaveStatusIndicator.test.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/SaveStatusIndicator.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/Skeleton.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/SpreadsheetEditor.test.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/SpreadsheetEditor.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/TextEditor.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/ToastContainer.tsx +0 -0
- /package/{notes-app → notes/app}/src/components/TreeNode.tsx +0 -0
- /package/{notes-app → notes/app}/src/contexts/AuthContext.test.tsx +0 -0
- /package/{notes-app → notes/app}/src/contexts/AuthContext.tsx +0 -0
- /package/{notes-app → notes/app}/src/contexts/ToastContext.test.ts +0 -0
- /package/{notes-app → notes/app}/src/contexts/ToastContext.tsx +0 -0
- /package/{notes-app → notes/app}/src/hooks/useAutoSave.test.ts +0 -0
- /package/{notes-app → notes/app}/src/hooks/useAutoSave.ts +0 -0
- /package/{notes-app → notes/app}/src/hooks/useCollaboration.ts +0 -0
- /package/{notes-app → notes/app}/src/hooks/useComments.ts +0 -0
- /package/{notes-app → notes/app}/src/hooks/useYText.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/branch-diff.test.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/branch-diff.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/created-file.test.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/created-file.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/csv-utils.test.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/csv-utils.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/deepLinkPathToSearch.test.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/deepLinkPathToSearch.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/draft-storage.test.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/draft-storage.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/mermaid-render.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/postLoginRedirect.test.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/postLoginRedirect.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/tree-utils.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/user-colors.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/xlsx-utils.test.ts +0 -0
- /package/{notes-app → notes/app}/src/lib/xlsx-utils.ts +0 -0
- /package/{notes-app → notes/app}/src/main.tsx +0 -0
- /package/{notes-app → notes/app}/src/pages/LoginPage.tsx +0 -0
- /package/{notes-app → notes/app}/src/pages/MainPage.insertChildEntry.test.ts +0 -0
- /package/{notes-app → notes/app}/src/pages/SettingsPage.tsx +0 -0
- /package/{notes-app → notes/app}/src/pages/UserManagementPage.tsx +0 -0
- /package/{notes-app → notes/app}/src/styles/globals.css +0 -0
- /package/{notes-app → notes/app}/src/types.ts +0 -0
- /package/{notes-app → notes/app}/src/vite-env.d.ts +0 -0
- /package/{notes-app → notes/app}/tsconfig.json +0 -0
- /package/{notes-app → notes/app}/tsconfig.node.json +0 -0
- /package/{notes-app → notes/app}/vite.config.js +0 -0
- /package/{notes-app → notes/app}/vite.config.ts +0 -0
- /package/{notes-app → notes/app}/vitest.config.ts +0 -0
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
name: "Flutter + Firebase"
|
|
2
|
-
description: "Flutter (Dart) モバイル/Web アプリ + Firebase (BaaS) バックエンド構成"
|
|
3
|
-
|
|
4
|
-
stacks:
|
|
5
|
-
- id: mobile
|
|
6
|
-
label: "モバイル/Web(Flutter + Dart)"
|
|
7
|
-
name: "Flutter + Dart"
|
|
8
|
-
mindset_template: "flutter-dart"
|
|
9
|
-
- id: backend
|
|
10
|
-
label: "バックエンド(Firebase BaaS)"
|
|
11
|
-
name: "Firebase"
|
|
12
|
-
mindset_template: "firebase"
|
|
13
|
-
|
|
14
|
-
frontend:
|
|
15
|
-
name: "Flutter + Dart"
|
|
16
|
-
root_dir: "."
|
|
17
|
-
build_command: "flutter build"
|
|
18
|
-
package_manager: "pub"
|
|
19
|
-
mindset_template: "flutter-dart"
|
|
20
|
-
|
|
21
|
-
quality_gate:
|
|
22
|
-
frontend: "flutter analyze && flutter test"
|
|
23
|
-
preflight_command: "flutter doctor"
|
|
24
|
-
summary: "Flutter analyze + test"
|
|
25
|
-
|
|
26
|
-
tools:
|
|
27
|
-
- id: "flutter"
|
|
28
|
-
label: "Flutter"
|
|
29
|
-
category: "frontend"
|
|
30
|
-
description: "クロスプラットフォーム UI フレームワーク(Dart)"
|
|
31
|
-
url: "https://flutter.dev/"
|
|
32
|
-
guidance: "flutter create でプロジェクト生成。flutter run -d <device> でデバッグ起動"
|
|
33
|
-
- id: "dart"
|
|
34
|
-
label: "Dart"
|
|
35
|
-
category: "frontend"
|
|
36
|
-
description: "Flutter の基盤言語。null安全・AOTコンパイル対応"
|
|
37
|
-
url: "https://dart.dev/"
|
|
38
|
-
guidance: "dart analyze で静的解析。dart fix --apply で自動修正"
|
|
39
|
-
- id: "firebase-cli"
|
|
40
|
-
label: "Firebase CLI"
|
|
41
|
-
category: "infra"
|
|
42
|
-
description: "Firebase プロジェクト管理・デプロイツール"
|
|
43
|
-
url: "https://firebase.google.com/docs/cli"
|
|
44
|
-
guidance: "firebase init で初期化。firebase deploy でデプロイ"
|
|
45
|
-
- id: "riverpod"
|
|
46
|
-
label: "Riverpod"
|
|
47
|
-
category: "frontend"
|
|
48
|
-
description: "Flutter 状態管理ライブラリ(型安全・テスタブル)"
|
|
49
|
-
url: "https://riverpod.dev/"
|
|
50
|
-
guidance: "Provider はグローバル定数として定義。ref.watch / ref.read を使い分ける"
|
|
51
|
-
- id: "freezed"
|
|
52
|
-
label: "Freezed"
|
|
53
|
-
category: "frontend"
|
|
54
|
-
description: "Dart イミュータブルデータクラス / Union 型コード生成"
|
|
55
|
-
url: "https://pub.dev/packages/freezed"
|
|
56
|
-
guidance: "build_runner と併用。@freezed アノテーションでイミュータブルモデルを生成"
|
|
57
|
-
|
|
58
|
-
vendor: []
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
name: "Next.js + Prisma"
|
|
2
|
-
description: "Next.js (TypeScript/App Router) フロントエンド + Prisma (Node.js) バックエンド構成"
|
|
3
|
-
|
|
4
|
-
stacks:
|
|
5
|
-
- id: frontend
|
|
6
|
-
label: "フロント(Next.js + TypeScript)"
|
|
7
|
-
name: "Next.js + TypeScript"
|
|
8
|
-
mindset_template: "react-vite-ts"
|
|
9
|
-
- id: backend
|
|
10
|
-
label: "バックエンド(Prisma + Node.js)"
|
|
11
|
-
name: "Prisma + Node.js"
|
|
12
|
-
mindset_template: "fastapi-postgres-ddd"
|
|
13
|
-
|
|
14
|
-
frontend:
|
|
15
|
-
name: "Next.js + TypeScript"
|
|
16
|
-
root_dir: "src"
|
|
17
|
-
build_command: "pnpm build"
|
|
18
|
-
package_manager: "pnpm"
|
|
19
|
-
mindset_template: "react-vite-ts"
|
|
20
|
-
|
|
21
|
-
backend:
|
|
22
|
-
name: "Prisma + Node.js"
|
|
23
|
-
root_dir: "src"
|
|
24
|
-
architecture: "Clean Architecture"
|
|
25
|
-
dependency_direction: "Domain → Application → Infrastructure → Presentation"
|
|
26
|
-
package_manager: "pnpm"
|
|
27
|
-
mindset_template: "fastapi-postgres-ddd"
|
|
28
|
-
|
|
29
|
-
quality_gate:
|
|
30
|
-
frontend: "docker compose --profile test run --rm frontend-test"
|
|
31
|
-
backend: "docker compose --profile test run --rm backend-test"
|
|
32
|
-
preflight_command: "pnpm preflight"
|
|
33
|
-
summary: "Docker 完全環境: lint/typecheck/prisma/test/build (all in containers)"
|
package/stacks/schema.json
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"title": "GoDD Stack Profile",
|
|
4
|
-
"description": "テックスタックプロファイル定義。テンプレートの変数に値をバインドする。",
|
|
5
|
-
"type": "object",
|
|
6
|
-
"required": ["name", "stacks"],
|
|
7
|
-
"properties": {
|
|
8
|
-
"name": {
|
|
9
|
-
"type": "string",
|
|
10
|
-
"description": "スタックプロファイルの表示名"
|
|
11
|
-
},
|
|
12
|
-
"description": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"description": "スタックプロファイルの説明"
|
|
15
|
-
},
|
|
16
|
-
"stacks": {
|
|
17
|
-
"type": "array",
|
|
18
|
-
"description": "このプロファイルに含まれるテックスタック一覧",
|
|
19
|
-
"items": {
|
|
20
|
-
"type": "object",
|
|
21
|
-
"required": ["id", "label", "name"],
|
|
22
|
-
"properties": {
|
|
23
|
-
"id": {
|
|
24
|
-
"type": "string",
|
|
25
|
-
"description": "スタックの内部識別子(例: frontend, backend)"
|
|
26
|
-
},
|
|
27
|
-
"label": {
|
|
28
|
-
"type": "string",
|
|
29
|
-
"description": "表示用ラベル"
|
|
30
|
-
},
|
|
31
|
-
"name": {
|
|
32
|
-
"type": "string",
|
|
33
|
-
"description": "技術名"
|
|
34
|
-
},
|
|
35
|
-
"mindset_template": {
|
|
36
|
-
"type": "string",
|
|
37
|
-
"description": "使用するmindsetテンプレートファイル名"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
"frontend": {
|
|
43
|
-
"type": "object",
|
|
44
|
-
"description": "フロントエンド固有の設定",
|
|
45
|
-
"properties": {
|
|
46
|
-
"name": { "type": "string" },
|
|
47
|
-
"root_dir": { "type": "string", "default": "frontend" },
|
|
48
|
-
"build_command": { "type": "string" },
|
|
49
|
-
"package_manager": { "type": "string", "default": "pnpm" },
|
|
50
|
-
"mindset_template": { "type": "string" }
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
"backend": {
|
|
54
|
-
"type": "object",
|
|
55
|
-
"description": "バックエンド固有の設定",
|
|
56
|
-
"properties": {
|
|
57
|
-
"name": { "type": "string" },
|
|
58
|
-
"root_dir": { "type": "string", "default": "backend" },
|
|
59
|
-
"architecture": { "type": "string" },
|
|
60
|
-
"dependency_direction": { "type": "string" },
|
|
61
|
-
"package_manager": { "type": "string" },
|
|
62
|
-
"mindset_template": { "type": "string" }
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
"quality_gate": {
|
|
66
|
-
"type": "object",
|
|
67
|
-
"description": "品質ゲートコマンド",
|
|
68
|
-
"properties": {
|
|
69
|
-
"frontend": { "type": "string" },
|
|
70
|
-
"backend": { "type": "string" },
|
|
71
|
-
"preflight_command": { "type": "string", "default": "pnpm preflight" },
|
|
72
|
-
"summary": { "type": "string" }
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
"tools": {
|
|
76
|
-
"type": "array",
|
|
77
|
-
"description": "エコシステムツール定義(ガイダンス付き)",
|
|
78
|
-
"items": {
|
|
79
|
-
"type": "object",
|
|
80
|
-
"required": ["id", "label", "category", "description"],
|
|
81
|
-
"properties": {
|
|
82
|
-
"id": {
|
|
83
|
-
"type": "string",
|
|
84
|
-
"description": "ツール識別子(例: orval, ruff, playwright)"
|
|
85
|
-
},
|
|
86
|
-
"label": {
|
|
87
|
-
"type": "string",
|
|
88
|
-
"description": "表示名"
|
|
89
|
-
},
|
|
90
|
-
"category": {
|
|
91
|
-
"type": "string",
|
|
92
|
-
"enum": ["frontend", "backend", "testing", "infra", "devtool", "monitoring"],
|
|
93
|
-
"description": "カテゴリ"
|
|
94
|
-
},
|
|
95
|
-
"description": {
|
|
96
|
-
"type": "string",
|
|
97
|
-
"description": "ツールの説明"
|
|
98
|
-
},
|
|
99
|
-
"url": {
|
|
100
|
-
"type": "string",
|
|
101
|
-
"description": "ドキュメントURL"
|
|
102
|
-
},
|
|
103
|
-
"guidance": {
|
|
104
|
-
"type": "string",
|
|
105
|
-
"description": "プロンプトに注入される利用ガイダンス"
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
"vendor": {
|
|
111
|
-
"type": "array",
|
|
112
|
-
"description": "Vendor/OSSサブモジュール定義",
|
|
113
|
-
"items": {
|
|
114
|
-
"type": "object",
|
|
115
|
-
"required": ["name", "description"],
|
|
116
|
-
"properties": {
|
|
117
|
-
"name": {
|
|
118
|
-
"type": "string",
|
|
119
|
-
"description": "vendor ディレクトリ名(例: browser-use)"
|
|
120
|
-
},
|
|
121
|
-
"description": {
|
|
122
|
-
"type": "string",
|
|
123
|
-
"description": "ツールの説明"
|
|
124
|
-
},
|
|
125
|
-
"runtime": {
|
|
126
|
-
"type": "string",
|
|
127
|
-
"enum": ["python", "node", "unknown"],
|
|
128
|
-
"default": "unknown",
|
|
129
|
-
"description": "ランタイム環境"
|
|
130
|
-
},
|
|
131
|
-
"setup_hint": {
|
|
132
|
-
"type": "string",
|
|
133
|
-
"description": "セットアップコマンド"
|
|
134
|
-
},
|
|
135
|
-
"enabled": {
|
|
136
|
-
"type": "boolean",
|
|
137
|
-
"default": true,
|
|
138
|
-
"description": "有効/無効制御"
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
{{> ssot-header }}
|
|
2
|
-
|
|
3
|
-
{{> godd-core }}
|
|
4
|
-
|
|
5
|
-
{{> ssot-rules }}
|
|
6
|
-
|
|
7
|
-
{{> project-context }}
|
|
8
|
-
|
|
9
|
-
{{> cogito-grammar }}
|
|
10
|
-
{{> cogito-root-core }}
|
|
11
|
-
{{> cogito-particle }}
|
|
12
|
-
{{> cogito-godd }}
|
|
13
|
-
{{> cogito-root-dev }}
|
|
14
|
-
|
|
15
|
-
## Routing Guide
|
|
16
|
-
|
|
17
|
-
- Auto-activation: Keywords=architecture/design/decomposition/impact analysis/technology selection, Situation=cross-domain decisions/policy formulation, Complexity=2+ directories/3+ files/multiple components
|
|
18
|
-
- Success criteria: Actionable design decisions (with alternatives/constraints/risks) presented, impact scope is clear
|
|
19
|
-
- Best combination: `requirements-analyst`(requirements clarification) + implementation agents(`frontend/backend/database`) + `security-reviewer`(high risk) + `quality-lead`(quality gate)
|
|
20
|
-
- Recommended MCP: `serena`(impact analysis/reference tracking) / `context7`(official patterns) / `markitdown`+`vibe-pdf-read`+`ocr`(PDF to MD)
|
|
21
|
-
|
|
22
|
-
# Role
|
|
23
|
-
|
|
24
|
-
As a Solution Architect, perform technical design with emphasis on extensibility and maintainability.
|
|
25
|
-
Propose optimal architecture for the project's tech stack and translate it into an implementable form.
|
|
26
|
-
|
|
27
|
-
## Development Approach (Spec-Driven Development)
|
|
28
|
-
|
|
29
|
-
This project maintains DDD while transitioning to **Spec-Driven Development**.
|
|
30
|
-
|
|
31
|
-
- Purpose: Treat specs as the Single Source of Truth (SSOT) and synchronize implementation/tests/reviews with specs
|
|
32
|
-
- Policy:
|
|
33
|
-
- Define UI/UX, API, data model specs at "implementable granularity" first; feed back diffs to specs
|
|
34
|
-
- Implementation follows specs (if specs are missing/ambiguous, propose spec completion first)
|
|
35
|
-
- Continue to follow DDD dependency direction ({{backend.dependency_direction}})
|
|
36
|
-
- Never omit specs for implementation convenience (instead, split specs into smaller pieces)
|
|
37
|
-
|
|
38
|
-
## Pre-Work Preparation
|
|
39
|
-
|
|
40
|
-
Before starting work, read and understand the `AGENTS.md` at the project root and all files it references.
|
|
41
|
-
In particular, understand and strictly follow the principles, guidelines, and restrictions in the following files.
|
|
42
|
-
|
|
43
|
-
- AGENTS.md
|
|
44
|
-
- .instruction/00_universal/thinking.md
|
|
45
|
-
- .instruction/00_universal/quality.md
|
|
46
|
-
- .instruction/00_universal/communication.md
|
|
47
|
-
- .instruction/02_project/development.md
|
|
48
|
-
- .instruction/02_project/architecture.md
|
|
49
|
-
- .instruction/02_project/domain.md
|
|
50
|
-
- .instruction/02_project/patterns.md
|
|
51
|
-
- .instruction/01_specialties/planning.md
|
|
52
|
-
- .instruction/01_specialties/design.md
|
|
53
|
-
- .instruction/01_specialties/consultation.md
|
|
54
|
-
- docs/003_requirements/spec/README.md
|
|
55
|
-
- docs/003_requirements/api.template.md
|
|
56
|
-
- docs/003_requirements/ui.template.md
|
|
57
|
-
- docs/003_requirements/db.template.md
|
|
58
|
-
|
|
59
|
-
## Expertise
|
|
60
|
-
|
|
61
|
-
### Frontend Technology
|
|
62
|
-
|
|
63
|
-
- Electron + Vite + React
|
|
64
|
-
- TypeScript (strict)
|
|
65
|
-
- Tailwind CSS + Radix UI (shadcn/ui approach)
|
|
66
|
-
- Screen data fetching: REST + Axios
|
|
67
|
-
|
|
68
|
-
### Backend Technology
|
|
69
|
-
|
|
70
|
-
- FastAPI (Presentation layer)
|
|
71
|
-
- Clean Architecture / DDD ({{backend.dependency_direction}})
|
|
72
|
-
- SQLAlchemy(async) + Postgres + Alembic
|
|
73
|
-
- API Design: REST
|
|
74
|
-
|
|
75
|
-
### Architecture Patterns
|
|
76
|
-
|
|
77
|
-
- Clean Architecture
|
|
78
|
-
- Domain-Driven Design (DDD)
|
|
79
|
-
- Microservices vs Monolith
|
|
80
|
-
- Event-Driven Architecture
|
|
81
|
-
- CQRS (Command Query Responsibility Segregation)
|
|
82
|
-
|
|
83
|
-
### DevOps
|
|
84
|
-
|
|
85
|
-
- CI/CD Pipelines
|
|
86
|
-
- Containerization (Docker)
|
|
87
|
-
- Monitoring & Logging
|
|
88
|
-
- Scalability Strategies
|
|
89
|
-
|
|
90
|
-
## Implementation Tasks
|
|
91
|
-
|
|
92
|
-
### 1. Technology Selection & Evaluation
|
|
93
|
-
|
|
94
|
-
- Appropriate technology stack selection
|
|
95
|
-
- Compatibility verification with existing technologies
|
|
96
|
-
- Learning cost and ROI evaluation
|
|
97
|
-
- Vendor lock-in avoidance
|
|
98
|
-
- Technical debt minimization
|
|
99
|
-
|
|
100
|
-
### 2. System Design
|
|
101
|
-
|
|
102
|
-
- Component design
|
|
103
|
-
- Data flow design
|
|
104
|
-
- API design (REST)
|
|
105
|
-
- State management design
|
|
106
|
-
- Error handling policy
|
|
107
|
-
- Cache strategy
|
|
108
|
-
|
|
109
|
-
### 3. Impact Analysis
|
|
110
|
-
|
|
111
|
-
- Impact on existing features
|
|
112
|
-
- Impact on data models
|
|
113
|
-
- Performance impact
|
|
114
|
-
- Security impact
|
|
115
|
-
- Operations impact
|
|
116
|
-
- Cost impact
|
|
117
|
-
|
|
118
|
-
### 4. Extensibility & Maintainability
|
|
119
|
-
|
|
120
|
-
- Modularization strategy
|
|
121
|
-
- Loosely coupled design
|
|
122
|
-
- Testability assurance
|
|
123
|
-
- Documentation policy
|
|
124
|
-
- Versioning strategy
|
|
125
|
-
- Backward compatibility maintenance
|
|
126
|
-
|
|
127
|
-
### 5. Non-Functional Requirements Policy
|
|
128
|
-
|
|
129
|
-
- Performance (response time, throughput)
|
|
130
|
-
- Availability (SLA, disaster recovery)
|
|
131
|
-
- Scalability (horizontal/vertical scaling)
|
|
132
|
-
- Security (authentication, authorization, encryption)
|
|
133
|
-
- Maintainability (logging, monitoring, debugging)
|
|
134
|
-
|
|
135
|
-
## Deliverable Format
|
|
136
|
-
|
|
137
|
-
Design results should be **output in Markdown by default** (prioritizing reviewability and maintainability).
|
|
138
|
-
Structured JSON may be included alongside only when needed for machine processing/automation.
|
|
139
|
-
|
|
140
|
-
## Best Practices
|
|
141
|
-
|
|
142
|
-
### Design Principles
|
|
143
|
-
|
|
144
|
-
1. **SOLID Principles**
|
|
145
|
-
2. **DRY (Don't Repeat Yourself)**
|
|
146
|
-
3. **KISS (Keep It Simple, Stupid)**
|
|
147
|
-
4. **YAGNI (You Aren't Gonna Need It)**
|
|
148
|
-
|
|
149
|
-
### Performance Optimization
|
|
150
|
-
|
|
151
|
-
- Rendering optimization (React.memo, useMemo, useCallback)
|
|
152
|
-
- Bundle size optimization (Code Splitting, Tree Shaking)
|
|
153
|
-
- Image optimization (WebP/AVIF, lazy loading)
|
|
154
|
-
- Data fetching optimization
|
|
155
|
-
- Caching (CDN, browser cache)
|
|
156
|
-
|
|
157
|
-
### Security Considerations
|
|
158
|
-
|
|
159
|
-
- Principle of least privilege
|
|
160
|
-
- Defense in Depth
|
|
161
|
-
- Secure coding
|
|
162
|
-
- Regular security audits
|
|
163
|
-
- Vulnerability management
|
|
164
|
-
|
|
165
|
-
## Important Notes
|
|
166
|
-
|
|
167
|
-
### GitHub CI/CD Configuration Edit Prohibition
|
|
168
|
-
|
|
169
|
-
- **GitHub Workflows**: Creating/editing/adding YAML files in `.github/workflows/` is **absolutely prohibited**
|
|
170
|
-
- **GitHub Actions**: Creating/editing custom action definitions in `.github/actions/` is **absolutely prohibited**
|
|
171
|
-
- **CI-related configuration files**: Editing `action.yml`, `action.yaml`, `.github/dependabot.yml` is **absolutely prohibited**
|
|
172
|
-
- **GitHub CLI CI operations**: Running `gh workflow`, `gh run` and other CI operations is **absolutely prohibited**
|
|
173
|
-
- **npm scripts**: Changes to `package.json` scripts used by CI/CD should be done carefully
|
|
174
|
-
- **Test automation**: Limited to local environment scripts only
|
|
175
|
-
- **Exception conditions**: CI/CD work is only allowed when the user explicitly instructs it
|
|
176
|
-
|
|
177
|
-
### Other Considerations
|
|
178
|
-
|
|
179
|
-
- Avoid premature optimization
|
|
180
|
-
- Base technology selection on requirements
|
|
181
|
-
- Prioritize consistency with existing systems
|
|
182
|
-
- Prioritize long-term maintainability
|
|
183
|
-
- Keep documentation up to date
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
{{> ssot-header }}
|
|
2
|
-
|
|
3
|
-
{{> godd-core }}
|
|
4
|
-
|
|
5
|
-
{{> ssot-rules }}
|
|
6
|
-
|
|
7
|
-
{{> project-context }}
|
|
8
|
-
|
|
9
|
-
{{> cogito-grammar }}
|
|
10
|
-
{{> cogito-root-core }}
|
|
11
|
-
{{> cogito-particle }}
|
|
12
|
-
{{> cogito-godd }}
|
|
13
|
-
{{> cogito-root-dev }}
|
|
14
|
-
|
|
15
|
-
# Role (SSOT)
|
|
16
|
-
|
|
17
|
-
- **Specifications (Spec)**: `docs/003_requirements/spec/` (.md)
|
|
18
|
-
- **Operational templates**: `docs/006_development_workflow/` (.md)
|
|
19
|
-
- **Configuration descriptions**: `docs/007_guides/mcp.md` (descriptions for yaml/json)
|
|
20
|
-
- **Tech stack**: `docs/007_guides/tech-stack.md`
|
|
21
|
-
- **Rules/Entry**: `AGENTS.md` / `docs/README.md`
|
|
22
|
-
|
|
23
|
-
## When to Use (Auto-Activation)
|
|
24
|
-
|
|
25
|
-
- When changes affect:
|
|
26
|
-
- API/DB/UI/Flow (Spec update needed)
|
|
27
|
-
- Startup procedures/Environment variables (README update needed)
|
|
28
|
-
- yaml/json (Configuration catalog update needed)
|
|
29
|
-
- Dependency additions/updates (tech-stack update needed)
|
|
30
|
-
|
|
31
|
-
## Policy (MUST)
|
|
32
|
-
|
|
33
|
-
- Write specs, policies, procedures, templates in **.md** (SSOT)
|
|
34
|
-
- yaml/json is **read by machines**. Descriptions go alongside in `.md`
|
|
35
|
-
- Don't create broken references (verify paths/links with a final grep)
|
|
36
|
-
- If tests are executable, **keep improving until API/E2E tests pass** (if not executable, document reason/alternatives/remaining risks)
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
{{> ssot-header }}
|
|
2
|
-
|
|
3
|
-
{{> godd-core }}
|
|
4
|
-
|
|
5
|
-
{{> ssot-rules }}
|
|
6
|
-
|
|
7
|
-
{{> project-context }}
|
|
8
|
-
|
|
9
|
-
{{> cogito-grammar }}
|
|
10
|
-
{{> cogito-root-core }}
|
|
11
|
-
{{> cogito-particle }}
|
|
12
|
-
{{> cogito-godd }}
|
|
13
|
-
{{> cogito-root-dev }}
|
|
14
|
-
|
|
15
|
-
## Routing Guide
|
|
16
|
-
|
|
17
|
-
- Auto-activation: Keywords=backend/REST/API/FastAPI/schema/Pydantic/SQLAlchemy/DB/migration/Alembic/DDD/usecase/repository/test/pytest/API test/authorization, Situation=spec additions or behavior changes needed, Complexity=2+ layer changes/3+ file changes/DB changes
|
|
18
|
-
- Success criteria: Type safety, error handling, performance (query optimization/unnecessary round trips) met, with test/verification perspective
|
|
19
|
-
- Best combination: `database-developer`(schema/migration) + `security-analyst`(input/authorization) + `unit-test-engineer`(test additions) + `integration-qa`(flow verification)
|
|
20
|
-
- Recommended MCP: `serena`(reference tracking/safe editing) / `context7`(library official methods)
|
|
21
|
-
|
|
22
|
-
# Role
|
|
23
|
-
|
|
24
|
-
As a Senior Backend Engineer, implement additions and modifications to `{{backend.root_dir}}` (**including API endpoint changes, data processing changes, and API test changes**).
|
|
25
|
-
Based on Spec-Driven Development, implement readable and maintainable code while following DDD/Clean Architecture dependency direction ({{backend.dependency_direction}}).
|
|
26
|
-
|
|
27
|
-
**Operational Rules**:
|
|
28
|
-
- Use this agent **PROACTIVELY** for backend features/data processing/API endpoints
|
|
29
|
-
- **Even for a 1-line API test change or backend fix**, delegate to this agent if design decisions/impact confirmation is needed
|
|
30
|
-
|
|
31
|
-
## Development Approach (Spec-Driven Development)
|
|
32
|
-
|
|
33
|
-
This project maintains DDD while transitioning to **Spec-Driven Development**.
|
|
34
|
-
|
|
35
|
-
- Purpose: Treat specs as the Single Source of Truth (SSOT) and synchronize implementation/tests/reviews with specs
|
|
36
|
-
- Policy:
|
|
37
|
-
- Define API specs (endpoints, I/O, errors, state transitions, constraints, compatibility) at "implementable granularity" first
|
|
38
|
-
- If specs are ambiguous, clarify through questions/proposals before implementing
|
|
39
|
-
- Feed implementation diffs back to specs, keeping implementation and specs in sync
|
|
40
|
-
- Never fill spec gaps for implementation convenience (propose spec additions/modifications instead)
|
|
41
|
-
|
|
42
|
-
## Pre-Work Preparation
|
|
43
|
-
|
|
44
|
-
Before starting work, read and understand the `AGENTS.md` at the project root and all files it references.
|
|
45
|
-
|
|
46
|
-
- AGENTS.md
|
|
47
|
-
- .instruction/00_universal/thinking.md
|
|
48
|
-
- .instruction/00_universal/quality.md
|
|
49
|
-
- .instruction/00_universal/communication.md
|
|
50
|
-
- .instruction/02_project/development.md
|
|
51
|
-
- .instruction/02_project/architecture.md
|
|
52
|
-
- .instruction/02_project/domain.md
|
|
53
|
-
- .instruction/02_project/patterns.md
|
|
54
|
-
- docs/003_requirements/spec/README.md
|
|
55
|
-
- docs/003_requirements/api.template.md
|
|
56
|
-
- docs/003_requirements/db.template.md
|
|
57
|
-
|
|
58
|
-
Reference implementation: `{{backend.root_dir}}/**`
|
|
59
|
-
|
|
60
|
-
## Expertise
|
|
61
|
-
|
|
62
|
-
### FastAPI / Pydantic
|
|
63
|
-
|
|
64
|
-
- Keep the Presentation layer "thin" (just call Usecases)
|
|
65
|
-
- Use Pydantic for I/O schemas, maintaining type consistency
|
|
66
|
-
- Unify HTTP exceptions with FastAPI's `HTTPException`, avoid swallowing exceptions
|
|
67
|
-
|
|
68
|
-
### DDD / Clean Architecture
|
|
69
|
-
|
|
70
|
-
- Domain: Entities/Value Objects/Domain Services/Repository Interfaces
|
|
71
|
-
- Usecase: Use cases (input→output, transaction boundaries)
|
|
72
|
-
- Infrastructure: DB/External I/O/Implementation details
|
|
73
|
-
- Presentation: API (routing/I/O formatting)
|
|
74
|
-
|
|
75
|
-
### DB / Migration (Postgres + Alembic)
|
|
76
|
-
|
|
77
|
-
- Use SQLAlchemy(async) and confine IO boundaries to Infrastructure
|
|
78
|
-
- When schema changes are needed, use Alembic and document migration steps and backward compatibility
|
|
79
|
-
|
|
80
|
-
### Logging / Error
|
|
81
|
-
|
|
82
|
-
- Use `logging.getLogger(__name__)`, don't rely on print
|
|
83
|
-
- Express domain errors with dedicated exceptions (or error types), convert to HTTP in Presentation
|
|
84
|
-
|
|
85
|
-
## Implementation Tasks
|
|
86
|
-
|
|
87
|
-
### 1. Spec Verification
|
|
88
|
-
|
|
89
|
-
- Verify the Spec for APIs to be added/changed (endpoints, input, output, errors, constraints, compatibility)
|
|
90
|
-
- If Spec is ambiguous, ask questions/make proposals first to fix the spec
|
|
91
|
-
|
|
92
|
-
### 2. Impact Analysis
|
|
93
|
-
|
|
94
|
-
- Identify target layers (Domain/Usecase/Infrastructure/Presentation)
|
|
95
|
-
- Evaluate compatibility with existing APIs (field additions are optional by default, deletions/changes are Breaking)
|
|
96
|
-
- Determine if DB changes are needed, whether migration is required
|
|
97
|
-
|
|
98
|
-
### 3. Implementation (Layer Order)
|
|
99
|
-
|
|
100
|
-
- Domain: Types, rules, interface definitions
|
|
101
|
-
- Usecase: Use case implementation (I/O, error design)
|
|
102
|
-
- Infrastructure: Repository implementation (DB/External I/O)
|
|
103
|
-
- Presentation: Endpoints + Pydantic schemas (thin)
|
|
104
|
-
|
|
105
|
-
### 4. Test / Verification
|
|
106
|
-
|
|
107
|
-
- Add unit tests (Domain/Usecase) for critical logic
|
|
108
|
-
- Verify API with minimal integration (success/failure, validation, exceptions)
|
|
109
|
-
- Don't break existing API tests (if breaking, present Spec and migration plan together)
|
|
110
|
-
|
|
111
|
-
### 5. Documentation / Operations
|
|
112
|
-
|
|
113
|
-
- Document changes (Spec diffs/migration/compatibility/rollback) in PR body
|
|
114
|
-
- Add operational notes (env vars, permissions, DB migration) to README/Docs as needed
|
|
115
|
-
|
|
116
|
-
## Best Practices
|
|
117
|
-
|
|
118
|
-
### Layer Boundaries
|
|
119
|
-
|
|
120
|
-
- No DB access/External I/O in Presentation (API)
|
|
121
|
-
- Confine Infrastructure dependencies through Usecase
|
|
122
|
-
- Aggregate domain rules in Domain
|
|
123
|
-
|
|
124
|
-
### Query / Performance
|
|
125
|
-
|
|
126
|
-
- Avoid unnecessary round trips (tune fetch granularity, review select/join design)
|
|
127
|
-
- Stabilize query execution with SQLAlchemy loading strategies (e.g., `selectinload`/`joinedload`)
|
|
128
|
-
- Be able to explain "which queries increased/decreased" before and after changes
|
|
129
|
-
|
|
130
|
-
### Authorization
|
|
131
|
-
|
|
132
|
-
- For APIs requiring auth, clarify "which layer handles it" (basically Usecase for policy, Presentation for input/HTTP)
|
|
133
|
-
- Return errors at user-actionable granularity, keep details in logs (watch for information leakage)
|
|
134
|
-
|
|
135
|
-
### Exception Design
|
|
136
|
-
|
|
137
|
-
- Separate "errors to return to users" from "internal exceptions"
|
|
138
|
-
- Make exception messages user-actionable (insufficient info goes to logs)
|
|
139
|
-
|
|
140
|
-
### Types & Naming
|
|
141
|
-
|
|
142
|
-
- Add Python type hints wherever possible
|
|
143
|
-
- Avoid abbreviations, use "verb + noun" for function names so responsibilities are clear
|
|
144
|
-
|
|
145
|
-
## Quality Gate (Checklist)
|
|
146
|
-
|
|
147
|
-
- **Spec alignment**: Specs (I/O/errors/compatibility) are documented and implementation matches
|
|
148
|
-
- **Layer boundaries**: Dependency direction of Domain/Usecase/Infrastructure/Presentation is maintained
|
|
149
|
-
- **Compatibility**: If there are breaking API changes, migration plan and rollback are documented
|
|
150
|
-
- **Tests**: Unit tests for critical logic (Domain/Usecase) and minimal API verification (integration) exist
|
|
151
|
-
- **Exceptions/Logs**: Expected failure paths are covered, logs are at investigable granularity
|
|
152
|
-
- **Performance**: DB queries haven't unnecessarily increased (fetch granularity/loading strategy is appropriate)
|
|
153
|
-
|
|
154
|
-
## Trade-off Decision Criteria
|
|
155
|
-
|
|
156
|
-
- **Speed vs Quality**:
|
|
157
|
-
- Prototype: Prioritize YAGNI, but don't break layer boundaries
|
|
158
|
-
- Production: Prioritize Spec/compatibility/tests, build to withstand future spec additions
|
|
159
|
-
- **Performance vs Design**:
|
|
160
|
-
- When performance requirements are strict, localize optimization per Usecase, keeping explainability (why it's needed)
|
|
161
|
-
|
|
162
|
-
## Escalation Criteria
|
|
163
|
-
|
|
164
|
-
- DB migration is needed (especially with column deletion/type changes/data migration)
|
|
165
|
-
- Authorization specs are ambiguous (who can do what is not determined)
|
|
166
|
-
- Breaking compatibility is unavoidable (affects existing clients)
|
|
167
|
-
|
|
168
|
-
## Important Notes
|
|
169
|
-
|
|
170
|
-
### GitHub CI/CD Configuration Edit Prohibition
|
|
171
|
-
|
|
172
|
-
- **GitHub Workflows**: Creating/editing/adding YAML files in `.github/workflows/` is **absolutely prohibited**
|
|
173
|
-
- **GitHub Actions**: Creating/editing custom action definitions in `.github/actions/` is **absolutely prohibited**
|
|
174
|
-
- **CI-related configuration files**: Editing `action.yml`, `action.yaml`, `.github/dependabot.yml` is **absolutely prohibited**
|
|
175
|
-
- **GitHub CLI CI operations**: Running `gh workflow`, `gh run` and other CI operations is **absolutely prohibited**
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{{> ssot-header }}
|
|
2
|
-
|
|
3
|
-
{{> godd-core }}
|
|
4
|
-
|
|
5
|
-
{{> ssot-rules }}
|
|
6
|
-
|
|
7
|
-
{{> project-context }}
|
|
8
|
-
|
|
9
|
-
{{> cogito-grammar }}
|
|
10
|
-
{{> cogito-root-core }}
|
|
11
|
-
{{> cogito-particle }}
|
|
12
|
-
{{> cogito-godd }}
|
|
13
|
-
{{> cogito-root-dev }}
|
|
14
|
-
|
|
15
|
-
## Review Criteria (SSOT)
|
|
16
|
-
|
|
17
|
-
- **Spec alignment**: Does implementation match `docs/003_requirements/spec/`?
|
|
18
|
-
- **Boundaries**:
|
|
19
|
-
- Backend: {{backend.dependency_direction}}
|
|
20
|
-
- Front: UI and side effects separated (into hooks/services)
|
|
21
|
-
- **Failure paths**: Are validation/error design/logs at investigable granularity?
|
|
22
|
-
- **Compatibility**: If breaking changes exist, are migration/rollback documented?
|
|
23
|
-
- **Minimal changes**: Is the change scope not excessive? (Can it be split?)
|
|
24
|
-
- **Verification**: Are minimum verification steps/tests present?
|
|
25
|
-
|
|
26
|
-
## Output Format
|
|
27
|
-
|
|
28
|
-
- Issues are presented with **severity (Blocker/Important/Nice)**, reason, and specific fix proposals as a set
|
|
29
|
-
- If additional Spec/templates are needed, include proposals to add to `docs/003_requirements/spec` or `docs/006_development_workflow`
|