@polymorphism-tech/morph-spec 7.8.0 → 7.8.1
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 +2 -2
- package/bin/validate.js +379 -379
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/commands/commit.md +166 -166
- package/framework/commands/morph-infra.md +215 -215
- package/framework/commands/morph-preflight.md +205 -205
- package/framework/commands/morph-troubleshoot.md +124 -124
- package/framework/hooks/claude-code/statusline.py +679 -679
- package/framework/hooks/claude-code/statusline.sh +11 -11
- package/framework/hooks/git/commit-msg/conventional-commits.sh +33 -33
- package/framework/hooks/git/pre-commit/agents.sh +25 -25
- package/framework/hooks/git/pre-commit/orchestrator.sh +64 -64
- package/framework/hooks/git/pre-commit/specs.sh +50 -50
- package/framework/hooks/git/pre-push/run-tests.sh +44 -44
- package/framework/hooks/shared/activity-logger.js +160 -160
- package/framework/hooks/shared/hook-response.js +45 -45
- package/framework/hooks/shared/payload-utils.js +78 -78
- package/framework/hooks/shared/stdin-reader.js +26 -26
- package/framework/rubrics/backend.json +41 -41
- package/framework/rules/ai-agents-standards.md +45 -45
- package/framework/rules/dotnet-templates.md +86 -86
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/infrastructure-standards.md +27 -27
- package/framework/rules/neon-standards.md +25 -25
- package/framework/rules/nextjs-standards.md +20 -20
- package/framework/rules/nextjs-templates.md +40 -40
- package/framework/skills/core/create-umbraco-lp/SKILL.md +1 -1
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +1 -1
- package/framework/skills/core/morph-brainstorming/SKILL.md +8 -4
- package/framework/skills/core/morph-eval/SKILL.md +1 -1
- package/framework/skills/core/morph-plan/SKILL.md +8 -4
- package/framework/skills/core/morph-proposal/SKILL.md +1 -1
- package/framework/skills/core/morph-review/SKILL.md +13 -7
- package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/standards/ai-agents/agent-session.md +160 -160
- package/framework/standards/ai-agents/batching.md +193 -193
- package/framework/standards/ai-agents/context-providers.md +188 -188
- package/framework/standards/ai-agents/mcp-server.md +250 -250
- package/framework/standards/ai-agents/mcp-tools.md +197 -197
- package/framework/standards/ai-agents/middleware-patterns.md +207 -207
- package/framework/standards/ai-agents/modalities-image-gen.md +173 -173
- package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -171
- package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -181
- package/framework/standards/ai-agents/modalities-vision.md +201 -201
- package/framework/standards/ai-agents/multi-agent-patterns.md +155 -155
- package/framework/standards/ai-agents/production.md +275 -275
- package/framework/standards/ai-agents/prompts-in-db.md +214 -214
- package/framework/standards/ai-agents/providers/model-registry.md +158 -158
- package/framework/standards/ai-agents/service-tier-flex.md +135 -135
- package/framework/standards/ai-agents/structured-output.md +249 -249
- package/framework/standards/ai-agents/sweet-spot.md +109 -109
- package/framework/templates/IDE-SNIPPETS.md +262 -262
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -7
- package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -39
- package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -68
- package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -117
- package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -95
- package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -61
- package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -107
- package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -58
- package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +281 -281
- package/framework/templates/code/dotnet/database/migration.cs +83 -83
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -21
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -15
- package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -58
- package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -91
- package/framework/templates/code/typescript/contracts.ts +167 -167
- package/framework/templates/docs/clarifications.md +253 -253
- package/framework/templates/docs/schema-analysis.md +119 -119
- package/framework/templates/docs/ui-components.md +52 -52
- package/framework/templates/docs/ui-design-system.md +76 -76
- package/framework/templates/docs/ui-flows.md +167 -167
- package/framework/templates/docs/ui-mockups.md +98 -98
- package/framework/templates/feature/decisions.md +122 -122
- package/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -43
- package/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -26
- package/framework/templates/frontend/nextjs/env.mjs.hbs +32 -32
- package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -56
- package/framework/templates/frontend/nextjs/page.tsx.hbs +22 -22
- package/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -26
- package/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -54
- package/framework/templates/infrastructure/docker/Dockerfile.template +58 -58
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +50 -50
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/github/README.md +56 -56
- package/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -45
- package/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -27
- package/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -59
- package/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -39
- package/framework/templates/integrations/asaas-client.cs +387 -387
- package/framework/templates/integrations/asaas-webhook.cs +351 -351
- package/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -76
- package/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -100
- package/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -113
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -95
- package/framework/templates/project/validate.js +120 -120
- package/framework/templates/state.template.json +17 -17
- package/framework/templates/ui/design-system.css +226 -226
- package/package.json +1 -1
- package/src/commands/dashboard/dashboard.js +53 -53
- package/src/commands/index.js +13 -13
- package/src/commands/mcp/mcp-setup.js +519 -519
- package/src/commands/project/checkpoint.js +209 -209
- package/src/commands/project/update.js +7 -4
- package/src/core/state/phase-state-machine.js +197 -197
- package/src/core/templates/template-renderer.js +477 -477
- package/src/dashboard/app/components/DetailPanel.jsx +11 -11
- package/src/dashboard/app/components/FlowGraph.jsx +17 -17
- package/src/dashboard/app/components/SearchFilter.jsx +22 -22
- package/src/dashboard/app/hooks/useDetailPanel.js +15 -15
- package/src/dashboard/app/main.jsx +13 -13
- package/src/dashboard/app/pages/AgentMap.jsx +370 -370
- package/src/dashboard/app/pages/HookInspector.jsx +418 -418
- package/src/dashboard/app/pages/LiveState.jsx +239 -239
- package/src/dashboard/app/pages/PhasePipeline.jsx +408 -408
- package/src/dashboard/app/pages/RulesMap.jsx +273 -273
- package/src/dashboard/app/pages/SkillsLibrary.jsx +366 -366
- package/src/dashboard/app/pages/Standards.jsx +332 -332
- package/src/dashboard/app/styles/index.css +47 -47
- package/src/dashboard/index.html +12 -12
- package/src/dashboard/package.json +24 -24
- package/src/dashboard/scanner/hooks-scanner.js +41 -41
- package/src/dashboard/scanner/phases-scanner.js +15 -15
- package/src/dashboard/scanner/rubrics-scanner.js +12 -12
- package/src/dashboard/scanner/rules-scanner.js +37 -37
- package/src/dashboard/scanner/skills-scanner.js +43 -43
- package/src/dashboard/scanner/squads-scanner.js +13 -13
- package/src/dashboard/scanner/standards-scanner.js +26 -26
- package/src/dashboard/vite-plugin-morph-data.js +17 -17
- package/src/dashboard/vite.config.js +24 -24
- package/src/lib/agents/metrics-aggregator.js +56 -56
- package/src/lib/agents/metrics-calculator.js +125 -125
- package/src/lib/agents/output-collector.js +73 -73
- package/src/lib/detectors/claude-config-detector.js +152 -152
- package/src/lib/detectors/design-system-detector.js +231 -231
- package/src/lib/detectors/index.js +217 -217
- package/src/lib/generators/architecture-scanner.js +639 -639
- package/src/lib/generators/design-system-generator.js +508 -508
- package/src/lib/generators/index.js +13 -13
- package/src/lib/generators/settings-generator.js +209 -209
- package/src/lib/hooks/hook-executor.js +167 -167
- package/src/lib/installers/mcp-installer.js +719 -719
- package/src/lib/tasks/task-classifier.js +30 -30
- package/src/lib/tasks/task-parser.js +209 -209
- package/src/lib/tasks/test-runner.js +81 -81
- package/src/lib/validators/architecture/architecture-validator.js +259 -259
- package/src/lib/validators/checkpoint-persistence.js +39 -39
- package/src/lib/validators/contracts/contract-compliance-validator.js +274 -274
- package/src/lib/validators/css/css-validator.js +340 -340
- package/src/lib/validators/packages/package-validator.js +347 -347
- package/src/lib/validators/shared/emit-validator-dispatch.js +14 -14
- package/src/lib/validators/shared/issue-counter.js +14 -14
- package/src/lib/validators/validation-runner.js +349 -349
- package/src/scripts/setup-infra.js +383 -383
- package/src/utils/agent-id-mapper.js +11 -11
- package/src/utils/banner.js +1 -2
- package/src/utils/claude-settings-manager.js +300 -300
- package/src/utils/skills-installer.js +172 -172
- package/framework/templates/.idea/morph-templates.xml +0 -92
- package/framework/templates/.vscode/morph-templates.code-snippets +0 -186
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Manage Azure infrastructure with Bicep templates — provision, update, and monitor cloud resources
|
|
3
|
-
argument-hint: [up|down|plan|status]
|
|
4
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, AskUserQuestion
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# /morph-infra - Infrastructure Management
|
|
8
|
-
|
|
9
|
-
Manage Azure infrastructure using Bicep templates.
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/morph-infra [action] [options]
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
### Actions
|
|
18
|
-
|
|
19
|
-
| Action | Description |
|
|
20
|
-
|--------|-------------|
|
|
21
|
-
| `init` | Initialize IaC structure in the project |
|
|
22
|
-
| `validate` | Validate Bicep templates |
|
|
23
|
-
| `plan` | Show what-if of changes |
|
|
24
|
-
| `deploy` | Execute resource deployment |
|
|
25
|
-
| `destroy` | Remove all resources |
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Workflow
|
|
30
|
-
|
|
31
|
-
### 1. INIT - Initialize IaC
|
|
32
|
-
|
|
33
|
-
When the user requests `/morph-infra init`:
|
|
34
|
-
|
|
35
|
-
1. Create the `infra/` structure in the project:
|
|
36
|
-
```
|
|
37
|
-
infra/
|
|
38
|
-
├── main.bicep
|
|
39
|
-
├── parameters.dev.json
|
|
40
|
-
├── parameters.prod.json
|
|
41
|
-
└── modules/
|
|
42
|
-
├── container-app.bicep
|
|
43
|
-
├── container-app-env.bicep
|
|
44
|
-
├── sql-database.bicep
|
|
45
|
-
├── storage.bicep
|
|
46
|
-
├── key-vault.bicep
|
|
47
|
-
└── app-insights.bicep
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
2. Copy templates from `.morph/framework/templates/infrastructure/...`
|
|
51
|
-
|
|
52
|
-
3. Replace placeholders:
|
|
53
|
-
- `{{APP_NAME}}` → project name
|
|
54
|
-
- `{{SUBSCRIPTION_ID}}` → request from user
|
|
55
|
-
- `{{RESOURCE_GROUP}}` → suggest default `rg-{app}-{env}`
|
|
56
|
-
|
|
57
|
-
4. Document the created structure in `decisions.md`
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
### 2. VALIDATE - Validate Templates
|
|
62
|
-
|
|
63
|
-
When the user requests `/morph-infra validate`:
|
|
64
|
-
|
|
65
|
-
1. Run Bicep validation:
|
|
66
|
-
```bash
|
|
67
|
-
az bicep build --file infra/main.bicep
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
2. Check required parameters
|
|
71
|
-
|
|
72
|
-
3. Report errors or success
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
### 3. PLAN - Preview Changes
|
|
77
|
-
|
|
78
|
-
When the user requests `/morph-infra plan [env]`:
|
|
79
|
-
|
|
80
|
-
1. Check if Azure CLI is authenticated:
|
|
81
|
-
```bash
|
|
82
|
-
az account show
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
2. Run what-if:
|
|
86
|
-
```bash
|
|
87
|
-
az deployment group what-if \
|
|
88
|
-
--resource-group rg-{app}-{env} \
|
|
89
|
-
--template-file infra/main.bicep \
|
|
90
|
-
--parameters @infra/parameters.{env}.json
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
3. Present change summary:
|
|
94
|
-
- Resources to create
|
|
95
|
-
- Resources to modify
|
|
96
|
-
- Resources to delete
|
|
97
|
-
- Estimated costs
|
|
98
|
-
|
|
99
|
-
4. **STOP and wait for approval** before deploy
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
### 4. DEPLOY - Execute Deploy
|
|
104
|
-
|
|
105
|
-
When the user requests `/morph-infra deploy [env]`:
|
|
106
|
-
|
|
107
|
-
1. Verify plan was approved
|
|
108
|
-
|
|
109
|
-
2. Create resource group if it doesn't exist:
|
|
110
|
-
```bash
|
|
111
|
-
az group create --name rg-{app}-{env} --location brazilsouth
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
3. Execute deploy:
|
|
115
|
-
```bash
|
|
116
|
-
az deployment group create \
|
|
117
|
-
--resource-group rg-{app}-{env} \
|
|
118
|
-
--template-file infra/main.bicep \
|
|
119
|
-
--parameters @infra/parameters.{env}.json
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
4. Capture outputs:
|
|
123
|
-
- Container App URL
|
|
124
|
-
- SQL Connection String
|
|
125
|
-
- Key Vault URI
|
|
126
|
-
|
|
127
|
-
5. Update documentation with deploy information
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
### 5. DESTROY - Remove Resources
|
|
132
|
-
|
|
133
|
-
When the user requests `/morph-infra destroy [env]`:
|
|
134
|
-
|
|
135
|
-
1. **WARN** that this action is irreversible
|
|
136
|
-
|
|
137
|
-
2. List resources that will be deleted
|
|
138
|
-
|
|
139
|
-
3. **STOP and wait for explicit confirmation** ("yes, delete")
|
|
140
|
-
|
|
141
|
-
4. Execute:
|
|
142
|
-
```bash
|
|
143
|
-
az group delete --name rg-{app}-{env} --yes --no-wait
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Security Rules
|
|
149
|
-
|
|
150
|
-
### NEVER:
|
|
151
|
-
- Expose secrets in logs
|
|
152
|
-
- Commit files with secrets
|
|
153
|
-
- Delete production resources without explicit confirmation
|
|
154
|
-
- Create resources outside Bicep (zero portal)
|
|
155
|
-
|
|
156
|
-
### ALWAYS:
|
|
157
|
-
- Use Key Vault for secrets
|
|
158
|
-
- Validate Bicep before deploy
|
|
159
|
-
- Run what-if before deploy
|
|
160
|
-
- Document estimated costs
|
|
161
|
-
- Keep parameters.json separated by environment
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## Cost Guardian Integration
|
|
166
|
-
|
|
167
|
-
Before any deploy, check with Cost Guardian:
|
|
168
|
-
|
|
169
|
-
1. Estimate monthly resource costs
|
|
170
|
-
2. Verify it's within approved limits:
|
|
171
|
-
- Free tier: no approval needed
|
|
172
|
-
- Up to $10/month: requires confirmation
|
|
173
|
-
- Above $10: requires ADR
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Usage Example
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
User: /morph-infra init
|
|
181
|
-
Claude: Creating IaC structure...
|
|
182
|
-
- infra/main.bicep
|
|
183
|
-
- infra/parameters.dev.json
|
|
184
|
-
- infra/modules/*.bicep
|
|
185
|
-
Done! Run /morph-infra validate to verify.
|
|
186
|
-
|
|
187
|
-
User: /morph-infra plan dev
|
|
188
|
-
Claude: Analyzing changes for dev environment...
|
|
189
|
-
|
|
190
|
-
CREATE:
|
|
191
|
-
+ Container App Environment
|
|
192
|
-
+ Container App
|
|
193
|
-
+ SQL Server (Free)
|
|
194
|
-
+ Storage Account (LRS)
|
|
195
|
-
+ Key Vault
|
|
196
|
-
+ Application Insights
|
|
197
|
-
|
|
198
|
-
ESTIMATED COST: ~$0/month (Free tier)
|
|
199
|
-
|
|
200
|
-
Approve deploy? (yes/no)
|
|
201
|
-
|
|
202
|
-
User: yes
|
|
203
|
-
Claude: Executing deploy...
|
|
204
|
-
✓ Resource Group created
|
|
205
|
-
✓ Deploy completed in 3m 45s
|
|
206
|
-
|
|
207
|
-
OUTPUTS:
|
|
208
|
-
- URL: https://myapp-dev.azurecontainerapps.io
|
|
209
|
-
- SQL: tcp:myapp-dev-sql.database.windows.net
|
|
210
|
-
- Key Vault: https://myapp-dev-kv.vault.azure.net
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
1
|
+
---
|
|
2
|
+
description: Manage Azure infrastructure with Bicep templates — provision, update, and monitor cloud resources
|
|
3
|
+
argument-hint: [up|down|plan|status]
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, AskUserQuestion
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /morph-infra - Infrastructure Management
|
|
8
|
+
|
|
9
|
+
Manage Azure infrastructure using Bicep templates.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/morph-infra [action] [options]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Actions
|
|
18
|
+
|
|
19
|
+
| Action | Description |
|
|
20
|
+
|--------|-------------|
|
|
21
|
+
| `init` | Initialize IaC structure in the project |
|
|
22
|
+
| `validate` | Validate Bicep templates |
|
|
23
|
+
| `plan` | Show what-if of changes |
|
|
24
|
+
| `deploy` | Execute resource deployment |
|
|
25
|
+
| `destroy` | Remove all resources |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Workflow
|
|
30
|
+
|
|
31
|
+
### 1. INIT - Initialize IaC
|
|
32
|
+
|
|
33
|
+
When the user requests `/morph-infra init`:
|
|
34
|
+
|
|
35
|
+
1. Create the `infra/` structure in the project:
|
|
36
|
+
```
|
|
37
|
+
infra/
|
|
38
|
+
├── main.bicep
|
|
39
|
+
├── parameters.dev.json
|
|
40
|
+
├── parameters.prod.json
|
|
41
|
+
└── modules/
|
|
42
|
+
├── container-app.bicep
|
|
43
|
+
├── container-app-env.bicep
|
|
44
|
+
├── sql-database.bicep
|
|
45
|
+
├── storage.bicep
|
|
46
|
+
├── key-vault.bicep
|
|
47
|
+
└── app-insights.bicep
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
2. Copy templates from `.morph/framework/templates/infrastructure/...`
|
|
51
|
+
|
|
52
|
+
3. Replace placeholders:
|
|
53
|
+
- `{{APP_NAME}}` → project name
|
|
54
|
+
- `{{SUBSCRIPTION_ID}}` → request from user
|
|
55
|
+
- `{{RESOURCE_GROUP}}` → suggest default `rg-{app}-{env}`
|
|
56
|
+
|
|
57
|
+
4. Document the created structure in `decisions.md`
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### 2. VALIDATE - Validate Templates
|
|
62
|
+
|
|
63
|
+
When the user requests `/morph-infra validate`:
|
|
64
|
+
|
|
65
|
+
1. Run Bicep validation:
|
|
66
|
+
```bash
|
|
67
|
+
az bicep build --file infra/main.bicep
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
2. Check required parameters
|
|
71
|
+
|
|
72
|
+
3. Report errors or success
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### 3. PLAN - Preview Changes
|
|
77
|
+
|
|
78
|
+
When the user requests `/morph-infra plan [env]`:
|
|
79
|
+
|
|
80
|
+
1. Check if Azure CLI is authenticated:
|
|
81
|
+
```bash
|
|
82
|
+
az account show
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
2. Run what-if:
|
|
86
|
+
```bash
|
|
87
|
+
az deployment group what-if \
|
|
88
|
+
--resource-group rg-{app}-{env} \
|
|
89
|
+
--template-file infra/main.bicep \
|
|
90
|
+
--parameters @infra/parameters.{env}.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
3. Present change summary:
|
|
94
|
+
- Resources to create
|
|
95
|
+
- Resources to modify
|
|
96
|
+
- Resources to delete
|
|
97
|
+
- Estimated costs
|
|
98
|
+
|
|
99
|
+
4. **STOP and wait for approval** before deploy
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### 4. DEPLOY - Execute Deploy
|
|
104
|
+
|
|
105
|
+
When the user requests `/morph-infra deploy [env]`:
|
|
106
|
+
|
|
107
|
+
1. Verify plan was approved
|
|
108
|
+
|
|
109
|
+
2. Create resource group if it doesn't exist:
|
|
110
|
+
```bash
|
|
111
|
+
az group create --name rg-{app}-{env} --location brazilsouth
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
3. Execute deploy:
|
|
115
|
+
```bash
|
|
116
|
+
az deployment group create \
|
|
117
|
+
--resource-group rg-{app}-{env} \
|
|
118
|
+
--template-file infra/main.bicep \
|
|
119
|
+
--parameters @infra/parameters.{env}.json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
4. Capture outputs:
|
|
123
|
+
- Container App URL
|
|
124
|
+
- SQL Connection String
|
|
125
|
+
- Key Vault URI
|
|
126
|
+
|
|
127
|
+
5. Update documentation with deploy information
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 5. DESTROY - Remove Resources
|
|
132
|
+
|
|
133
|
+
When the user requests `/morph-infra destroy [env]`:
|
|
134
|
+
|
|
135
|
+
1. **WARN** that this action is irreversible
|
|
136
|
+
|
|
137
|
+
2. List resources that will be deleted
|
|
138
|
+
|
|
139
|
+
3. **STOP and wait for explicit confirmation** ("yes, delete")
|
|
140
|
+
|
|
141
|
+
4. Execute:
|
|
142
|
+
```bash
|
|
143
|
+
az group delete --name rg-{app}-{env} --yes --no-wait
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Security Rules
|
|
149
|
+
|
|
150
|
+
### NEVER:
|
|
151
|
+
- Expose secrets in logs
|
|
152
|
+
- Commit files with secrets
|
|
153
|
+
- Delete production resources without explicit confirmation
|
|
154
|
+
- Create resources outside Bicep (zero portal)
|
|
155
|
+
|
|
156
|
+
### ALWAYS:
|
|
157
|
+
- Use Key Vault for secrets
|
|
158
|
+
- Validate Bicep before deploy
|
|
159
|
+
- Run what-if before deploy
|
|
160
|
+
- Document estimated costs
|
|
161
|
+
- Keep parameters.json separated by environment
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Cost Guardian Integration
|
|
166
|
+
|
|
167
|
+
Before any deploy, check with Cost Guardian:
|
|
168
|
+
|
|
169
|
+
1. Estimate monthly resource costs
|
|
170
|
+
2. Verify it's within approved limits:
|
|
171
|
+
- Free tier: no approval needed
|
|
172
|
+
- Up to $10/month: requires confirmation
|
|
173
|
+
- Above $10: requires ADR
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Usage Example
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
User: /morph-infra init
|
|
181
|
+
Claude: Creating IaC structure...
|
|
182
|
+
- infra/main.bicep
|
|
183
|
+
- infra/parameters.dev.json
|
|
184
|
+
- infra/modules/*.bicep
|
|
185
|
+
Done! Run /morph-infra validate to verify.
|
|
186
|
+
|
|
187
|
+
User: /morph-infra plan dev
|
|
188
|
+
Claude: Analyzing changes for dev environment...
|
|
189
|
+
|
|
190
|
+
CREATE:
|
|
191
|
+
+ Container App Environment
|
|
192
|
+
+ Container App
|
|
193
|
+
+ SQL Server (Free)
|
|
194
|
+
+ Storage Account (LRS)
|
|
195
|
+
+ Key Vault
|
|
196
|
+
+ Application Insights
|
|
197
|
+
|
|
198
|
+
ESTIMATED COST: ~$0/month (Free tier)
|
|
199
|
+
|
|
200
|
+
Approve deploy? (yes/no)
|
|
201
|
+
|
|
202
|
+
User: yes
|
|
203
|
+
Claude: Executing deploy...
|
|
204
|
+
✓ Resource Group created
|
|
205
|
+
✓ Deploy completed in 3m 45s
|
|
206
|
+
|
|
207
|
+
OUTPUTS:
|
|
208
|
+
- URL: https://myapp-dev.azurecontainerapps.io
|
|
209
|
+
- SQL: tcp:myapp-dev-sql.database.windows.net
|
|
210
|
+
- Key Vault: https://myapp-dev-kv.vault.azure.net
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
*MORPH-SPEC by Polymorphism Tech*
|