@dewtech/dare-cli 2.17.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +140 -39
- package/dist/__tests__/confidence.test.d.ts +2 -0
- package/dist/__tests__/confidence.test.d.ts.map +1 -0
- package/dist/__tests__/confidence.test.js +73 -0
- package/dist/__tests__/confidence.test.js.map +1 -0
- package/dist/__tests__/datamodel.test.d.ts +2 -0
- package/dist/__tests__/datamodel.test.d.ts.map +1 -0
- package/dist/__tests__/datamodel.test.js +131 -0
- package/dist/__tests__/datamodel.test.js.map +1 -0
- package/dist/__tests__/dna-detector.test.d.ts +2 -0
- package/dist/__tests__/dna-detector.test.d.ts.map +1 -0
- package/dist/__tests__/dna-detector.test.js +97 -0
- package/dist/__tests__/dna-detector.test.js.map +1 -0
- package/dist/__tests__/dna-facts.test.d.ts +2 -0
- package/dist/__tests__/dna-facts.test.d.ts.map +1 -0
- package/dist/__tests__/dna-facts.test.js +44 -0
- package/dist/__tests__/dna-facts.test.js.map +1 -0
- package/dist/__tests__/graph-renderer.test.d.ts +2 -0
- package/dist/__tests__/graph-renderer.test.d.ts.map +1 -0
- package/dist/__tests__/graph-renderer.test.js +85 -0
- package/dist/__tests__/graph-renderer.test.js.map +1 -0
- package/dist/__tests__/migration.test.d.ts +2 -0
- package/dist/__tests__/migration.test.d.ts.map +1 -0
- package/dist/__tests__/migration.test.js +77 -0
- package/dist/__tests__/migration.test.js.map +1 -0
- package/dist/__tests__/module-detector.test.d.ts +2 -0
- package/dist/__tests__/module-detector.test.d.ts.map +1 -0
- package/dist/__tests__/module-detector.test.js +83 -0
- package/dist/__tests__/module-detector.test.js.map +1 -0
- package/dist/__tests__/refine.test.js +49 -49
- package/dist/__tests__/reverse-facts.test.d.ts +2 -0
- package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-facts.test.js +78 -0
- package/dist/__tests__/reverse-facts.test.js.map +1 -0
- package/dist/__tests__/review.test.js +38 -38
- package/dist/__tests__/validate.test.js +65 -65
- package/dist/bin/dare.js +30 -3
- package/dist/bin/dare.js.map +1 -1
- package/dist/commands/__tests__/init.integration.spec.d.ts +2 -0
- package/dist/commands/__tests__/init.integration.spec.d.ts.map +1 -0
- package/dist/commands/__tests__/init.integration.spec.js +134 -0
- package/dist/commands/__tests__/init.integration.spec.js.map +1 -0
- package/dist/commands/blueprint.js +122 -122
- package/dist/commands/dag.d.ts.map +1 -1
- package/dist/commands/dag.js +43 -79
- package/dist/commands/dag.js.map +1 -1
- package/dist/commands/dna.d.ts +3 -0
- package/dist/commands/dna.d.ts.map +1 -0
- package/dist/commands/dna.js +69 -0
- package/dist/commands/dna.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +84 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +101 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/new.d.ts +16 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +104 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/reverse.d.ts +3 -0
- package/dist/commands/reverse.d.ts.map +1 -0
- package/dist/commands/reverse.js +201 -0
- package/dist/commands/reverse.js.map +1 -0
- package/dist/commands/welcome.d.ts +14 -0
- package/dist/commands/welcome.d.ts.map +1 -0
- package/dist/commands/welcome.js +29 -0
- package/dist/commands/welcome.js.map +1 -0
- package/dist/mcp-server/bin/server.js +0 -0
- package/dist/skills/commands/add.d.ts +23 -0
- package/dist/skills/commands/add.d.ts.map +1 -0
- package/dist/skills/commands/add.js +206 -0
- package/dist/skills/commands/add.js.map +1 -0
- package/dist/skills/commands/info.d.ts +14 -0
- package/dist/skills/commands/info.d.ts.map +1 -0
- package/dist/skills/commands/info.js +99 -0
- package/dist/skills/commands/info.js.map +1 -0
- package/dist/skills/commands/list.d.ts +19 -0
- package/dist/skills/commands/list.d.ts.map +1 -0
- package/dist/skills/commands/list.js +163 -0
- package/dist/skills/commands/list.js.map +1 -0
- package/dist/skills/commands/publish.d.ts +56 -0
- package/dist/skills/commands/publish.d.ts.map +1 -0
- package/dist/skills/commands/publish.js +272 -0
- package/dist/skills/commands/publish.js.map +1 -0
- package/dist/skills/commands/remove.d.ts +19 -0
- package/dist/skills/commands/remove.d.ts.map +1 -0
- package/dist/skills/commands/remove.js +96 -0
- package/dist/skills/commands/remove.js.map +1 -0
- package/dist/skills/commands/update.d.ts +31 -0
- package/dist/skills/commands/update.d.ts.map +1 -0
- package/dist/skills/commands/update.js +132 -0
- package/dist/skills/commands/update.js.map +1 -0
- package/dist/skills/index.d.ts +22 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +33 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/manifest.d.ts +54 -0
- package/dist/skills/manifest.d.ts.map +1 -0
- package/dist/skills/manifest.js +162 -0
- package/dist/skills/manifest.js.map +1 -0
- package/dist/skills/registry-local.d.ts +67 -0
- package/dist/skills/registry-local.d.ts.map +1 -0
- package/dist/skills/registry-local.js +130 -0
- package/dist/skills/registry-local.js.map +1 -0
- package/dist/skills/registry-mock.json +109 -0
- package/dist/skills/registry-remote.d.ts +110 -0
- package/dist/skills/registry-remote.d.ts.map +1 -0
- package/dist/skills/registry-remote.js +246 -0
- package/dist/skills/registry-remote.js.map +1 -0
- package/dist/skills/registry.d.ts +49 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +94 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/tests/manifest.spec.d.ts +8 -0
- package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
- package/dist/skills/tests/manifest.spec.js +176 -0
- package/dist/skills/tests/manifest.spec.js.map +1 -0
- package/dist/skills/tests/publish.spec.d.ts +12 -0
- package/dist/skills/tests/publish.spec.d.ts.map +1 -0
- package/dist/skills/tests/publish.spec.js +276 -0
- package/dist/skills/tests/publish.spec.js.map +1 -0
- package/dist/skills/tests/registry-local.spec.d.ts +8 -0
- package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
- package/dist/skills/tests/registry-local.spec.js +231 -0
- package/dist/skills/tests/registry-local.spec.js.map +1 -0
- package/dist/skills/tests/registry.spec.d.ts +7 -0
- package/dist/skills/tests/registry.spec.d.ts.map +1 -0
- package/dist/skills/tests/registry.spec.js +58 -0
- package/dist/skills/tests/registry.spec.js.map +1 -0
- package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
- package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
- package/dist/skills/tests/remote-registry.spec.js +357 -0
- package/dist/skills/tests/remote-registry.spec.js.map +1 -0
- package/dist/skills/tests/update.spec.d.ts +9 -0
- package/dist/skills/tests/update.spec.d.ts.map +1 -0
- package/dist/skills/tests/update.spec.js +166 -0
- package/dist/skills/tests/update.spec.js.map +1 -0
- package/dist/stacks/__tests__/dna-emitter.spec.d.ts +2 -0
- package/dist/stacks/__tests__/dna-emitter.spec.d.ts.map +1 -0
- package/dist/stacks/__tests__/dna-emitter.spec.js +207 -0
- package/dist/stacks/__tests__/dna-emitter.spec.js.map +1 -0
- package/dist/stacks/__tests__/dna.spec.d.ts +2 -0
- package/dist/stacks/__tests__/dna.spec.d.ts.map +1 -0
- package/dist/stacks/__tests__/dna.spec.js +211 -0
- package/dist/stacks/__tests__/dna.spec.js.map +1 -0
- package/dist/stacks/__tests__/parity-rails.fixture.json +228 -0
- package/dist/stacks/__tests__/parity-rails.spec.d.ts +2 -0
- package/dist/stacks/__tests__/parity-rails.spec.d.ts.map +1 -0
- package/dist/stacks/__tests__/parity-rails.spec.js +99 -0
- package/dist/stacks/__tests__/parity-rails.spec.js.map +1 -0
- package/dist/stacks/__tests__/registry.spec.d.ts +2 -0
- package/dist/stacks/__tests__/registry.spec.d.ts.map +1 -0
- package/dist/stacks/__tests__/registry.spec.js +101 -0
- package/dist/stacks/__tests__/registry.spec.js.map +1 -0
- package/dist/stacks/__tests__/template-engine.spec.d.ts +2 -0
- package/dist/stacks/__tests__/template-engine.spec.d.ts.map +1 -0
- package/dist/stacks/__tests__/template-engine.spec.js +149 -0
- package/dist/stacks/__tests__/template-engine.spec.js.map +1 -0
- package/dist/stacks/dna-emitter.d.ts +45 -0
- package/dist/stacks/dna-emitter.d.ts.map +1 -0
- package/dist/stacks/dna-emitter.js +267 -0
- package/dist/stacks/dna-emitter.js.map +1 -0
- package/dist/stacks/go-gin/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/go-gin/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/go-gin/__tests__/scaffold.spec.js +221 -0
- package/dist/stacks/go-gin/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/go-gin/scaffold.d.ts +3 -0
- package/dist/stacks/go-gin/scaffold.d.ts.map +1 -0
- package/dist/stacks/go-gin/scaffold.js +105 -0
- package/dist/stacks/go-gin/scaffold.js.map +1 -0
- package/dist/stacks/go-stdlib/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/go-stdlib/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/go-stdlib/__tests__/scaffold.spec.js +215 -0
- package/dist/stacks/go-stdlib/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/go-stdlib/scaffold.d.ts +3 -0
- package/dist/stacks/go-stdlib/scaffold.d.ts.map +1 -0
- package/dist/stacks/go-stdlib/scaffold.js +106 -0
- package/dist/stacks/go-stdlib/scaffold.js.map +1 -0
- package/dist/stacks/mcp-go/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/mcp-go/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/mcp-go/__tests__/scaffold.spec.js +203 -0
- package/dist/stacks/mcp-go/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/mcp-go/scaffold.d.ts +3 -0
- package/dist/stacks/mcp-go/scaffold.d.ts.map +1 -0
- package/dist/stacks/mcp-go/scaffold.js +94 -0
- package/dist/stacks/mcp-go/scaffold.js.map +1 -0
- package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.js +236 -0
- package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/mcp-node-ts/scaffold.d.ts +3 -0
- package/dist/stacks/mcp-node-ts/scaffold.d.ts.map +1 -0
- package/dist/stacks/mcp-node-ts/scaffold.js +95 -0
- package/dist/stacks/mcp-node-ts/scaffold.js.map +1 -0
- package/dist/stacks/mcp-python/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/mcp-python/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/mcp-python/__tests__/scaffold.spec.js +228 -0
- package/dist/stacks/mcp-python/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/mcp-python/scaffold.d.ts +3 -0
- package/dist/stacks/mcp-python/scaffold.d.ts.map +1 -0
- package/dist/stacks/mcp-python/scaffold.js +98 -0
- package/dist/stacks/mcp-python/scaffold.js.map +1 -0
- package/dist/stacks/mcp-rust/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/mcp-rust/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/mcp-rust/__tests__/scaffold.spec.js +213 -0
- package/dist/stacks/mcp-rust/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/mcp-rust/scaffold.d.ts +3 -0
- package/dist/stacks/mcp-rust/scaffold.d.ts.map +1 -0
- package/dist/stacks/mcp-rust/scaffold.js +98 -0
- package/dist/stacks/mcp-rust/scaffold.js.map +1 -0
- package/dist/stacks/node-nestjs/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/node-nestjs/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/node-nestjs/__tests__/scaffold.spec.js +172 -0
- package/dist/stacks/node-nestjs/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/node-nestjs/scaffold.d.ts +3 -0
- package/dist/stacks/node-nestjs/scaffold.d.ts.map +1 -0
- package/dist/stacks/node-nestjs/scaffold.js +117 -0
- package/dist/stacks/node-nestjs/scaffold.js.map +1 -0
- package/dist/stacks/php-laravel/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/php-laravel/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/php-laravel/__tests__/scaffold.spec.js +205 -0
- package/dist/stacks/php-laravel/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/php-laravel/scaffold.d.ts +3 -0
- package/dist/stacks/php-laravel/scaffold.d.ts.map +1 -0
- package/dist/stacks/php-laravel/scaffold.js +109 -0
- package/dist/stacks/php-laravel/scaffold.js.map +1 -0
- package/dist/stacks/python-fastapi/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/python-fastapi/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/python-fastapi/__tests__/scaffold.spec.js +168 -0
- package/dist/stacks/python-fastapi/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/python-fastapi/scaffold.d.ts +3 -0
- package/dist/stacks/python-fastapi/scaffold.d.ts.map +1 -0
- package/dist/stacks/python-fastapi/scaffold.js +108 -0
- package/dist/stacks/python-fastapi/scaffold.js.map +1 -0
- package/dist/stacks/registry.d.ts +38 -0
- package/dist/stacks/registry.d.ts.map +1 -0
- package/dist/stacks/registry.js +153 -0
- package/dist/stacks/registry.js.map +1 -0
- package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.d.ts +6 -0
- package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.js +604 -0
- package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/ruby-rails-8/scaffold.d.ts +91 -0
- package/dist/stacks/ruby-rails-8/scaffold.d.ts.map +1 -0
- package/dist/stacks/ruby-rails-8/scaffold.js +410 -0
- package/dist/stacks/ruby-rails-8/scaffold.js.map +1 -0
- package/dist/stacks/rust-axum/__tests__/scaffold.spec.d.ts +2 -0
- package/dist/stacks/rust-axum/__tests__/scaffold.spec.d.ts.map +1 -0
- package/dist/stacks/rust-axum/__tests__/scaffold.spec.js +203 -0
- package/dist/stacks/rust-axum/__tests__/scaffold.spec.js.map +1 -0
- package/dist/stacks/rust-axum/scaffold.d.ts +3 -0
- package/dist/stacks/rust-axum/scaffold.d.ts.map +1 -0
- package/dist/stacks/rust-axum/scaffold.js +105 -0
- package/dist/stacks/rust-axum/scaffold.js.map +1 -0
- package/dist/stacks/template-engine.d.ts +38 -0
- package/dist/stacks/template-engine.d.ts.map +1 -0
- package/dist/stacks/template-engine.js +134 -0
- package/dist/stacks/template-engine.js.map +1 -0
- package/dist/stacks/types.d.ts +69 -0
- package/dist/stacks/types.d.ts.map +1 -0
- package/dist/stacks/types.js +29 -0
- package/dist/stacks/types.js.map +1 -0
- package/dist/utils/banner.d.ts +28 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +77 -0
- package/dist/utils/banner.js.map +1 -0
- package/dist/utils/banner.spec.d.ts +5 -0
- package/dist/utils/banner.spec.d.ts.map +1 -0
- package/dist/utils/banner.spec.js +253 -0
- package/dist/utils/banner.spec.js.map +1 -0
- package/dist/utils/confidence.d.ts +41 -0
- package/dist/utils/confidence.d.ts.map +1 -0
- package/dist/utils/confidence.js +101 -0
- package/dist/utils/confidence.js.map +1 -0
- package/dist/utils/datamodel.d.ts +41 -0
- package/dist/utils/datamodel.d.ts.map +1 -0
- package/dist/utils/datamodel.js +535 -0
- package/dist/utils/datamodel.js.map +1 -0
- package/dist/utils/dna-detector.d.ts +61 -0
- package/dist/utils/dna-detector.d.ts.map +1 -0
- package/dist/utils/dna-detector.js +354 -0
- package/dist/utils/dna-detector.js.map +1 -0
- package/dist/utils/dna-facts.d.ts +13 -0
- package/dist/utils/dna-facts.d.ts.map +1 -0
- package/dist/utils/dna-facts.js +109 -0
- package/dist/utils/dna-facts.js.map +1 -0
- package/dist/utils/excalidraw-renderer.d.ts +11 -71
- package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
- package/dist/utils/excalidraw-renderer.js +29 -162
- package/dist/utils/excalidraw-renderer.js.map +1 -1
- package/dist/utils/graph-renderer.d.ts +115 -0
- package/dist/utils/graph-renderer.d.ts.map +1 -0
- package/dist/utils/graph-renderer.js +216 -0
- package/dist/utils/graph-renderer.js.map +1 -0
- package/dist/utils/migration.d.ts +64 -0
- package/dist/utils/migration.d.ts.map +1 -0
- package/dist/utils/migration.js +183 -0
- package/dist/utils/migration.js.map +1 -0
- package/dist/utils/module-detector.d.ts +46 -0
- package/dist/utils/module-detector.d.ts.map +1 -0
- package/dist/utils/module-detector.js +348 -0
- package/dist/utils/module-detector.js.map +1 -0
- package/dist/utils/project-generator.d.ts +1 -1
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +268 -259
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/reverse-facts.d.ts +50 -0
- package/dist/utils/reverse-facts.d.ts.map +1 -0
- package/dist/utils/reverse-facts.js +291 -0
- package/dist/utils/reverse-facts.js.map +1 -0
- package/dist/utils/stack-bootstrap.d.ts +3 -2
- package/dist/utils/stack-bootstrap.d.ts.map +1 -1
- package/dist/utils/stack-bootstrap.js +417 -387
- package/dist/utils/stack-bootstrap.js.map +1 -1
- package/package.json +91 -82
- package/templates/DARE-dag-example.yaml +280 -280
- package/templates/UPDATE-MANIFEST.json +48 -48
- 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 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
- package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
- package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
- package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
- package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
- package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
- package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
- package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
- package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
- package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
- package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
- package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
- package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
- package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
- package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
- package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
- package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
- package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
- package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
- package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
- package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
- package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
- package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
- 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/claude/.claude/commands/dare-ax.md +131 -0
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
- package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
- 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 -0
- package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
- package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
- package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
- package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
- package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
- package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
- package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
- package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
- package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
- package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
- package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
- package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
- package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
- package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
- package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
- 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-tasks.md +70 -70
- package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
- package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
- package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
- package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
- package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
- package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
- 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/cursor/.cursor/commands/dag-viz.md +139 -0
- package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -86
- package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
- package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -184
- package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -107
- package/templates/ide/cursor/.cursor/commands/review-task.md +91 -91
- package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
- package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
- package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
- package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
- package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
- package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
- package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
- package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
- package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
- package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
- package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
- package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
- package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
- package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
- package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
- package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
- 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/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/shared/docker-compose.yml +41 -41
- package/templates/stacks/go-gin/.dare/skills.yml +11 -0
- package/templates/stacks/go-gin/.env.example +24 -0
- package/templates/stacks/go-gin/.github/workflows/dare-ci.yml +42 -0
- package/templates/stacks/go-gin/README.md.tpl +38 -0
- package/templates/stacks/go-gin/cmd/server/main.go.tpl +78 -0
- package/templates/stacks/go-gin/db/migrations/0001_create_users.down.sql +2 -0
- package/templates/stacks/go-gin/db/migrations/0001_create_users.up.sql +12 -0
- package/templates/stacks/go-gin/db/queries/users.sql +23 -0
- package/templates/stacks/go-gin/gitignore +7 -0
- package/templates/stacks/go-gin/go.mod.tpl +17 -0
- package/templates/stacks/go-gin/internal/config/config.go +41 -0
- package/templates/stacks/go-gin/internal/db/postgres.go.tpl +25 -0
- package/templates/stacks/go-gin/internal/handler/auth_handler.go.tpl +72 -0
- package/templates/stacks/go-gin/internal/handler/users_handler.go.tpl +72 -0
- package/templates/stacks/go-gin/internal/handler/ws_handler.go +37 -0
- package/templates/stacks/go-gin/internal/llm/dummy.go +14 -0
- package/templates/stacks/go-gin/internal/llm/provider.go +8 -0
- package/templates/stacks/go-gin/internal/middleware/jwt.go.tpl +58 -0
- package/templates/stacks/go-gin/internal/middleware/rate_limit.go +55 -0
- package/templates/stacks/go-gin/internal/model/user.go +17 -0
- package/templates/stacks/go-gin/internal/repository/users_repository.go.tpl +79 -0
- package/templates/stacks/go-gin/internal/service/auth_service.go.tpl +55 -0
- package/templates/stacks/go-gin/internal/service/users_service.go.tpl +53 -0
- package/templates/stacks/go-gin/llms.txt.tpl +54 -0
- package/templates/stacks/go-gin/openapi.json.tpl +46 -0
- package/templates/stacks/go-gin/sqlc.yaml +14 -0
- package/templates/stacks/go-gin/tests/smoke_test.go.tpl +22 -0
- package/templates/stacks/go-stdlib/.dare/skills.yml +11 -0
- package/templates/stacks/go-stdlib/.env.example +24 -0
- package/templates/stacks/go-stdlib/.github/workflows/dare-ci.yml +42 -0
- package/templates/stacks/go-stdlib/README.md.tpl +41 -0
- package/templates/stacks/go-stdlib/cmd/server/main.go.tpl +82 -0
- package/templates/stacks/go-stdlib/db/migrations/0001_create_users.down.sql +2 -0
- package/templates/stacks/go-stdlib/db/migrations/0001_create_users.up.sql +12 -0
- package/templates/stacks/go-stdlib/db/queries/users.sql +23 -0
- package/templates/stacks/go-stdlib/gitignore +6 -0
- package/templates/stacks/go-stdlib/go.mod.tpl +15 -0
- package/templates/stacks/go-stdlib/internal/config/config.go +41 -0
- package/templates/stacks/go-stdlib/internal/db/postgres.go.tpl +24 -0
- package/templates/stacks/go-stdlib/internal/handler/auth_handler.go.tpl +71 -0
- package/templates/stacks/go-stdlib/internal/handler/users_handler.go.tpl +84 -0
- package/templates/stacks/go-stdlib/internal/handler/ws_handler.go +36 -0
- package/templates/stacks/go-stdlib/internal/httpx/json.go +32 -0
- package/templates/stacks/go-stdlib/internal/llm/dummy.go +14 -0
- package/templates/stacks/go-stdlib/internal/llm/provider.go +8 -0
- package/templates/stacks/go-stdlib/internal/middleware/chain.go +21 -0
- package/templates/stacks/go-stdlib/internal/middleware/cors.go +27 -0
- package/templates/stacks/go-stdlib/internal/middleware/jwt.go.tpl +51 -0
- package/templates/stacks/go-stdlib/internal/middleware/rate_limit.go +81 -0
- package/templates/stacks/go-stdlib/internal/model/user.go +17 -0
- package/templates/stacks/go-stdlib/internal/repository/users_repository.go.tpl +75 -0
- package/templates/stacks/go-stdlib/internal/service/auth_service.go.tpl +55 -0
- package/templates/stacks/go-stdlib/internal/service/users_service.go.tpl +53 -0
- package/templates/stacks/go-stdlib/llms.txt.tpl +60 -0
- package/templates/stacks/go-stdlib/openapi.json.tpl +46 -0
- package/templates/stacks/go-stdlib/sqlc.yaml +14 -0
- package/templates/stacks/go-stdlib/tests/smoke_test.go.tpl +45 -0
- package/templates/stacks/mcp-go/.dare/skills.yml +8 -0
- package/templates/stacks/mcp-go/.env.example +14 -0
- package/templates/stacks/mcp-go/.github/workflows/dare-ci.yml +42 -0
- package/templates/stacks/mcp-go/README.md.tpl +50 -0
- package/templates/stacks/mcp-go/cmd/server/main.go.tpl +62 -0
- package/templates/stacks/mcp-go/gitignore +6 -0
- package/templates/stacks/mcp-go/go.mod.tpl +9 -0
- package/templates/stacks/mcp-go/internal/prompts/summarize.go +9 -0
- package/templates/stacks/mcp-go/internal/server/server.go.tpl +80 -0
- package/templates/stacks/mcp-go/internal/tools/echo.go +15 -0
- package/templates/stacks/mcp-go/internal/transports/http.go.tpl +21 -0
- package/templates/stacks/mcp-go/internal/transports/sse.go.tpl +17 -0
- package/templates/stacks/mcp-go/internal/transports/stdio.go.tpl +14 -0
- package/templates/stacks/mcp-go/llms.txt.tpl +60 -0
- package/templates/stacks/mcp-go/openapi.json.tpl +31 -0
- package/templates/stacks/mcp-go/tests/echo_test.go.tpl +37 -0
- package/templates/stacks/mcp-node-ts/.dare/skills.yml +8 -0
- package/templates/stacks/mcp-node-ts/.env.example +16 -0
- package/templates/stacks/mcp-node-ts/.github/workflows/dare-ci.yml +54 -0
- package/templates/stacks/mcp-node-ts/README.md.hbs +49 -0
- package/templates/stacks/mcp-node-ts/gitignore +7 -0
- package/templates/stacks/mcp-node-ts/llms.txt.hbs +61 -0
- package/templates/stacks/mcp-node-ts/openapi.json.hbs +39 -0
- package/templates/stacks/mcp-node-ts/package.json.hbs +35 -0
- package/templates/stacks/mcp-node-ts/src/cli.ts.hbs +71 -0
- package/templates/stacks/mcp-node-ts/src/prompts/index.ts +36 -0
- package/templates/stacks/mcp-node-ts/src/server.ts.hbs +45 -0
- package/templates/stacks/mcp-node-ts/src/tools/echo.ts +23 -0
- package/templates/stacks/mcp-node-ts/src/tools/index.ts +18 -0
- package/templates/stacks/mcp-node-ts/src/transports/http.ts +68 -0
- package/templates/stacks/mcp-node-ts/src/transports/sse.ts +58 -0
- package/templates/stacks/mcp-node-ts/src/transports/stdio.ts +5 -0
- package/templates/stacks/mcp-node-ts/tests/echo.test.ts +50 -0
- package/templates/stacks/mcp-node-ts/tsconfig.json +17 -0
- package/templates/stacks/mcp-python/.dare/skills.yml +8 -0
- package/templates/stacks/mcp-python/.env.example +14 -0
- package/templates/stacks/mcp-python/.github/workflows/dare-ci.yml +42 -0
- package/templates/stacks/mcp-python/README.md.j2 +49 -0
- package/templates/stacks/mcp-python/gitignore +12 -0
- package/templates/stacks/mcp-python/llms.txt.j2 +56 -0
- package/templates/stacks/mcp-python/openapi.json.j2 +33 -0
- package/templates/stacks/mcp-python/pyproject.toml.j2 +37 -0
- package/templates/stacks/mcp-python/src/__init__.py +0 -0
- package/templates/stacks/mcp-python/src/cli.py.j2 +68 -0
- package/templates/stacks/mcp-python/src/prompts/__init__.py +0 -0
- package/templates/stacks/mcp-python/src/prompts/summarize.py +10 -0
- package/templates/stacks/mcp-python/src/server.py.j2 +28 -0
- package/templates/stacks/mcp-python/src/tools/__init__.py +0 -0
- package/templates/stacks/mcp-python/src/tools/echo.py +12 -0
- package/templates/stacks/mcp-python/src/transports/__init__.py +0 -0
- package/templates/stacks/mcp-python/src/transports/http.py +12 -0
- package/templates/stacks/mcp-python/src/transports/sse.py +13 -0
- package/templates/stacks/mcp-python/src/transports/stdio.py +6 -0
- package/templates/stacks/mcp-python/tests/__init__.py +0 -0
- package/templates/stacks/mcp-python/tests/test_echo.py +28 -0
- package/templates/stacks/mcp-rust/.dare/skills.yml +8 -0
- package/templates/stacks/mcp-rust/.env.example +14 -0
- package/templates/stacks/mcp-rust/.github/workflows/dare-ci.yml +38 -0
- package/templates/stacks/mcp-rust/Cargo.toml.tera +35 -0
- package/templates/stacks/mcp-rust/README.md.tera +50 -0
- package/templates/stacks/mcp-rust/gitignore +5 -0
- package/templates/stacks/mcp-rust/llms.txt.tera +60 -0
- package/templates/stacks/mcp-rust/openapi.json.tera +31 -0
- package/templates/stacks/mcp-rust/src/cli.rs.tera +33 -0
- package/templates/stacks/mcp-rust/src/lib.rs +6 -0
- package/templates/stacks/mcp-rust/src/main.rs.tera +30 -0
- package/templates/stacks/mcp-rust/src/prompts/mod.rs +1 -0
- package/templates/stacks/mcp-rust/src/prompts/summarize.rs +5 -0
- package/templates/stacks/mcp-rust/src/server.rs.tera +38 -0
- package/templates/stacks/mcp-rust/src/tools/echo.rs +18 -0
- package/templates/stacks/mcp-rust/src/tools/mod.rs +22 -0
- package/templates/stacks/mcp-rust/src/transports/http.rs +27 -0
- package/templates/stacks/mcp-rust/src/transports/mod.rs +3 -0
- package/templates/stacks/mcp-rust/src/transports/sse.rs +33 -0
- package/templates/stacks/mcp-rust/src/transports/stdio.rs +14 -0
- package/templates/stacks/mcp-rust/tests/echo_test.rs.tera +27 -0
- package/templates/stacks/node-nestjs/.dare/skills.yml +11 -0
- package/templates/stacks/node-nestjs/.env.example +21 -0
- package/templates/stacks/node-nestjs/.github/workflows/dare-ci.yml +54 -0
- package/templates/stacks/node-nestjs/README.md.hbs +35 -0
- package/templates/stacks/node-nestjs/gitignore +7 -0
- package/templates/stacks/node-nestjs/llms.txt.hbs +47 -0
- package/templates/stacks/node-nestjs/nest-cli.json +16 -0
- package/templates/stacks/node-nestjs/openapi.json.hbs +75 -0
- package/templates/stacks/node-nestjs/package.json.hbs +57 -0
- package/templates/stacks/node-nestjs/prisma/schema.prisma +25 -0
- package/templates/stacks/node-nestjs/prisma/seed.ts.hbs +25 -0
- package/templates/stacks/node-nestjs/src/app.module.ts +39 -0
- package/templates/stacks/node-nestjs/src/auth/auth.controller.ts +29 -0
- package/templates/stacks/node-nestjs/src/auth/auth.module.ts +25 -0
- package/templates/stacks/node-nestjs/src/auth/auth.service.ts +36 -0
- package/templates/stacks/node-nestjs/src/auth/dto/login-response.dto.ts +9 -0
- package/templates/stacks/node-nestjs/src/auth/dto/login.dto.ts +17 -0
- package/templates/stacks/node-nestjs/src/auth/jwt.strategy.ts +25 -0
- package/templates/stacks/node-nestjs/src/common/filters/problem-details.filter.ts +38 -0
- package/templates/stacks/node-nestjs/src/common/interceptors/json-response.interceptor.ts +13 -0
- package/templates/stacks/node-nestjs/src/main.ts.hbs +44 -0
- package/templates/stacks/node-nestjs/src/prisma/prisma.module.ts +9 -0
- package/templates/stacks/node-nestjs/src/prisma/prisma.service.ts +9 -0
- package/templates/stacks/node-nestjs/src/users/dto/create-user.dto.ts +22 -0
- package/templates/stacks/node-nestjs/src/users/dto/user.dto.ts +15 -0
- package/templates/stacks/node-nestjs/src/users/users.controller.ts +41 -0
- package/templates/stacks/node-nestjs/src/users/users.module.ts +11 -0
- package/templates/stacks/node-nestjs/src/users/users.repository.ts +38 -0
- package/templates/stacks/node-nestjs/src/users/users.service.ts +38 -0
- package/templates/stacks/node-nestjs/tsconfig.build.json +4 -0
- package/templates/stacks/node-nestjs/tsconfig.json +28 -0
- package/templates/stacks/php-laravel/.dare/skills.yml +11 -0
- package/templates/stacks/php-laravel/.env.example +41 -0
- package/templates/stacks/php-laravel/.github/workflows/dare-ci.yml +43 -0
- package/templates/stacks/php-laravel/README.md.hbs +36 -0
- package/templates/stacks/php-laravel/app/Http/Controllers/Api/AuthController.php +36 -0
- package/templates/stacks/php-laravel/app/Http/Controllers/Api/UsersController.php +33 -0
- package/templates/stacks/php-laravel/app/Http/Requests/CreateUserRequest.php +26 -0
- package/templates/stacks/php-laravel/app/Http/Requests/LoginRequest.php +34 -0
- package/templates/stacks/php-laravel/app/Llm/Contracts/LlmProvider.php +12 -0
- package/templates/stacks/php-laravel/app/Llm/Providers/DummyProvider.php +13 -0
- package/templates/stacks/php-laravel/app/Llm/Providers/OpenAiProvider.php +33 -0
- package/templates/stacks/php-laravel/app/Models/User.php +44 -0
- package/templates/stacks/php-laravel/app/Repositories/UsersRepository.php +32 -0
- package/templates/stacks/php-laravel/app/Services/AuthService.php +37 -0
- package/templates/stacks/php-laravel/app/Services/UsersService.php +57 -0
- package/templates/stacks/php-laravel/artisan +12 -0
- package/templates/stacks/php-laravel/bootstrap/app.php +29 -0
- package/templates/stacks/php-laravel/bootstrap/providers.php +5 -0
- package/templates/stacks/php-laravel/composer.json.hbs +58 -0
- package/templates/stacks/php-laravel/config/l5-swagger.php +41 -0
- package/templates/stacks/php-laravel/config/reverb.php +34 -0
- package/templates/stacks/php-laravel/config/sanctum.php +15 -0
- package/templates/stacks/php-laravel/database/migrations/2026_06_01_000001_create_users_table.php +27 -0
- package/templates/stacks/php-laravel/database/seeders/DatabaseSeeder.php +21 -0
- package/templates/stacks/php-laravel/gitignore +23 -0
- package/templates/stacks/php-laravel/llms.txt.hbs +53 -0
- package/templates/stacks/php-laravel/openapi.json.hbs +43 -0
- package/templates/stacks/php-laravel/phpstan.neon +9 -0
- package/templates/stacks/php-laravel/routes/api.php +13 -0
- package/templates/stacks/php-laravel/routes/channels.php +7 -0
- package/templates/stacks/php-laravel/tests/Feature/AuthTest.php +35 -0
- package/templates/stacks/php-laravel/tests/Feature/UsersTest.php +30 -0
- package/templates/stacks/php-laravel/tests/Pest.php +5 -0
- package/templates/stacks/python-fastapi/.dare/skills.yml +11 -0
- package/templates/stacks/python-fastapi/.env.example +21 -0
- package/templates/stacks/python-fastapi/.github/workflows/dare-ci.yml +43 -0
- package/templates/stacks/python-fastapi/README.md.j2 +35 -0
- package/templates/stacks/python-fastapi/alembic/env.py +46 -0
- package/templates/stacks/python-fastapi/alembic/script.py.mako +26 -0
- package/templates/stacks/python-fastapi/alembic/versions/0001_create_users.py.j2 +37 -0
- package/templates/stacks/python-fastapi/alembic.ini.j2 +39 -0
- package/templates/stacks/python-fastapi/app/__init__.py +0 -0
- package/templates/stacks/python-fastapi/app/core/__init__.py +0 -0
- package/templates/stacks/python-fastapi/app/core/config.py +24 -0
- package/templates/stacks/python-fastapi/app/core/security.py +34 -0
- package/templates/stacks/python-fastapi/app/db/__init__.py +0 -0
- package/templates/stacks/python-fastapi/app/db/session.py +22 -0
- package/templates/stacks/python-fastapi/app/main.py.j2 +36 -0
- package/templates/stacks/python-fastapi/app/models/__init__.py +3 -0
- package/templates/stacks/python-fastapi/app/models/user.py +30 -0
- package/templates/stacks/python-fastapi/app/repositories/__init__.py +0 -0
- package/templates/stacks/python-fastapi/app/repositories/user_repository.py +34 -0
- package/templates/stacks/python-fastapi/app/routers/__init__.py +0 -0
- package/templates/stacks/python-fastapi/app/routers/auth.py +37 -0
- package/templates/stacks/python-fastapi/app/routers/users.py +46 -0
- package/templates/stacks/python-fastapi/app/schemas/__init__.py +0 -0
- package/templates/stacks/python-fastapi/app/schemas/user.py +56 -0
- package/templates/stacks/python-fastapi/app/services/__init__.py +0 -0
- package/templates/stacks/python-fastapi/app/services/auth_service.py +22 -0
- package/templates/stacks/python-fastapi/app/services/user_service.py +31 -0
- package/templates/stacks/python-fastapi/gitignore +12 -0
- package/templates/stacks/python-fastapi/llms.txt.j2 +53 -0
- package/templates/stacks/python-fastapi/openapi.json.j2 +43 -0
- package/templates/stacks/python-fastapi/pyproject.toml.j2 +45 -0
- package/templates/stacks/python-fastapi/tests/__init__.py +0 -0
- package/templates/stacks/python-fastapi/tests/test_auth.py +22 -0
- package/templates/stacks/ruby-rails-8/.dare/skills.yml +50 -0
- package/templates/stacks/ruby-rails-8/.env.example +20 -0
- package/templates/stacks/ruby-rails-8/.github/workflows/dare-ci.yml +112 -0
- package/templates/stacks/ruby-rails-8/Gemfile.erb +61 -0
- package/templates/stacks/ruby-rails-8/app/channels/application_cable/channel.rb +11 -0
- package/templates/stacks/ruby-rails-8/app/channels/application_cable/connection.rb +34 -0
- package/templates/stacks/ruby-rails-8/app/channels/dare_updates_channel.rb +18 -0
- package/templates/stacks/ruby-rails-8/app/channels/user_updates_channel.rb +23 -0
- package/templates/stacks/ruby-rails-8/app/controllers/application_controller.rb +44 -0
- package/templates/stacks/ruby-rails-8/app/controllers/concerns/problem_details.rb +93 -0
- package/templates/stacks/ruby-rails-8/app/handlers/summarize_handler.rb +33 -0
- package/templates/stacks/ruby-rails-8/app/handlers/users_handler.rb +68 -0
- package/templates/stacks/ruby-rails-8/app/llm/cache/llm_cache.rb +44 -0
- package/templates/stacks/ruby-rails-8/app/llm/prompts/prompt_loader.rb +54 -0
- package/templates/stacks/ruby-rails-8/app/llm/prompts/summarize_v1.jinja2 +12 -0
- package/templates/stacks/ruby-rails-8/app/llm/providers/dummy_provider.rb +35 -0
- package/templates/stacks/ruby-rails-8/app/llm/providers/llm_provider.rb +67 -0
- package/templates/stacks/ruby-rails-8/app/llm/providers/openai_provider.rb +62 -0
- package/templates/stacks/ruby-rails-8/app/llm/rate_limit/token_bucket.rb +82 -0
- package/templates/stacks/ruby-rails-8/app/llm/validators/summarize_output_schema.json +21 -0
- package/templates/stacks/ruby-rails-8/app/llm/validators/validator.rb +52 -0
- package/templates/stacks/ruby-rails-8/app/models/user.rb +36 -0
- package/templates/stacks/ruby-rails-8/app/presenters/user_presenter.rb +48 -0
- package/templates/stacks/ruby-rails-8/app/repositories/document_repository.rb +57 -0
- package/templates/stacks/ruby-rails-8/app/repositories/user_repository.rb +73 -0
- package/templates/stacks/ruby-rails-8/app/services/create_user_service.rb +67 -0
- package/templates/stacks/ruby-rails-8/app/services/realtime_service.rb +53 -0
- package/templates/stacks/ruby-rails-8/app/services/summarize_document_service.rb +57 -0
- package/templates/stacks/ruby-rails-8/config/dare.yml +42 -0
- package/templates/stacks/ruby-rails-8/config/initializers/dare.rb +31 -0
- package/templates/stacks/ruby-rails-8/config/initializers/rack_attack.rb +64 -0
- package/templates/stacks/ruby-rails-8/config/initializers/rswag_api.rb +12 -0
- package/templates/stacks/ruby-rails-8/lib/tasks/dare.rake +159 -0
- package/templates/stacks/ruby-rails-8/llms.txt.erb +69 -0
- package/templates/stacks/ruby-rails-8/spec/api/summarize_spec.rb +56 -0
- package/templates/stacks/ruby-rails-8/spec/api/users_spec.rb +72 -0
- package/templates/stacks/ruby-rails-8/spec/channels/dare_updates_channel_spec.rb +61 -0
- package/templates/stacks/ruby-rails-8/spec/channels/user_updates_channel_spec.rb +56 -0
- package/templates/stacks/ruby-rails-8/spec/factories/users.rb +27 -0
- package/templates/stacks/ruby-rails-8/spec/handlers/users_handler_spec.rb +88 -0
- package/templates/stacks/ruby-rails-8/spec/rails_helper.rb +31 -0
- package/templates/stacks/ruby-rails-8/spec/services/create_user_service_spec.rb +88 -0
- package/templates/stacks/ruby-rails-8/spec/services/summarize_document_service_spec.rb +142 -0
- package/templates/stacks/ruby-rails-8/spec/swagger_helper.rb +73 -0
- package/templates/stacks/rust-axum/.dare/skills.yml +11 -0
- package/templates/stacks/rust-axum/.env.example +26 -0
- package/templates/stacks/rust-axum/.github/workflows/dare-ci.yml +40 -0
- package/templates/stacks/rust-axum/Cargo.toml.tera +53 -0
- package/templates/stacks/rust-axum/README.md.tera +37 -0
- package/templates/stacks/rust-axum/gitignore +5 -0
- package/templates/stacks/rust-axum/llms.txt.tera +54 -0
- package/templates/stacks/rust-axum/migrations/0001_create_users.sql +13 -0
- package/templates/stacks/rust-axum/openapi.json.tera +46 -0
- package/templates/stacks/rust-axum/src/config.rs +45 -0
- package/templates/stacks/rust-axum/src/errors.rs +48 -0
- package/templates/stacks/rust-axum/src/handlers/auth.rs +48 -0
- package/templates/stacks/rust-axum/src/handlers/mod.rs +3 -0
- package/templates/stacks/rust-axum/src/handlers/users.rs +81 -0
- package/templates/stacks/rust-axum/src/handlers/ws.rs +24 -0
- package/templates/stacks/rust-axum/src/lib.rs +19 -0
- package/templates/stacks/rust-axum/src/llm/mod.rs +1 -0
- package/templates/stacks/rust-axum/src/llm/provider.rs +48 -0
- package/templates/stacks/rust-axum/src/main.rs.tera +64 -0
- package/templates/stacks/rust-axum/src/middleware/auth.rs +20 -0
- package/templates/stacks/rust-axum/src/middleware/mod.rs +2 -0
- package/templates/stacks/rust-axum/src/middleware/rate_limit.rs +27 -0
- package/templates/stacks/rust-axum/src/models/mod.rs +1 -0
- package/templates/stacks/rust-axum/src/models/user.rs +13 -0
- package/templates/stacks/rust-axum/src/repositories/mod.rs +1 -0
- package/templates/stacks/rust-axum/src/repositories/user_repository.rs +62 -0
- package/templates/stacks/rust-axum/src/services/auth_service.rs +50 -0
- package/templates/stacks/rust-axum/src/services/mod.rs +2 -0
- package/templates/stacks/rust-axum/src/services/user_service.rs +53 -0
- package/templates/stacks/rust-axum/tests/integration_test.rs.tera +13 -0
- package/LICENSE +0 -21
- package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
- package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
- package/dist/__tests__/dag-runner/adapters.test.js +0 -134
- package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
- package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
- package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
- package/dist/dag-runner/adapters/antigravity.js +0 -54
- package/dist/dag-runner/adapters/antigravity.js.map +0 -1
- package/dist/dag-runner/adapters/claude.d.ts +0 -6
- package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
- package/dist/dag-runner/adapters/claude.js +0 -48
- package/dist/dag-runner/adapters/claude.js.map +0 -1
- package/dist/dag-runner/adapters/cursor.d.ts +0 -6
- package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
- package/dist/dag-runner/adapters/cursor.js +0 -58
- package/dist/dag-runner/adapters/cursor.js.map +0 -1
- package/dist/dag-runner/adapters/index.d.ts +0 -46
- package/dist/dag-runner/adapters/index.d.ts.map +0 -1
- package/dist/dag-runner/adapters/index.js +0 -55
- package/dist/dag-runner/adapters/index.js.map +0 -1
- package/dist/dag-runner/utils/timeout.d.ts +0 -27
- package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
- package/dist/dag-runner/utils/timeout.js +0 -55
- package/dist/dag-runner/utils/timeout.js.map +0 -1
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
# Comando: /review-task
|
|
2
|
-
|
|
3
|
-
## Descrição
|
|
4
|
-
|
|
5
|
-
Audita uma task **implementada** cruzando a spec (`DARE/EXECUTION/<id>.md`) com os arquivos reais que ela tocou. Detecta stubs, mocks fora de testes, funções vazias, TODOs, retorno-fantasma — **e** valida critério-a-critério se a implementação satisfaz o que a spec prometeu.
|
|
6
|
-
|
|
7
|
-
Esta é a camada **semântica** do review. A camada estática (regex / patterns) já é feita automaticamente pelo CLI quando você roda `dare review <task-id>`. Este comando combina as duas: rode a estática via CLI, gere um verdito semântico aqui, e produza um relatório fundido.
|
|
8
|
-
|
|
9
|
-
## Quando rodar
|
|
10
|
-
|
|
11
|
-
- Antes de marcar uma task como DONE (gate obrigatório no Definition of Done do TASK-SPEC)
|
|
12
|
-
- Quando o `dare review <id>` estático passa mas você quer validação adicional contra a spec
|
|
13
|
-
- Quando o dev pede revisão manual: `/review-task task-034`
|
|
14
|
-
|
|
15
|
-
## Instruções para o Cursor Composer
|
|
16
|
-
|
|
17
|
-
### 1. Validar argumento
|
|
18
|
-
|
|
19
|
-
`$ARGUMENTS` deve conter o `task-id`. Se vazio, peça.
|
|
20
|
-
|
|
21
|
-
### 2. Rodar a camada estática primeiro
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
dare review $ARGUMENTS --format json > .dare/review-static-$ARGUMENTS.json
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Leia esse JSON. Se houver erros estáticos, reporte-os e pergunte se quer prosseguir com a análise semântica (geralmente não vale — corrija primeiro).
|
|
28
|
-
|
|
29
|
-
### 3. Carregar contexto
|
|
30
|
-
|
|
31
|
-
- `DARE/EXECUTION/$ARGUMENTS.md` — spec
|
|
32
|
-
- Cada arquivo listado na seção 3 da spec
|
|
33
|
-
- `DARE/BLUEPRINT.md` — contratos referenciados
|
|
34
|
-
|
|
35
|
-
### 4. Auditoria critério-a-critério
|
|
36
|
-
|
|
37
|
-
Para **cada** item das seções abaixo da spec, marque ✅ / ❌ com evidência (arquivo + linha):
|
|
38
|
-
|
|
39
|
-
- **4.1 Objetivo (seção 1):** estado observável foi atingido?
|
|
40
|
-
- **4.2 Arquivos (seção 3):** todos existem com conteúdo descrito? Há arquivos extras suspeitos?
|
|
41
|
-
- **4.3 Implementação (seção 4):** cada passo executado? assinaturas exatas? validações com regras concretas (não "valida email" — a regex específica)?
|
|
42
|
-
- **4.4 Testes:** cada teste listado existe? Tem assertions reais? Edge cases cobertos?
|
|
43
|
-
- **4.5 Segurança (seção 5):** input validation, autorização, secrets, SQL injection — tudo conforme spec?
|
|
44
|
-
- **4.6 Anti-Stub (seção 7):** a camada estática já checou — só anote se você encontrar algo que regex não pegaria (ex.: dados hardcoded disfarçados de "do banco").
|
|
45
|
-
|
|
46
|
-
### 5. Emitir verdito semântico
|
|
47
|
-
|
|
48
|
-
Salve em `.dare/review-semantic-$ARGUMENTS.json`:
|
|
49
|
-
|
|
50
|
-
```json
|
|
51
|
-
{
|
|
52
|
-
"passed": true,
|
|
53
|
-
"unmetCriteria": [],
|
|
54
|
-
"notes": "Resumo de 1-3 frases do que foi verificado"
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Se algo falhou:
|
|
59
|
-
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"passed": false,
|
|
63
|
-
"unmetCriteria": [
|
|
64
|
-
"Seção 4.3: validação de senha não implementa regex de força",
|
|
65
|
-
"Seção 4.4: teste de 'email duplicado' não existe"
|
|
66
|
-
],
|
|
67
|
-
"notes": "2 critérios não atendidos em src/auth/register.ts"
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 6. Rodar o review fundido
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
dare review $ARGUMENTS --from-agent .dare/review-semantic-$ARGUMENTS.json
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Exit code 0 = task pode ir para DONE; 1 = não pode.
|
|
78
|
-
|
|
79
|
-
### 7. Mensagem final
|
|
80
|
-
|
|
81
|
-
Se passou:
|
|
82
|
-
> ✅ Task `$ARGUMENTS` aprovada. Marque como DONE: `dare execute --complete $ARGUMENTS`
|
|
83
|
-
|
|
84
|
-
Se falhou:
|
|
85
|
-
> ❌ Task `$ARGUMENTS` não passou. Itens a corrigir: [lista]. Após corrigir, rode `/review-task $ARGUMENTS` novamente.
|
|
86
|
-
|
|
87
|
-
## Regras inegociáveis
|
|
88
|
-
|
|
89
|
-
- **Não invente** que algo está implementado se você não viu o código.
|
|
90
|
-
- **Não aceite** mocks/stubs em código de produção mesmo que "façam o teste passar".
|
|
91
|
-
- **Mocks são OK** dentro de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`.
|
|
1
|
+
# Comando: /review-task
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
|
|
5
|
+
Audita uma task **implementada** cruzando a spec (`DARE/EXECUTION/<id>.md`) com os arquivos reais que ela tocou. Detecta stubs, mocks fora de testes, funções vazias, TODOs, retorno-fantasma — **e** valida critério-a-critério se a implementação satisfaz o que a spec prometeu.
|
|
6
|
+
|
|
7
|
+
Esta é a camada **semântica** do review. A camada estática (regex / patterns) já é feita automaticamente pelo CLI quando você roda `dare review <task-id>`. Este comando combina as duas: rode a estática via CLI, gere um verdito semântico aqui, e produza um relatório fundido.
|
|
8
|
+
|
|
9
|
+
## Quando rodar
|
|
10
|
+
|
|
11
|
+
- Antes de marcar uma task como DONE (gate obrigatório no Definition of Done do TASK-SPEC)
|
|
12
|
+
- Quando o `dare review <id>` estático passa mas você quer validação adicional contra a spec
|
|
13
|
+
- Quando o dev pede revisão manual: `/review-task task-034`
|
|
14
|
+
|
|
15
|
+
## Instruções para o Cursor Composer
|
|
16
|
+
|
|
17
|
+
### 1. Validar argumento
|
|
18
|
+
|
|
19
|
+
`$ARGUMENTS` deve conter o `task-id`. Se vazio, peça.
|
|
20
|
+
|
|
21
|
+
### 2. Rodar a camada estática primeiro
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
dare review $ARGUMENTS --format json > .dare/review-static-$ARGUMENTS.json
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Leia esse JSON. Se houver erros estáticos, reporte-os e pergunte se quer prosseguir com a análise semântica (geralmente não vale — corrija primeiro).
|
|
28
|
+
|
|
29
|
+
### 3. Carregar contexto
|
|
30
|
+
|
|
31
|
+
- `DARE/EXECUTION/$ARGUMENTS.md` — spec
|
|
32
|
+
- Cada arquivo listado na seção 3 da spec
|
|
33
|
+
- `DARE/BLUEPRINT.md` — contratos referenciados
|
|
34
|
+
|
|
35
|
+
### 4. Auditoria critério-a-critério
|
|
36
|
+
|
|
37
|
+
Para **cada** item das seções abaixo da spec, marque ✅ / ❌ com evidência (arquivo + linha):
|
|
38
|
+
|
|
39
|
+
- **4.1 Objetivo (seção 1):** estado observável foi atingido?
|
|
40
|
+
- **4.2 Arquivos (seção 3):** todos existem com conteúdo descrito? Há arquivos extras suspeitos?
|
|
41
|
+
- **4.3 Implementação (seção 4):** cada passo executado? assinaturas exatas? validações com regras concretas (não "valida email" — a regex específica)?
|
|
42
|
+
- **4.4 Testes:** cada teste listado existe? Tem assertions reais? Edge cases cobertos?
|
|
43
|
+
- **4.5 Segurança (seção 5):** input validation, autorização, secrets, SQL injection — tudo conforme spec?
|
|
44
|
+
- **4.6 Anti-Stub (seção 7):** a camada estática já checou — só anote se você encontrar algo que regex não pegaria (ex.: dados hardcoded disfarçados de "do banco").
|
|
45
|
+
|
|
46
|
+
### 5. Emitir verdito semântico
|
|
47
|
+
|
|
48
|
+
Salve em `.dare/review-semantic-$ARGUMENTS.json`:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"passed": true,
|
|
53
|
+
"unmetCriteria": [],
|
|
54
|
+
"notes": "Resumo de 1-3 frases do que foi verificado"
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Se algo falhou:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"passed": false,
|
|
63
|
+
"unmetCriteria": [
|
|
64
|
+
"Seção 4.3: validação de senha não implementa regex de força",
|
|
65
|
+
"Seção 4.4: teste de 'email duplicado' não existe"
|
|
66
|
+
],
|
|
67
|
+
"notes": "2 critérios não atendidos em src/auth/register.ts"
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 6. Rodar o review fundido
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
dare review $ARGUMENTS --from-agent .dare/review-semantic-$ARGUMENTS.json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Exit code 0 = task pode ir para DONE; 1 = não pode.
|
|
78
|
+
|
|
79
|
+
### 7. Mensagem final
|
|
80
|
+
|
|
81
|
+
Se passou:
|
|
82
|
+
> ✅ Task `$ARGUMENTS` aprovada. Marque como DONE: `dare execute --complete $ARGUMENTS`
|
|
83
|
+
|
|
84
|
+
Se falhou:
|
|
85
|
+
> ❌ Task `$ARGUMENTS` não passou. Itens a corrigir: [lista]. Após corrigir, rode `/review-task $ARGUMENTS` novamente.
|
|
86
|
+
|
|
87
|
+
## Regras inegociáveis
|
|
88
|
+
|
|
89
|
+
- **Não invente** que algo está implementado se você não viu o código.
|
|
90
|
+
- **Não aceite** mocks/stubs em código de produção mesmo que "façam o teste passar".
|
|
91
|
+
- **Mocks são OK** dentro de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`.
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
# Comando: /run-dag
|
|
2
|
-
|
|
3
|
-
## Descrição
|
|
4
|
-
|
|
5
|
-
Executa o grafo de tasks definido em `DARE/dare-dag.yaml` usando o **Cursor
|
|
6
|
-
como executor** e o CLI `dare` como orquestrador. O canvas ao vivo fica em
|
|
7
|
-
`DARE/.canvas.md`.
|
|
8
|
-
|
|
9
|
-
> **Sem API keys.** Você (Cursor) usa o plano da IDE em que o usuário já está
|
|
10
|
-
> logado. O CLI apenas coordena estado, monta prompts e atualiza canvas.
|
|
11
|
-
|
|
12
|
-
## Pré-requisitos
|
|
13
|
-
|
|
14
|
-
- `DARE/dare-dag.yaml` existe e foi aprovado pelo usuário
|
|
15
|
-
- Specs em `DARE/EXECUTION/task-<id>.md` geradas
|
|
16
|
-
- `dare` disponível no PATH (`npm i -g @dewtech/dare-cli`)
|
|
17
|
-
|
|
18
|
-
## Instruções para o Cursor Composer
|
|
19
|
-
|
|
20
|
-
### 1. Validar pré-condições
|
|
21
|
-
|
|
22
|
-
- Confirme que `DARE/dare-dag.yaml` existe. Se não, oriente o usuário a rodar
|
|
23
|
-
`/generate-tasks` primeiro
|
|
24
|
-
- Leia o YAML e verifique:
|
|
25
|
-
- Sem ciclos
|
|
26
|
-
- Pelo menos 2 tasks no rank 0 (paralelismo lógico)
|
|
27
|
-
- Cada task tem `id` único, `complexity`, `subtask_prompt`
|
|
28
|
-
|
|
29
|
-
### 2. Pegar próximas tasks
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
dare execute --next
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
O CLI imprime as tasks ready do rank atual com o prompt completo (já com
|
|
36
|
-
snippets dos outputs dos pais costurados). Use exatamente esses prompts.
|
|
37
|
-
|
|
38
|
-
### 3. Sugerir abrir o canvas
|
|
39
|
-
|
|
40
|
-
Antes de começar, peça ao usuário abrir `DARE/.canvas.md` em uma aba para
|
|
41
|
-
acompanhar o progresso ao vivo.
|
|
42
|
-
|
|
43
|
-
### 4. Executar cada task
|
|
44
|
-
|
|
45
|
-
Para cada task ready:
|
|
46
|
-
|
|
47
|
-
1. Leia `spec_file` se houver
|
|
48
|
-
2. Implemente conforme o prompt
|
|
49
|
-
3. Rode Ralph Loop: build → test → lint
|
|
50
|
-
4. Registre o resultado:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Sucesso
|
|
54
|
-
dare execute --complete task-001 --output "Resumo + arquivos criados/modificados (paths)"
|
|
55
|
-
|
|
56
|
-
# Falha
|
|
57
|
-
dare execute --fail task-002 --reason "Mensagem clara da falha"
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 5. Avançar de rank
|
|
61
|
-
|
|
62
|
-
Após registrar todos os `--complete`/`--fail` do rank atual:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
dare execute --next
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Se aparece `✅ All tasks resolved`, todas as tasks terminaram. Caso contrário,
|
|
69
|
-
continue executando o próximo rank.
|
|
70
|
-
|
|
71
|
-
### 6. Pós-execução
|
|
72
|
-
|
|
73
|
-
Ao terminar:
|
|
74
|
-
|
|
75
|
-
- Rode `dare execute --status` para ver o sumário final
|
|
76
|
-
- Se houver FAILED: leia `DARE/EXECUTION/task-<id>.md` da que falhou,
|
|
77
|
-
corrija a spec ou o prompt, depois:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
dare execute --reset task-002 # volta para PENDING
|
|
81
|
-
dare execute --next # tente novamente
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Comandos disponíveis
|
|
85
|
-
|
|
86
|
-
| Comando | Função |
|
|
87
|
-
|---------|--------|
|
|
88
|
-
| `dare execute --next` | Imprime tasks ready do rank atual com prompts |
|
|
89
|
-
| `dare execute --complete <id> --output "…"` | Marca DONE |
|
|
90
|
-
| `dare execute --fail <id> --reason "…"` | Marca FAILED + cascade-skip |
|
|
91
|
-
| `dare execute --reset <id>` | Volta para PENDING (retry) |
|
|
92
|
-
| `dare execute --status` | Snapshot do canvas + sumário |
|
|
93
|
-
|
|
94
|
-
## Erros comuns
|
|
95
|
-
|
|
96
|
-
| Sintoma | Causa | Correção |
|
|
97
|
-
|---------|-------|----------|
|
|
98
|
-
| `dare-dag.yaml not found` | Não foi gerado | Rode `/generate-tasks` |
|
|
99
|
-
| Cascata de SKIPPED | Pai falhou | Corrija pai → `--reset` → `--next` |
|
|
100
|
-
| Output truncado em 4000 chars | Cap normal | Faça a task escrever em arquivo, retorne resumo |
|
|
101
|
-
| Tudo no rank 0 disputa o mesmo arquivo | Ausência de deps reais | Edite `dare-dag.yaml` adicionando `depends_on` |
|
|
102
|
-
|
|
103
|
-
## Referências
|
|
104
|
-
|
|
105
|
-
- Skill: `.cursor/rules/skill-dag-runner.mdc`
|
|
106
|
-
- Schema: `DARE/dare-dag.yaml`
|
|
107
|
-
- Canvas: `DARE/.canvas.md`
|
|
108
|
-
- Specs: `DARE/EXECUTION/task-*.md`
|
|
109
|
-
|
|
110
|
-
$ARGUMENTS
|
|
1
|
+
# Comando: /run-dag
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
|
|
5
|
+
Executa o grafo de tasks definido em `DARE/dare-dag.yaml` usando o **Cursor
|
|
6
|
+
como executor** e o CLI `dare` como orquestrador. O canvas ao vivo fica em
|
|
7
|
+
`DARE/.canvas.md`.
|
|
8
|
+
|
|
9
|
+
> **Sem API keys.** Você (Cursor) usa o plano da IDE em que o usuário já está
|
|
10
|
+
> logado. O CLI apenas coordena estado, monta prompts e atualiza canvas.
|
|
11
|
+
|
|
12
|
+
## Pré-requisitos
|
|
13
|
+
|
|
14
|
+
- `DARE/dare-dag.yaml` existe e foi aprovado pelo usuário
|
|
15
|
+
- Specs em `DARE/EXECUTION/task-<id>.md` geradas
|
|
16
|
+
- `dare` disponível no PATH (`npm i -g @dewtech/dare-cli`)
|
|
17
|
+
|
|
18
|
+
## Instruções para o Cursor Composer
|
|
19
|
+
|
|
20
|
+
### 1. Validar pré-condições
|
|
21
|
+
|
|
22
|
+
- Confirme que `DARE/dare-dag.yaml` existe. Se não, oriente o usuário a rodar
|
|
23
|
+
`/generate-tasks` primeiro
|
|
24
|
+
- Leia o YAML e verifique:
|
|
25
|
+
- Sem ciclos
|
|
26
|
+
- Pelo menos 2 tasks no rank 0 (paralelismo lógico)
|
|
27
|
+
- Cada task tem `id` único, `complexity`, `subtask_prompt`
|
|
28
|
+
|
|
29
|
+
### 2. Pegar próximas tasks
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
dare execute --next
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
O CLI imprime as tasks ready do rank atual com o prompt completo (já com
|
|
36
|
+
snippets dos outputs dos pais costurados). Use exatamente esses prompts.
|
|
37
|
+
|
|
38
|
+
### 3. Sugerir abrir o canvas
|
|
39
|
+
|
|
40
|
+
Antes de começar, peça ao usuário abrir `DARE/.canvas.md` em uma aba para
|
|
41
|
+
acompanhar o progresso ao vivo.
|
|
42
|
+
|
|
43
|
+
### 4. Executar cada task
|
|
44
|
+
|
|
45
|
+
Para cada task ready:
|
|
46
|
+
|
|
47
|
+
1. Leia `spec_file` se houver
|
|
48
|
+
2. Implemente conforme o prompt
|
|
49
|
+
3. Rode Ralph Loop: build → test → lint
|
|
50
|
+
4. Registre o resultado:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Sucesso
|
|
54
|
+
dare execute --complete task-001 --output "Resumo + arquivos criados/modificados (paths)"
|
|
55
|
+
|
|
56
|
+
# Falha
|
|
57
|
+
dare execute --fail task-002 --reason "Mensagem clara da falha"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 5. Avançar de rank
|
|
61
|
+
|
|
62
|
+
Após registrar todos os `--complete`/`--fail` do rank atual:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
dare execute --next
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Se aparece `✅ All tasks resolved`, todas as tasks terminaram. Caso contrário,
|
|
69
|
+
continue executando o próximo rank.
|
|
70
|
+
|
|
71
|
+
### 6. Pós-execução
|
|
72
|
+
|
|
73
|
+
Ao terminar:
|
|
74
|
+
|
|
75
|
+
- Rode `dare execute --status` para ver o sumário final
|
|
76
|
+
- Se houver FAILED: leia `DARE/EXECUTION/task-<id>.md` da que falhou,
|
|
77
|
+
corrija a spec ou o prompt, depois:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
dare execute --reset task-002 # volta para PENDING
|
|
81
|
+
dare execute --next # tente novamente
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Comandos disponíveis
|
|
85
|
+
|
|
86
|
+
| Comando | Função |
|
|
87
|
+
|---------|--------|
|
|
88
|
+
| `dare execute --next` | Imprime tasks ready do rank atual com prompts |
|
|
89
|
+
| `dare execute --complete <id> --output "…"` | Marca DONE |
|
|
90
|
+
| `dare execute --fail <id> --reason "…"` | Marca FAILED + cascade-skip |
|
|
91
|
+
| `dare execute --reset <id>` | Volta para PENDING (retry) |
|
|
92
|
+
| `dare execute --status` | Snapshot do canvas + sumário |
|
|
93
|
+
|
|
94
|
+
## Erros comuns
|
|
95
|
+
|
|
96
|
+
| Sintoma | Causa | Correção |
|
|
97
|
+
|---------|-------|----------|
|
|
98
|
+
| `dare-dag.yaml not found` | Não foi gerado | Rode `/generate-tasks` |
|
|
99
|
+
| Cascata de SKIPPED | Pai falhou | Corrija pai → `--reset` → `--next` |
|
|
100
|
+
| Output truncado em 4000 chars | Cap normal | Faça a task escrever em arquivo, retorne resumo |
|
|
101
|
+
| Tudo no rank 0 disputa o mesmo arquivo | Ausência de deps reais | Edite `dare-dag.yaml` adicionando `depends_on` |
|
|
102
|
+
|
|
103
|
+
## Referências
|
|
104
|
+
|
|
105
|
+
- Skill: `.cursor/rules/skill-dag-runner.mdc`
|
|
106
|
+
- Schema: `DARE/dare-dag.yaml`
|
|
107
|
+
- Canvas: `DARE/.canvas.md`
|
|
108
|
+
- Specs: `DARE/EXECUTION/task-*.md`
|
|
109
|
+
|
|
110
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Agent Experience (AX) — codifica padrões para desenvolvimento assistido por IA em três planos (Discovery, Usage, Defense). Garante que todo projeto DARE exponha sinais estruturados (llms.txt, OpenAPI, --json, rate limit) que agentes de código precisam.
|
|
3
|
+
globs: llms.txt,openapi.json,public/openapi.json,README.md,.env.example,DARE/DESIGN.md
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: Agent Experience (AX) DARE
|
|
8
|
+
|
|
9
|
+
Você é um especialista em integração entre projetos e agentes de código (Claude Code, Cursor, Antigravity, MCP servers). Esta skill define o **padrão AX DARE** que todo projeto novo deve seguir e contra o qual todo projeto existente deve ser auditado.
|
|
10
|
+
|
|
11
|
+
## Por que AX é design-first
|
|
12
|
+
|
|
13
|
+
Projetos podem ter código correto e arquitetura limpa mas **carecer de sinais estruturados** para agentes:
|
|
14
|
+
- Sem `llms.txt`, o agente precisa adivinhar a estrutura
|
|
15
|
+
- Sem OpenAPI, o agente faz parsing regex de docs HTML
|
|
16
|
+
- Sem `--json` no CLI, o agente lida com tabelas ASCII coloridas
|
|
17
|
+
- Sem rate limit, um prompt mal feito vira DDoS
|
|
18
|
+
|
|
19
|
+
A skill `dare-ax` codifica três planos:
|
|
20
|
+
|
|
21
|
+
| Plano | Pergunta que responde |
|
|
22
|
+
|---|---|
|
|
23
|
+
| **Discovery** | "Como o agente acha o que precisa?" |
|
|
24
|
+
| **Usage** | "Como o agente opera sem refactor desnecessário?" |
|
|
25
|
+
| **Defense** | "Como o projeto resiste a prompts ruins?" |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Plano 1 — Discovery
|
|
30
|
+
|
|
31
|
+
### `llms.txt` na raiz (obrigatório)
|
|
32
|
+
|
|
33
|
+
Arquivo público com a "ficha técnica" do projeto. Formato livre mas seções fixas:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
# <nome-do-projeto>
|
|
37
|
+
|
|
38
|
+
> <descrição em 1-2 frases — o que é, qual problema resolve>
|
|
39
|
+
|
|
40
|
+
## Stack
|
|
41
|
+
- <linguagem + framework>
|
|
42
|
+
- <banco>
|
|
43
|
+
- <cache, fila, etc.>
|
|
44
|
+
|
|
45
|
+
## Bootstrap
|
|
46
|
+
- `make setup` — instala deps + sobe Postgres/Redis local
|
|
47
|
+
- `make dev` — sobe aplicação
|
|
48
|
+
- `make test` — roda suite
|
|
49
|
+
|
|
50
|
+
## Endpoints
|
|
51
|
+
- `GET /healthz` — liveness
|
|
52
|
+
- `GET /openapi.json` — spec completa
|
|
53
|
+
- `POST /api/login` — autenticação
|
|
54
|
+
...
|
|
55
|
+
|
|
56
|
+
## CLI (se aplicável)
|
|
57
|
+
- `<bin> users create --email <e> --json`
|
|
58
|
+
- `<bin> migrate run --json`
|
|
59
|
+
|
|
60
|
+
## Docs internas
|
|
61
|
+
- DARE/DESIGN.md — requisitos
|
|
62
|
+
- DARE/BLUEPRINT.md — arquitetura
|
|
63
|
+
- docs/RUNBOOK.md — operações
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Critério objetivo:** o arquivo deve ser navegável em < 2 minutos por um agente.
|
|
67
|
+
|
|
68
|
+
### Estrutura previsível
|
|
69
|
+
|
|
70
|
+
| Pasta | Conteúdo |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `src/` ou `crates/<projeto>-*/` | código de produção |
|
|
73
|
+
| `tests/` | testes (mirror de `src/` quando possível) |
|
|
74
|
+
| `docs/` | documentação humana extensa |
|
|
75
|
+
| `DARE/` | DESIGN.md, BLUEPRINT.md, EXECUTION/, dare-dag.yaml |
|
|
76
|
+
| `infra/` ou `deploy/` | Dockerfile, compose, k8s manifests |
|
|
77
|
+
|
|
78
|
+
Nomes esotéricos (`thing/`, `stuff/`, `misc/`) — proibidos.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Plano 2 — Usage
|
|
83
|
+
|
|
84
|
+
### `openapi.json` (HTTP)
|
|
85
|
+
|
|
86
|
+
Toda API HTTP deve expor spec OpenAPI 3.x em `/openapi.json` ou `public/openapi.json`.
|
|
87
|
+
|
|
88
|
+
| Stack | Como gerar |
|
|
89
|
+
|---|---|
|
|
90
|
+
| FastAPI | Automático (Pydantic models) |
|
|
91
|
+
| NestJS | `@nestjs/swagger` decorators |
|
|
92
|
+
| Laravel | `darkaonline/l5-swagger` |
|
|
93
|
+
| Rails | `grape-swagger` ou `rswag` |
|
|
94
|
+
| Rust/Axum | `utoipa` + `utoipa-swagger-ui` |
|
|
95
|
+
| Go/Gin | `swaggo/swag` |
|
|
96
|
+
|
|
97
|
+
**Antipattern:** escrever OpenAPI à mão em YAML — desatualiza no primeiro PR.
|
|
98
|
+
|
|
99
|
+
### CLI com `--json`
|
|
100
|
+
|
|
101
|
+
Todo comando de CLI exposto a humanos deve ter alternativa machine-readable:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Para humanos
|
|
105
|
+
$ dare metrics
|
|
106
|
+
┌──────┬──────────┐
|
|
107
|
+
│ ID │ Status │
|
|
108
|
+
├──────┼──────────┤
|
|
109
|
+
│ M-01 │ PASS │
|
|
110
|
+
└──────┴──────────┘
|
|
111
|
+
|
|
112
|
+
# Para agentes
|
|
113
|
+
$ dare metrics --json
|
|
114
|
+
{"metrics":[{"id":"M-01","status":"PASS","value":1.0}]}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Regras:
|
|
118
|
+
- JSON puro em stdout, sem cores ANSI, sem prompt
|
|
119
|
+
- Exit code 0 em sucesso, ≠ 0 em erro
|
|
120
|
+
- Schema documentado em `llms.txt`
|
|
121
|
+
|
|
122
|
+
### `.env.example` versionado
|
|
123
|
+
|
|
124
|
+
Sempre commitado, com **chaves e tipos**, sem valores reais:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
DATABASE_URL=postgres://user:password@localhost:5432/dbname
|
|
128
|
+
REDIS_URL=redis://localhost:6379/0
|
|
129
|
+
JWT_SECRET=replace-with-256-bit-random-string
|
|
130
|
+
STRIPE_SECRET_KEY=sk_test_xxx
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
`.env` real fica no `.gitignore`.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Plano 3 — Defense
|
|
138
|
+
|
|
139
|
+
### Rate limit
|
|
140
|
+
|
|
141
|
+
Endpoint público sem rate limit = vulnerável. Use o middleware da stack:
|
|
142
|
+
|
|
143
|
+
| Stack | Middleware típico |
|
|
144
|
+
|---|---|
|
|
145
|
+
| Rails | `rack-attack` |
|
|
146
|
+
| Node/Express | `express-rate-limit` |
|
|
147
|
+
| NestJS | `@nestjs/throttler` |
|
|
148
|
+
| FastAPI | `slowapi` |
|
|
149
|
+
| Rust/Axum | `tower-governor` |
|
|
150
|
+
| Go/Gin | `gin-contrib/limit` ou middleware custom |
|
|
151
|
+
| Laravel | `ThrottleRequests` middleware (nativo) |
|
|
152
|
+
|
|
153
|
+
**Padrão recomendado:**
|
|
154
|
+
- Login: 5 req / 15 min por IP + por usuário
|
|
155
|
+
- API autenticada geral: 100 req / min por usuário
|
|
156
|
+
- API pública: 30 req / min por IP
|
|
157
|
+
|
|
158
|
+
### Validação de input
|
|
159
|
+
|
|
160
|
+
Sempre no servidor, mesmo que o frontend valide:
|
|
161
|
+
|
|
162
|
+
| Stack | Tooling |
|
|
163
|
+
|---|---|
|
|
164
|
+
| Laravel | FormRequest classes |
|
|
165
|
+
| FastAPI | Pydantic models |
|
|
166
|
+
| Node | Zod, class-validator |
|
|
167
|
+
| Rust/Axum | `serde` + `validator` crate |
|
|
168
|
+
| Rails | strong params + ActiveModel validations |
|
|
169
|
+
| Go | `go-playground/validator` |
|
|
170
|
+
|
|
171
|
+
### Secrets só via env
|
|
172
|
+
|
|
173
|
+
Nada de `password = "..."` no código. Configure scanner no CI:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
pip install detect-secrets
|
|
177
|
+
detect-secrets scan > .secrets.baseline
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### `llms.txt` sem secrets
|
|
181
|
+
|
|
182
|
+
`llms.txt` é público — o scanner do CI deve bloquear commits onde apareçam:
|
|
183
|
+
- `api_key=`, `password=`, `DATABASE_URL=postgres://user:pwd@`
|
|
184
|
+
- `Bearer ...`, `Authorization: ...`
|
|
185
|
+
- Chaves PEM, AWS access keys, GCP service account JSON inline
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Métricas obrigatórias (CI)
|
|
190
|
+
|
|
191
|
+
| ID | Métrica | Comando de validação |
|
|
192
|
+
|---|---|---|
|
|
193
|
+
| M-01 | `llms.txt` existe e é válido (sem secrets, seções obrigatórias) | `dare ax validate --llms` |
|
|
194
|
+
| M-02 | `openapi.json` ou `public/openapi.json` existe | `test -f public/openapi.json \|\| test -f openapi.json` |
|
|
195
|
+
| M-03 | CLI suporta `--json` | `cli --help \| grep -- '--json'` |
|
|
196
|
+
| M-04 | Rate limit configurado | grep pelo middleware da stack |
|
|
197
|
+
|
|
198
|
+
Falha M-01 ou M-04 em produção = release bloqueado.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Antipatterns
|
|
203
|
+
|
|
204
|
+
| AP | Antipattern | Por que evitar |
|
|
205
|
+
|---|---|---|
|
|
206
|
+
| AP-01 | Docs fora do código | Divergem rapidamente |
|
|
207
|
+
| AP-02 | OpenAPI escrito à mão | Desatualiza no primeiro PR |
|
|
208
|
+
| AP-03 | CLI sem `--json` | Agentes fazem regex no output, frágil |
|
|
209
|
+
| AP-04 | Rate limit em dev, faltando em prod | Endpoint vira target de abuse |
|
|
210
|
+
| AP-05 | `llms.txt` com secrets | Credenciais em repositório público |
|
|
211
|
+
| AP-06 | CORS `*` em produção | Origem qualquer permitida |
|
|
212
|
+
| AP-07 | Validação só em API, esquecida em CLI | Agentes usam ambos |
|
|
213
|
+
| AP-08 | Configs opcionais sem default | Agentes precisam de defaults previsíveis |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Aplicação por fase DARE
|
|
218
|
+
|
|
219
|
+
### Design (`/generate-design`)
|
|
220
|
+
|
|
221
|
+
DESIGN.md deve ter seção **## Agent Experience (AX)** com:
|
|
222
|
+
- Como o projeto será descoberto por agentes
|
|
223
|
+
- Quais CLIs/endpoints expostos terão `--json`/OpenAPI
|
|
224
|
+
- Estratégia de rate limit para endpoints públicos
|
|
225
|
+
|
|
226
|
+
### Blueprint (`/generate-blueprint`)
|
|
227
|
+
|
|
228
|
+
BLUEPRINT.md deve listar:
|
|
229
|
+
- Geração automática de OpenAPI (qual tooling)
|
|
230
|
+
- Middleware de rate limit por endpoint
|
|
231
|
+
- Estratégia de logging estruturado (JSON)
|
|
232
|
+
|
|
233
|
+
### Tasks (`/generate-tasks`)
|
|
234
|
+
|
|
235
|
+
Crie tasks dedicadas:
|
|
236
|
+
- "Gerar `llms.txt`"
|
|
237
|
+
- "Expor OpenAPI em /openapi.json"
|
|
238
|
+
- "Adicionar `--json` ao CLI"
|
|
239
|
+
- "Configurar rate limit em endpoints públicos"
|
|
240
|
+
|
|
241
|
+
### Execute (`/execute-task`)
|
|
242
|
+
|
|
243
|
+
Em qualquer task que mexa em endpoint HTTP ou comando CLI, valide:
|
|
244
|
+
- OpenAPI atualizado?
|
|
245
|
+
- `--json` disponível?
|
|
246
|
+
- Rate limit aplicado?
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Checklist final
|
|
251
|
+
|
|
252
|
+
- [ ] `llms.txt` na raiz com seções obrigatórias
|
|
253
|
+
- [ ] OpenAPI 3.x gerado a partir do código
|
|
254
|
+
- [ ] Todos os CLIs aceitam `--json`
|
|
255
|
+
- [ ] Rate limit em todos os endpoints públicos
|
|
256
|
+
- [ ] `.env.example` versionado sem valores reais
|
|
257
|
+
- [ ] Scanner de secrets no CI
|
|
258
|
+
- [ ] Seção AX em DESIGN.md
|
|
259
|
+
- [ ] Métricas M-01 a M-04 verificáveis em CI
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
Skill licenciada MIT — parte do DARE Method v3.
|