@dewtech/dare-cli 3.3.0 → 3.5.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/LICENSE +21 -0
- package/README.md +764 -764
- package/dist/__tests__/confidence.test.js +13 -13
- package/dist/__tests__/dag-converter.test.js +56 -56
- package/dist/__tests__/dag-runner/buildLocateContext.test.d.ts +2 -0
- package/dist/__tests__/dag-runner/buildLocateContext.test.d.ts.map +1 -0
- package/dist/__tests__/dag-runner/buildLocateContext.test.js +53 -0
- package/dist/__tests__/dag-runner/buildLocateContext.test.js.map +1 -0
- package/dist/__tests__/dual-graph.test.d.ts +2 -0
- package/dist/__tests__/dual-graph.test.d.ts.map +1 -0
- package/dist/__tests__/dual-graph.test.js +141 -0
- package/dist/__tests__/dual-graph.test.js.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.d.ts +9 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.d.ts.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.js +58 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.js.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.d.ts +2 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.js +100 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.js.map +1 -0
- package/dist/__tests__/graphrag/factory.test.js +10 -1
- package/dist/__tests__/graphrag/factory.test.js.map +1 -1
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.d.ts +11 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.d.ts.map +1 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.js +34 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.js.map +1 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.d.ts +2 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.js +46 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.js.map +1 -0
- package/dist/__tests__/graphrag/graph-rag.test.js +31 -0
- package/dist/__tests__/graphrag/graph-rag.test.js.map +1 -1
- package/dist/__tests__/graphrag/json-graph.test.js +57 -0
- package/dist/__tests__/graphrag/json-graph.test.js.map +1 -1
- package/dist/__tests__/graphrag/neo4j-graph.test.d.ts +2 -0
- package/dist/__tests__/graphrag/neo4j-graph.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/neo4j-graph.test.js +104 -0
- package/dist/__tests__/graphrag/neo4j-graph.test.js.map +1 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.d.ts +2 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.js +110 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.js.map +1 -0
- package/dist/__tests__/mcp-server/server.test.js +3 -16
- package/dist/__tests__/mcp-server/server.test.js.map +1 -1
- package/dist/__tests__/project-generator.test.js +2 -2
- package/dist/__tests__/project-generator.test.js.map +1 -1
- package/dist/__tests__/refine.test.js +49 -49
- package/dist/__tests__/reverse-collection.test.js +6 -6
- package/dist/__tests__/review.test.js +38 -38
- package/dist/__tests__/security-hardening.test.d.ts +2 -0
- package/dist/__tests__/security-hardening.test.d.ts.map +1 -0
- package/dist/__tests__/security-hardening.test.js +101 -0
- package/dist/__tests__/security-hardening.test.js.map +1 -0
- package/dist/__tests__/validate.test.js +65 -65
- package/dist/bin/dare.js +0 -0
- package/dist/commands/__tests__/execute.telemetry.spec.js +9 -0
- package/dist/commands/__tests__/execute.telemetry.spec.js.map +1 -1
- package/dist/commands/__tests__/graph-viz-layers.test.d.ts +2 -0
- package/dist/commands/__tests__/graph-viz-layers.test.d.ts.map +1 -0
- package/dist/commands/__tests__/graph-viz-layers.test.js +36 -0
- package/dist/commands/__tests__/graph-viz-layers.test.js.map +1 -0
- package/dist/commands/__tests__/impact.test.d.ts +2 -0
- package/dist/commands/__tests__/impact.test.d.ts.map +1 -0
- package/dist/commands/__tests__/impact.test.js +26 -0
- package/dist/commands/__tests__/impact.test.js.map +1 -0
- package/dist/commands/__tests__/init-validation.test.d.ts +2 -0
- package/dist/commands/__tests__/init-validation.test.d.ts.map +1 -0
- package/dist/commands/__tests__/init-validation.test.js +81 -0
- package/dist/commands/__tests__/init-validation.test.js.map +1 -0
- package/dist/commands/__tests__/init.integration.spec.js +6 -4
- package/dist/commands/__tests__/init.integration.spec.js.map +1 -1
- package/dist/commands/__tests__/init.spec.d.ts +2 -0
- package/dist/commands/__tests__/init.spec.d.ts.map +1 -0
- package/dist/commands/__tests__/init.spec.js +88 -0
- package/dist/commands/__tests__/init.spec.js.map +1 -0
- package/dist/commands/__tests__/locate.test.d.ts +2 -0
- package/dist/commands/__tests__/locate.test.d.ts.map +1 -0
- package/dist/commands/__tests__/locate.test.js +35 -0
- package/dist/commands/__tests__/locate.test.js.map +1 -0
- package/dist/commands/__tests__/owners.test.d.ts +2 -0
- package/dist/commands/__tests__/owners.test.d.ts.map +1 -0
- package/dist/commands/__tests__/owners.test.js +34 -0
- package/dist/commands/__tests__/owners.test.js.map +1 -0
- package/dist/commands/__tests__/trace.test.d.ts +2 -0
- package/dist/commands/__tests__/trace.test.d.ts.map +1 -0
- package/dist/commands/__tests__/trace.test.js +29 -0
- package/dist/commands/__tests__/trace.test.js.map +1 -0
- package/dist/commands/blueprint.js +122 -122
- package/dist/commands/design.js +20 -20
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +11 -6
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/graph-queries.d.ts +48 -0
- package/dist/commands/graph-queries.d.ts.map +1 -0
- package/dist/commands/graph-queries.js +204 -0
- package/dist/commands/graph-queries.js.map +1 -0
- package/dist/commands/graph.d.ts +13 -0
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/commands/graph.js +212 -8
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/init-validation.d.ts +22 -0
- package/dist/commands/init-validation.d.ts.map +1 -0
- package/dist/commands/init-validation.js +54 -0
- package/dist/commands/init-validation.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/dag-runner/__tests__/fixtures/src/math.d.ts +3 -0
- package/dist/dag-runner/__tests__/fixtures/src/math.d.ts.map +1 -0
- package/dist/dag-runner/__tests__/fixtures/src/math.js +7 -0
- package/dist/dag-runner/__tests__/fixtures/src/math.js.map +1 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.d.ts +2 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.d.ts.map +1 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.js +81 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.js.map +1 -0
- package/dist/dag-runner/graph-ingest.d.ts.map +1 -1
- package/dist/dag-runner/graph-ingest.js +46 -0
- package/dist/dag-runner/graph-ingest.js.map +1 -1
- package/dist/dag-runner/graph-locate.d.ts +11 -0
- package/dist/dag-runner/graph-locate.d.ts.map +1 -0
- package/dist/dag-runner/graph-locate.js +74 -0
- package/dist/dag-runner/graph-locate.js.map +1 -0
- package/dist/dag-runner/run_dag.d.ts +3 -1
- package/dist/dag-runner/run_dag.d.ts.map +1 -1
- package/dist/dag-runner/run_dag.js +2 -1
- package/dist/dag-runner/run_dag.js.map +1 -1
- package/dist/dag-runner/utils/stitch-context.d.ts +3 -1
- package/dist/dag-runner/utils/stitch-context.d.ts.map +1 -1
- package/dist/dag-runner/utils/stitch-context.js +8 -2
- package/dist/dag-runner/utils/stitch-context.js.map +1 -1
- package/dist/graphrag/__tests__/code-index.test.d.ts +2 -0
- package/dist/graphrag/__tests__/code-index.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/code-index.test.js +75 -0
- package/dist/graphrag/__tests__/code-index.test.js.map +1 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.d.ts +5 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.d.ts.map +1 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.js +10 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.js.map +1 -0
- package/dist/graphrag/__tests__/locate.test.d.ts +2 -0
- package/dist/graphrag/__tests__/locate.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/locate.test.js +43 -0
- package/dist/graphrag/__tests__/locate.test.js.map +1 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.d.ts +2 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.js +66 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.js.map +1 -0
- package/dist/graphrag/__tests__/traverse.test.d.ts +2 -0
- package/dist/graphrag/__tests__/traverse.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/traverse.test.js +71 -0
- package/dist/graphrag/__tests__/traverse.test.js.map +1 -0
- package/dist/graphrag/__tests__/types.test.d.ts +2 -0
- package/dist/graphrag/__tests__/types.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/types.test.js +52 -0
- package/dist/graphrag/__tests__/types.test.js.map +1 -0
- package/dist/graphrag/code-index.d.ts +15 -0
- package/dist/graphrag/code-index.d.ts.map +1 -0
- package/dist/graphrag/code-index.js +205 -0
- package/dist/graphrag/code-index.js.map +1 -0
- package/dist/graphrag/factory.d.ts.map +1 -1
- package/dist/graphrag/factory.js +5 -0
- package/dist/graphrag/factory.js.map +1 -1
- package/dist/graphrag/graph-rag.d.ts +6 -2
- package/dist/graphrag/graph-rag.d.ts.map +1 -1
- package/dist/graphrag/graph-rag.js +64 -26
- package/dist/graphrag/graph-rag.js.map +1 -1
- package/dist/graphrag/index.d.ts +8 -2
- package/dist/graphrag/index.d.ts.map +1 -1
- package/dist/graphrag/index.js +5 -1
- package/dist/graphrag/index.js.map +1 -1
- package/dist/graphrag/json-graph.d.ts +8 -0
- package/dist/graphrag/json-graph.d.ts.map +1 -1
- package/dist/graphrag/json-graph.js +50 -4
- package/dist/graphrag/json-graph.js.map +1 -1
- package/dist/graphrag/knowledge-graph.d.ts +8 -3
- package/dist/graphrag/knowledge-graph.d.ts.map +1 -1
- package/dist/graphrag/neo4j-graph.d.ts +19 -18
- package/dist/graphrag/neo4j-graph.d.ts.map +1 -1
- package/dist/graphrag/neo4j-graph.js +164 -38
- package/dist/graphrag/neo4j-graph.js.map +1 -1
- package/dist/graphrag/requirement-ingest.d.ts +15 -0
- package/dist/graphrag/requirement-ingest.d.ts.map +1 -0
- package/dist/graphrag/requirement-ingest.js +158 -0
- package/dist/graphrag/requirement-ingest.js.map +1 -0
- package/dist/graphrag/traverse.d.ts +5 -0
- package/dist/graphrag/traverse.d.ts.map +1 -0
- package/dist/graphrag/traverse.js +139 -0
- package/dist/graphrag/traverse.js.map +1 -0
- package/dist/graphrag/types.d.ts +60 -2
- package/dist/graphrag/types.d.ts.map +1 -1
- package/dist/graphrag/types.js +34 -1
- package/dist/graphrag/types.js.map +1 -1
- package/dist/mcp-server/__tests__/auth.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/auth.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/auth.test.js +72 -0
- package/dist/mcp-server/__tests__/auth.test.js.map +1 -0
- package/dist/mcp-server/__tests__/boot-config.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/boot-config.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/boot-config.test.js +29 -0
- package/dist/mcp-server/__tests__/boot-config.test.js.map +1 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.js +66 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.js.map +1 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.js +85 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.js.map +1 -0
- package/dist/mcp-server/__tests__/path-confinement.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/path-confinement.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/path-confinement.test.js +135 -0
- package/dist/mcp-server/__tests__/path-confinement.test.js.map +1 -0
- package/dist/mcp-server/bin/server.js +18 -6
- package/dist/mcp-server/bin/server.js.map +1 -1
- package/dist/mcp-server/boot-config.d.ts +6 -0
- package/dist/mcp-server/boot-config.d.ts.map +1 -0
- package/dist/mcp-server/boot-config.js +17 -0
- package/dist/mcp-server/boot-config.js.map +1 -0
- package/dist/mcp-server/middleware/auth.d.ts +10 -0
- package/dist/mcp-server/middleware/auth.d.ts.map +1 -0
- package/dist/mcp-server/middleware/auth.js +44 -0
- package/dist/mcp-server/middleware/auth.js.map +1 -0
- package/dist/mcp-server/middleware/cors.d.ts +6 -0
- package/dist/mcp-server/middleware/cors.d.ts.map +1 -0
- package/dist/mcp-server/middleware/cors.js +30 -0
- package/dist/mcp-server/middleware/cors.js.map +1 -0
- package/dist/mcp-server/middleware/error-handler.d.ts +11 -0
- package/dist/mcp-server/middleware/error-handler.d.ts.map +1 -0
- package/dist/mcp-server/middleware/error-handler.js +14 -0
- package/dist/mcp-server/middleware/error-handler.js.map +1 -0
- package/dist/mcp-server/server.d.ts +7 -2
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +290 -105
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/skills/registry-mock.json +109 -109
- package/dist/skills/tests/manifest.spec.js +20 -20
- package/dist/stacks/__tests__/dna-emitter.spec.js +6 -6
- package/dist/stacks/dna-emitter.js +69 -69
- package/dist/stacks/ruby-rails-8/scaffold.js +15 -15
- package/dist/utils/__tests__/static-analyzer-exports.test.d.ts +2 -0
- package/dist/utils/__tests__/static-analyzer-exports.test.d.ts.map +1 -0
- package/dist/utils/__tests__/static-analyzer-exports.test.js +21 -0
- package/dist/utils/__tests__/static-analyzer-exports.test.js.map +1 -0
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +266 -252
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/stack-bootstrap.js +371 -371
- package/dist/utils/static-analyzer.d.ts +9 -0
- package/dist/utils/static-analyzer.d.ts.map +1 -1
- package/dist/utils/static-analyzer.js +2 -2
- package/dist/utils/static-analyzer.js.map +1 -1
- package/dist/utils/templates.js +394 -394
- package/dist/verification/__tests__/anti-tamper.test.js +13 -13
- package/dist/verification/__tests__/telemetry.test.js +9 -0
- package/dist/verification/__tests__/telemetry.test.js.map +1 -1
- package/package.json +96 -93
- package/templates/DARE-dag-example.yaml +280 -280
- package/templates/UPDATE-MANIFEST.json +68 -68
- package/templates/backend/node-nestjs/.env.example +9 -9
- package/templates/backend/node-nestjs/nest-cli.json +8 -8
- package/templates/backend/node-nestjs/package.json +50 -50
- package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
- package/templates/backend/node-nestjs/src/app.module.ts +15 -15
- package/templates/backend/node-nestjs/src/app.service.ts +8 -8
- package/templates/backend/node-nestjs/src/main.ts +24 -24
- package/templates/backend/node-nestjs/tsconfig.json +21 -21
- package/templates/backend/php-laravel/.env.example +22 -22
- package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
- package/templates/backend/php-laravel/composer.json +40 -40
- package/templates/backend/python-fastapi/.env.example +4 -4
- package/templates/backend/python-fastapi/app/api/router.py +8 -8
- package/templates/backend/python-fastapi/app/core/config.py +20 -20
- package/templates/backend/python-fastapi/main.py +35 -35
- package/templates/backend/python-fastapi/requirements.txt +13 -13
- package/templates/backend/rust-axum/.env.example +3 -3
- package/templates/backend/rust-axum/Cargo.toml +23 -23
- package/templates/backend/rust-axum/src/errors.rs +30 -30
- package/templates/backend/rust-axum/src/main.rs +32 -32
- package/templates/backend/rust-axum/src/routes.rs +6 -6
- package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
- package/templates/frontend/leptos-csr/Cargo.toml +16 -16
- package/templates/frontend/leptos-csr/Trunk.toml +10 -10
- package/templates/frontend/leptos-csr/index.html +11 -11
- package/templates/frontend/leptos-csr/src/lib.rs +20 -20
- package/templates/frontend/leptos-csr/style/main.scss +19 -19
- package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
- package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
- package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
- package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
- package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
- package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
- package/templates/frontend/react/index.html +12 -12
- package/templates/frontend/react/package.json +35 -35
- package/templates/frontend/react/src/App.tsx +25 -25
- package/templates/frontend/react/src/main.tsx +9 -9
- package/templates/frontend/vue/package.json +32 -32
- package/templates/frontend/vue/src/App.vue +7 -7
- package/templates/frontend/vue/src/main.ts +10 -10
- package/templates/frontend/vue/src/router/index.ts +14 -14
- package/templates/frontend/vue/src/views/HomeView.vue +6 -6
- package/templates/hooks/pre-commit-dare-validate +24 -24
- package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -152
- package/templates/ide/antigravity/.agents/skills/dare-bench/SKILL.md +21 -21
- package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +368 -368
- package/templates/ide/antigravity/.agents/skills/dare-bootstrap/SKILL.md +32 -32
- package/templates/ide/antigravity/.agents/skills/dare-bugfix-design/SKILL.md +76 -76
- package/templates/ide/antigravity/.agents/skills/dare-dag/SKILL.md +32 -32
- package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -154
- package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -130
- package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
- package/templates/ide/antigravity/.agents/skills/dare-design/SKILL.md +180 -180
- package/templates/ide/antigravity/.agents/skills/dare-discover/SKILL.md +33 -33
- package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -63
- package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -315
- package/templates/ide/antigravity/.agents/skills/dare-execute/SKILL.md +264 -264
- package/templates/ide/antigravity/.agents/skills/dare-feature-design/SKILL.md +74 -74
- package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -192
- package/templates/ide/antigravity/.agents/skills/dare-graph/SKILL.md +35 -35
- package/templates/ide/antigravity/.agents/skills/dare-info/SKILL.md +31 -31
- package/templates/ide/antigravity/.agents/skills/dare-init/SKILL.md +35 -35
- package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -337
- package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -166
- package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -217
- package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -61
- package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -187
- package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -217
- package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
- package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -108
- package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
- package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -263
- package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
- package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -274
- package/templates/ide/antigravity/.agents/skills/dare-skill/SKILL.md +35 -35
- package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
- package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -188
- package/templates/ide/antigravity/.agents/skills/dare-update/SKILL.md +33 -33
- package/templates/ide/antigravity/.agents/skills/dare-validate/SKILL.md +33 -33
- package/templates/ide/antigravity/.agents/skills/dare-welcome/SKILL.md +30 -30
- package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -343
- package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -377
- package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -382
- package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -326
- package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -393
- package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
- package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/antigravity/templates/TASKS-template.md +26 -26
- package/templates/ide/antigravity/templates/TELEMETRY-template.md +125 -125
- package/templates/ide/claude/.claude/commands/dare-ax.md +131 -131
- package/templates/ide/claude/.claude/commands/dare-bench.md +18 -18
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
- package/templates/ide/claude/.claude/commands/dare-bootstrap.md +27 -27
- package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -119
- package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -151
- package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
- package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -117
- package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
- package/templates/ide/claude/.claude/commands/dare-dag.md +27 -27
- package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
- package/templates/ide/claude/.claude/commands/dare-discover.md +28 -28
- package/templates/ide/claude/.claude/commands/dare-dna.md +75 -75
- package/templates/ide/claude/.claude/commands/dare-docker.md +207 -207
- package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
- package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -147
- package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -149
- package/templates/ide/claude/.claude/commands/dare-graph.md +30 -30
- package/templates/ide/claude/.claude/commands/dare-info.md +26 -26
- package/templates/ide/claude/.claude/commands/dare-init.md +30 -30
- package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -211
- package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -124
- package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -148
- package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -72
- package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -166
- package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -159
- package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
- package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -139
- package/templates/ide/claude/.claude/commands/dare-review.md +113 -113
- package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
- package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
- package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
- package/templates/ide/claude/.claude/commands/dare-skill.md +30 -30
- package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
- package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -132
- package/templates/ide/claude/.claude/commands/dare-update.md +28 -28
- package/templates/ide/claude/.claude/commands/dare-validate.md +28 -28
- package/templates/ide/claude/.claude/commands/dare-welcome.md +25 -25
- package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -205
- package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -232
- package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -228
- package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -210
- package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -236
- package/templates/ide/claude/.claude/settings.example.json +35 -35
- package/templates/ide/claude/CLAUDE.md +146 -146
- package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/claude/templates/DESIGN-template.md +129 -129
- package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/claude/templates/TASKS-template.md +26 -26
- package/templates/ide/claude/templates/TELEMETRY-template.md +125 -125
- package/templates/ide/cursor/.cursor/commands/dare-bench.md +18 -18
- package/templates/ide/cursor/.cursor/commands/dare-blueprint.md +86 -86
- package/templates/ide/cursor/.cursor/commands/dare-bootstrap.md +27 -27
- package/templates/ide/cursor/.cursor/commands/dare-bugfix-design.md +64 -64
- package/templates/ide/cursor/.cursor/commands/dare-dag-run.md +110 -110
- package/templates/ide/cursor/.cursor/commands/dare-dag-viz.md +139 -139
- package/templates/ide/cursor/.cursor/commands/dare-dag.md +27 -27
- package/templates/ide/cursor/.cursor/commands/dare-design.md +35 -35
- package/templates/ide/cursor/.cursor/commands/dare-discover.md +28 -28
- package/templates/ide/cursor/.cursor/commands/dare-dna.md +75 -75
- package/templates/ide/cursor/.cursor/commands/dare-docker-compose.md +18 -18
- package/templates/ide/cursor/.cursor/commands/dare-dockerfile.md +17 -17
- package/templates/ide/cursor/.cursor/commands/dare-execute.md +19 -19
- package/templates/ide/cursor/.cursor/commands/dare-feature-design.md +64 -64
- package/templates/ide/cursor/.cursor/commands/dare-graph.md +30 -30
- package/templates/ide/cursor/.cursor/commands/dare-info.md +26 -26
- package/templates/ide/cursor/.cursor/commands/dare-init.md +30 -30
- package/templates/ide/cursor/.cursor/commands/dare-migrate.md +72 -72
- package/templates/ide/cursor/.cursor/commands/dare-refine.md +107 -107
- package/templates/ide/cursor/.cursor/commands/dare-reverse.md +139 -139
- package/templates/ide/cursor/.cursor/commands/dare-review.md +91 -91
- package/templates/ide/cursor/.cursor/commands/dare-skill.md +30 -30
- package/templates/ide/cursor/.cursor/commands/dare-tasks.md +184 -184
- package/templates/ide/cursor/.cursor/commands/dare-telemetry.md +42 -42
- package/templates/ide/cursor/.cursor/commands/dare-update.md +28 -28
- package/templates/ide/cursor/.cursor/commands/dare-validate.md +28 -28
- package/templates/ide/cursor/.cursor/commands/dare-welcome.md +25 -25
- package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -263
- package/templates/ide/cursor/.cursor/rules/skill-bugfix-design.mdc +51 -51
- package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -173
- package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -134
- package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
- package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -63
- package/templates/ide/cursor/.cursor/rules/skill-docker.mdc +33 -33
- package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -352
- package/templates/ide/cursor/.cursor/rules/skill-feature-design.mdc +43 -43
- package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -244
- package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -371
- package/templates/ide/cursor/.cursor/rules/skill-laravel-api.mdc +44 -44
- package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -266
- package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -295
- package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -367
- package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -58
- package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -346
- package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -248
- package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -400
- package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -262
- package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -107
- package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -281
- package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
- package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
- package/templates/ide/cursor/.cursor/rules/skill-telemetry.mdc +156 -156
- package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
- package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/cursor/templates/TASKS-template.md +26 -26
- package/templates/ide/cursor/templates/TELEMETRY-template.md +125 -125
- package/templates/shared/docker-compose.yml +41 -41
- package/templates/stacks/go-gin/.dare/skills.yml +11 -11
- package/templates/stacks/go-gin/.env.example +24 -24
- package/templates/stacks/go-gin/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/go-gin/README.md.tpl +38 -38
- package/templates/stacks/go-gin/cmd/server/main.go.tpl +78 -78
- package/templates/stacks/go-gin/db/migrations/0001_create_users.down.sql +2 -2
- package/templates/stacks/go-gin/db/migrations/0001_create_users.up.sql +12 -12
- package/templates/stacks/go-gin/db/queries/users.sql +23 -23
- package/templates/stacks/go-gin/gitignore +7 -7
- package/templates/stacks/go-gin/go.mod.tpl +17 -17
- package/templates/stacks/go-gin/internal/config/config.go +41 -41
- package/templates/stacks/go-gin/internal/db/postgres.go.tpl +25 -25
- package/templates/stacks/go-gin/internal/handler/auth_handler.go.tpl +72 -72
- package/templates/stacks/go-gin/internal/handler/users_handler.go.tpl +72 -72
- package/templates/stacks/go-gin/internal/handler/ws_handler.go +37 -37
- package/templates/stacks/go-gin/internal/llm/dummy.go +14 -14
- package/templates/stacks/go-gin/internal/llm/provider.go +8 -8
- package/templates/stacks/go-gin/internal/middleware/jwt.go.tpl +58 -58
- package/templates/stacks/go-gin/internal/middleware/rate_limit.go +55 -55
- package/templates/stacks/go-gin/internal/model/user.go +17 -17
- package/templates/stacks/go-gin/internal/repository/users_repository.go.tpl +79 -79
- package/templates/stacks/go-gin/internal/service/auth_service.go.tpl +55 -55
- package/templates/stacks/go-gin/internal/service/users_service.go.tpl +53 -53
- package/templates/stacks/go-gin/llms.txt.tpl +54 -54
- package/templates/stacks/go-gin/openapi.json.tpl +46 -46
- package/templates/stacks/go-gin/sqlc.yaml +14 -14
- package/templates/stacks/go-gin/tests/smoke_test.go.tpl +22 -22
- package/templates/stacks/go-stdlib/.dare/skills.yml +11 -11
- package/templates/stacks/go-stdlib/.env.example +24 -24
- package/templates/stacks/go-stdlib/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/go-stdlib/README.md.tpl +41 -41
- package/templates/stacks/go-stdlib/cmd/server/main.go.tpl +82 -82
- package/templates/stacks/go-stdlib/db/migrations/0001_create_users.down.sql +2 -2
- package/templates/stacks/go-stdlib/db/migrations/0001_create_users.up.sql +12 -12
- package/templates/stacks/go-stdlib/db/queries/users.sql +23 -23
- package/templates/stacks/go-stdlib/gitignore +6 -6
- package/templates/stacks/go-stdlib/go.mod.tpl +15 -15
- package/templates/stacks/go-stdlib/internal/config/config.go +41 -41
- package/templates/stacks/go-stdlib/internal/db/postgres.go.tpl +24 -24
- package/templates/stacks/go-stdlib/internal/handler/auth_handler.go.tpl +71 -71
- package/templates/stacks/go-stdlib/internal/handler/users_handler.go.tpl +84 -84
- package/templates/stacks/go-stdlib/internal/handler/ws_handler.go +36 -36
- package/templates/stacks/go-stdlib/internal/httpx/json.go +32 -32
- package/templates/stacks/go-stdlib/internal/llm/dummy.go +14 -14
- package/templates/stacks/go-stdlib/internal/llm/provider.go +8 -8
- package/templates/stacks/go-stdlib/internal/middleware/chain.go +21 -21
- package/templates/stacks/go-stdlib/internal/middleware/cors.go +27 -27
- package/templates/stacks/go-stdlib/internal/middleware/jwt.go.tpl +51 -51
- package/templates/stacks/go-stdlib/internal/middleware/rate_limit.go +81 -81
- package/templates/stacks/go-stdlib/internal/model/user.go +17 -17
- package/templates/stacks/go-stdlib/internal/repository/users_repository.go.tpl +75 -75
- package/templates/stacks/go-stdlib/internal/service/auth_service.go.tpl +55 -55
- package/templates/stacks/go-stdlib/internal/service/users_service.go.tpl +53 -53
- package/templates/stacks/go-stdlib/llms.txt.tpl +60 -60
- package/templates/stacks/go-stdlib/openapi.json.tpl +46 -46
- package/templates/stacks/go-stdlib/sqlc.yaml +14 -14
- package/templates/stacks/go-stdlib/tests/smoke_test.go.tpl +45 -45
- package/templates/stacks/mcp-go/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-go/.env.example +14 -14
- package/templates/stacks/mcp-go/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/mcp-go/README.md.tpl +50 -50
- package/templates/stacks/mcp-go/cmd/server/main.go.tpl +62 -62
- package/templates/stacks/mcp-go/gitignore +6 -6
- package/templates/stacks/mcp-go/go.mod.tpl +9 -9
- package/templates/stacks/mcp-go/internal/prompts/summarize.go +9 -9
- package/templates/stacks/mcp-go/internal/server/server.go.tpl +80 -80
- package/templates/stacks/mcp-go/internal/tools/echo.go +15 -15
- package/templates/stacks/mcp-go/internal/transports/http.go.tpl +21 -21
- package/templates/stacks/mcp-go/internal/transports/sse.go.tpl +17 -17
- package/templates/stacks/mcp-go/internal/transports/stdio.go.tpl +14 -14
- package/templates/stacks/mcp-go/llms.txt.tpl +60 -60
- package/templates/stacks/mcp-go/openapi.json.tpl +31 -31
- package/templates/stacks/mcp-go/tests/echo_test.go.tpl +37 -37
- package/templates/stacks/mcp-node-ts/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-node-ts/.env.example +16 -16
- package/templates/stacks/mcp-node-ts/.github/workflows/dare-ci.yml +54 -54
- package/templates/stacks/mcp-node-ts/README.md.hbs +49 -49
- package/templates/stacks/mcp-node-ts/gitignore +7 -7
- package/templates/stacks/mcp-node-ts/llms.txt.hbs +61 -61
- package/templates/stacks/mcp-node-ts/openapi.json.hbs +39 -39
- package/templates/stacks/mcp-node-ts/package.json.hbs +35 -35
- package/templates/stacks/mcp-node-ts/src/cli.ts.hbs +71 -71
- package/templates/stacks/mcp-node-ts/src/prompts/index.ts +36 -36
- package/templates/stacks/mcp-node-ts/src/server.ts.hbs +45 -45
- package/templates/stacks/mcp-node-ts/src/tools/echo.ts +23 -23
- package/templates/stacks/mcp-node-ts/src/tools/index.ts +18 -18
- package/templates/stacks/mcp-node-ts/src/transports/http.ts +68 -68
- package/templates/stacks/mcp-node-ts/src/transports/sse.ts +58 -58
- package/templates/stacks/mcp-node-ts/src/transports/stdio.ts +5 -5
- package/templates/stacks/mcp-node-ts/tests/echo.test.ts +50 -50
- package/templates/stacks/mcp-node-ts/tsconfig.json +17 -17
- package/templates/stacks/mcp-python/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-python/.env.example +14 -14
- package/templates/stacks/mcp-python/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/mcp-python/README.md.j2 +49 -49
- package/templates/stacks/mcp-python/gitignore +12 -12
- package/templates/stacks/mcp-python/llms.txt.j2 +56 -56
- package/templates/stacks/mcp-python/openapi.json.j2 +33 -33
- package/templates/stacks/mcp-python/pyproject.toml.j2 +37 -37
- package/templates/stacks/mcp-python/src/cli.py.j2 +68 -68
- package/templates/stacks/mcp-python/src/prompts/summarize.py +10 -10
- package/templates/stacks/mcp-python/src/server.py.j2 +28 -28
- package/templates/stacks/mcp-python/src/tools/echo.py +12 -12
- package/templates/stacks/mcp-python/src/transports/http.py +12 -12
- package/templates/stacks/mcp-python/src/transports/sse.py +13 -13
- package/templates/stacks/mcp-python/src/transports/stdio.py +6 -6
- package/templates/stacks/mcp-python/tests/test_echo.py +28 -28
- package/templates/stacks/mcp-rust/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-rust/.env.example +14 -14
- package/templates/stacks/mcp-rust/.github/workflows/dare-ci.yml +38 -38
- package/templates/stacks/mcp-rust/Cargo.toml.tera +35 -35
- package/templates/stacks/mcp-rust/README.md.tera +50 -50
- package/templates/stacks/mcp-rust/gitignore +5 -5
- package/templates/stacks/mcp-rust/llms.txt.tera +60 -60
- package/templates/stacks/mcp-rust/openapi.json.tera +31 -31
- package/templates/stacks/mcp-rust/src/cli.rs.tera +33 -33
- package/templates/stacks/mcp-rust/src/lib.rs +6 -6
- package/templates/stacks/mcp-rust/src/main.rs.tera +30 -30
- package/templates/stacks/mcp-rust/src/prompts/mod.rs +1 -1
- package/templates/stacks/mcp-rust/src/prompts/summarize.rs +5 -5
- package/templates/stacks/mcp-rust/src/server.rs.tera +38 -38
- package/templates/stacks/mcp-rust/src/tools/echo.rs +18 -18
- package/templates/stacks/mcp-rust/src/tools/mod.rs +22 -22
- package/templates/stacks/mcp-rust/src/transports/http.rs +27 -27
- package/templates/stacks/mcp-rust/src/transports/mod.rs +3 -3
- package/templates/stacks/mcp-rust/src/transports/sse.rs +33 -33
- package/templates/stacks/mcp-rust/src/transports/stdio.rs +14 -14
- package/templates/stacks/mcp-rust/tests/echo_test.rs.tera +27 -27
- package/templates/stacks/node-nestjs/.dare/skills.yml +11 -11
- package/templates/stacks/node-nestjs/.env.example +21 -21
- package/templates/stacks/node-nestjs/.github/workflows/dare-ci.yml +54 -54
- package/templates/stacks/node-nestjs/README.md.hbs +35 -35
- package/templates/stacks/node-nestjs/gitignore +7 -7
- package/templates/stacks/node-nestjs/llms.txt.hbs +47 -47
- package/templates/stacks/node-nestjs/nest-cli.json +16 -16
- package/templates/stacks/node-nestjs/openapi.json.hbs +75 -75
- package/templates/stacks/node-nestjs/package.json.hbs +57 -57
- package/templates/stacks/node-nestjs/prisma/schema.prisma +25 -25
- package/templates/stacks/node-nestjs/prisma/seed.ts.hbs +25 -25
- package/templates/stacks/node-nestjs/src/app.module.ts +39 -39
- package/templates/stacks/node-nestjs/src/auth/auth.controller.ts +29 -29
- package/templates/stacks/node-nestjs/src/auth/auth.module.ts +25 -25
- package/templates/stacks/node-nestjs/src/auth/auth.service.ts +36 -36
- package/templates/stacks/node-nestjs/src/auth/dto/login-response.dto.ts +9 -9
- package/templates/stacks/node-nestjs/src/auth/dto/login.dto.ts +17 -17
- package/templates/stacks/node-nestjs/src/auth/jwt.strategy.ts +25 -25
- package/templates/stacks/node-nestjs/src/common/filters/problem-details.filter.ts +38 -38
- package/templates/stacks/node-nestjs/src/common/interceptors/json-response.interceptor.ts +13 -13
- package/templates/stacks/node-nestjs/src/main.ts.hbs +44 -44
- package/templates/stacks/node-nestjs/src/prisma/prisma.module.ts +9 -9
- package/templates/stacks/node-nestjs/src/prisma/prisma.service.ts +9 -9
- package/templates/stacks/node-nestjs/src/users/dto/create-user.dto.ts +22 -22
- package/templates/stacks/node-nestjs/src/users/dto/user.dto.ts +15 -15
- package/templates/stacks/node-nestjs/src/users/users.controller.ts +41 -41
- package/templates/stacks/node-nestjs/src/users/users.module.ts +11 -11
- package/templates/stacks/node-nestjs/src/users/users.repository.ts +38 -38
- package/templates/stacks/node-nestjs/src/users/users.service.ts +38 -38
- package/templates/stacks/node-nestjs/tsconfig.build.json +4 -4
- package/templates/stacks/node-nestjs/tsconfig.json +28 -28
- package/templates/stacks/php-laravel/.dare/skills.yml +11 -11
- package/templates/stacks/php-laravel/.env.example +41 -41
- package/templates/stacks/php-laravel/.github/workflows/dare-ci.yml +43 -43
- package/templates/stacks/php-laravel/README.md.hbs +36 -36
- package/templates/stacks/php-laravel/app/Http/Controllers/Api/AuthController.php +36 -36
- package/templates/stacks/php-laravel/app/Http/Controllers/Api/UsersController.php +33 -33
- package/templates/stacks/php-laravel/app/Http/Requests/CreateUserRequest.php +26 -26
- package/templates/stacks/php-laravel/app/Http/Requests/LoginRequest.php +34 -34
- package/templates/stacks/php-laravel/app/Llm/Contracts/LlmProvider.php +12 -12
- package/templates/stacks/php-laravel/app/Llm/Providers/DummyProvider.php +13 -13
- package/templates/stacks/php-laravel/app/Llm/Providers/OpenAiProvider.php +33 -33
- package/templates/stacks/php-laravel/app/Models/User.php +44 -44
- package/templates/stacks/php-laravel/app/Repositories/UsersRepository.php +32 -32
- package/templates/stacks/php-laravel/app/Services/AuthService.php +37 -37
- package/templates/stacks/php-laravel/app/Services/UsersService.php +57 -57
- package/templates/stacks/php-laravel/artisan +12 -12
- package/templates/stacks/php-laravel/bootstrap/app.php +29 -29
- package/templates/stacks/php-laravel/bootstrap/providers.php +5 -5
- package/templates/stacks/php-laravel/composer.json.hbs +58 -58
- package/templates/stacks/php-laravel/config/l5-swagger.php +41 -41
- package/templates/stacks/php-laravel/config/reverb.php +34 -34
- package/templates/stacks/php-laravel/config/sanctum.php +15 -15
- package/templates/stacks/php-laravel/database/migrations/2026_06_01_000001_create_users_table.php +27 -27
- package/templates/stacks/php-laravel/database/seeders/DatabaseSeeder.php +21 -21
- package/templates/stacks/php-laravel/gitignore +23 -23
- package/templates/stacks/php-laravel/llms.txt.hbs +53 -53
- package/templates/stacks/php-laravel/openapi.json.hbs +43 -43
- package/templates/stacks/php-laravel/phpstan.neon +9 -9
- package/templates/stacks/php-laravel/routes/api.php +13 -13
- package/templates/stacks/php-laravel/routes/channels.php +7 -7
- package/templates/stacks/php-laravel/tests/Feature/AuthTest.php +35 -35
- package/templates/stacks/php-laravel/tests/Feature/UsersTest.php +30 -30
- package/templates/stacks/php-laravel/tests/Pest.php +5 -5
- package/templates/stacks/python-fastapi/.dare/skills.yml +11 -11
- package/templates/stacks/python-fastapi/.env.example +21 -21
- package/templates/stacks/python-fastapi/.github/workflows/dare-ci.yml +43 -43
- package/templates/stacks/python-fastapi/README.md.j2 +35 -35
- package/templates/stacks/python-fastapi/alembic/env.py +46 -46
- package/templates/stacks/python-fastapi/alembic/script.py.mako +26 -26
- package/templates/stacks/python-fastapi/alembic/versions/0001_create_users.py.j2 +37 -37
- package/templates/stacks/python-fastapi/alembic.ini.j2 +39 -39
- package/templates/stacks/python-fastapi/app/core/config.py +24 -24
- package/templates/stacks/python-fastapi/app/core/security.py +34 -34
- package/templates/stacks/python-fastapi/app/db/session.py +22 -22
- package/templates/stacks/python-fastapi/app/main.py.j2 +36 -36
- package/templates/stacks/python-fastapi/app/models/__init__.py +3 -3
- package/templates/stacks/python-fastapi/app/models/user.py +30 -30
- package/templates/stacks/python-fastapi/app/repositories/user_repository.py +34 -34
- package/templates/stacks/python-fastapi/app/routers/auth.py +37 -37
- package/templates/stacks/python-fastapi/app/routers/users.py +46 -46
- package/templates/stacks/python-fastapi/app/schemas/user.py +56 -56
- package/templates/stacks/python-fastapi/app/services/auth_service.py +22 -22
- package/templates/stacks/python-fastapi/app/services/user_service.py +31 -31
- package/templates/stacks/python-fastapi/gitignore +12 -12
- package/templates/stacks/python-fastapi/llms.txt.j2 +53 -53
- package/templates/stacks/python-fastapi/openapi.json.j2 +43 -43
- package/templates/stacks/python-fastapi/pyproject.toml.j2 +45 -45
- package/templates/stacks/python-fastapi/tests/test_auth.py +22 -22
- package/templates/stacks/ruby-rails-8/.dare/skills.yml +50 -50
- package/templates/stacks/ruby-rails-8/.env.example +20 -20
- package/templates/stacks/ruby-rails-8/.github/workflows/dare-ci.yml +112 -112
- package/templates/stacks/ruby-rails-8/Gemfile.erb +61 -61
- package/templates/stacks/ruby-rails-8/app/channels/application_cable/channel.rb +11 -11
- package/templates/stacks/ruby-rails-8/app/channels/application_cable/connection.rb +34 -34
- package/templates/stacks/ruby-rails-8/app/channels/dare_updates_channel.rb +18 -18
- package/templates/stacks/ruby-rails-8/app/channels/user_updates_channel.rb +23 -23
- package/templates/stacks/ruby-rails-8/app/controllers/application_controller.rb +44 -44
- package/templates/stacks/ruby-rails-8/app/controllers/concerns/problem_details.rb +93 -93
- package/templates/stacks/ruby-rails-8/app/handlers/summarize_handler.rb +33 -33
- package/templates/stacks/ruby-rails-8/app/handlers/users_handler.rb +68 -68
- package/templates/stacks/ruby-rails-8/app/llm/cache/llm_cache.rb +44 -44
- package/templates/stacks/ruby-rails-8/app/llm/prompts/prompt_loader.rb +54 -54
- package/templates/stacks/ruby-rails-8/app/llm/prompts/summarize_v1.jinja2 +12 -12
- package/templates/stacks/ruby-rails-8/app/llm/providers/dummy_provider.rb +35 -35
- package/templates/stacks/ruby-rails-8/app/llm/providers/llm_provider.rb +67 -67
- package/templates/stacks/ruby-rails-8/app/llm/providers/openai_provider.rb +62 -62
- package/templates/stacks/ruby-rails-8/app/llm/rate_limit/token_bucket.rb +82 -82
- package/templates/stacks/ruby-rails-8/app/llm/validators/summarize_output_schema.json +21 -21
- package/templates/stacks/ruby-rails-8/app/llm/validators/validator.rb +52 -52
- package/templates/stacks/ruby-rails-8/app/models/user.rb +36 -36
- package/templates/stacks/ruby-rails-8/app/presenters/user_presenter.rb +48 -48
- package/templates/stacks/ruby-rails-8/app/repositories/document_repository.rb +57 -57
- package/templates/stacks/ruby-rails-8/app/repositories/user_repository.rb +73 -73
- package/templates/stacks/ruby-rails-8/app/services/create_user_service.rb +67 -67
- package/templates/stacks/ruby-rails-8/app/services/realtime_service.rb +53 -53
- package/templates/stacks/ruby-rails-8/app/services/summarize_document_service.rb +57 -57
- package/templates/stacks/ruby-rails-8/config/dare.yml +42 -42
- package/templates/stacks/ruby-rails-8/config/initializers/dare.rb +31 -31
- package/templates/stacks/ruby-rails-8/config/initializers/rack_attack.rb +64 -64
- package/templates/stacks/ruby-rails-8/config/initializers/rswag_api.rb +12 -12
- package/templates/stacks/ruby-rails-8/lib/tasks/dare.rake +159 -159
- package/templates/stacks/ruby-rails-8/llms.txt.erb +69 -69
- package/templates/stacks/ruby-rails-8/spec/api/summarize_spec.rb +56 -56
- package/templates/stacks/ruby-rails-8/spec/api/users_spec.rb +72 -72
- package/templates/stacks/ruby-rails-8/spec/channels/dare_updates_channel_spec.rb +61 -61
- package/templates/stacks/ruby-rails-8/spec/channels/user_updates_channel_spec.rb +56 -56
- package/templates/stacks/ruby-rails-8/spec/factories/users.rb +27 -27
- package/templates/stacks/ruby-rails-8/spec/handlers/users_handler_spec.rb +88 -88
- package/templates/stacks/ruby-rails-8/spec/rails_helper.rb +31 -31
- package/templates/stacks/ruby-rails-8/spec/services/create_user_service_spec.rb +88 -88
- package/templates/stacks/ruby-rails-8/spec/services/summarize_document_service_spec.rb +142 -142
- package/templates/stacks/ruby-rails-8/spec/swagger_helper.rb +73 -73
- package/templates/stacks/rust-axum/.dare/skills.yml +11 -11
- package/templates/stacks/rust-axum/.env.example +26 -26
- package/templates/stacks/rust-axum/.github/workflows/dare-ci.yml +40 -40
- package/templates/stacks/rust-axum/Cargo.toml.tera +53 -53
- package/templates/stacks/rust-axum/README.md.tera +37 -37
- package/templates/stacks/rust-axum/gitignore +5 -5
- package/templates/stacks/rust-axum/llms.txt.tera +54 -54
- package/templates/stacks/rust-axum/migrations/0001_create_users.sql +13 -13
- package/templates/stacks/rust-axum/openapi.json.tera +46 -46
- package/templates/stacks/rust-axum/src/config.rs +45 -45
- package/templates/stacks/rust-axum/src/errors.rs +48 -48
- package/templates/stacks/rust-axum/src/handlers/auth.rs +48 -48
- package/templates/stacks/rust-axum/src/handlers/mod.rs +3 -3
- package/templates/stacks/rust-axum/src/handlers/users.rs +81 -81
- package/templates/stacks/rust-axum/src/handlers/ws.rs +24 -24
- package/templates/stacks/rust-axum/src/lib.rs +19 -19
- package/templates/stacks/rust-axum/src/llm/mod.rs +1 -1
- package/templates/stacks/rust-axum/src/llm/provider.rs +48 -48
- package/templates/stacks/rust-axum/src/main.rs.tera +64 -64
- package/templates/stacks/rust-axum/src/middleware/auth.rs +20 -20
- package/templates/stacks/rust-axum/src/middleware/mod.rs +2 -2
- package/templates/stacks/rust-axum/src/middleware/rate_limit.rs +27 -27
- package/templates/stacks/rust-axum/src/models/mod.rs +1 -1
- package/templates/stacks/rust-axum/src/models/user.rs +13 -13
- package/templates/stacks/rust-axum/src/repositories/mod.rs +1 -1
- package/templates/stacks/rust-axum/src/repositories/user_repository.rs +62 -62
- package/templates/stacks/rust-axum/src/services/auth_service.rs +50 -50
- package/templates/stacks/rust-axum/src/services/mod.rs +2 -2
- package/templates/stacks/rust-axum/src/services/user_service.rs +53 -53
- package/templates/stacks/rust-axum/tests/integration_test.rs.tera +13 -13
- package/dist/commands/new.d.ts +0 -16
- package/dist/commands/new.d.ts.map +0 -1
- package/dist/commands/new.js +0 -104
- package/dist/commands/new.js.map +0 -1
|
@@ -1,368 +1,368 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dare-blueprint
|
|
3
|
-
description: Gera um Task List estruturado a partir do Design aprovado. Use quando o usuário aprovar o DESIGN.md. Cria um documento BLUEPRINT.md com arquitetura, endpoints, modelo de dados e plano de execução.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# DARE Blueprint Skill
|
|
7
|
-
|
|
8
|
-
Você é um arquiteto de software especializado em design de APIs e sistemas. Seu objetivo é transformar o Design aprovado em uma arquitetura detalhada que será a base para implementação.
|
|
9
|
-
|
|
10
|
-
## Quando usar esta skill
|
|
11
|
-
|
|
12
|
-
- Design.md foi aprovado pelo usuário
|
|
13
|
-
- Precisa-se detalhar a arquitetura técnica
|
|
14
|
-
- Necessário documentar endpoints e modelos
|
|
15
|
-
- Segunda fase do Método DARE
|
|
16
|
-
|
|
17
|
-
## Como usar
|
|
18
|
-
|
|
19
|
-
### Passo 1: Ler o Design Aprovado
|
|
20
|
-
Leia o arquivo `DARE/DESIGN.md` que foi aprovado. Extraia:
|
|
21
|
-
- Stack técnica
|
|
22
|
-
- Funcionalidades principais
|
|
23
|
-
- Requisitos não-funcionais
|
|
24
|
-
- Restrições
|
|
25
|
-
|
|
26
|
-
### Passo 2: Analisar Contexto
|
|
27
|
-
Leia os arquivos de contexto:
|
|
28
|
-
- `.agents/rules/dare-workflow.md` (ou `.cursorrules` se Cursor)
|
|
29
|
-
- Exemplos em `examples/`
|
|
30
|
-
- Templates em `templates/`
|
|
31
|
-
|
|
32
|
-
### Passo 3: Integrar Segurança
|
|
33
|
-
Consulte `skill-security` para:
|
|
34
|
-
- Autenticação/Autorização
|
|
35
|
-
- Validação de entrada
|
|
36
|
-
- Criptografia
|
|
37
|
-
- Proteção contra vulnerabilidades OWASP
|
|
38
|
-
|
|
39
|
-
### Passo 4: Gerar a Arquitetura
|
|
40
|
-
Crie um documento `DARE/BLUEPRINT.md` com a seguinte estrutura:
|
|
41
|
-
|
|
42
|
-
```markdown
|
|
43
|
-
# Blueprint: [Nome do Projeto]
|
|
44
|
-
|
|
45
|
-
## Visão Geral da Arquitetura
|
|
46
|
-
[Descrição da arquitetura escolhida: Monolito, Microserviços, Hexagonal, etc]
|
|
47
|
-
|
|
48
|
-
## Segurança (OWASP)
|
|
49
|
-
### Autenticação e Autorização
|
|
50
|
-
- Método: JWT com RS256
|
|
51
|
-
- Armazenamento: Bearer token no header
|
|
52
|
-
- Validação: Middleware em todos os endpoints protegidos
|
|
53
|
-
|
|
54
|
-
### Proteção de Dados
|
|
55
|
-
- Senhas: Bcrypt com salt
|
|
56
|
-
- Dados sensíveis: Encriptados em repouso
|
|
57
|
-
- Transmissão: HTTPS obrigatório
|
|
58
|
-
|
|
59
|
-
### Validação
|
|
60
|
-
- Input: Whitelist de valores permitidos
|
|
61
|
-
- Output: Escape de caracteres especiais
|
|
62
|
-
- Rate Limiting: 5 req/min por IP
|
|
63
|
-
|
|
64
|
-
## Modelo de Dados
|
|
65
|
-
### Tabela: users
|
|
66
|
-
| Campo | Tipo | Restrições |
|
|
67
|
-
|-------|------|-----------|
|
|
68
|
-
| id | UUID | PK |
|
|
69
|
-
| email | VARCHAR(255) | UNIQUE, NOT NULL |
|
|
70
|
-
| password_hash | VARCHAR(255) | NOT NULL (Bcrypt) |
|
|
71
|
-
| name | VARCHAR(255) | NOT NULL |
|
|
72
|
-
| is_active | BOOLEAN | DEFAULT true |
|
|
73
|
-
| created_at | TIMESTAMP | DEFAULT NOW() |
|
|
74
|
-
| updated_at | TIMESTAMP | DEFAULT NOW() |
|
|
75
|
-
|
|
76
|
-
### Tabela: refresh_tokens
|
|
77
|
-
| Campo | Tipo | Restrições |
|
|
78
|
-
|-------|------|-----------|
|
|
79
|
-
| id | UUID | PK |
|
|
80
|
-
| user_id | UUID | FK users.id |
|
|
81
|
-
| token | VARCHAR(500) | UNIQUE |
|
|
82
|
-
| expires_at | TIMESTAMP | NOT NULL |
|
|
83
|
-
| revoked_at | TIMESTAMP | NULL |
|
|
84
|
-
| created_at | TIMESTAMP | DEFAULT NOW() |
|
|
85
|
-
|
|
86
|
-
## Endpoints da API
|
|
87
|
-
|
|
88
|
-
| Método | Endpoint | Autenticação | Descrição |
|
|
89
|
-
|--------|----------|--------------|-----------|
|
|
90
|
-
| POST | /api/auth/register | Não | Registrar novo usuário |
|
|
91
|
-
| POST | /api/auth/login | Não | Login e obter JWT |
|
|
92
|
-
| POST | /api/auth/refresh | Não | Renovar JWT com refresh token |
|
|
93
|
-
| POST | /api/auth/logout | JWT | Logout e revogar tokens |
|
|
94
|
-
| GET | /api/users/me | JWT | Obter dados do usuário logado |
|
|
95
|
-
|
|
96
|
-
### Detalhes dos Endpoints
|
|
97
|
-
|
|
98
|
-
#### POST /api/auth/register
|
|
99
|
-
**Request:**
|
|
100
|
-
```json
|
|
101
|
-
{
|
|
102
|
-
"email": "user@example.com",
|
|
103
|
-
"password": "SecurePass123!",
|
|
104
|
-
"name": "John Doe"
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
**Response (201):**
|
|
109
|
-
```json
|
|
110
|
-
{
|
|
111
|
-
"id": "uuid",
|
|
112
|
-
"email": "user@example.com",
|
|
113
|
-
"name": "John Doe",
|
|
114
|
-
"created_at": "2026-04-14T10:00:00Z"
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**Validações:**
|
|
119
|
-
- Email válido e único
|
|
120
|
-
- Senha: mínimo 8 caracteres, 1 maiúscula, 1 número, 1 caractere especial
|
|
121
|
-
- Name: mínimo 3 caracteres
|
|
122
|
-
|
|
123
|
-
## Estrutura de Diretórios
|
|
124
|
-
|
|
125
|
-
> Mantenha esta seção **stack-agnóstica**. Liste os agrupamentos lógicos
|
|
126
|
-
> (domínio, infraestrutura, interfaces, testes, migrations) e use a
|
|
127
|
-
> nomenclatura **idiomática da stack escolhida** no `dare init`. Os exemplos
|
|
128
|
-
> abaixo cobrem as 5 stacks suportadas — use **apenas o bloco da stack do
|
|
129
|
-
> projeto**, não os 5 juntos.
|
|
130
|
-
|
|
131
|
-
<details>
|
|
132
|
-
<summary>Exemplo — Node.js / NestJS</summary>
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
projeto/
|
|
136
|
-
├── src/
|
|
137
|
-
│ ├── auth/
|
|
138
|
-
│ │ ├── auth.controller.ts
|
|
139
|
-
│ │ ├── auth.service.ts
|
|
140
|
-
│ │ ├── auth.module.ts
|
|
141
|
-
│ │ └── dto/{register,login}.dto.ts
|
|
142
|
-
│ ├── users/{users.entity.ts,users.service.ts}
|
|
143
|
-
│ └── main.ts
|
|
144
|
-
├── migrations/{001_users.ts,002_refresh_tokens.ts}
|
|
145
|
-
└── test/auth.e2e-spec.ts
|
|
146
|
-
```
|
|
147
|
-
</details>
|
|
148
|
-
|
|
149
|
-
<details>
|
|
150
|
-
<summary>Exemplo — Rust / Axum</summary>
|
|
151
|
-
|
|
152
|
-
```
|
|
153
|
-
projeto/
|
|
154
|
-
├── src/
|
|
155
|
-
│ ├── domain/{user.rs,refresh_token.rs}
|
|
156
|
-
│ ├── handlers/{register.rs,login.rs,refresh.rs,logout.rs}
|
|
157
|
-
│ ├── middleware/jwt.rs
|
|
158
|
-
│ └── main.rs
|
|
159
|
-
├── migrations/{001_users.sql,002_refresh_tokens.sql}
|
|
160
|
-
└── tests/auth_integration.rs
|
|
161
|
-
```
|
|
162
|
-
</details>
|
|
163
|
-
|
|
164
|
-
<details>
|
|
165
|
-
<summary>Exemplo — Python / FastAPI</summary>
|
|
166
|
-
|
|
167
|
-
```
|
|
168
|
-
projeto/
|
|
169
|
-
├── app/
|
|
170
|
-
│ ├── routers/auth.py
|
|
171
|
-
│ ├── models/{user.py,refresh_token.py}
|
|
172
|
-
│ ├── schemas/{register.py,login.py}
|
|
173
|
-
│ ├── services/auth.py
|
|
174
|
-
│ └── main.py
|
|
175
|
-
├── alembic/versions/{001_users.py,002_refresh_tokens.py}
|
|
176
|
-
└── tests/test_auth.py
|
|
177
|
-
```
|
|
178
|
-
</details>
|
|
179
|
-
|
|
180
|
-
<details>
|
|
181
|
-
<summary>Exemplo — PHP / Laravel</summary>
|
|
182
|
-
|
|
183
|
-
```
|
|
184
|
-
projeto/
|
|
185
|
-
├── app/Http/Controllers/AuthController.php
|
|
186
|
-
├── app/Http/Requests/{RegisterRequest,LoginRequest}.php
|
|
187
|
-
├── app/Models/{User,RefreshToken}.php
|
|
188
|
-
├── app/Services/AuthService.php
|
|
189
|
-
├── database/migrations/{create_users,create_refresh_tokens}_table.php
|
|
190
|
-
├── routes/api.php
|
|
191
|
-
└── tests/Feature/AuthTest.php
|
|
192
|
-
```
|
|
193
|
-
</details>
|
|
194
|
-
|
|
195
|
-
<details>
|
|
196
|
-
<summary>Exemplo — Go / Gin</summary>
|
|
197
|
-
|
|
198
|
-
```
|
|
199
|
-
projeto/
|
|
200
|
-
├── cmd/server/main.go
|
|
201
|
-
├── internal/
|
|
202
|
-
│ ├── handlers/{register,login,refresh,logout}.go
|
|
203
|
-
│ ├── models/{user,refresh_token}.go
|
|
204
|
-
│ └── middleware/jwt.go
|
|
205
|
-
├── migrations/{001_users.sql,002_refresh_tokens.sql}
|
|
206
|
-
└── handlers_test.go
|
|
207
|
-
```
|
|
208
|
-
</details>
|
|
209
|
-
|
|
210
|
-
## Plano de Execução
|
|
211
|
-
|
|
212
|
-
### Fase 1: Setup Inicial
|
|
213
|
-
- Criar migrations (users, refresh_tokens)
|
|
214
|
-
- Configurar autenticação JWT
|
|
215
|
-
- Setup de testes
|
|
216
|
-
|
|
217
|
-
### Fase 2: Autenticação
|
|
218
|
-
- Implementar RegisterController
|
|
219
|
-
- Implementar LoginController
|
|
220
|
-
- Implementar RefreshController
|
|
221
|
-
|
|
222
|
-
### Fase 3: Proteção
|
|
223
|
-
- Implementar Middleware de JWT
|
|
224
|
-
- Implementar Rate Limiting
|
|
225
|
-
- Implementar Logout
|
|
226
|
-
|
|
227
|
-
### Fase 4: Testes e Deploy
|
|
228
|
-
- Testes unitários
|
|
229
|
-
- Testes de integração
|
|
230
|
-
- Containerização com Docker
|
|
231
|
-
|
|
232
|
-
## Comandos de Setup
|
|
233
|
-
|
|
234
|
-
> Liste **somente os comandos da stack do projeto** (definida em
|
|
235
|
-
> `dare init` / `dare.config.json#backend`). Não inclua todos os blocos
|
|
236
|
-
> abaixo — use o que casa com a stack escolhida.
|
|
237
|
-
|
|
238
|
-
<details>
|
|
239
|
-
<summary>Node.js / NestJS</summary>
|
|
240
|
-
|
|
241
|
-
```bash
|
|
242
|
-
npm install
|
|
243
|
-
cp .env.example .env
|
|
244
|
-
npm run migration:run
|
|
245
|
-
npm test
|
|
246
|
-
npm run start:dev
|
|
247
|
-
```
|
|
248
|
-
</details>
|
|
249
|
-
|
|
250
|
-
<details>
|
|
251
|
-
<summary>Rust / Axum</summary>
|
|
252
|
-
|
|
253
|
-
```bash
|
|
254
|
-
cargo build
|
|
255
|
-
cp .env.example .env
|
|
256
|
-
sqlx migrate run
|
|
257
|
-
cargo test
|
|
258
|
-
cargo run
|
|
259
|
-
```
|
|
260
|
-
</details>
|
|
261
|
-
|
|
262
|
-
<details>
|
|
263
|
-
<summary>Python / FastAPI</summary>
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
python -m venv .venv && source .venv/bin/activate
|
|
267
|
-
pip install -r requirements.txt
|
|
268
|
-
cp .env.example .env
|
|
269
|
-
alembic upgrade head
|
|
270
|
-
pytest
|
|
271
|
-
uvicorn app.main:app --reload
|
|
272
|
-
```
|
|
273
|
-
</details>
|
|
274
|
-
|
|
275
|
-
<details>
|
|
276
|
-
<summary>PHP / Laravel</summary>
|
|
277
|
-
|
|
278
|
-
```bash
|
|
279
|
-
composer install
|
|
280
|
-
cp .env.example .env
|
|
281
|
-
php artisan key:generate
|
|
282
|
-
php artisan migrate
|
|
283
|
-
php artisan test
|
|
284
|
-
php artisan serve
|
|
285
|
-
```
|
|
286
|
-
</details>
|
|
287
|
-
|
|
288
|
-
<details>
|
|
289
|
-
<summary>Go / Gin</summary>
|
|
290
|
-
|
|
291
|
-
```bash
|
|
292
|
-
go mod download
|
|
293
|
-
cp .env.example .env
|
|
294
|
-
migrate -path ./migrations -database "$DATABASE_URL" up
|
|
295
|
-
go test ./...
|
|
296
|
-
go run ./cmd/server
|
|
297
|
-
```
|
|
298
|
-
</details>
|
|
299
|
-
|
|
300
|
-
## Próximas Etapas
|
|
301
|
-
1. Revisar e aprovar este Blueprint
|
|
302
|
-
2. Executar `/generate-tasks DARE/BLUEPRINT.md`
|
|
303
|
-
3. Continuar com o Método DARE
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
### Passo 5: Aplicar ANTI-STUB CONTRACT (regra inegociável)
|
|
307
|
-
|
|
308
|
-
> **Por que existe esta regra:** a skill `dare-tasks` que vem depois usa este Blueprint como **única fonte de verdade**. Se um endpoint, função ou regra ficar genérico aqui, o agente que implementar a task **será forçado a inventar** — e vai produzir mocks, stubs e esqueletos para "preencher o vazio". Detalhe agora.
|
|
309
|
-
>
|
|
310
|
-
> Tasks que produzem mock/stub/skeleton **falham** no `dare review` (v2.17+) e bloqueiam o `dare execute --complete`.
|
|
311
|
-
|
|
312
|
-
Para **cada** endpoint, função pública, evento ou job declarado no Blueprint, especifique de forma **executável**:
|
|
313
|
-
|
|
314
|
-
**Endpoints HTTP/RPC:**
|
|
315
|
-
- Assinatura completa (método, path, headers obrigatórios, content-type)
|
|
316
|
-
- Request schema (todos os campos com tipo, restrições, opcionalidade)
|
|
317
|
-
- Response schema **por status code** (2xx, 4xx, 5xx — não só "200 OK")
|
|
318
|
-
- Validações server-side (lista exaustiva: `email único`, `senha ≥ 8 chars + maiúscula + dígito`)
|
|
319
|
-
- Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
|
|
320
|
-
- Side effects (tabelas/filas/caches/emails tocados, em ordem)
|
|
321
|
-
- Exemplo concreto (payload real, response real — não placeholder)
|
|
322
|
-
|
|
323
|
-
**Funções de domínio / services:**
|
|
324
|
-
- Assinatura tipada (`fn name(args: Types) -> ReturnType`)
|
|
325
|
-
- Pré-condições e pós-condições verificáveis
|
|
326
|
-
- Estados de erro com tipo de exceção/Result esperado
|
|
327
|
-
- Comportamento em concorrência (idempotência, locking, retry)
|
|
328
|
-
|
|
329
|
-
**Jobs / event handlers / workers:**
|
|
330
|
-
- Trigger (evento/cron/fila — nome canônico)
|
|
331
|
-
- Payload schema tipado
|
|
332
|
-
- Retry policy (backoff, max attempts, DLQ)
|
|
333
|
-
- Idempotência (chave + estratégia)
|
|
334
|
-
|
|
335
|
-
**Modelos de dados:**
|
|
336
|
-
- Cada campo com tipo, nullable, default, constraints (unique, fk, check), índices
|
|
337
|
-
- Triggers ou hooks (soft-delete, audit, encryption-at-rest)
|
|
338
|
-
|
|
339
|
-
**Critério "Blueprint detalhado o suficiente"** (auto-validação antes de salvar):
|
|
340
|
-
|
|
341
|
-
- [ ] Para cada endpoint, um humano não-familiarizado consegue escrever request/response sem perguntar nada?
|
|
342
|
-
- [ ] Para cada função pública, está claro **o que retorna** em todos os caminhos (sucesso + erros enumerados)?
|
|
343
|
-
- [ ] Edge cases foram **enumerados** ou só listados como "tratar edge cases"?
|
|
344
|
-
- [ ] Cada validação tem uma regra concreta (não só "validar email")?
|
|
345
|
-
- [ ] Cada decisão arquitetural tem **justificativa** (não só "escolhemos X")?
|
|
346
|
-
|
|
347
|
-
**Anti-padrão a evitar:** seções como _"implementar autenticação"_ ou _"validar dados"_ — isso vira stub. Especifique algoritmo, campos, regras.
|
|
348
|
-
|
|
349
|
-
### Passo 6: Pedir Aprovação
|
|
350
|
-
Após gerar o Blueprint, peça ao usuário:
|
|
351
|
-
- Revisar a arquitetura
|
|
352
|
-
- Aprovar endpoints e modelos
|
|
353
|
-
- Confirmar antes de continuar
|
|
354
|
-
|
|
355
|
-
## Boas Práticas
|
|
356
|
-
|
|
357
|
-
1. **Detalhado:** Inclua exemplos de request/response
|
|
358
|
-
2. **Seguro:** Sempre implemente proteções OWASP
|
|
359
|
-
3. **Escalável:** Pense em crescimento futuro
|
|
360
|
-
4. **Testável:** Estruture para facilitar testes
|
|
361
|
-
5. **Documentado:** Deixe claro para implementação
|
|
362
|
-
|
|
363
|
-
## Dicas para Melhor Resultado
|
|
364
|
-
|
|
365
|
-
- **Contexto:** Leia exemplos em `examples/` para manter padrões
|
|
366
|
-
- **Segurança:** Consulte `skill-security` para requisitos
|
|
367
|
-
- **Templates:** Use `templates/BLUEPRINT-template.md` como referência
|
|
368
|
-
- **Docker:** Considere incluir informações para containerização
|
|
1
|
+
---
|
|
2
|
+
name: dare-blueprint
|
|
3
|
+
description: Gera um Task List estruturado a partir do Design aprovado. Use quando o usuário aprovar o DESIGN.md. Cria um documento BLUEPRINT.md com arquitetura, endpoints, modelo de dados e plano de execução.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Blueprint Skill
|
|
7
|
+
|
|
8
|
+
Você é um arquiteto de software especializado em design de APIs e sistemas. Seu objetivo é transformar o Design aprovado em uma arquitetura detalhada que será a base para implementação.
|
|
9
|
+
|
|
10
|
+
## Quando usar esta skill
|
|
11
|
+
|
|
12
|
+
- Design.md foi aprovado pelo usuário
|
|
13
|
+
- Precisa-se detalhar a arquitetura técnica
|
|
14
|
+
- Necessário documentar endpoints e modelos
|
|
15
|
+
- Segunda fase do Método DARE
|
|
16
|
+
|
|
17
|
+
## Como usar
|
|
18
|
+
|
|
19
|
+
### Passo 1: Ler o Design Aprovado
|
|
20
|
+
Leia o arquivo `DARE/DESIGN.md` que foi aprovado. Extraia:
|
|
21
|
+
- Stack técnica
|
|
22
|
+
- Funcionalidades principais
|
|
23
|
+
- Requisitos não-funcionais
|
|
24
|
+
- Restrições
|
|
25
|
+
|
|
26
|
+
### Passo 2: Analisar Contexto
|
|
27
|
+
Leia os arquivos de contexto:
|
|
28
|
+
- `.agents/rules/dare-workflow.md` (ou `.cursorrules` se Cursor)
|
|
29
|
+
- Exemplos em `examples/`
|
|
30
|
+
- Templates em `templates/`
|
|
31
|
+
|
|
32
|
+
### Passo 3: Integrar Segurança
|
|
33
|
+
Consulte `skill-security` para:
|
|
34
|
+
- Autenticação/Autorização
|
|
35
|
+
- Validação de entrada
|
|
36
|
+
- Criptografia
|
|
37
|
+
- Proteção contra vulnerabilidades OWASP
|
|
38
|
+
|
|
39
|
+
### Passo 4: Gerar a Arquitetura
|
|
40
|
+
Crie um documento `DARE/BLUEPRINT.md` com a seguinte estrutura:
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
# Blueprint: [Nome do Projeto]
|
|
44
|
+
|
|
45
|
+
## Visão Geral da Arquitetura
|
|
46
|
+
[Descrição da arquitetura escolhida: Monolito, Microserviços, Hexagonal, etc]
|
|
47
|
+
|
|
48
|
+
## Segurança (OWASP)
|
|
49
|
+
### Autenticação e Autorização
|
|
50
|
+
- Método: JWT com RS256
|
|
51
|
+
- Armazenamento: Bearer token no header
|
|
52
|
+
- Validação: Middleware em todos os endpoints protegidos
|
|
53
|
+
|
|
54
|
+
### Proteção de Dados
|
|
55
|
+
- Senhas: Bcrypt com salt
|
|
56
|
+
- Dados sensíveis: Encriptados em repouso
|
|
57
|
+
- Transmissão: HTTPS obrigatório
|
|
58
|
+
|
|
59
|
+
### Validação
|
|
60
|
+
- Input: Whitelist de valores permitidos
|
|
61
|
+
- Output: Escape de caracteres especiais
|
|
62
|
+
- Rate Limiting: 5 req/min por IP
|
|
63
|
+
|
|
64
|
+
## Modelo de Dados
|
|
65
|
+
### Tabela: users
|
|
66
|
+
| Campo | Tipo | Restrições |
|
|
67
|
+
|-------|------|-----------|
|
|
68
|
+
| id | UUID | PK |
|
|
69
|
+
| email | VARCHAR(255) | UNIQUE, NOT NULL |
|
|
70
|
+
| password_hash | VARCHAR(255) | NOT NULL (Bcrypt) |
|
|
71
|
+
| name | VARCHAR(255) | NOT NULL |
|
|
72
|
+
| is_active | BOOLEAN | DEFAULT true |
|
|
73
|
+
| created_at | TIMESTAMP | DEFAULT NOW() |
|
|
74
|
+
| updated_at | TIMESTAMP | DEFAULT NOW() |
|
|
75
|
+
|
|
76
|
+
### Tabela: refresh_tokens
|
|
77
|
+
| Campo | Tipo | Restrições |
|
|
78
|
+
|-------|------|-----------|
|
|
79
|
+
| id | UUID | PK |
|
|
80
|
+
| user_id | UUID | FK users.id |
|
|
81
|
+
| token | VARCHAR(500) | UNIQUE |
|
|
82
|
+
| expires_at | TIMESTAMP | NOT NULL |
|
|
83
|
+
| revoked_at | TIMESTAMP | NULL |
|
|
84
|
+
| created_at | TIMESTAMP | DEFAULT NOW() |
|
|
85
|
+
|
|
86
|
+
## Endpoints da API
|
|
87
|
+
|
|
88
|
+
| Método | Endpoint | Autenticação | Descrição |
|
|
89
|
+
|--------|----------|--------------|-----------|
|
|
90
|
+
| POST | /api/auth/register | Não | Registrar novo usuário |
|
|
91
|
+
| POST | /api/auth/login | Não | Login e obter JWT |
|
|
92
|
+
| POST | /api/auth/refresh | Não | Renovar JWT com refresh token |
|
|
93
|
+
| POST | /api/auth/logout | JWT | Logout e revogar tokens |
|
|
94
|
+
| GET | /api/users/me | JWT | Obter dados do usuário logado |
|
|
95
|
+
|
|
96
|
+
### Detalhes dos Endpoints
|
|
97
|
+
|
|
98
|
+
#### POST /api/auth/register
|
|
99
|
+
**Request:**
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"email": "user@example.com",
|
|
103
|
+
"password": "SecurePass123!",
|
|
104
|
+
"name": "John Doe"
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Response (201):**
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"id": "uuid",
|
|
112
|
+
"email": "user@example.com",
|
|
113
|
+
"name": "John Doe",
|
|
114
|
+
"created_at": "2026-04-14T10:00:00Z"
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Validações:**
|
|
119
|
+
- Email válido e único
|
|
120
|
+
- Senha: mínimo 8 caracteres, 1 maiúscula, 1 número, 1 caractere especial
|
|
121
|
+
- Name: mínimo 3 caracteres
|
|
122
|
+
|
|
123
|
+
## Estrutura de Diretórios
|
|
124
|
+
|
|
125
|
+
> Mantenha esta seção **stack-agnóstica**. Liste os agrupamentos lógicos
|
|
126
|
+
> (domínio, infraestrutura, interfaces, testes, migrations) e use a
|
|
127
|
+
> nomenclatura **idiomática da stack escolhida** no `dare init`. Os exemplos
|
|
128
|
+
> abaixo cobrem as 5 stacks suportadas — use **apenas o bloco da stack do
|
|
129
|
+
> projeto**, não os 5 juntos.
|
|
130
|
+
|
|
131
|
+
<details>
|
|
132
|
+
<summary>Exemplo — Node.js / NestJS</summary>
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
projeto/
|
|
136
|
+
├── src/
|
|
137
|
+
│ ├── auth/
|
|
138
|
+
│ │ ├── auth.controller.ts
|
|
139
|
+
│ │ ├── auth.service.ts
|
|
140
|
+
│ │ ├── auth.module.ts
|
|
141
|
+
│ │ └── dto/{register,login}.dto.ts
|
|
142
|
+
│ ├── users/{users.entity.ts,users.service.ts}
|
|
143
|
+
│ └── main.ts
|
|
144
|
+
├── migrations/{001_users.ts,002_refresh_tokens.ts}
|
|
145
|
+
└── test/auth.e2e-spec.ts
|
|
146
|
+
```
|
|
147
|
+
</details>
|
|
148
|
+
|
|
149
|
+
<details>
|
|
150
|
+
<summary>Exemplo — Rust / Axum</summary>
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
projeto/
|
|
154
|
+
├── src/
|
|
155
|
+
│ ├── domain/{user.rs,refresh_token.rs}
|
|
156
|
+
│ ├── handlers/{register.rs,login.rs,refresh.rs,logout.rs}
|
|
157
|
+
│ ├── middleware/jwt.rs
|
|
158
|
+
│ └── main.rs
|
|
159
|
+
├── migrations/{001_users.sql,002_refresh_tokens.sql}
|
|
160
|
+
└── tests/auth_integration.rs
|
|
161
|
+
```
|
|
162
|
+
</details>
|
|
163
|
+
|
|
164
|
+
<details>
|
|
165
|
+
<summary>Exemplo — Python / FastAPI</summary>
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
projeto/
|
|
169
|
+
├── app/
|
|
170
|
+
│ ├── routers/auth.py
|
|
171
|
+
│ ├── models/{user.py,refresh_token.py}
|
|
172
|
+
│ ├── schemas/{register.py,login.py}
|
|
173
|
+
│ ├── services/auth.py
|
|
174
|
+
│ └── main.py
|
|
175
|
+
├── alembic/versions/{001_users.py,002_refresh_tokens.py}
|
|
176
|
+
└── tests/test_auth.py
|
|
177
|
+
```
|
|
178
|
+
</details>
|
|
179
|
+
|
|
180
|
+
<details>
|
|
181
|
+
<summary>Exemplo — PHP / Laravel</summary>
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
projeto/
|
|
185
|
+
├── app/Http/Controllers/AuthController.php
|
|
186
|
+
├── app/Http/Requests/{RegisterRequest,LoginRequest}.php
|
|
187
|
+
├── app/Models/{User,RefreshToken}.php
|
|
188
|
+
├── app/Services/AuthService.php
|
|
189
|
+
├── database/migrations/{create_users,create_refresh_tokens}_table.php
|
|
190
|
+
├── routes/api.php
|
|
191
|
+
└── tests/Feature/AuthTest.php
|
|
192
|
+
```
|
|
193
|
+
</details>
|
|
194
|
+
|
|
195
|
+
<details>
|
|
196
|
+
<summary>Exemplo — Go / Gin</summary>
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
projeto/
|
|
200
|
+
├── cmd/server/main.go
|
|
201
|
+
├── internal/
|
|
202
|
+
│ ├── handlers/{register,login,refresh,logout}.go
|
|
203
|
+
│ ├── models/{user,refresh_token}.go
|
|
204
|
+
│ └── middleware/jwt.go
|
|
205
|
+
├── migrations/{001_users.sql,002_refresh_tokens.sql}
|
|
206
|
+
└── handlers_test.go
|
|
207
|
+
```
|
|
208
|
+
</details>
|
|
209
|
+
|
|
210
|
+
## Plano de Execução
|
|
211
|
+
|
|
212
|
+
### Fase 1: Setup Inicial
|
|
213
|
+
- Criar migrations (users, refresh_tokens)
|
|
214
|
+
- Configurar autenticação JWT
|
|
215
|
+
- Setup de testes
|
|
216
|
+
|
|
217
|
+
### Fase 2: Autenticação
|
|
218
|
+
- Implementar RegisterController
|
|
219
|
+
- Implementar LoginController
|
|
220
|
+
- Implementar RefreshController
|
|
221
|
+
|
|
222
|
+
### Fase 3: Proteção
|
|
223
|
+
- Implementar Middleware de JWT
|
|
224
|
+
- Implementar Rate Limiting
|
|
225
|
+
- Implementar Logout
|
|
226
|
+
|
|
227
|
+
### Fase 4: Testes e Deploy
|
|
228
|
+
- Testes unitários
|
|
229
|
+
- Testes de integração
|
|
230
|
+
- Containerização com Docker
|
|
231
|
+
|
|
232
|
+
## Comandos de Setup
|
|
233
|
+
|
|
234
|
+
> Liste **somente os comandos da stack do projeto** (definida em
|
|
235
|
+
> `dare init` / `dare.config.json#backend`). Não inclua todos os blocos
|
|
236
|
+
> abaixo — use o que casa com a stack escolhida.
|
|
237
|
+
|
|
238
|
+
<details>
|
|
239
|
+
<summary>Node.js / NestJS</summary>
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
npm install
|
|
243
|
+
cp .env.example .env
|
|
244
|
+
npm run migration:run
|
|
245
|
+
npm test
|
|
246
|
+
npm run start:dev
|
|
247
|
+
```
|
|
248
|
+
</details>
|
|
249
|
+
|
|
250
|
+
<details>
|
|
251
|
+
<summary>Rust / Axum</summary>
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
cargo build
|
|
255
|
+
cp .env.example .env
|
|
256
|
+
sqlx migrate run
|
|
257
|
+
cargo test
|
|
258
|
+
cargo run
|
|
259
|
+
```
|
|
260
|
+
</details>
|
|
261
|
+
|
|
262
|
+
<details>
|
|
263
|
+
<summary>Python / FastAPI</summary>
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
python -m venv .venv && source .venv/bin/activate
|
|
267
|
+
pip install -r requirements.txt
|
|
268
|
+
cp .env.example .env
|
|
269
|
+
alembic upgrade head
|
|
270
|
+
pytest
|
|
271
|
+
uvicorn app.main:app --reload
|
|
272
|
+
```
|
|
273
|
+
</details>
|
|
274
|
+
|
|
275
|
+
<details>
|
|
276
|
+
<summary>PHP / Laravel</summary>
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
composer install
|
|
280
|
+
cp .env.example .env
|
|
281
|
+
php artisan key:generate
|
|
282
|
+
php artisan migrate
|
|
283
|
+
php artisan test
|
|
284
|
+
php artisan serve
|
|
285
|
+
```
|
|
286
|
+
</details>
|
|
287
|
+
|
|
288
|
+
<details>
|
|
289
|
+
<summary>Go / Gin</summary>
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
go mod download
|
|
293
|
+
cp .env.example .env
|
|
294
|
+
migrate -path ./migrations -database "$DATABASE_URL" up
|
|
295
|
+
go test ./...
|
|
296
|
+
go run ./cmd/server
|
|
297
|
+
```
|
|
298
|
+
</details>
|
|
299
|
+
|
|
300
|
+
## Próximas Etapas
|
|
301
|
+
1. Revisar e aprovar este Blueprint
|
|
302
|
+
2. Executar `/generate-tasks DARE/BLUEPRINT.md`
|
|
303
|
+
3. Continuar com o Método DARE
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Passo 5: Aplicar ANTI-STUB CONTRACT (regra inegociável)
|
|
307
|
+
|
|
308
|
+
> **Por que existe esta regra:** a skill `dare-tasks` que vem depois usa este Blueprint como **única fonte de verdade**. Se um endpoint, função ou regra ficar genérico aqui, o agente que implementar a task **será forçado a inventar** — e vai produzir mocks, stubs e esqueletos para "preencher o vazio". Detalhe agora.
|
|
309
|
+
>
|
|
310
|
+
> Tasks que produzem mock/stub/skeleton **falham** no `dare review` (v2.17+) e bloqueiam o `dare execute --complete`.
|
|
311
|
+
|
|
312
|
+
Para **cada** endpoint, função pública, evento ou job declarado no Blueprint, especifique de forma **executável**:
|
|
313
|
+
|
|
314
|
+
**Endpoints HTTP/RPC:**
|
|
315
|
+
- Assinatura completa (método, path, headers obrigatórios, content-type)
|
|
316
|
+
- Request schema (todos os campos com tipo, restrições, opcionalidade)
|
|
317
|
+
- Response schema **por status code** (2xx, 4xx, 5xx — não só "200 OK")
|
|
318
|
+
- Validações server-side (lista exaustiva: `email único`, `senha ≥ 8 chars + maiúscula + dígito`)
|
|
319
|
+
- Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
|
|
320
|
+
- Side effects (tabelas/filas/caches/emails tocados, em ordem)
|
|
321
|
+
- Exemplo concreto (payload real, response real — não placeholder)
|
|
322
|
+
|
|
323
|
+
**Funções de domínio / services:**
|
|
324
|
+
- Assinatura tipada (`fn name(args: Types) -> ReturnType`)
|
|
325
|
+
- Pré-condições e pós-condições verificáveis
|
|
326
|
+
- Estados de erro com tipo de exceção/Result esperado
|
|
327
|
+
- Comportamento em concorrência (idempotência, locking, retry)
|
|
328
|
+
|
|
329
|
+
**Jobs / event handlers / workers:**
|
|
330
|
+
- Trigger (evento/cron/fila — nome canônico)
|
|
331
|
+
- Payload schema tipado
|
|
332
|
+
- Retry policy (backoff, max attempts, DLQ)
|
|
333
|
+
- Idempotência (chave + estratégia)
|
|
334
|
+
|
|
335
|
+
**Modelos de dados:**
|
|
336
|
+
- Cada campo com tipo, nullable, default, constraints (unique, fk, check), índices
|
|
337
|
+
- Triggers ou hooks (soft-delete, audit, encryption-at-rest)
|
|
338
|
+
|
|
339
|
+
**Critério "Blueprint detalhado o suficiente"** (auto-validação antes de salvar):
|
|
340
|
+
|
|
341
|
+
- [ ] Para cada endpoint, um humano não-familiarizado consegue escrever request/response sem perguntar nada?
|
|
342
|
+
- [ ] Para cada função pública, está claro **o que retorna** em todos os caminhos (sucesso + erros enumerados)?
|
|
343
|
+
- [ ] Edge cases foram **enumerados** ou só listados como "tratar edge cases"?
|
|
344
|
+
- [ ] Cada validação tem uma regra concreta (não só "validar email")?
|
|
345
|
+
- [ ] Cada decisão arquitetural tem **justificativa** (não só "escolhemos X")?
|
|
346
|
+
|
|
347
|
+
**Anti-padrão a evitar:** seções como _"implementar autenticação"_ ou _"validar dados"_ — isso vira stub. Especifique algoritmo, campos, regras.
|
|
348
|
+
|
|
349
|
+
### Passo 6: Pedir Aprovação
|
|
350
|
+
Após gerar o Blueprint, peça ao usuário:
|
|
351
|
+
- Revisar a arquitetura
|
|
352
|
+
- Aprovar endpoints e modelos
|
|
353
|
+
- Confirmar antes de continuar
|
|
354
|
+
|
|
355
|
+
## Boas Práticas
|
|
356
|
+
|
|
357
|
+
1. **Detalhado:** Inclua exemplos de request/response
|
|
358
|
+
2. **Seguro:** Sempre implemente proteções OWASP
|
|
359
|
+
3. **Escalável:** Pense em crescimento futuro
|
|
360
|
+
4. **Testável:** Estruture para facilitar testes
|
|
361
|
+
5. **Documentado:** Deixe claro para implementação
|
|
362
|
+
|
|
363
|
+
## Dicas para Melhor Resultado
|
|
364
|
+
|
|
365
|
+
- **Contexto:** Leia exemplos em `examples/` para manter padrões
|
|
366
|
+
- **Segurança:** Consulte `skill-security` para requisitos
|
|
367
|
+
- **Templates:** Use `templates/BLUEPRINT-template.md` como referência
|
|
368
|
+
- **Docker:** Considere incluir informações para containerização
|