@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,274 +1,274 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dare-security
|
|
3
|
-
description: Diretrizes de Segurança DARE — OWASP Top 10, supply chain, secrets, dependências vulneráveis. Aplicável em todas as fases (Design → Blueprint → Tasks → Execute). Inclui validation gates por stack (npm audit, cargo audit, pip-audit, composer audit, govulncheck).
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# DARE Security Skill
|
|
7
|
-
|
|
8
|
-
Você é um especialista em AppSec. Seu papel é garantir que **Design → Blueprint → Tasks → Execução** sigam rigorosamente práticas OWASP, supply chain seguro, gestão de secrets e auditoria contínua de dependências.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Início de projeto — definir RS-* (requisitos de segurança) no DESIGN.md
|
|
13
|
-
- Adição de dependência nova — auditar CVE
|
|
14
|
-
- PR mexe em autenticação, autorização, criptografia ou input externo
|
|
15
|
-
- Audit de produção — varredura periódica de toda a base
|
|
16
|
-
|
|
17
|
-
## Aplicação por fase DARE
|
|
18
|
-
|
|
19
|
-
### Fase 1 — Design (`dare-design`)
|
|
20
|
-
|
|
21
|
-
Requisitos obrigatórios em seção RS-*:
|
|
22
|
-
|
|
23
|
-
| ID | Requisito |
|
|
24
|
-
|---|---|
|
|
25
|
-
| RS-01 | Validação de entrada (OWASP A03) |
|
|
26
|
-
| RS-02 | Hash de senhas / proteção de dados sensíveis (A02) |
|
|
27
|
-
| RS-03 | Controle de acesso por recurso (A01) |
|
|
28
|
-
| RS-04 | Auditoria de dependências sem CVE HIGH/CRITICAL (A06) |
|
|
29
|
-
| RS-05 | Secrets via env, nunca em código |
|
|
30
|
-
|
|
31
|
-
Identifique vetores de ataque na ideia inicial e mitigações em **Riscos**.
|
|
32
|
-
|
|
33
|
-
### Fase 2 — Blueprint (`dare-blueprint`)
|
|
34
|
-
|
|
35
|
-
- Endpoints: coluna `Auth` (JWT/apiKey/público) + middleware de rate limit
|
|
36
|
-
- Modelo de dados: marque campos sensíveis (PII, tokens, hashes) e como são protegidos
|
|
37
|
-
- Fase N-1 = **Auditoria de Segurança e Dependências** com critério DONE
|
|
38
|
-
- Validation gates por stack incluem comando de audit
|
|
39
|
-
|
|
40
|
-
### Fase 3 — Tasks (`dare-tasks`)
|
|
41
|
-
|
|
42
|
-
- Toda task que adiciona dep → validation gate inclui `npm audit` / `cargo audit` / etc.
|
|
43
|
-
- Task dedicada: headers de segurança, rate limit, scan de secrets
|
|
44
|
-
- Seção "Considerações de Segurança" obrigatória em cada `EXECUTION/task-*.md`
|
|
45
|
-
|
|
46
|
-
### Fase 4 — Execute (`dare-execute`)
|
|
47
|
-
|
|
48
|
-
Aplique as proteções abaixo ao implementar.
|
|
49
|
-
|
|
50
|
-
## OWASP Top 10 — Implementação
|
|
51
|
-
|
|
52
|
-
### A01 — Broken Access Control
|
|
53
|
-
|
|
54
|
-
- Verifique permissão no **recurso**, não só na rota
|
|
55
|
-
- Princípio do menor privilégio (tokens com escopos mínimos)
|
|
56
|
-
- IDs sequenciais expostos = ruim — use UUID/ULID
|
|
57
|
-
- Multi-tenant: **sempre** filtre por `tenant_id`/`org_id`
|
|
58
|
-
|
|
59
|
-
```rust
|
|
60
|
-
// ✅ Rust/Axum — extractor verifica ownership
|
|
61
|
-
async fn update_post(
|
|
62
|
-
State(db): State<Pool<Postgres>>,
|
|
63
|
-
claims: Claims,
|
|
64
|
-
Path(post_id): Path<Uuid>,
|
|
65
|
-
Json(body): Json<UpdatePostBody>,
|
|
66
|
-
) -> Result<Json<Post>, AppError> {
|
|
67
|
-
let post = sqlx::query_as!(Post,
|
|
68
|
-
"SELECT * FROM posts WHERE id = $1 AND author_id = $2",
|
|
69
|
-
post_id, claims.sub
|
|
70
|
-
).fetch_one(&db).await?;
|
|
71
|
-
// ...
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### A02 — Cryptographic Failures
|
|
76
|
-
|
|
77
|
-
- Senhas: **Argon2id** preferido, ou Bcrypt cost ≥ 12 — nunca MD5/SHA1/SHA256 puro
|
|
78
|
-
- Dados sensíveis at rest: AES-256-GCM
|
|
79
|
-
- Trânsito: HTTPS + HSTS
|
|
80
|
-
- Nunca logue: senha, token, chave de API, cartão, CPF completo
|
|
81
|
-
- JWT: RS256 (chave assimétrica) para tokens públicos, HS256 + segredo ≥ 256 bits para internos
|
|
82
|
-
|
|
83
|
-
```python
|
|
84
|
-
# Python — passlib Argon2
|
|
85
|
-
from passlib.hash import argon2
|
|
86
|
-
hashed = argon2.hash(password)
|
|
87
|
-
valid = argon2.verify(password, hashed)
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
```rust
|
|
91
|
-
// Rust — argon2 crate
|
|
92
|
-
use argon2::{Argon2, PasswordHasher};
|
|
93
|
-
let hash = Argon2::default().hash_password(password.as_bytes(), &salt)?;
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### A03 — Injection
|
|
97
|
-
|
|
98
|
-
```typescript
|
|
99
|
-
// ✅ Prisma — parametrizado por padrão
|
|
100
|
-
const user = await prisma.user.findFirst({ where: { email } });
|
|
101
|
-
|
|
102
|
-
// ❌ NestJS — QueryBuilder com interpolação
|
|
103
|
-
.where(`user.email = '${email}'`) // VULNERÁVEL
|
|
104
|
-
.where('user.email = :email', { email }) // OK
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
```python
|
|
108
|
-
# SQLAlchemy — sempre parametrizado
|
|
109
|
-
db.execute(select(User).where(User.email == email))
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
**XSS:** escape de saída no front, CSP no back, sem `innerHTML` / `dangerouslySetInnerHTML` com user data.
|
|
113
|
-
|
|
114
|
-
**Command injection:**
|
|
115
|
-
```go
|
|
116
|
-
// ✅ Go — args lista, não shell string
|
|
117
|
-
cmd := exec.Command("convert", inputFile, outputFile)
|
|
118
|
-
// ❌ exec.Command("sh", "-c", "convert "+userInput)
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
**Prompt injection (LLM):**
|
|
122
|
-
- Separe instrução de dados com delimitadores
|
|
123
|
-
- Sanitize entrada antes de inserir no prompt
|
|
124
|
-
- Valide output do LLM com schema
|
|
125
|
-
|
|
126
|
-
### A04 — Insecure Design
|
|
127
|
-
|
|
128
|
-
- Valide no servidor sempre
|
|
129
|
-
- Allowlists > blocklists
|
|
130
|
-
- Rate limit ANTES da lógica de negócio em endpoints públicos
|
|
131
|
-
|
|
132
|
-
### A05 — Security Misconfiguration
|
|
133
|
-
|
|
134
|
-
- Stack traces detalhados só em dev
|
|
135
|
-
- Headers obrigatórios em prod:
|
|
136
|
-
```
|
|
137
|
-
Strict-Transport-Security: max-age=31536000; includeSubDomains
|
|
138
|
-
X-Frame-Options: DENY
|
|
139
|
-
X-Content-Type-Options: nosniff
|
|
140
|
-
Content-Security-Policy: default-src 'self'
|
|
141
|
-
Referrer-Policy: strict-origin-when-cross-origin
|
|
142
|
-
```
|
|
143
|
-
- CORS: nunca `*` para endpoints autenticados
|
|
144
|
-
|
|
145
|
-
### A06 — Vulnerable Components (crítico Ralph Loop)
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
# Por stack
|
|
149
|
-
npm audit --audit-level=high # Node
|
|
150
|
-
cargo audit # Rust
|
|
151
|
-
pip-audit # Python
|
|
152
|
-
composer audit # PHP
|
|
153
|
-
govulncheck ./... # Go
|
|
154
|
-
docker scout cves [imagem] # Docker
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**Inegociável:** nenhuma dep com CVE HIGH/CRITICAL em produção sem justificativa documentada e plano de upgrade.
|
|
158
|
-
|
|
159
|
-
### A07 — Authentication Failures
|
|
160
|
-
|
|
161
|
-
- Login: máx 5 tentativas / 15 min por IP **e** por usuário
|
|
162
|
-
- JWT access token: `exp` ≤ 15 min
|
|
163
|
-
- Refresh token com rotação no servidor
|
|
164
|
-
- Logout invalida refresh no DB
|
|
165
|
-
- Senha: mín 12 chars, bloquear HaveIBeenPwned
|
|
166
|
-
- MFA TOTP para contas sensíveis
|
|
167
|
-
|
|
168
|
-
### A08 — Software/Data Integrity
|
|
169
|
-
|
|
170
|
-
- Valide checksum/signature de artefatos
|
|
171
|
-
- Nunca confie em dados do cliente para autorização
|
|
172
|
-
- Pin actions CI (`actions/checkout@v4`, não `@main`)
|
|
173
|
-
- Lockfiles commitados (`package-lock.json`, `Cargo.lock`, `composer.lock`)
|
|
174
|
-
|
|
175
|
-
### A09 — Security Logging & Monitoring
|
|
176
|
-
|
|
177
|
-
Logue (JSON estruturado, sem dados sensíveis):
|
|
178
|
-
- Auth: login OK/FAIL, logout, refresh, MFA challenge
|
|
179
|
-
- Authz: 403 com recurso + userId
|
|
180
|
-
- 5xx em prod com trace-id (sem stack trace completo)
|
|
181
|
-
- Destrutivas: delete, disable, role change
|
|
182
|
-
|
|
183
|
-
**Nunca logue:** senhas, tokens, API keys, cartões, CPF/SSN completo.
|
|
184
|
-
|
|
185
|
-
### A10 — SSRF
|
|
186
|
-
|
|
187
|
-
Para apps que fazem requests a URLs do usuário:
|
|
188
|
-
- Allowlist de domínios
|
|
189
|
-
- Bloqueie IPs privados (`127.x`, `10.x`, `172.16-31.x`, `192.168.x`, `169.254.x`)
|
|
190
|
-
- Bloqueie metadados de cloud (`169.254.169.254`)
|
|
191
|
-
- Timeout ≤ 5s, sem redirects automáticos
|
|
192
|
-
|
|
193
|
-
## Gestão de secrets
|
|
194
|
-
|
|
195
|
-
### Nunca em código
|
|
196
|
-
|
|
197
|
-
```
|
|
198
|
-
password = "..."
|
|
199
|
-
api_key = "..."
|
|
200
|
-
DATABASE_URL = "postgres://user:password@..."
|
|
201
|
-
AWS_SECRET_ACCESS_KEY = "..."
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Configure scanner pré-commit:
|
|
205
|
-
```bash
|
|
206
|
-
pip install detect-secrets
|
|
207
|
-
detect-secrets scan > .secrets.baseline
|
|
208
|
-
detect-secrets audit .secrets.baseline
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### Estrutura
|
|
212
|
-
|
|
213
|
-
- Dev: `.env` no `.gitignore`, `.env.example` commitado sem valores
|
|
214
|
-
- CI: secrets do pipeline (GitHub Actions Secrets)
|
|
215
|
-
- Produção: vault (HashiCorp, AWS Secrets Manager, GCP Secret Manager)
|
|
216
|
-
- Rotação: tokens de serviço a cada 90 dias
|
|
217
|
-
|
|
218
|
-
## Validation Gates no Ralph Loop
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
# 1. Audit de deps (se mudou deps)
|
|
222
|
-
npm audit --audit-level=high
|
|
223
|
-
cargo audit
|
|
224
|
-
pip-audit
|
|
225
|
-
composer audit
|
|
226
|
-
govulncheck ./...
|
|
227
|
-
|
|
228
|
-
# 2. Scan de secrets (tasks de config/infra/CI)
|
|
229
|
-
detect-secrets scan --baseline .secrets.baseline
|
|
230
|
-
|
|
231
|
-
# 3. Headers de segurança (tasks de config de server)
|
|
232
|
-
curl -I https://staging.example.com | grep -E "Strict-Transport|X-Frame|X-Content|Content-Security"
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
> **Gate obrigatório:** CVE HIGH/CRITICAL = task FAILED até corrigir.
|
|
236
|
-
|
|
237
|
-
## Como aplicar
|
|
238
|
-
|
|
239
|
-
### Passo 1: Audit do projeto
|
|
240
|
-
|
|
241
|
-
Rode tudo de §A06 e capture estado atual.
|
|
242
|
-
|
|
243
|
-
### Passo 2: Adicionar audit ao CI
|
|
244
|
-
|
|
245
|
-
```yaml
|
|
246
|
-
- name: Security audit
|
|
247
|
-
run: |
|
|
248
|
-
npm audit --audit-level=high # ou cargo/pip/composer/govulncheck
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### Passo 3: Scanner de secrets
|
|
252
|
-
|
|
253
|
-
```bash
|
|
254
|
-
detect-secrets scan > .secrets.baseline
|
|
255
|
-
# adicionar pre-commit hook ou step no CI
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### Passo 4: Headers em prod
|
|
259
|
-
|
|
260
|
-
Adicionar middleware da stack (helmet, secure_headers, SetResponseHeaderLayer).
|
|
261
|
-
|
|
262
|
-
### Passo 5: Rate limit nos endpoints públicos
|
|
263
|
-
|
|
264
|
-
Login: 5/15min IP+user. APIs gerais: configurar limites apropriados.
|
|
265
|
-
|
|
266
|
-
## Dicas
|
|
267
|
-
|
|
268
|
-
- **Combine** com `dare-ax` (M-04 = rate limit configurado)
|
|
269
|
-
- **Combine** com `dare-llm-integration` para prompt injection
|
|
270
|
-
- **Use** `dare-quality-telemetry` para rastrear M-04 (CVE count) ao longo do tempo
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
Esta skill é parte do DARE Method e está sob licença MIT.
|
|
1
|
+
---
|
|
2
|
+
name: dare-security
|
|
3
|
+
description: Diretrizes de Segurança DARE — OWASP Top 10, supply chain, secrets, dependências vulneráveis. Aplicável em todas as fases (Design → Blueprint → Tasks → Execute). Inclui validation gates por stack (npm audit, cargo audit, pip-audit, composer audit, govulncheck).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Security Skill
|
|
7
|
+
|
|
8
|
+
Você é um especialista em AppSec. Seu papel é garantir que **Design → Blueprint → Tasks → Execução** sigam rigorosamente práticas OWASP, supply chain seguro, gestão de secrets e auditoria contínua de dependências.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Início de projeto — definir RS-* (requisitos de segurança) no DESIGN.md
|
|
13
|
+
- Adição de dependência nova — auditar CVE
|
|
14
|
+
- PR mexe em autenticação, autorização, criptografia ou input externo
|
|
15
|
+
- Audit de produção — varredura periódica de toda a base
|
|
16
|
+
|
|
17
|
+
## Aplicação por fase DARE
|
|
18
|
+
|
|
19
|
+
### Fase 1 — Design (`dare-design`)
|
|
20
|
+
|
|
21
|
+
Requisitos obrigatórios em seção RS-*:
|
|
22
|
+
|
|
23
|
+
| ID | Requisito |
|
|
24
|
+
|---|---|
|
|
25
|
+
| RS-01 | Validação de entrada (OWASP A03) |
|
|
26
|
+
| RS-02 | Hash de senhas / proteção de dados sensíveis (A02) |
|
|
27
|
+
| RS-03 | Controle de acesso por recurso (A01) |
|
|
28
|
+
| RS-04 | Auditoria de dependências sem CVE HIGH/CRITICAL (A06) |
|
|
29
|
+
| RS-05 | Secrets via env, nunca em código |
|
|
30
|
+
|
|
31
|
+
Identifique vetores de ataque na ideia inicial e mitigações em **Riscos**.
|
|
32
|
+
|
|
33
|
+
### Fase 2 — Blueprint (`dare-blueprint`)
|
|
34
|
+
|
|
35
|
+
- Endpoints: coluna `Auth` (JWT/apiKey/público) + middleware de rate limit
|
|
36
|
+
- Modelo de dados: marque campos sensíveis (PII, tokens, hashes) e como são protegidos
|
|
37
|
+
- Fase N-1 = **Auditoria de Segurança e Dependências** com critério DONE
|
|
38
|
+
- Validation gates por stack incluem comando de audit
|
|
39
|
+
|
|
40
|
+
### Fase 3 — Tasks (`dare-tasks`)
|
|
41
|
+
|
|
42
|
+
- Toda task que adiciona dep → validation gate inclui `npm audit` / `cargo audit` / etc.
|
|
43
|
+
- Task dedicada: headers de segurança, rate limit, scan de secrets
|
|
44
|
+
- Seção "Considerações de Segurança" obrigatória em cada `EXECUTION/task-*.md`
|
|
45
|
+
|
|
46
|
+
### Fase 4 — Execute (`dare-execute`)
|
|
47
|
+
|
|
48
|
+
Aplique as proteções abaixo ao implementar.
|
|
49
|
+
|
|
50
|
+
## OWASP Top 10 — Implementação
|
|
51
|
+
|
|
52
|
+
### A01 — Broken Access Control
|
|
53
|
+
|
|
54
|
+
- Verifique permissão no **recurso**, não só na rota
|
|
55
|
+
- Princípio do menor privilégio (tokens com escopos mínimos)
|
|
56
|
+
- IDs sequenciais expostos = ruim — use UUID/ULID
|
|
57
|
+
- Multi-tenant: **sempre** filtre por `tenant_id`/`org_id`
|
|
58
|
+
|
|
59
|
+
```rust
|
|
60
|
+
// ✅ Rust/Axum — extractor verifica ownership
|
|
61
|
+
async fn update_post(
|
|
62
|
+
State(db): State<Pool<Postgres>>,
|
|
63
|
+
claims: Claims,
|
|
64
|
+
Path(post_id): Path<Uuid>,
|
|
65
|
+
Json(body): Json<UpdatePostBody>,
|
|
66
|
+
) -> Result<Json<Post>, AppError> {
|
|
67
|
+
let post = sqlx::query_as!(Post,
|
|
68
|
+
"SELECT * FROM posts WHERE id = $1 AND author_id = $2",
|
|
69
|
+
post_id, claims.sub
|
|
70
|
+
).fetch_one(&db).await?;
|
|
71
|
+
// ...
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### A02 — Cryptographic Failures
|
|
76
|
+
|
|
77
|
+
- Senhas: **Argon2id** preferido, ou Bcrypt cost ≥ 12 — nunca MD5/SHA1/SHA256 puro
|
|
78
|
+
- Dados sensíveis at rest: AES-256-GCM
|
|
79
|
+
- Trânsito: HTTPS + HSTS
|
|
80
|
+
- Nunca logue: senha, token, chave de API, cartão, CPF completo
|
|
81
|
+
- JWT: RS256 (chave assimétrica) para tokens públicos, HS256 + segredo ≥ 256 bits para internos
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
# Python — passlib Argon2
|
|
85
|
+
from passlib.hash import argon2
|
|
86
|
+
hashed = argon2.hash(password)
|
|
87
|
+
valid = argon2.verify(password, hashed)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```rust
|
|
91
|
+
// Rust — argon2 crate
|
|
92
|
+
use argon2::{Argon2, PasswordHasher};
|
|
93
|
+
let hash = Argon2::default().hash_password(password.as_bytes(), &salt)?;
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### A03 — Injection
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// ✅ Prisma — parametrizado por padrão
|
|
100
|
+
const user = await prisma.user.findFirst({ where: { email } });
|
|
101
|
+
|
|
102
|
+
// ❌ NestJS — QueryBuilder com interpolação
|
|
103
|
+
.where(`user.email = '${email}'`) // VULNERÁVEL
|
|
104
|
+
.where('user.email = :email', { email }) // OK
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
# SQLAlchemy — sempre parametrizado
|
|
109
|
+
db.execute(select(User).where(User.email == email))
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**XSS:** escape de saída no front, CSP no back, sem `innerHTML` / `dangerouslySetInnerHTML` com user data.
|
|
113
|
+
|
|
114
|
+
**Command injection:**
|
|
115
|
+
```go
|
|
116
|
+
// ✅ Go — args lista, não shell string
|
|
117
|
+
cmd := exec.Command("convert", inputFile, outputFile)
|
|
118
|
+
// ❌ exec.Command("sh", "-c", "convert "+userInput)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Prompt injection (LLM):**
|
|
122
|
+
- Separe instrução de dados com delimitadores
|
|
123
|
+
- Sanitize entrada antes de inserir no prompt
|
|
124
|
+
- Valide output do LLM com schema
|
|
125
|
+
|
|
126
|
+
### A04 — Insecure Design
|
|
127
|
+
|
|
128
|
+
- Valide no servidor sempre
|
|
129
|
+
- Allowlists > blocklists
|
|
130
|
+
- Rate limit ANTES da lógica de negócio em endpoints públicos
|
|
131
|
+
|
|
132
|
+
### A05 — Security Misconfiguration
|
|
133
|
+
|
|
134
|
+
- Stack traces detalhados só em dev
|
|
135
|
+
- Headers obrigatórios em prod:
|
|
136
|
+
```
|
|
137
|
+
Strict-Transport-Security: max-age=31536000; includeSubDomains
|
|
138
|
+
X-Frame-Options: DENY
|
|
139
|
+
X-Content-Type-Options: nosniff
|
|
140
|
+
Content-Security-Policy: default-src 'self'
|
|
141
|
+
Referrer-Policy: strict-origin-when-cross-origin
|
|
142
|
+
```
|
|
143
|
+
- CORS: nunca `*` para endpoints autenticados
|
|
144
|
+
|
|
145
|
+
### A06 — Vulnerable Components (crítico Ralph Loop)
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Por stack
|
|
149
|
+
npm audit --audit-level=high # Node
|
|
150
|
+
cargo audit # Rust
|
|
151
|
+
pip-audit # Python
|
|
152
|
+
composer audit # PHP
|
|
153
|
+
govulncheck ./... # Go
|
|
154
|
+
docker scout cves [imagem] # Docker
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Inegociável:** nenhuma dep com CVE HIGH/CRITICAL em produção sem justificativa documentada e plano de upgrade.
|
|
158
|
+
|
|
159
|
+
### A07 — Authentication Failures
|
|
160
|
+
|
|
161
|
+
- Login: máx 5 tentativas / 15 min por IP **e** por usuário
|
|
162
|
+
- JWT access token: `exp` ≤ 15 min
|
|
163
|
+
- Refresh token com rotação no servidor
|
|
164
|
+
- Logout invalida refresh no DB
|
|
165
|
+
- Senha: mín 12 chars, bloquear HaveIBeenPwned
|
|
166
|
+
- MFA TOTP para contas sensíveis
|
|
167
|
+
|
|
168
|
+
### A08 — Software/Data Integrity
|
|
169
|
+
|
|
170
|
+
- Valide checksum/signature de artefatos
|
|
171
|
+
- Nunca confie em dados do cliente para autorização
|
|
172
|
+
- Pin actions CI (`actions/checkout@v4`, não `@main`)
|
|
173
|
+
- Lockfiles commitados (`package-lock.json`, `Cargo.lock`, `composer.lock`)
|
|
174
|
+
|
|
175
|
+
### A09 — Security Logging & Monitoring
|
|
176
|
+
|
|
177
|
+
Logue (JSON estruturado, sem dados sensíveis):
|
|
178
|
+
- Auth: login OK/FAIL, logout, refresh, MFA challenge
|
|
179
|
+
- Authz: 403 com recurso + userId
|
|
180
|
+
- 5xx em prod com trace-id (sem stack trace completo)
|
|
181
|
+
- Destrutivas: delete, disable, role change
|
|
182
|
+
|
|
183
|
+
**Nunca logue:** senhas, tokens, API keys, cartões, CPF/SSN completo.
|
|
184
|
+
|
|
185
|
+
### A10 — SSRF
|
|
186
|
+
|
|
187
|
+
Para apps que fazem requests a URLs do usuário:
|
|
188
|
+
- Allowlist de domínios
|
|
189
|
+
- Bloqueie IPs privados (`127.x`, `10.x`, `172.16-31.x`, `192.168.x`, `169.254.x`)
|
|
190
|
+
- Bloqueie metadados de cloud (`169.254.169.254`)
|
|
191
|
+
- Timeout ≤ 5s, sem redirects automáticos
|
|
192
|
+
|
|
193
|
+
## Gestão de secrets
|
|
194
|
+
|
|
195
|
+
### Nunca em código
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
password = "..."
|
|
199
|
+
api_key = "..."
|
|
200
|
+
DATABASE_URL = "postgres://user:password@..."
|
|
201
|
+
AWS_SECRET_ACCESS_KEY = "..."
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Configure scanner pré-commit:
|
|
205
|
+
```bash
|
|
206
|
+
pip install detect-secrets
|
|
207
|
+
detect-secrets scan > .secrets.baseline
|
|
208
|
+
detect-secrets audit .secrets.baseline
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Estrutura
|
|
212
|
+
|
|
213
|
+
- Dev: `.env` no `.gitignore`, `.env.example` commitado sem valores
|
|
214
|
+
- CI: secrets do pipeline (GitHub Actions Secrets)
|
|
215
|
+
- Produção: vault (HashiCorp, AWS Secrets Manager, GCP Secret Manager)
|
|
216
|
+
- Rotação: tokens de serviço a cada 90 dias
|
|
217
|
+
|
|
218
|
+
## Validation Gates no Ralph Loop
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# 1. Audit de deps (se mudou deps)
|
|
222
|
+
npm audit --audit-level=high
|
|
223
|
+
cargo audit
|
|
224
|
+
pip-audit
|
|
225
|
+
composer audit
|
|
226
|
+
govulncheck ./...
|
|
227
|
+
|
|
228
|
+
# 2. Scan de secrets (tasks de config/infra/CI)
|
|
229
|
+
detect-secrets scan --baseline .secrets.baseline
|
|
230
|
+
|
|
231
|
+
# 3. Headers de segurança (tasks de config de server)
|
|
232
|
+
curl -I https://staging.example.com | grep -E "Strict-Transport|X-Frame|X-Content|Content-Security"
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
> **Gate obrigatório:** CVE HIGH/CRITICAL = task FAILED até corrigir.
|
|
236
|
+
|
|
237
|
+
## Como aplicar
|
|
238
|
+
|
|
239
|
+
### Passo 1: Audit do projeto
|
|
240
|
+
|
|
241
|
+
Rode tudo de §A06 e capture estado atual.
|
|
242
|
+
|
|
243
|
+
### Passo 2: Adicionar audit ao CI
|
|
244
|
+
|
|
245
|
+
```yaml
|
|
246
|
+
- name: Security audit
|
|
247
|
+
run: |
|
|
248
|
+
npm audit --audit-level=high # ou cargo/pip/composer/govulncheck
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Passo 3: Scanner de secrets
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
detect-secrets scan > .secrets.baseline
|
|
255
|
+
# adicionar pre-commit hook ou step no CI
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Passo 4: Headers em prod
|
|
259
|
+
|
|
260
|
+
Adicionar middleware da stack (helmet, secure_headers, SetResponseHeaderLayer).
|
|
261
|
+
|
|
262
|
+
### Passo 5: Rate limit nos endpoints públicos
|
|
263
|
+
|
|
264
|
+
Login: 5/15min IP+user. APIs gerais: configurar limites apropriados.
|
|
265
|
+
|
|
266
|
+
## Dicas
|
|
267
|
+
|
|
268
|
+
- **Combine** com `dare-ax` (M-04 = rate limit configurado)
|
|
269
|
+
- **Combine** com `dare-llm-integration` para prompt injection
|
|
270
|
+
- **Use** `dare-quality-telemetry` para rastrear M-04 (CVE count) ao longo do tempo
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
Esta skill é parte do DARE Method e está sob licença MIT.
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dare-skill
|
|
3
|
-
description: Adiciona, remove, lista, inspeciona, atualiza ou publica skills DARE neste projeto. Mapeia o CLI `dare skill`.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Gerenciar skills DARE do projeto
|
|
7
|
-
|
|
8
|
-
Adiciona, remove, lista, inspeciona, atualiza ou publica skills DARE neste projeto.
|
|
9
|
-
|
|
10
|
-
> Este comando expõe o CLI `dare skill` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
11
|
-
|
|
12
|
-
## Quando usar
|
|
13
|
-
|
|
14
|
-
- Você quer instalar uma skill extra (ex.: uma skill de stack) no projeto.
|
|
15
|
-
- Quer listar/inspecionar as skills disponíveis ou publicar uma própria.
|
|
16
|
-
|
|
17
|
-
## Como rodar
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
dare skill list
|
|
21
|
-
dare skill info <nome>
|
|
22
|
-
dare skill add <nome>
|
|
23
|
-
dare skill remove <nome>
|
|
24
|
-
dare skill update
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## O que fazer
|
|
28
|
-
|
|
29
|
-
1. Use `dare skill list` para ver o que está instalado/disponível.
|
|
30
|
-
2. Rode o subcomando desejado (`add`/`remove`/`info`/`update`/`publish`).
|
|
31
|
-
3. Confirme o resultado e, se mudou comandos de IDE, recarregue a IDE.
|
|
32
|
-
|
|
33
|
-
## Comandos relacionados
|
|
34
|
-
|
|
35
|
-
`/dare-update` · `/dare-info`
|
|
1
|
+
---
|
|
2
|
+
name: dare-skill
|
|
3
|
+
description: Adiciona, remove, lista, inspeciona, atualiza ou publica skills DARE neste projeto. Mapeia o CLI `dare skill`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Gerenciar skills DARE do projeto
|
|
7
|
+
|
|
8
|
+
Adiciona, remove, lista, inspeciona, atualiza ou publica skills DARE neste projeto.
|
|
9
|
+
|
|
10
|
+
> Este comando expõe o CLI `dare skill` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
11
|
+
|
|
12
|
+
## Quando usar
|
|
13
|
+
|
|
14
|
+
- Você quer instalar uma skill extra (ex.: uma skill de stack) no projeto.
|
|
15
|
+
- Quer listar/inspecionar as skills disponíveis ou publicar uma própria.
|
|
16
|
+
|
|
17
|
+
## Como rodar
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
dare skill list
|
|
21
|
+
dare skill info <nome>
|
|
22
|
+
dare skill add <nome>
|
|
23
|
+
dare skill remove <nome>
|
|
24
|
+
dare skill update
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## O que fazer
|
|
28
|
+
|
|
29
|
+
1. Use `dare skill list` para ver o que está instalado/disponível.
|
|
30
|
+
2. Rode o subcomando desejado (`add`/`remove`/`info`/`update`/`publish`).
|
|
31
|
+
3. Confirme o resultado e, se mudou comandos de IDE, recarregue a IDE.
|
|
32
|
+
|
|
33
|
+
## Comandos relacionados
|
|
34
|
+
|
|
35
|
+
`/dare-update` · `/dare-info`
|