@polymorphism-tech/morph-spec 3.0.1 → 3.1.0
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/CLAUDE.md +52 -88
- package/LICENSE +72 -72
- package/README.md +198 -76
- package/bin/detect-agents.js +3 -1
- package/bin/morph-spec.js +10 -0
- package/bin/render-template.js +5 -4
- package/bin/semantic-detect-agents.js +2 -1
- package/bin/{task-manager.js → task-manager.cjs} +12 -1
- package/bin/validate-agents-skills.js +10 -4
- package/bin/validate-agents.js +4 -3
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/getting-started.md +3 -3
- package/docs/templates.md +418 -418
- package/package.json +3 -3
- package/scripts/postinstall.js +132 -132
- package/scripts/reorganize-skills.cjs +1 -1
- package/scripts/validate-agents-structure.cjs +1 -1
- package/scripts/validate-skills.cjs +2 -2
- package/src/commands/analyze-blazor-concurrency.js +193 -193
- package/src/commands/create-story.js +5 -2
- package/src/commands/deploy.js +780 -780
- package/src/commands/detect-agents.js +4 -2
- package/src/commands/generate.js +149 -149
- package/src/commands/lint-fluent.js +352 -352
- package/src/commands/rollback-phase.js +185 -185
- package/src/commands/session-summary.js +291 -291
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/task.js +1 -1
- package/src/commands/troubleshoot.js +222 -222
- package/src/commands/validate-blazor-state.js +210 -210
- package/src/commands/validate-blazor.js +156 -156
- package/src/commands/validate-css.js +84 -84
- package/src/commands/validate-phase.js +221 -221
- package/src/lib/blazor-concurrency-analyzer.js +288 -288
- package/src/lib/blazor-state-validator.js +291 -291
- package/src/lib/blazor-validator.js +374 -374
- package/src/lib/context-generator.js +7 -4
- package/src/lib/css-validator.js +352 -352
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/hook-executor.js +2 -1
- package/src/lib/learning-system.js +520 -520
- package/src/lib/mockup-generator.js +366 -366
- package/src/lib/stack-resolver.js +148 -0
- package/src/lib/standards-context-injector.js +4 -3
- package/src/lib/team-orchestrator.js +2 -1
- package/src/lib/troubleshoot-grep.js +204 -194
- package/src/lib/troubleshoot-index.js +144 -144
- package/src/lib/ui-detector.js +350 -350
- package/src/lib/validation-runner.js +2 -1
- package/src/lib/validators/architecture-validator.js +387 -387
- package/src/lib/validators/package-validator.js +360 -360
- package/src/lib/validators/ui-contrast-validator.js +422 -422
- package/src/utils/file-copier.js +3 -1
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- package/{content → stacks/blazor-azure}/.azure/README.md +2 -2
- package/{content → stacks/blazor-azure}/.azure/pipelines/pipeline-variables.yml +1 -1
- package/{content → stacks/blazor-azure}/.azure/pipelines/prod-pipeline.yml +1 -1
- package/{content → stacks/blazor-azure}/.azure/pipelines/staging-pipeline.yml +1 -1
- package/{content → stacks/blazor-azure}/.claude/commands/morph-preflight.md +227 -227
- package/{content → stacks/blazor-azure}/.claude/commands/morph-troubleshoot.md +122 -122
- package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-setup.md +1 -1
- package/{content → stacks/blazor-azure}/.morph/docs/workflows/enforcement-pipeline.md +3 -3
- package/{content → stacks/blazor-azure}/.morph/hooks/README.md +12 -12
- package/{content → stacks/blazor-azure}/.morph/standards/agent-teams-workflow.md +2 -2
- package/{content → stacks/blazor-azure}/.morph/standards/migration-guide.md +2 -2
- package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy-checklist.md +426 -426
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/backend/dotnet-supabase.md +244 -0
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/frontend/nextjs-supabase.md +335 -0
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md +189 -0
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +170 -0
- package/stacks/nextjs-supabase/.morph/config/agents.json +345 -0
- package/stacks/nextjs-supabase/.morph/config/config.template.json +92 -0
- package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +169 -0
- package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +247 -0
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +697 -0
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +85 -0
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +86 -0
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +498 -0
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +121 -0
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +138 -0
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +162 -0
- package/stacks/nextjs-supabase/.morph/project.md +168 -0
- package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +191 -0
- package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +193 -0
- package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +171 -0
- package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +164 -0
- package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +179 -0
- package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +148 -0
- package/stacks/nextjs-supabase/.morph/templates/contracts.cs +173 -0
- package/stacks/nextjs-supabase/.morph/templates/contracts.ts +168 -0
- package/stacks/nextjs-supabase/.morph/templates/decisions.md +115 -0
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +38 -0
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +48 -0
- package/stacks/nextjs-supabase/.morph/templates/proposal.md +145 -0
- package/stacks/nextjs-supabase/.morph/templates/recap.md +134 -0
- package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +57 -0
- package/stacks/nextjs-supabase/.morph/templates/spec.md +231 -0
- package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +100 -0
- package/stacks/nextjs-supabase/.morph/templates/tasks.md +257 -0
- package/stacks/nextjs-supabase/CLAUDE.md +149 -0
- package/stacks/nextjs-supabase/README.md +112 -0
- /package/{content → stacks/blazor-azure}/.azure/docs/azure-devops-setup.md +0 -0
- /package/{content → stacks/blazor-azure}/.azure/docs/branch-strategy.md +0 -0
- /package/{content → stacks/blazor-azure}/.azure/docs/local-development.md +0 -0
- /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/build-dotnet.yml +0 -0
- /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-app-service.yml +0 -0
- /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-container-app.yml +0 -0
- /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/infra-deploy.yml +0 -0
- /package/{content → stacks/blazor-azure}/.claude/commands/morph-apply.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/commands/morph-archive.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/commands/morph-deploy.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/commands/morph-infra.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/commands/morph-proposal.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/commands/morph-status.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/settings.local.json +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/code-review.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/morph-checklist.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/simulation-checklist.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/morph-replicate.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-clarify.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-design.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-tasks.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-uiux.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/po-pm-advisor.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/prompt-engineer.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/seo-growth-hacker.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/standards-architect.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/dotnet-senior.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ef-modeler.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ms-agent-expert.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/blazor-builder.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/nextjs-expert.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/azure-architect.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/container-specialist.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/asaas-financial.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/azure-identity.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/clerk-auth.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/resend-email.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/code-analyzer.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/testing-specialist.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-3-technologies/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.claude/skills/level-4-patterns/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/.morphversion +0 -0
- /package/{content → stacks/blazor-azure}/.morph/archive/.gitkeep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/config/agents.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/config/config.template.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/docs/workflows/design-impl.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/docs/workflows/fast-track.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/docs/workflows/full-morph.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/docs/workflows/standard.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/docs/workflows/ui-refresh.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/contracts.ts +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/spec.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/tasks.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/contracts.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/decisions.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/spec.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/tasks.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/contracts.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/spec.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/tasks.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/decisions.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/proposal.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/spec.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/examples/state-v3.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/features/.gitkeep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-agents.sh +0 -0
- /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-all.sh +0 -0
- /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-specs.sh +0 -0
- /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-tests.sh +0 -0
- /package/{content → stacks/blazor-azure}/.morph/hooks/task-completed.js +0 -0
- /package/{content → stacks/blazor-azure}/.morph/hooks/teammate-idle.js +0 -0
- /package/{content → stacks/blazor-azure}/.morph/project.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/schemas/agent.schema.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/schemas/tasks.schema.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/specs/.gitkeep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-blazor-ui.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-production.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-setup.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-workflows.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/architecture.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/azure.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/coding.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/dotnet10-migration.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/fluent-ui-setup.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/passkeys-auth.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/standards/vector-search-rag.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/state.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT-FEATURE.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/FluentDesignTheme.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/MudTheme.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/agent.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/clarify-questions.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/component.razor +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Commands.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Entities.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Queries.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/contracts/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/contracts.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/decisions.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/design-system.css +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/.dockerignore.example +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/Dockerfile.example +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/README.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/app-insights.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/app-service.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/azure-pipelines-deploy.yml +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app-env.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.ps1 +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.sh +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/key-vault.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/main.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.dev.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.prod.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.staging.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/sql-database.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/infra/storage.bicep +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-client.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-webhook.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/integrations/azure-identity-config.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/integrations/clerk-config.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/job.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/migration.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/proposal.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/recap.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/repository.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/saas/subscription.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/saas/tenant.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/service.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/simulation.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/spec.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/sprint-status.yaml +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/state.template.json +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/story.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/tasks.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/test.cs +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/ui-components.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/ui-design-system.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/ui-flows.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/templates/ui-mockups.md +0 -0
- /package/{content → stacks/blazor-azure}/.morph/test-infra/example.bicep +0 -0
- /package/{content → stacks/blazor-azure}/CLAUDE.md +0 -0
- /package/{content → stacks/blazor-azure}/README.md +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# MORPH-SPEC - Next.js + Supabase Stack
|
|
2
|
+
|
|
3
|
+
> by Polymorphism Tech
|
|
4
|
+
|
|
5
|
+
Spec-driven development system. Specialized agent hub for .NET 10 Minimal API + Next.js 15 + Supabase Cloud, deployed via Docker on EasyPanel.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## CRITICAL RULES
|
|
10
|
+
|
|
11
|
+
### NEVER:
|
|
12
|
+
- Skip to code without a specification
|
|
13
|
+
- Implement without design approval
|
|
14
|
+
- Ignore standards in `.morph/standards/`
|
|
15
|
+
- Create infrastructure manually (use Docker Compose + EasyPanel)
|
|
16
|
+
- Generate code without defined contracts
|
|
17
|
+
|
|
18
|
+
### ALWAYS:
|
|
19
|
+
- Follow the 5 mandatory phases
|
|
20
|
+
- Generate outputs in `.morph/features/{feature}/`
|
|
21
|
+
- Document decisions in `decisions.md`
|
|
22
|
+
- Checkpoint every 3 implemented tasks
|
|
23
|
+
- Use Infrastructure as Code (Docker Compose, Dockerfiles)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## WORKFLOW (5 Phases)
|
|
28
|
+
|
|
29
|
+
| Phase | Trigger | Actions | Output | Pause? |
|
|
30
|
+
|-------|---------|---------|--------|--------|
|
|
31
|
+
| **1. SETUP** | Feature request | Read project.md, identify stack, activate agents, create folder | proposal.md | No |
|
|
32
|
+
| **2. DESIGN** | Setup done | Spec + contracts + decisions + costs + Docker | spec.md, contracts.cs, contracts.ts, decisions.md | **Yes** |
|
|
33
|
+
| **3. CLARIFY** | Design approved | Ambiguities, questions, edge cases | Updated spec | No |
|
|
34
|
+
| **4. TASKS** | Clarifications resolved | Break into tasks, ordering, checkpoints, dependencies | tasks.md | **Yes** |
|
|
35
|
+
| **5. IMPLEMENT** | Tasks approved | Task by task, checkpoint every 3, recap | Code + recap.md | No |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## PROJECT STRUCTURE
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
project/
|
|
43
|
+
├── CLAUDE.md
|
|
44
|
+
├── .morph/
|
|
45
|
+
│ ├── project.md # Context
|
|
46
|
+
│ ├── config/ # config.json, agents.json
|
|
47
|
+
│ ├── standards/ # supabase-*, nextjs-patterns, easypanel-deploy
|
|
48
|
+
│ ├── templates/ # Output templates
|
|
49
|
+
│ ├── specs/ # ACTIVE specs
|
|
50
|
+
│ ├── features/{feature-name}/ # Features IN DEVELOPMENT
|
|
51
|
+
│ │ ├── proposal.md, spec.md, tasks.md
|
|
52
|
+
│ │ ├── contracts.cs, contracts.ts, decisions.md, recap.md
|
|
53
|
+
│ └── archive/ # COMPLETED features
|
|
54
|
+
├── .claude/skills/ # Agent skills
|
|
55
|
+
├── src/
|
|
56
|
+
│ ├── api/ # .NET 10 Minimal API
|
|
57
|
+
│ └── web/ # Next.js 15 App Router
|
|
58
|
+
├── supabase/ # Migrations, seeds, RLS policies
|
|
59
|
+
├── docker-compose.yml # Local dev environment
|
|
60
|
+
└── Dockerfile.* # Production builds
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## AGENTS
|
|
66
|
+
|
|
67
|
+
### Core (Always Active)
|
|
68
|
+
|
|
69
|
+
| Agent | Responsibilities |
|
|
70
|
+
|-------|-----------------|
|
|
71
|
+
| **Standards Architect** | Standards, naming, review |
|
|
72
|
+
| **Supabase Expert** | DB design, RLS, Auth, Storage, Realtime, pgvector |
|
|
73
|
+
| **Container Specialist** | Docker builds, EasyPanel config, health checks |
|
|
74
|
+
|
|
75
|
+
### Stack, Specialist, Integration, Infra
|
|
76
|
+
|
|
77
|
+
> **Ref:** `.morph/config/agents.json` for full agent table and keywords.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## COST LIMITS
|
|
82
|
+
|
|
83
|
+
| Level | Limit | Requirement |
|
|
84
|
+
|-------|-------|-------------|
|
|
85
|
+
| No approval | Free tier | None |
|
|
86
|
+
| With approval | Up to $25/month | Confirmation |
|
|
87
|
+
| Above $25 | Justification | ADR |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## INFRASTRUCTURE AS CODE
|
|
92
|
+
|
|
93
|
+
> NEVER create infrastructure manually. Everything via Docker Compose + EasyPanel.
|
|
94
|
+
|
|
95
|
+
| Resource | Approach |
|
|
96
|
+
|----------|----------|
|
|
97
|
+
| Local dev (DB, API, Web) | Docker Compose |
|
|
98
|
+
| Production containers | Dockerfiles + EasyPanel |
|
|
99
|
+
| Supabase (DB, Auth, Storage) | Supabase Cloud (managed) |
|
|
100
|
+
| CI/CD | GitHub Actions + EasyPanel auto-deploy |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## TEMPLATES
|
|
105
|
+
|
|
106
|
+
> ALWAYS use `bin/render-template.js` to render. NEVER fill placeholders manually.
|
|
107
|
+
|
|
108
|
+
### Placeholders: `{{PLACEHOLDER}}`
|
|
109
|
+
|
|
110
|
+
| Placeholder | Example |
|
|
111
|
+
|-------------|---------|
|
|
112
|
+
| `{{FEATURE_NAME}}` | `scheduled-reports` |
|
|
113
|
+
| `{{FEATURE_NAME_PASCAL}}` | `ScheduledReports` |
|
|
114
|
+
| `{{FEATURE_NAME_CAMEL}}` | `scheduledReports` |
|
|
115
|
+
| `{{STACK}}` | `NextjsSupabase` |
|
|
116
|
+
| `{{DATE}}`, `{{AUTHOR}}`, `{{NAMESPACE}}` | Auto from config.json |
|
|
117
|
+
|
|
118
|
+
### Available Templates
|
|
119
|
+
|
|
120
|
+
**MORPH outputs:** proposal, spec, contracts.cs, contracts.ts, decisions, tasks, recap
|
|
121
|
+
|
|
122
|
+
**Code:** service.cs, repository.cs, endpoint.cs
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## COMMANDS
|
|
127
|
+
|
|
128
|
+
| Command | Action |
|
|
129
|
+
|---------|--------|
|
|
130
|
+
| `/morph-proposal {feature}` | Full spec pipeline (phases 1-4, auto-continuation with pauses) |
|
|
131
|
+
| `/morph-apply {feature}` | Implement feature (phase 5) |
|
|
132
|
+
| `/morph-status` | Dashboard |
|
|
133
|
+
| `/morph-archive {feature}` | Archive completed feature |
|
|
134
|
+
| `/morph-infra {action}` | Manage Docker/EasyPanel infra |
|
|
135
|
+
| `/morph-preflight` | Pre-deploy validation |
|
|
136
|
+
| `/morph-troubleshoot {error}` | Error troubleshooting |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## REFERENCES
|
|
141
|
+
|
|
142
|
+
- `.morph/project.md` -- Project context
|
|
143
|
+
- `.morph/standards/` -- supabase-auth, supabase-rls, supabase-storage, supabase-pgvector, easypanel-deploy, nextjs-patterns, coding, architecture
|
|
144
|
+
- `.morph/templates/` -- Output templates
|
|
145
|
+
- `.morph/config/agents.json` -- Agents
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Stack: Next.js + Supabase
|
|
2
|
+
|
|
3
|
+
> MORPH-SPEC stack for .NET 10 Minimal API + Next.js 15 + Supabase Cloud + EasyPanel (VPS)
|
|
4
|
+
|
|
5
|
+
## When to Use This Stack
|
|
6
|
+
|
|
7
|
+
| Criteria | This Stack | Blazor+Azure Stack |
|
|
8
|
+
|----------|------------|-------------------|
|
|
9
|
+
| Frontend | React/Next.js (SSR + CSR) | Blazor Server (C# only) |
|
|
10
|
+
| Database | Supabase Cloud (PostgreSQL) | Azure SQL |
|
|
11
|
+
| Auth | Supabase Auth (built-in) | Azure Identity / Clerk |
|
|
12
|
+
| Deploy | VPS + EasyPanel (Docker) | Azure Container Apps |
|
|
13
|
+
| Cost (dev) | ~$6/month | ~$15/month |
|
|
14
|
+
| Cost (prod) | ~$31/month | ~$50+/month |
|
|
15
|
+
| Best for | MVPs, SaaS, AI apps (pgvector) | Enterprise, full-.NET teams |
|
|
16
|
+
| Realtime | Supabase Realtime (PostgreSQL) | SignalR |
|
|
17
|
+
| Vector search | pgvector (native) | Azure AI Search |
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Browser
|
|
23
|
+
|
|
|
24
|
+
v
|
|
25
|
+
Next.js 15 (App Router) Supabase Cloud
|
|
26
|
+
|-- Server Components --------> Auth (JWT validation)
|
|
27
|
+
|-- Client Components --------> PostgREST (direct queries via RLS)
|
|
28
|
+
|-- Route Handlers (BFF) -----> .NET 10 API --> PostgreSQL + pgvector
|
|
29
|
+
| Storage
|
|
30
|
+
v Realtime
|
|
31
|
+
EasyPanel (VPS)
|
|
32
|
+
|-- Next.js Container (:3000)
|
|
33
|
+
|-- .NET API Container (:8080)
|
|
34
|
+
|-- Nginx reverse proxy (:443)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Quick Start
|
|
38
|
+
|
|
39
|
+
### 1. Copy stack to your project
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
cp -r stacks/nextjs-supabase/.morph/ your-project/.morph/
|
|
43
|
+
cp -r stacks/nextjs-supabase/.claude/ your-project/.claude/
|
|
44
|
+
cp stacks/nextjs-supabase/CLAUDE.md your-project/CLAUDE.md
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Configure
|
|
48
|
+
|
|
49
|
+
Edit `.morph/project.md` with your project details.
|
|
50
|
+
|
|
51
|
+
### 3. Start developing
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
/morph-proposal my-feature
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Directory Structure
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
stacks/nextjs-supabase/
|
|
61
|
+
├── CLAUDE.md # Stack-specific Claude instructions
|
|
62
|
+
├── README.md # This file
|
|
63
|
+
├── .morph/
|
|
64
|
+
│ ├── project.md # Project template
|
|
65
|
+
│ ├── config/
|
|
66
|
+
│ │ └── agents.json # 12 agents configured
|
|
67
|
+
│ ├── standards/ # 6 standards
|
|
68
|
+
│ │ ├── supabase-auth.md
|
|
69
|
+
│ │ ├── supabase-rls.md
|
|
70
|
+
│ │ ├── supabase-storage.md
|
|
71
|
+
│ │ ├── supabase-pgvector.md
|
|
72
|
+
│ │ ├── easypanel-deploy.md
|
|
73
|
+
│ │ └── nextjs-patterns.md
|
|
74
|
+
│ ├── templates/ # 11 templates
|
|
75
|
+
│ ├── examples/ # 2 reference examples
|
|
76
|
+
│ │ ├── crud-nextjs-supabase/
|
|
77
|
+
│ │ └── saas-nextjs-supabase/
|
|
78
|
+
│ └── docs/ # Setup guides
|
|
79
|
+
│ ├── supabase-mcp-setup.md
|
|
80
|
+
│ └── easypanel-setup.md
|
|
81
|
+
└── .claude/
|
|
82
|
+
└── skills/ # 4 agent skills
|
|
83
|
+
└── level-2-domains/
|
|
84
|
+
├── integrations/supabase-expert.md
|
|
85
|
+
├── infrastructure/easypanel-deployer.md
|
|
86
|
+
├── backend/dotnet-supabase.md
|
|
87
|
+
└── frontend/nextjs-supabase.md
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Key Differences from Blazor+Azure
|
|
91
|
+
|
|
92
|
+
| Aspect | Blazor+Azure | Next.js+Supabase |
|
|
93
|
+
|--------|-------------|-----------------|
|
|
94
|
+
| IaC | Bicep templates | Dockerfiles + Docker Compose |
|
|
95
|
+
| ORM | EF Core (LINQ) | Npgsql + Dapper (SQL) |
|
|
96
|
+
| Migrations | C# EF Migrations | SQL (Supabase CLI) |
|
|
97
|
+
| Auth middleware | Azure Identity | @supabase/ssr + JWT |
|
|
98
|
+
| RLS | Application-level | Database-level (PostgreSQL RLS) |
|
|
99
|
+
| File storage | Azure Blob Storage | Supabase Storage |
|
|
100
|
+
| Deploy | Azure Container Apps | EasyPanel (VPS Docker) |
|
|
101
|
+
|
|
102
|
+
## Shared with Blazor+Azure
|
|
103
|
+
|
|
104
|
+
- MORPH-SPEC 5-phase workflow (Setup > Design > Clarify > Tasks > Implement)
|
|
105
|
+
- Framework standards: coding.md, architecture.md
|
|
106
|
+
- CLI commands: /morph-proposal, /morph-apply, /morph-status
|
|
107
|
+
- Validation pipeline and checkpoint system
|
|
108
|
+
- .NET 10 backend patterns (C# 14, sealed records, CancellationToken)
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-container-app.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/simulation-checklist.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/morph-replicate.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/dotnet-senior.md
RENAMED
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ef-modeler.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ms-agent-expert.md
RENAMED
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/blazor-builder.md
RENAMED
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/nextjs-expert.md
RENAMED
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/ui-ux-designer.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/clerk-auth.md
RENAMED
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/resend-email.md
RENAMED
|
File without changes
|
/package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/code-analyzer.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{content → stacks/blazor-azure}/.morph/templates/integrations/azure-identity-config.cs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|