@polymorphism-tech/morph-spec 1.0.4 → 2.0.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 +1381 -0
- package/LICENSE +72 -0
- package/README.md +89 -6
- package/bin/detect-agents.js +225 -0
- package/bin/morph-spec.js +120 -0
- package/bin/render-template.js +302 -0
- package/bin/semantic-detect-agents.js +246 -0
- package/bin/validate-agents-skills.js +239 -0
- package/bin/validate-agents.js +69 -0
- package/bin/validate-phase.js +263 -0
- package/content/.azure/README.md +293 -0
- package/content/.azure/docs/azure-devops-setup.md +454 -0
- package/content/.azure/docs/branch-strategy.md +398 -0
- package/content/.azure/docs/local-development.md +515 -0
- package/content/.azure/pipelines/pipeline-variables.yml +34 -0
- package/content/.azure/pipelines/prod-pipeline.yml +319 -0
- package/content/.azure/pipelines/staging-pipeline.yml +234 -0
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -0
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -0
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -0
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -0
- package/content/.claude/commands/morph-apply.md +118 -26
- package/content/.claude/commands/morph-archive.md +9 -9
- package/content/.claude/commands/morph-clarify.md +184 -0
- package/content/.claude/commands/morph-design.md +275 -0
- package/content/.claude/commands/morph-proposal.md +56 -15
- package/content/.claude/commands/morph-setup.md +100 -0
- package/content/.claude/commands/morph-status.md +47 -32
- package/content/.claude/commands/morph-tasks.md +319 -0
- package/content/.claude/commands/morph-uiux.md +211 -0
- package/content/.claude/skills/specialists/ai-system-architect.md +604 -0
- package/content/.claude/skills/specialists/ms-agent-expert.md +143 -89
- package/content/.claude/skills/specialists/ui-ux-designer.md +744 -9
- package/content/.claude/skills/stacks/dotnet-blazor.md +244 -8
- package/content/.claude/skills/stacks/dotnet-nextjs.md +2 -2
- package/content/.morph/.morphversion +5 -0
- package/content/.morph/config/agents.json +101 -8
- package/content/.morph/config/azure-pricing.json +70 -0
- package/content/.morph/config/azure-pricing.schema.json +50 -0
- package/content/.morph/config/config.template.json +15 -3
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -0
- package/content/.morph/hooks/README.md +239 -0
- package/content/.morph/hooks/pre-commit-agents.sh +24 -0
- package/content/.morph/hooks/pre-commit-all.sh +48 -0
- package/content/.morph/hooks/pre-commit-costs.sh +91 -0
- package/content/.morph/hooks/pre-commit-specs.sh +49 -0
- package/content/.morph/hooks/pre-commit-tests.sh +60 -0
- package/content/.morph/project.md +5 -4
- package/content/.morph/schemas/agent.schema.json +296 -0
- package/content/.morph/standards/agent-framework-setup.md +453 -0
- package/content/.morph/standards/architecture.md +142 -7
- package/content/.morph/standards/azure.md +218 -23
- package/content/.morph/standards/coding.md +47 -12
- package/content/.morph/standards/dotnet10-migration.md +494 -0
- package/content/.morph/standards/fluent-ui-setup.md +590 -0
- package/content/.morph/standards/migration-guide.md +514 -0
- package/content/.morph/standards/passkeys-auth.md +423 -0
- package/content/.morph/standards/vector-search-rag.md +536 -0
- package/content/.morph/state.json +18 -0
- package/content/.morph/templates/FluentDesignTheme.cs +149 -0
- package/content/.morph/templates/MudTheme.cs +281 -0
- package/content/.morph/templates/contracts.cs +55 -55
- package/content/.morph/templates/decisions.md +4 -4
- package/content/.morph/templates/design-system.css +226 -0
- package/content/.morph/templates/infra/.dockerignore.example +89 -0
- package/content/.morph/templates/infra/Dockerfile.example +82 -0
- package/content/.morph/templates/infra/README.md +286 -0
- package/content/.morph/templates/infra/app-service.bicep +164 -0
- package/content/.morph/templates/infra/deploy.ps1 +229 -0
- package/content/.morph/templates/infra/deploy.sh +208 -0
- package/content/.morph/templates/infra/main.bicep +41 -7
- package/content/.morph/templates/infra/parameters.dev.json +6 -0
- package/content/.morph/templates/infra/parameters.prod.json +6 -0
- package/content/.morph/templates/infra/parameters.staging.json +29 -0
- package/content/.morph/templates/proposal.md +3 -3
- package/content/.morph/templates/recap.md +3 -3
- package/content/.morph/templates/spec.md +9 -8
- package/content/.morph/templates/sprint-status.yaml +68 -0
- package/content/.morph/templates/state.template.json +222 -0
- package/content/.morph/templates/story.md +143 -0
- package/content/.morph/templates/tasks.md +1 -1
- package/content/.morph/templates/ui-components.md +276 -0
- package/content/.morph/templates/ui-design-system.md +286 -0
- package/content/.morph/templates/ui-flows.md +336 -0
- package/content/.morph/templates/ui-mockups.md +133 -0
- package/content/.morph/test-infra/example.bicep +59 -0
- package/content/CLAUDE.md +124 -0
- package/content/README.md +79 -0
- package/detectors/config-detector.js +223 -0
- package/detectors/conversation-analyzer.js +163 -0
- package/detectors/index.js +84 -0
- package/detectors/standards-generator.js +275 -0
- package/detectors/structure-detector.js +221 -0
- package/docs/README.md +149 -0
- package/docs/api/cost-calculator.js.html +513 -0
- package/docs/api/design-system-generator.js.html +382 -0
- package/docs/api/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/api/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/api/global.html +5263 -0
- package/docs/api/index.html +96 -0
- package/docs/api/scripts/collapse.js +39 -0
- package/docs/api/scripts/commonNav.js +28 -0
- package/docs/api/scripts/linenumber.js +25 -0
- package/docs/api/scripts/nav.js +12 -0
- package/docs/api/scripts/polyfill.js +4 -0
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/api/scripts/prettify/lang-css.js +2 -0
- package/docs/api/scripts/prettify/prettify.js +28 -0
- package/docs/api/scripts/search.js +99 -0
- package/docs/api/state-manager.js.html +423 -0
- package/docs/api/styles/jsdoc.css +776 -0
- package/docs/api/styles/prettify.css +80 -0
- package/docs/examples.md +328 -0
- package/docs/getting-started.md +302 -0
- package/docs/installation.md +361 -0
- package/docs/templates.md +418 -0
- package/docs/validation-checklist.md +266 -0
- package/package.json +39 -12
- package/src/commands/cost.js +181 -0
- package/src/commands/create-story.js +283 -0
- package/src/commands/detect.js +104 -0
- package/src/commands/doctor.js +67 -0
- package/src/commands/generate.js +149 -0
- package/src/commands/init.js +69 -45
- package/src/commands/shard-spec.js +224 -0
- package/src/commands/sprint-status.js +250 -0
- package/src/commands/state.js +333 -0
- package/src/commands/sync.js +167 -0
- package/src/commands/update-pricing.js +206 -0
- package/src/commands/update.js +88 -13
- package/src/lib/complexity-analyzer.js +292 -0
- package/src/lib/cost-calculator.js +429 -0
- package/src/lib/design-system-generator.js +298 -0
- package/src/lib/state-manager.js +340 -0
- package/src/utils/file-copier.js +59 -0
- package/src/utils/version-checker.js +175 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
.pln {
|
|
2
|
+
color: #ddd;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/* string content */
|
|
6
|
+
.str {
|
|
7
|
+
color: #61ce3c;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/* a keyword */
|
|
11
|
+
.kwd {
|
|
12
|
+
color: #fbde2d;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* a comment */
|
|
16
|
+
.com {
|
|
17
|
+
color: #aeaeae;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* a type name */
|
|
21
|
+
.typ {
|
|
22
|
+
color: #8da6ce;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* a literal value */
|
|
26
|
+
.lit {
|
|
27
|
+
color: #fbde2d;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* punctuation */
|
|
31
|
+
.pun {
|
|
32
|
+
color: #ddd;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* lisp open bracket */
|
|
36
|
+
.opn {
|
|
37
|
+
color: #000000;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* lisp close bracket */
|
|
41
|
+
.clo {
|
|
42
|
+
color: #000000;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* a markup tag name */
|
|
46
|
+
.tag {
|
|
47
|
+
color: #8da6ce;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* a markup attribute name */
|
|
51
|
+
.atn {
|
|
52
|
+
color: #fbde2d;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* a markup attribute value */
|
|
56
|
+
.atv {
|
|
57
|
+
color: #ddd;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* a declaration */
|
|
61
|
+
.dec {
|
|
62
|
+
color: #EF5050;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* a variable name */
|
|
66
|
+
.var {
|
|
67
|
+
color: #c82829;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* a function name */
|
|
71
|
+
.fun {
|
|
72
|
+
color: #4271ae;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Specify class=linenums on a pre to get line numbering */
|
|
76
|
+
ol.linenums {
|
|
77
|
+
margin-top: 0;
|
|
78
|
+
margin-bottom: 0;
|
|
79
|
+
padding-bottom: 2px;
|
|
80
|
+
}
|
package/docs/examples.md
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# MORPH-SPEC Examples Guide
|
|
2
|
+
|
|
3
|
+
Guia dos exemplos incluídos no framework.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Visão Geral
|
|
8
|
+
|
|
9
|
+
| Exemplo | Stack | Complexidade | Tempo Est. |
|
|
10
|
+
|---------|-------|--------------|------------|
|
|
11
|
+
| [micro-saas](#micro-saas) | Blazor + Asaas | Alta | 2-3 dias |
|
|
12
|
+
| [api-nextjs](#api-nextjs) | .NET + Next.js | Média | 1-2 dias |
|
|
13
|
+
| [multi-agent](#multi-agent) | Semantic Kernel | Alta | 2-3 dias |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## micro-saas
|
|
18
|
+
|
|
19
|
+
**Localização**: `.morph/examples/micro-saas/`
|
|
20
|
+
|
|
21
|
+
### Descrição
|
|
22
|
+
|
|
23
|
+
SaaS completo com multi-tenancy e billing integrado via Asaas.
|
|
24
|
+
|
|
25
|
+
### Stack
|
|
26
|
+
|
|
27
|
+
| Camada | Tecnologia |
|
|
28
|
+
|--------|------------|
|
|
29
|
+
| Frontend | Blazor Server |
|
|
30
|
+
| Backend | .NET 8 Minimal APIs |
|
|
31
|
+
| Database | SQL Server |
|
|
32
|
+
| Auth | Clerk |
|
|
33
|
+
| Billing | Asaas |
|
|
34
|
+
| Infra | Azure Container Apps |
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
- **Multi-tenancy**: Isolamento completo por tenant
|
|
39
|
+
- **Subscription Management**: Planos Free, Starter, Pro, Enterprise
|
|
40
|
+
- **Payment Methods**: PIX, Boleto, Cartão de Crédito
|
|
41
|
+
- **Dashboard**: Métricas e gestão
|
|
42
|
+
- **User Management**: Convites, roles (Owner, Admin, Member)
|
|
43
|
+
- **Webhooks**: Processamento de eventos Asaas
|
|
44
|
+
|
|
45
|
+
### Arquivos
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
micro-saas/
|
|
49
|
+
├── README.md # Visão geral e arquitetura
|
|
50
|
+
├── spec.md # Especificação completa
|
|
51
|
+
├── contracts.cs # 50+ interfaces e DTOs
|
|
52
|
+
├── tasks.md # 51 tasks organizadas
|
|
53
|
+
└── decisions.md # 10 ADRs documentados
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### ADRs Principais
|
|
57
|
+
|
|
58
|
+
| ADR | Decisão |
|
|
59
|
+
|-----|---------|
|
|
60
|
+
| ADR-001 | Blazor Server vs WebAssembly |
|
|
61
|
+
| ADR-002 | Asaas vs Stripe |
|
|
62
|
+
| ADR-003 | Clerk vs Azure AD B2C |
|
|
63
|
+
| ADR-004 | Single DB com Query Filters |
|
|
64
|
+
| ADR-005 | Tenant Resolution Strategy |
|
|
65
|
+
|
|
66
|
+
### Para Começar
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# 1. Copie o exemplo para seu projeto
|
|
70
|
+
cp -r .morph/examples/micro-saas/ .morph/features/
|
|
71
|
+
|
|
72
|
+
# 2. Revise a spec
|
|
73
|
+
cat .morph/features/micro-saas/spec.md
|
|
74
|
+
|
|
75
|
+
# 3. Ajuste para suas necessidades
|
|
76
|
+
# Edite spec.md com seus requisitos específicos
|
|
77
|
+
|
|
78
|
+
# 4. Implemente
|
|
79
|
+
/morph-apply micro-saas
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Custos Estimados
|
|
83
|
+
|
|
84
|
+
| Recurso | Custo/mês |
|
|
85
|
+
|---------|-----------|
|
|
86
|
+
| Container Apps | ~$0 (scale-to-zero) |
|
|
87
|
+
| SQL Database | $0 (Free tier) |
|
|
88
|
+
| Storage | ~$0.50 |
|
|
89
|
+
| Asaas | 2.99% + R$0.49/transação |
|
|
90
|
+
| **Total** | **< $5/mês** |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## api-nextjs
|
|
95
|
+
|
|
96
|
+
**Localização**: `.morph/examples/api-nextjs/`
|
|
97
|
+
|
|
98
|
+
### Descrição
|
|
99
|
+
|
|
100
|
+
Arquitetura full-stack com API .NET e frontend Next.js.
|
|
101
|
+
|
|
102
|
+
### Stack
|
|
103
|
+
|
|
104
|
+
| Camada | Tecnologia |
|
|
105
|
+
|--------|------------|
|
|
106
|
+
| Frontend | Next.js 14 (App Router) |
|
|
107
|
+
| Backend | .NET 8 Minimal APIs |
|
|
108
|
+
| Database | SQL Server |
|
|
109
|
+
| Auth | Clerk |
|
|
110
|
+
| Data Fetching | React Query |
|
|
111
|
+
| UI | Tailwind + shadcn/ui |
|
|
112
|
+
|
|
113
|
+
### Features
|
|
114
|
+
|
|
115
|
+
- **Minimal APIs**: Endpoints organizados e documentados
|
|
116
|
+
- **App Router**: Server Components + Client Components
|
|
117
|
+
- **React Query**: Cache, mutations, optimistic updates
|
|
118
|
+
- **TypeScript**: Types compartilhados (contracts.ts)
|
|
119
|
+
- **Forms**: React Hook Form + Zod validation
|
|
120
|
+
- **Dark Mode**: Theme switching
|
|
121
|
+
|
|
122
|
+
### Arquivos
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
api-nextjs/
|
|
126
|
+
├── README.md # Arquitetura e setup
|
|
127
|
+
├── spec.md # Especificação detalhada
|
|
128
|
+
├── contracts.ts # Types TypeScript compartilhados
|
|
129
|
+
└── tasks.md # 67 tasks organizadas
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Estrutura do Projeto
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
project/
|
|
136
|
+
├── src/
|
|
137
|
+
│ ├── api/ # .NET Backend
|
|
138
|
+
│ │ ├── Api/
|
|
139
|
+
│ │ ├── Application/
|
|
140
|
+
│ │ ├── Domain/
|
|
141
|
+
│ │ └── Infrastructure/
|
|
142
|
+
│ │
|
|
143
|
+
│ └── web/ # Next.js Frontend
|
|
144
|
+
│ ├── app/
|
|
145
|
+
│ ├── components/
|
|
146
|
+
│ ├── hooks/
|
|
147
|
+
│ ├── lib/
|
|
148
|
+
│ └── types/
|
|
149
|
+
│
|
|
150
|
+
└── infra/ # IaC
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Para Começar
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# 1. Copie o exemplo
|
|
157
|
+
cp -r .morph/examples/api-nextjs/ .morph/features/
|
|
158
|
+
|
|
159
|
+
# 2. Revise contracts.ts para seu domínio
|
|
160
|
+
# Este arquivo define os types compartilhados
|
|
161
|
+
|
|
162
|
+
# 3. Ajuste spec.md
|
|
163
|
+
# Modifique entidades e endpoints para seu caso
|
|
164
|
+
|
|
165
|
+
# 4. Implemente
|
|
166
|
+
/morph-apply api-nextjs
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Patterns Demonstrados
|
|
170
|
+
|
|
171
|
+
| Pattern | Descrição |
|
|
172
|
+
|---------|-----------|
|
|
173
|
+
| API Client | Fetch wrapper com auth |
|
|
174
|
+
| Query Keys | Organização de cache keys |
|
|
175
|
+
| Data Hooks | useProducts, useOrders |
|
|
176
|
+
| Form Pattern | React Hook Form + Zod |
|
|
177
|
+
| Server Components | Data fetching no servidor |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## multi-agent
|
|
182
|
+
|
|
183
|
+
**Localização**: `.morph/examples/multi-agent/`
|
|
184
|
+
|
|
185
|
+
### Descrição
|
|
186
|
+
|
|
187
|
+
Sistema de agentes AI cooperativos com Semantic Kernel.
|
|
188
|
+
|
|
189
|
+
### Stack
|
|
190
|
+
|
|
191
|
+
| Camada | Tecnologia |
|
|
192
|
+
|--------|------------|
|
|
193
|
+
| Framework | Semantic Kernel |
|
|
194
|
+
| LLM | Azure OpenAI |
|
|
195
|
+
| Orchestration | Custom Orchestrator |
|
|
196
|
+
| Storage | In-Memory / Cosmos DB |
|
|
197
|
+
| Infra | Azure Container Apps |
|
|
198
|
+
|
|
199
|
+
### Agentes
|
|
200
|
+
|
|
201
|
+
| Agente | Responsabilidade |
|
|
202
|
+
|--------|------------------|
|
|
203
|
+
| **Orchestrator** | Coordena outros agentes |
|
|
204
|
+
| **Research** | Busca e RAG |
|
|
205
|
+
| **Analysis** | Análise e comparações |
|
|
206
|
+
| **Writing** | Geração de texto |
|
|
207
|
+
|
|
208
|
+
### Features
|
|
209
|
+
|
|
210
|
+
- **Task Decomposition**: Quebra tarefas complexas
|
|
211
|
+
- **Plugin System**: WebSearch, Documents, Calculator
|
|
212
|
+
- **Conversation Memory**: Contexto por sessão
|
|
213
|
+
- **Semantic Memory**: RAG com embeddings
|
|
214
|
+
- **Streaming**: Server-Sent Events
|
|
215
|
+
|
|
216
|
+
### Arquivos
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
multi-agent/
|
|
220
|
+
├── README.md # Visão geral
|
|
221
|
+
├── spec.md # Especificação detalhada
|
|
222
|
+
├── contracts.cs # Interfaces e DTOs
|
|
223
|
+
└── tasks.md # 53 tasks organizadas
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Fluxo de Execução
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
User Request
|
|
230
|
+
│
|
|
231
|
+
▼
|
|
232
|
+
┌─────────────┐
|
|
233
|
+
│ Orchestrator│ → Decompõe tarefa
|
|
234
|
+
└─────────────┘
|
|
235
|
+
│
|
|
236
|
+
├──► Research Agent → Busca informações
|
|
237
|
+
│
|
|
238
|
+
├──► Analysis Agent → Analisa dados
|
|
239
|
+
│
|
|
240
|
+
└──► Writing Agent → Gera output
|
|
241
|
+
│
|
|
242
|
+
▼
|
|
243
|
+
Consolidated Response
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Para Começar
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
# 1. Configure Azure OpenAI
|
|
250
|
+
# - Crie deployment gpt-4
|
|
251
|
+
# - Crie deployment text-embedding-ada-002
|
|
252
|
+
|
|
253
|
+
# 2. Copie o exemplo
|
|
254
|
+
cp -r .morph/examples/multi-agent/ .morph/features/
|
|
255
|
+
|
|
256
|
+
# 3. Configure appsettings
|
|
257
|
+
# Adicione suas credenciais Azure OpenAI
|
|
258
|
+
|
|
259
|
+
# 4. Implemente
|
|
260
|
+
/morph-apply multi-agent
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Custos Estimados
|
|
264
|
+
|
|
265
|
+
| Recurso | Custo |
|
|
266
|
+
|---------|-------|
|
|
267
|
+
| GPT-4 | ~$0.03/1K tokens |
|
|
268
|
+
| Embeddings | ~$0.0001/1K tokens |
|
|
269
|
+
| Container Apps | ~$0-10/mês |
|
|
270
|
+
|
|
271
|
+
**Nota**: Custos variam com uso. Para dev, use gpt-3.5-turbo.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Como Usar os Exemplos
|
|
276
|
+
|
|
277
|
+
### 1. Estudar a Estrutura
|
|
278
|
+
|
|
279
|
+
Cada exemplo segue o padrão MORPH-SPEC:
|
|
280
|
+
- `spec.md` - O quê construir
|
|
281
|
+
- `contracts.cs/ts` - Interfaces e tipos
|
|
282
|
+
- `tasks.md` - Como construir
|
|
283
|
+
- `decisions.md` - Por que decisões foram tomadas
|
|
284
|
+
|
|
285
|
+
### 2. Adaptar para Seu Projeto
|
|
286
|
+
|
|
287
|
+
1. Copie o exemplo para `.morph/features/`
|
|
288
|
+
2. Edite `spec.md` com seus requisitos
|
|
289
|
+
3. Ajuste `contracts.cs` com suas entidades
|
|
290
|
+
4. Revise `tasks.md` e remova o que não precisa
|
|
291
|
+
|
|
292
|
+
### 3. Implementar
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
/morph-apply <nome-do-exemplo>
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### 4. Customizar Templates
|
|
299
|
+
|
|
300
|
+
Se precisar de padrões diferentes:
|
|
301
|
+
1. Copie templates de `.morph/templates/`
|
|
302
|
+
2. Modifique conforme necessário
|
|
303
|
+
3. MORPH usará seus templates customizados
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Comparação de Complexidade
|
|
308
|
+
|
|
309
|
+
| Aspecto | micro-saas | api-nextjs | multi-agent |
|
|
310
|
+
|---------|------------|------------|-------------|
|
|
311
|
+
| **Entities** | 6 | 4 | 5 |
|
|
312
|
+
| **Tasks** | 51 | 67 | 53 |
|
|
313
|
+
| **Integrations** | 2 (Asaas, Clerk) | 1 (Clerk) | 2 (OpenAI, Bing) |
|
|
314
|
+
| **IaC Resources** | 5 | 6 | 4 |
|
|
315
|
+
| **Custo Infra** | < $5 | < $10 | Variável |
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Próximos Passos
|
|
320
|
+
|
|
321
|
+
1. Escolha o exemplo mais próximo do seu caso
|
|
322
|
+
2. Leia a `spec.md` completa
|
|
323
|
+
3. Revise os `contracts.*` para entender o modelo
|
|
324
|
+
4. Use como base ou implemente diretamente
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
# Getting Started - MORPH-SPEC
|
|
2
|
+
|
|
3
|
+
**M**ethodical **O**rchestration for **R**eliable **P**roduction-ready **SPEC**-driven development
|
|
4
|
+
|
|
5
|
+
> by Polymorphism Tech
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Quick Start (5 minutos)
|
|
10
|
+
|
|
11
|
+
### 1. Copiar para seu projeto
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Clone o framework
|
|
15
|
+
git clone https://github.com/polymorphism-tech/morph-framework.git
|
|
16
|
+
|
|
17
|
+
# Copie o conteúdo para seu projeto
|
|
18
|
+
cp -r morph-framework/content/.morph /seu/projeto/
|
|
19
|
+
cp -r morph-framework/content/.claude /seu/projeto/
|
|
20
|
+
cp morph-framework/content/CLAUDE.md /seu/projeto/
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. Configurar
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
cd /seu/projeto/.morph/config
|
|
27
|
+
cp config.template.json config.json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Edite `config.json`:
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"project": {
|
|
34
|
+
"name": "Seu Projeto",
|
|
35
|
+
"stack": "blazor"
|
|
36
|
+
},
|
|
37
|
+
"azure": {
|
|
38
|
+
"subscriptionId": "sua-subscription",
|
|
39
|
+
"resourceGroup": "rg-seuprojeto-dev"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 3. Usar com Claude Code
|
|
45
|
+
|
|
46
|
+
Abra seu projeto no Claude Code e use os slash commands:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
/morph-proposal minha-feature
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
O MORPH vai guiar você pelas 5 fases automaticamente.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Estrutura Completa
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
seu-projeto/
|
|
60
|
+
├── CLAUDE.md # Instruções para o AI
|
|
61
|
+
│
|
|
62
|
+
├── .morph/
|
|
63
|
+
│ ├── project.md # Contexto do projeto
|
|
64
|
+
│ ├── config/
|
|
65
|
+
│ │ ├── config.json # Sua configuração
|
|
66
|
+
│ │ └── agents.json # Definição dos agentes
|
|
67
|
+
│ │
|
|
68
|
+
│ ├── standards/
|
|
69
|
+
│ │ ├── coding.md # Padrões de código
|
|
70
|
+
│ │ ├── architecture.md # Padrões de arquitetura
|
|
71
|
+
│ │ └── azure.md # Padrões Azure/IaC
|
|
72
|
+
│ │
|
|
73
|
+
│ ├── templates/
|
|
74
|
+
│ │ ├── spec.md # Template de especificação
|
|
75
|
+
│ │ ├── tasks.md # Template de tasks
|
|
76
|
+
│ │ ├── contracts.cs # Template de contratos
|
|
77
|
+
│ │ ├── decisions.md # Template de ADRs
|
|
78
|
+
│ │ ├── recap.md # Template de recap
|
|
79
|
+
│ │ │
|
|
80
|
+
│ │ ├── infra/ # Templates IaC (Bicep)
|
|
81
|
+
│ │ │ ├── main.bicep
|
|
82
|
+
│ │ │ ├── container-app.bicep
|
|
83
|
+
│ │ │ ├── container-app-env.bicep
|
|
84
|
+
│ │ │ ├── sql-database.bicep
|
|
85
|
+
│ │ │ ├── storage.bicep
|
|
86
|
+
│ │ │ ├── key-vault.bicep
|
|
87
|
+
│ │ │ ├── app-insights.bicep
|
|
88
|
+
│ │ │ └── parameters.*.json
|
|
89
|
+
│ │ │
|
|
90
|
+
│ │ ├── integrations/ # Templates de integração
|
|
91
|
+
│ │ │ ├── asaas-client.cs # Pagamentos (PIX, Boleto)
|
|
92
|
+
│ │ │ ├── asaas-webhook.cs # Webhooks Asaas
|
|
93
|
+
│ │ │ ├── clerk-config.cs # Autenticação Clerk
|
|
94
|
+
│ │ │ └── azure-identity-config.cs
|
|
95
|
+
│ │ │
|
|
96
|
+
│ │ └── saas/ # Templates SaaS
|
|
97
|
+
│ │ ├── subscription.cs # Modelo de assinaturas
|
|
98
|
+
│ │ └── tenant.cs # Multi-tenancy
|
|
99
|
+
│ │
|
|
100
|
+
│ ├── examples/ # Exemplos completos
|
|
101
|
+
│ │ ├── micro-saas/ # Blazor + Asaas billing
|
|
102
|
+
│ │ ├── api-nextjs/ # .NET API + Next.js
|
|
103
|
+
│ │ └── multi-agent/ # Semantic Kernel agents
|
|
104
|
+
│ │
|
|
105
|
+
│ ├── specs/ # Specs ativas
|
|
106
|
+
│ ├── features/ # Features em desenvolvimento
|
|
107
|
+
│ └── archive/ # Features concluídas
|
|
108
|
+
│
|
|
109
|
+
└── .claude/
|
|
110
|
+
├── commands/ # Slash commands
|
|
111
|
+
│ ├── morph-proposal.md
|
|
112
|
+
│ ├── morph-apply.md
|
|
113
|
+
│ ├── morph-status.md
|
|
114
|
+
│ ├── morph-archive.md
|
|
115
|
+
│ ├── morph-infra.md # Gestão de infra
|
|
116
|
+
│ └── morph-costs.md # Estimativa de custos
|
|
117
|
+
│
|
|
118
|
+
└── skills/ # Skills dos agentes
|
|
119
|
+
├── specialists/ # 8 agentes especialistas
|
|
120
|
+
├── integrations/ # 3 agentes de integração
|
|
121
|
+
├── stacks/ # 3 stacks suportadas
|
|
122
|
+
└── infra/ # 3 agentes de infra
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## O Workflow das 5 Fases
|
|
128
|
+
|
|
129
|
+
### Fase 1: SETUP
|
|
130
|
+
```
|
|
131
|
+
Gatilho: /morph-proposal <feature>
|
|
132
|
+
```
|
|
133
|
+
- Carrega configuração do projeto
|
|
134
|
+
- Identifica agentes por keywords
|
|
135
|
+
- Cria pasta de outputs
|
|
136
|
+
|
|
137
|
+
### Fase 2: DESIGN
|
|
138
|
+
- Gera `spec.md`, `contracts.cs`, `decisions.md`
|
|
139
|
+
- Estima custos de infraestrutura
|
|
140
|
+
- **⛔ PARA para aprovação**
|
|
141
|
+
|
|
142
|
+
### Fase 3: CLARIFY
|
|
143
|
+
- Perguntas de clarificação
|
|
144
|
+
- Resolve ambiguidades
|
|
145
|
+
- Valida edge cases
|
|
146
|
+
|
|
147
|
+
### Fase 4: TASKS
|
|
148
|
+
- Quebra em tasks (T001, T002...)
|
|
149
|
+
- Define checkpoints
|
|
150
|
+
- **⛔ PARA para aprovação**
|
|
151
|
+
|
|
152
|
+
### Fase 5: IMPLEMENT
|
|
153
|
+
```
|
|
154
|
+
Gatilho: /morph-apply <feature>
|
|
155
|
+
```
|
|
156
|
+
- Implementa task por task
|
|
157
|
+
- Testes a cada task
|
|
158
|
+
- Checkpoint a cada 3 tasks
|
|
159
|
+
- Gera recap final
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Slash Commands
|
|
164
|
+
|
|
165
|
+
| Comando | Descrição |
|
|
166
|
+
|---------|-----------|
|
|
167
|
+
| `/morph-proposal <feature>` | Inicia nova feature |
|
|
168
|
+
| `/morph-apply <feature>` | Implementa feature aprovada |
|
|
169
|
+
| `/morph-status` | Status do projeto |
|
|
170
|
+
| `/morph-archive <feature>` | Arquiva feature |
|
|
171
|
+
| `/morph-infra <action>` | Gestão de infraestrutura |
|
|
172
|
+
| `/morph-costs` | Estimativa de custos |
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Os Agentes (17 total)
|
|
177
|
+
|
|
178
|
+
### Core (Sempre Ativos)
|
|
179
|
+
| Agente | Responsabilidade |
|
|
180
|
+
|--------|------------------|
|
|
181
|
+
| 📐 Standards Architect | Padrões de código |
|
|
182
|
+
| ☁️ Azure Architect | Infraestrutura cloud |
|
|
183
|
+
| 💰 Cost Guardian | Controle de custos |
|
|
184
|
+
|
|
185
|
+
### Stack Agents
|
|
186
|
+
| Agente | Keywords |
|
|
187
|
+
|--------|----------|
|
|
188
|
+
| 🔥 Blazor Builder | blazor, razor, component |
|
|
189
|
+
| ⚛️ NextJS Expert | nextjs, react, frontend |
|
|
190
|
+
| 🛒 Shopify Expert | shopify, hydrogen, liquid |
|
|
191
|
+
|
|
192
|
+
### Specialist Agents
|
|
193
|
+
| Agente | Keywords |
|
|
194
|
+
|--------|----------|
|
|
195
|
+
| 🗄️ EF Modeler | entity, database, migration |
|
|
196
|
+
| 🤖 MS Agent Expert | agent, ai, semantic kernel |
|
|
197
|
+
| ⏰ Hangfire Orchestrator | scheduled, job, background |
|
|
198
|
+
| 🎨 UI/UX Designer | wizard, dashboard, complex |
|
|
199
|
+
| 📋 PO/PM Advisor | unclear, requirements, ROI |
|
|
200
|
+
|
|
201
|
+
### Integration Agents
|
|
202
|
+
| Agente | Keywords |
|
|
203
|
+
|--------|----------|
|
|
204
|
+
| 💳 Asaas Financial | asaas, payment, pix, boleto |
|
|
205
|
+
| 🔐 Clerk Auth | clerk, auth, login |
|
|
206
|
+
| 🆔 Azure Identity | identity, entra, microsoft |
|
|
207
|
+
|
|
208
|
+
### Infra Agents
|
|
209
|
+
| Agente | Keywords |
|
|
210
|
+
|--------|----------|
|
|
211
|
+
| 🏗️ Bicep Architect | bicep, iac, provision |
|
|
212
|
+
| 🚀 DevOps Engineer | pipeline, ci/cd, deploy |
|
|
213
|
+
| 📦 Container Specialist | docker, container |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Templates Disponíveis
|
|
218
|
+
|
|
219
|
+
### IaC (Bicep)
|
|
220
|
+
- `main.bicep` - Entry point
|
|
221
|
+
- `container-app.bicep` - Azure Container Apps
|
|
222
|
+
- `sql-database.bicep` - Azure SQL (Free tier)
|
|
223
|
+
- `storage.bicep` - Storage Account
|
|
224
|
+
- `key-vault.bicep` - Key Vault
|
|
225
|
+
- `app-insights.bicep` - Monitoring
|
|
226
|
+
|
|
227
|
+
### Integrações
|
|
228
|
+
- `asaas-client.cs` - HTTP client Asaas completo
|
|
229
|
+
- `asaas-webhook.cs` - Controller de webhooks
|
|
230
|
+
- `clerk-config.cs` - Autenticação Clerk
|
|
231
|
+
- `azure-identity-config.cs` - Microsoft Identity
|
|
232
|
+
|
|
233
|
+
### SaaS
|
|
234
|
+
- `subscription.cs` - Modelo de assinaturas
|
|
235
|
+
- `tenant.cs` - Multi-tenancy completo
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Exemplos Incluídos
|
|
240
|
+
|
|
241
|
+
| Exemplo | Stack | Descrição |
|
|
242
|
+
|---------|-------|-----------|
|
|
243
|
+
| `micro-saas/` | Blazor + Asaas | SaaS com billing integrado |
|
|
244
|
+
| `api-nextjs/` | .NET + Next.js | Full-stack com React |
|
|
245
|
+
| `multi-agent/` | Semantic Kernel | Sistema de agentes AI |
|
|
246
|
+
|
|
247
|
+
Cada exemplo contém:
|
|
248
|
+
- `README.md` - Visão geral
|
|
249
|
+
- `spec.md` - Especificação completa
|
|
250
|
+
- `contracts.cs` - Interfaces e DTOs
|
|
251
|
+
- `tasks.md` - Breakdown de implementação
|
|
252
|
+
- `decisions.md` - ADRs (onde aplicável)
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Limites de Custo
|
|
257
|
+
|
|
258
|
+
| Nível | Limite | Requisito |
|
|
259
|
+
|-------|--------|-----------|
|
|
260
|
+
| Sem aprovação | Free tier | Nenhum |
|
|
261
|
+
| Com aprovação | Até $10/mês | Confirmação |
|
|
262
|
+
| Acima de $10 | Justificativa | ADR |
|
|
263
|
+
|
|
264
|
+
### Recursos Free Tier Suportados
|
|
265
|
+
- **Azure SQL** - 32GB grátis
|
|
266
|
+
- **Container Apps** - Scale-to-zero
|
|
267
|
+
- **Storage** - Pay-per-use mínimo
|
|
268
|
+
- **App Insights** - 5GB/mês grátis
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Dicas
|
|
273
|
+
|
|
274
|
+
### Seja específico
|
|
275
|
+
```
|
|
276
|
+
❌ "Quero relatórios"
|
|
277
|
+
✅ "Quero agendar relatórios de vendas por email toda segunda às 8h"
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Use keywords para ativar agentes
|
|
281
|
+
```
|
|
282
|
+
❌ "Quero processar pagamentos"
|
|
283
|
+
✅ "Quero integrar Asaas para receber PIX e boleto"
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Aproveite os checkpoints
|
|
287
|
+
- Revise specs antes de aprovar
|
|
288
|
+
- Valide tasks antes de implementar
|
|
289
|
+
- Use `/morph-status` para ver progresso
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Próximos Passos
|
|
294
|
+
|
|
295
|
+
1. Explore `.morph/examples/` para ver exemplos completos
|
|
296
|
+
2. Leia `.morph/standards/` para entender os padrões
|
|
297
|
+
3. Configure `.morph/config/config.json` para seu projeto
|
|
298
|
+
4. Execute `/morph-proposal` para sua primeira feature!
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
*MORPH-SPEC by Polymorphism Tech*
|