@dewtech/dare-cli 2.16.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +196 -3
- 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.d.ts +2 -0
- package/dist/__tests__/refine.test.d.ts.map +1 -0
- package/dist/__tests__/refine.test.js +186 -0
- package/dist/__tests__/refine.test.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/__tests__/review.test.d.ts.map +1 -0
- package/dist/__tests__/review.test.js +242 -0
- package/dist/__tests__/review.test.js.map +1 -0
- package/dist/__tests__/update.test.d.ts +2 -0
- package/dist/__tests__/update.test.d.ts.map +1 -0
- package/dist/__tests__/update.test.js +150 -0
- package/dist/__tests__/update.test.js.map +1 -0
- package/dist/__tests__/validate.test.js +65 -65
- package/dist/bin/dare.js +38 -3
- package/dist/bin/dare.js.map +1 -1
- 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/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +76 -0
- package/dist/commands/execute.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 +103 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/refine.d.ts +16 -0
- package/dist/commands/refine.d.ts.map +1 -0
- package/dist/commands/refine.js +167 -0
- package/dist/commands/refine.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/review.d.ts +16 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +106 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +149 -0
- package/dist/commands/update.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/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/types/Refine.types.d.ts +96 -0
- package/dist/types/Refine.types.d.ts.map +1 -0
- package/dist/types/Refine.types.js +19 -0
- package/dist/types/Refine.types.js.map +1 -0
- package/dist/types/Review.types.d.ts +86 -0
- package/dist/types/Review.types.d.ts.map +1 -0
- package/dist/types/Review.types.js +15 -0
- package/dist/types/Review.types.js.map +1 -0
- package/dist/types/UpdateManifest.types.d.ts +91 -0
- package/dist/types/UpdateManifest.types.d.ts.map +1 -0
- package/dist/types/UpdateManifest.types.js +13 -0
- package/dist/types/UpdateManifest.types.js.map +1 -0
- package/dist/utils/ReviewRunner.d.ts +42 -0
- package/dist/utils/ReviewRunner.d.ts.map +1 -0
- package/dist/utils/ReviewRunner.js +175 -0
- package/dist/utils/ReviewRunner.js.map +1 -0
- package/dist/utils/UpdateApplier.d.ts +42 -0
- package/dist/utils/UpdateApplier.d.ts.map +1 -0
- package/dist/utils/UpdateApplier.js +207 -0
- package/dist/utils/UpdateApplier.js.map +1 -0
- package/dist/utils/UpdateDetector.d.ts +56 -0
- package/dist/utils/UpdateDetector.d.ts.map +1 -0
- package/dist/utils/UpdateDetector.js +164 -0
- package/dist/utils/UpdateDetector.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/complexity-analyzer.d.ts +60 -0
- package/dist/utils/complexity-analyzer.d.ts.map +1 -0
- package/dist/utils/complexity-analyzer.js +292 -0
- package/dist/utils/complexity-analyzer.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.map +1 -1
- package/dist/utils/project-generator.js +273 -254
- 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.js +371 -371
- package/dist/utils/static-analyzer.d.ts +29 -0
- package/dist/utils/static-analyzer.d.ts.map +1 -0
- package/dist/utils/static-analyzer.js +390 -0
- package/dist/utils/static-analyzer.js.map +1 -0
- package/dist/utils/version-compare.d.ts +27 -0
- package/dist/utils/version-compare.d.ts.map +1 -0
- package/dist/utils/version-compare.js +47 -0
- package/dist/utils/version-compare.js.map +1 -0
- package/package.json +8 -3
- package/templates/DARE-dag-example.yaml +280 -280
- package/templates/UPDATE-MANIFEST.json +48 -0
- 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-blueprint/SKILL.md +180 -36
- 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 -0
- package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
- package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -0
- 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 -224
- 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 -100
- package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -78
- package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
- package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -110
- 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 -0
- package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
- package/templates/ide/claude/.claude/commands/dare-review.md +113 -0
- 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 -100
- package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
- package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -41
- package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
- package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -142
- package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -0
- package/templates/ide/cursor/.cursor/commands/review-task.md +91 -0
- 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 -100
- package/templates/shared/docker-compose.yml +41 -41
- 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,100 +1,141 @@
|
|
|
1
|
-
# TASK [ID]: [Título da Task]
|
|
2
|
-
|
|
3
|
-
> **Complexidade:** LOW / MED / HIGH
|
|
4
|
-
> **Depends on:** [task-ids ou —]
|
|
5
|
-
> **Estimativa:** [X horas]
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 1. OBJETIVO
|
|
10
|
-
|
|
11
|
-
[Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.]
|
|
12
|
-
|
|
13
|
-
Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 2. CONTEXTO
|
|
18
|
-
|
|
19
|
-
- **Fase no BLUEPRINT:** Fase [N] — [Nome da fase]
|
|
20
|
-
- **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados]
|
|
21
|
-
- **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica]
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 3. ARQUIVOS A CRIAR / MODIFICAR
|
|
26
|
-
|
|
27
|
-
| Ação | Caminho | Descrição |
|
|
28
|
-
|------|---------|-----------|
|
|
29
|
-
| CRIAR | `src/[módulo]/[arquivo]` | [o que contém] |
|
|
30
|
-
| MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] |
|
|
31
|
-
| CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature |
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 4. IMPLEMENTAÇÃO
|
|
36
|
-
|
|
37
|
-
### Passo 1: [Nome do passo]
|
|
38
|
-
[Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.]
|
|
39
|
-
|
|
40
|
-
```[lang]
|
|
41
|
-
// Exemplo de padrão esperado
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### Passo 2: [Nome do passo]
|
|
45
|
-
[Descrição]
|
|
46
|
-
|
|
47
|
-
### Passo 3: Testes
|
|
48
|
-
- [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`)
|
|
49
|
-
- [ ] Teste de erro de validação (400 / erro de negócio)
|
|
50
|
-
- [ ] Teste de autorização (401 / 403 quando aplicável)
|
|
51
|
-
- [ ] Teste de edge case: [descrever]
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## 5. CONSIDERAÇÕES DE SEGURANÇA
|
|
56
|
-
|
|
57
|
-
- [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento
|
|
58
|
-
- [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota
|
|
59
|
-
- [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção
|
|
60
|
-
- [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries
|
|
61
|
-
- [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar
|
|
62
|
-
- [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 6. VALIDATION GATES (RALPH LOOP)
|
|
67
|
-
|
|
68
|
-
Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute.
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
# 1. Build — sem erros de compilação
|
|
72
|
-
[comando de build da stack]
|
|
73
|
-
|
|
74
|
-
# 2. Tests — todos passando, incluindo os novos
|
|
75
|
-
[comando de test]
|
|
76
|
-
|
|
77
|
-
# 3. Lint — sem warnings
|
|
78
|
-
[comando de lint]
|
|
79
|
-
|
|
80
|
-
# 4. Auditoria de dependências (se novas deps foram adicionadas nesta task)
|
|
81
|
-
[npm audit --audit-level=high | cargo audit | pip-audit | composer audit]
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
> **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## 7.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
1
|
+
# TASK [ID]: [Título da Task]
|
|
2
|
+
|
|
3
|
+
> **Complexidade:** LOW / MED / HIGH
|
|
4
|
+
> **Depends on:** [task-ids ou —]
|
|
5
|
+
> **Estimativa:** [X horas]
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. OBJETIVO
|
|
10
|
+
|
|
11
|
+
[Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.]
|
|
12
|
+
|
|
13
|
+
Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 2. CONTEXTO
|
|
18
|
+
|
|
19
|
+
- **Fase no BLUEPRINT:** Fase [N] — [Nome da fase]
|
|
20
|
+
- **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados]
|
|
21
|
+
- **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica]
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 3. ARQUIVOS A CRIAR / MODIFICAR
|
|
26
|
+
|
|
27
|
+
| Ação | Caminho | Descrição |
|
|
28
|
+
|------|---------|-----------|
|
|
29
|
+
| CRIAR | `src/[módulo]/[arquivo]` | [o que contém] |
|
|
30
|
+
| MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] |
|
|
31
|
+
| CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 4. IMPLEMENTAÇÃO
|
|
36
|
+
|
|
37
|
+
### Passo 1: [Nome do passo]
|
|
38
|
+
[Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.]
|
|
39
|
+
|
|
40
|
+
```[lang]
|
|
41
|
+
// Exemplo de padrão esperado
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Passo 2: [Nome do passo]
|
|
45
|
+
[Descrição]
|
|
46
|
+
|
|
47
|
+
### Passo 3: Testes
|
|
48
|
+
- [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`)
|
|
49
|
+
- [ ] Teste de erro de validação (400 / erro de negócio)
|
|
50
|
+
- [ ] Teste de autorização (401 / 403 quando aplicável)
|
|
51
|
+
- [ ] Teste de edge case: [descrever]
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 5. CONSIDERAÇÕES DE SEGURANÇA
|
|
56
|
+
|
|
57
|
+
- [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento
|
|
58
|
+
- [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota
|
|
59
|
+
- [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção
|
|
60
|
+
- [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries
|
|
61
|
+
- [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar
|
|
62
|
+
- [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 6. VALIDATION GATES (RALPH LOOP)
|
|
67
|
+
|
|
68
|
+
Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# 1. Build — sem erros de compilação
|
|
72
|
+
[comando de build da stack]
|
|
73
|
+
|
|
74
|
+
# 2. Tests — todos passando, incluindo os novos
|
|
75
|
+
[comando de test]
|
|
76
|
+
|
|
77
|
+
# 3. Lint — sem warnings
|
|
78
|
+
[comando de lint]
|
|
79
|
+
|
|
80
|
+
# 4. Auditoria de dependências (se novas deps foram adicionadas nesta task)
|
|
81
|
+
[npm audit --audit-level=high | cargo audit | pip-audit | composer audit]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 7. PADRÕES PROIBIDOS (ANTI-STUB / ANTI-MOCK)
|
|
89
|
+
|
|
90
|
+
> Esta seção é **inegociável**. O comando `dare review` (v2.17+) escaneia o código modificado por esta task e reprova se encontrar qualquer padrão abaixo.
|
|
91
|
+
|
|
92
|
+
### Em código de produção (qualquer arquivo **fora** de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
|
|
93
|
+
|
|
94
|
+
- ❌ **TODO / FIXME / XXX / HACK** — qualquer um desses marcadores em comentário
|
|
95
|
+
- ❌ **Função vazia** — `fn x() {}`, `function x() {}`, `def x(): pass`, `def x(): ...`
|
|
96
|
+
- ❌ **Stub explícito** — `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `raise NotImplementedError`
|
|
97
|
+
- ❌ **Retorno-fantasma** — `return null` / `return undefined` / `return {}` / `return []` como **única** statement de função pública declarada nesta task
|
|
98
|
+
- ❌ **Mocks fora de testes** — `jest.fn()`, `sinon.stub()`, `mockReturnValue`, dados hardcoded fingindo ser do banco, fixtures injetadas em controllers/services
|
|
99
|
+
- ❌ **Comentário de placeholder** — `// implement later`, `# placeholder`, `// stub`, `// FIXME implement`
|
|
100
|
+
|
|
101
|
+
### Mocks são permitidos APENAS em
|
|
102
|
+
|
|
103
|
+
- Arquivos de teste (`*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
|
|
104
|
+
- Seeds / fixtures dentro de `database/seeders/`, `tests/fixtures/`
|
|
105
|
+
- Helpers explicitamente marcados como auxiliares de teste
|
|
106
|
+
|
|
107
|
+
### Verificação automática
|
|
108
|
+
|
|
109
|
+
Antes de marcar a task como DONE, rode:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
dare review <task-id>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Output esperado:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
✅ task-XYZ: nenhum padrão proibido detectado em N arquivos modificados.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Se a review falhar, a task **não pode** ir para DONE — corrija os achados e re-rode.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 8. CRITÉRIOS DE DONE
|
|
126
|
+
|
|
127
|
+
- [ ] Todos os 4 validation gates passaram sem erros (build + test + lint + audit)
|
|
128
|
+
- [ ] Testes cobrem caminho feliz + erros enumerados + edge cases da seção 4
|
|
129
|
+
- [ ] Considerações de segurança da seção 5 todas checadas
|
|
130
|
+
- [ ] Arquivos listados na seção 3 criados/modificados conforme spec
|
|
131
|
+
- [ ] **`dare review <task-id>` passou** (seção 7 — sem stubs, mocks, TODOs)
|
|
132
|
+
- [ ] Cada validação declarada na spec tem teste demonstrando o erro real (não placeholder)
|
|
133
|
+
- [ ] Cada edge case enumerado tem teste cobrindo
|
|
134
|
+
- [ ] Endpoints retornam dados reais do banco/service, não hardcoded
|
|
135
|
+
- [ ] `DARE/TASKS.md` atualizado com status `DONE`
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 9. PRÓXIMA TASK SUGERIDA
|
|
140
|
+
|
|
141
|
+
`[task-id]` — [título] _(desbloqueada após conclusão desta task)_
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# /dare-ax
|
|
2
|
+
|
|
3
|
+
Audita ou bootstrapa um projeto DARE com foco em **Agent Experience (AX)** — os sinais estruturados que agentes de código (Claude Code, Cursor, Antigravity) precisam para trabalhar sem refactor desnecessário.
|
|
4
|
+
|
|
5
|
+
## Como usar
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/dare-ax # audita projeto atual
|
|
9
|
+
/dare-ax init # cria llms.txt + .env.example + ajustes mínimos
|
|
10
|
+
/dare-ax openapi # valida ou gera openapi.json
|
|
11
|
+
/dare-ax cli # adiciona --json em comandos CLI faltantes
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Os três planos AX
|
|
15
|
+
|
|
16
|
+
### 1. Discovery — agente acha o que precisa
|
|
17
|
+
|
|
18
|
+
- `llms.txt` na raiz com descrição, comandos, endpoints
|
|
19
|
+
- `README.md` com bootstrap em 5 minutos
|
|
20
|
+
- Estrutura de pastas previsível (`src/`, `tests/`, `docs/`, `DARE/`)
|
|
21
|
+
|
|
22
|
+
### 2. Usage — agente consegue operar
|
|
23
|
+
|
|
24
|
+
- `openapi.json` em `/openapi.json` (HTTP)
|
|
25
|
+
- Flag `--json` em todos os CLIs
|
|
26
|
+
- `Dockerfile` + `docker-compose.yml` validados
|
|
27
|
+
- `.env.example` versionado
|
|
28
|
+
|
|
29
|
+
### 3. Defense — agente não quebra produção
|
|
30
|
+
|
|
31
|
+
- Rate limit (rack-attack, express-rate-limit, tower-governor, slowapi)
|
|
32
|
+
- Validação de input (FormRequests, Pydantic, Zod, serde+validator)
|
|
33
|
+
- Secrets só via env
|
|
34
|
+
- `llms.txt` sem credenciais (scan no CI)
|
|
35
|
+
|
|
36
|
+
## Métricas obrigatórias
|
|
37
|
+
|
|
38
|
+
| ID | Métrica | Como verificar |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| M-01 | `llms.txt` existe e é válido (sem secrets, seções obrigatórias) | grep + parse |
|
|
41
|
+
| M-02 | `openapi.json` ou `public/openapi.json` existe | `test -f` |
|
|
42
|
+
| M-03 | CLI suporta `--json` | `cli --help \| grep '\-\-json'` |
|
|
43
|
+
| M-04 | Rate limit configurado | grep pelo middleware da stack |
|
|
44
|
+
|
|
45
|
+
Falha em CI se M-01 ou M-04 falharem em produção.
|
|
46
|
+
|
|
47
|
+
## O que fazer
|
|
48
|
+
|
|
49
|
+
### Passo 1: Auditar o projeto
|
|
50
|
+
|
|
51
|
+
Confira na ordem:
|
|
52
|
+
1. Existe `llms.txt`? Está atualizado?
|
|
53
|
+
2. Existe `openapi.json` se o projeto expõe HTTP?
|
|
54
|
+
3. Todos os CLIs aceitam `--json`?
|
|
55
|
+
4. Existe rate limit em endpoints autenticados públicos?
|
|
56
|
+
5. `.env.example` está versionado sem valores reais?
|
|
57
|
+
|
|
58
|
+
### Passo 2: Gerar `llms.txt` se faltar
|
|
59
|
+
|
|
60
|
+
Use este template — preencha apenas com comandos e endpoints que **existem de verdade**:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
# <nome-do-projeto>
|
|
64
|
+
|
|
65
|
+
> <descrição em 1-2 frases>
|
|
66
|
+
|
|
67
|
+
## Stack
|
|
68
|
+
- <linguagem + framework>
|
|
69
|
+
- <banco>
|
|
70
|
+
- <cache/fila>
|
|
71
|
+
|
|
72
|
+
## Bootstrap
|
|
73
|
+
- `make setup`
|
|
74
|
+
- `make dev`
|
|
75
|
+
- `make test`
|
|
76
|
+
|
|
77
|
+
## Endpoints
|
|
78
|
+
- `GET /healthz`
|
|
79
|
+
- `GET /openapi.json`
|
|
80
|
+
- `POST /api/login`
|
|
81
|
+
|
|
82
|
+
## Docs
|
|
83
|
+
- DARE/DESIGN.md
|
|
84
|
+
- DARE/BLUEPRINT.md
|
|
85
|
+
- docs/RUNBOOK.md
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Passo 3: Validar / gerar OpenAPI
|
|
89
|
+
|
|
90
|
+
- **Node/NestJS** — `@nestjs/swagger`
|
|
91
|
+
- **FastAPI** — automático em `/openapi.json`
|
|
92
|
+
- **Rails** — `grape-swagger` ou `rswag`
|
|
93
|
+
- **Rust/Axum** — `utoipa` + `utoipa-swagger-ui`
|
|
94
|
+
- **Laravel** — `darkaonline/l5-swagger`
|
|
95
|
+
|
|
96
|
+
### Passo 4: Adicionar `--json` no CLI
|
|
97
|
+
|
|
98
|
+
Para cada comando:
|
|
99
|
+
- Imprime JSON puro em stdout (sem cores ANSI, sem prompt)
|
|
100
|
+
- Exit code 0 em sucesso, ≠ 0 em erro
|
|
101
|
+
- Schema documentado no `llms.txt`
|
|
102
|
+
|
|
103
|
+
### Passo 5: Configurar rate limit
|
|
104
|
+
|
|
105
|
+
Adicione middleware específico da stack para todos os endpoints públicos. Padrão recomendado:
|
|
106
|
+
- Login: 5 req / 15 min por IP + por usuário
|
|
107
|
+
- API geral: 100 req / min por usuário autenticado
|
|
108
|
+
|
|
109
|
+
## Antipatterns a evitar
|
|
110
|
+
|
|
111
|
+
| AP | Por que evitar |
|
|
112
|
+
|---|---|
|
|
113
|
+
| Docs fora do código | Divergem |
|
|
114
|
+
| OpenAPI à mão | Desatualiza |
|
|
115
|
+
| CLI sem `--json` | Parsing regex frágil |
|
|
116
|
+
| Rate limit só em dev | Produção vira target |
|
|
117
|
+
| `llms.txt` com secrets | Credencial exposta |
|
|
118
|
+
| CORS `*` em prod | Origem qualquer |
|
|
119
|
+
|
|
120
|
+
## Saída esperada
|
|
121
|
+
|
|
122
|
+
Reporte numerado dos 4 checks (M-01 a M-04). Para cada falha, mostre:
|
|
123
|
+
- O que falta
|
|
124
|
+
- Como corrigir (com comando concreto da stack)
|
|
125
|
+
- Quem deve aprovar antes do CI travar release
|
|
126
|
+
|
|
127
|
+
$ARGUMENTS
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
Skill MIT — parte do DARE Method.
|
|
@@ -1,78 +1,134 @@
|
|
|
1
|
-
# /dare-blueprint
|
|
2
|
-
|
|
3
|
-
Gera **somente** `DARE/BLUEPRINT.md` a partir do `DARE/DESIGN.md`.
|
|
4
|
-
|
|
5
|
-
> Tasks, DAG e specs de execução são geradas depois com `/dare-tasks`, após aprovação humana do Blueprint.
|
|
6
|
-
|
|
7
|
-
## Como usar
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
/dare-blueprint
|
|
11
|
-
/dare-blueprint --stack node-nestjs+react
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## O que fazer
|
|
15
|
-
|
|
16
|
-
### 1. Ler `DARE/DESIGN.md`
|
|
17
|
-
|
|
18
|
-
Obrigatório. Se não existir, peça para rodar `/dare-design` primeiro.
|
|
19
|
-
|
|
20
|
-
Extraia e use durante todo o comando:
|
|
21
|
-
- Stack técnica (linguagem, framework, versões)
|
|
22
|
-
- Requisitos funcionais priorizados (RF-*)
|
|
23
|
-
- Requisitos de segurança (RS-*)
|
|
24
|
-
- Integrações externas confirmadas
|
|
25
|
-
- Restrições e escopo
|
|
26
|
-
|
|
27
|
-
### 2. Gerar `DARE/BLUEPRINT.md`
|
|
28
|
-
|
|
29
|
-
Siga o template `templates/BLUEPRINT-template.md`. Seções obrigatórias:
|
|
30
|
-
|
|
31
|
-
**2.1 Visão Geral da Arquitetura**
|
|
32
|
-
- Diagrama Mermaid da arquitetura
|
|
33
|
-
- Tabela de decisões arquiteturais com justificativa (não apenas "escolha X")
|
|
34
|
-
|
|
35
|
-
**2.2 Stack Técnica Definida** — versões fixas, não ranges
|
|
36
|
-
|
|
37
|
-
**2.3 Estrutura de Pastas** — árvore completa dos arquivos que serão criados
|
|
38
|
-
|
|
39
|
-
**2.4 Modelo de Dados** — entidades, campos tipados, relacionamentos, índices necessários
|
|
40
|
-
|
|
41
|
-
**2.5 Contratos de API** — tabela completa: método, rota, auth, request body, response, status codes
|
|
42
|
-
|
|
43
|
-
**2.6 Plano de Execução (Fases)** — cada fase com:
|
|
44
|
-
- Nome e objetivo
|
|
45
|
-
- **Critério de DONE** — comportamento verificável e testável (não "código feito")
|
|
46
|
-
- Lista de entregáveis concretos
|
|
47
|
-
|
|
48
|
-
> **Fase 1 é sempre containerização** (Dockerfile + docker-compose + healthcheck)
|
|
49
|
-
> **Fase N-1 é sempre auditoria de segurança e dependências**
|
|
50
|
-
|
|
51
|
-
**2.7 Validation Gates por Stack**
|
|
52
|
-
|
|
53
|
-
| Stack | Build | Test | Lint/Audit |
|
|
54
|
-
|-------|-------|------|------------|
|
|
55
|
-
| Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
|
|
56
|
-
| Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
|
|
57
|
-
| Python/FastAPI | verificar imports | `pytest` | `ruff check . && pip-audit` |
|
|
58
|
-
| PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
|
|
59
|
-
| Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
|
|
60
|
-
|
|
61
|
-
**2.8 Controles de Segurança** — checklist com todos os RS-* do DESIGN mapeados para fases específicas
|
|
62
|
-
|
|
63
|
-
**2.9 Estratégia de Testes** — unitários + integração + segurança (auditoria de deps) + E2E se frontend
|
|
64
|
-
|
|
65
|
-
**2.10 Estratégia de Deploy** — por ambiente com branch, trigger e infra
|
|
66
|
-
|
|
67
|
-
**2.11 Checklist de Aprovação** — checkboxes para o usuário revisar antes de prosseguir
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
1
|
+
# /dare-blueprint
|
|
2
|
+
|
|
3
|
+
Gera **somente** `DARE/BLUEPRINT.md` a partir do `DARE/DESIGN.md`.
|
|
4
|
+
|
|
5
|
+
> Tasks, DAG e specs de execução são geradas depois com `/dare-tasks`, após aprovação humana do Blueprint.
|
|
6
|
+
|
|
7
|
+
## Como usar
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
/dare-blueprint
|
|
11
|
+
/dare-blueprint --stack node-nestjs+react
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## O que fazer
|
|
15
|
+
|
|
16
|
+
### 1. Ler `DARE/DESIGN.md`
|
|
17
|
+
|
|
18
|
+
Obrigatório. Se não existir, peça para rodar `/dare-design` primeiro.
|
|
19
|
+
|
|
20
|
+
Extraia e use durante todo o comando:
|
|
21
|
+
- Stack técnica (linguagem, framework, versões)
|
|
22
|
+
- Requisitos funcionais priorizados (RF-*)
|
|
23
|
+
- Requisitos de segurança (RS-*)
|
|
24
|
+
- Integrações externas confirmadas
|
|
25
|
+
- Restrições e escopo
|
|
26
|
+
|
|
27
|
+
### 2. Gerar `DARE/BLUEPRINT.md`
|
|
28
|
+
|
|
29
|
+
Siga o template `templates/BLUEPRINT-template.md`. Seções obrigatórias:
|
|
30
|
+
|
|
31
|
+
**2.1 Visão Geral da Arquitetura**
|
|
32
|
+
- Diagrama Mermaid da arquitetura
|
|
33
|
+
- Tabela de decisões arquiteturais com justificativa (não apenas "escolha X")
|
|
34
|
+
|
|
35
|
+
**2.2 Stack Técnica Definida** — versões fixas, não ranges
|
|
36
|
+
|
|
37
|
+
**2.3 Estrutura de Pastas** — árvore completa dos arquivos que serão criados
|
|
38
|
+
|
|
39
|
+
**2.4 Modelo de Dados** — entidades, campos tipados, relacionamentos, índices necessários
|
|
40
|
+
|
|
41
|
+
**2.5 Contratos de API** — tabela completa: método, rota, auth, request body, response, status codes
|
|
42
|
+
|
|
43
|
+
**2.6 Plano de Execução (Fases)** — cada fase com:
|
|
44
|
+
- Nome e objetivo
|
|
45
|
+
- **Critério de DONE** — comportamento verificável e testável (não "código feito")
|
|
46
|
+
- Lista de entregáveis concretos
|
|
47
|
+
|
|
48
|
+
> **Fase 1 é sempre containerização** (Dockerfile + docker-compose + healthcheck)
|
|
49
|
+
> **Fase N-1 é sempre auditoria de segurança e dependências**
|
|
50
|
+
|
|
51
|
+
**2.7 Validation Gates por Stack**
|
|
52
|
+
|
|
53
|
+
| Stack | Build | Test | Lint/Audit |
|
|
54
|
+
|-------|-------|------|------------|
|
|
55
|
+
| Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
|
|
56
|
+
| Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
|
|
57
|
+
| Python/FastAPI | verificar imports | `pytest` | `ruff check . && pip-audit` |
|
|
58
|
+
| PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
|
|
59
|
+
| Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
|
|
60
|
+
|
|
61
|
+
**2.8 Controles de Segurança** — checklist com todos os RS-* do DESIGN mapeados para fases específicas
|
|
62
|
+
|
|
63
|
+
**2.9 Estratégia de Testes** — unitários + integração + segurança (auditoria de deps) + E2E se frontend
|
|
64
|
+
|
|
65
|
+
**2.10 Estratégia de Deploy** — por ambiente com branch, trigger e infra
|
|
66
|
+
|
|
67
|
+
**2.11 Checklist de Aprovação** — checkboxes para o usuário revisar antes de prosseguir
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 🚫 ANTI-STUB CONTRACT (regra inegociável)
|
|
72
|
+
|
|
73
|
+
> **Por que existe esta seção:** o `/dare-tasks` que vem depois usa este Blueprint como **única fonte de verdade**. Se um endpoint, função ou regra ficar genérico aqui, o agente que implementar a task **será forçado a inventar** — e vai produzir mocks, stubs e esqueletos para "preencher o vazio". Detalhe agora.
|
|
74
|
+
>
|
|
75
|
+
> Tasks que produzem mock/stub/skeleton **falham** no `dare review` (introduzido na v2.17) e bloqueiam o `dare execute --complete`.
|
|
76
|
+
|
|
77
|
+
Para **cada** endpoint, função pública, evento ou job declarado no Blueprint, especifique de forma **executável**:
|
|
78
|
+
|
|
79
|
+
### Para endpoints HTTP/RPC
|
|
80
|
+
|
|
81
|
+
- **Assinatura completa:** método, path, headers obrigatórios, content-type
|
|
82
|
+
- **Request schema:** todos os campos com tipo, restrições (min/max/regex), opcionalidade
|
|
83
|
+
- **Response schema por status code:** estrutura para 2xx, 4xx, 5xx — não apenas "200 OK"
|
|
84
|
+
- **Validações server-side:** lista exaustiva de regras (`email único`, `senha ≥ 8 chars + 1 maiúscula + 1 dígito`, etc.)
|
|
85
|
+
- **Edge cases enumerados:** o que acontece com input vazio, duplicado, expirado, sem permissão, com dados inconsistentes
|
|
86
|
+
- **Side effects:** que tabelas/filas/caches/emails são tocados — em ordem
|
|
87
|
+
- **Exemplo concreto (não placeholder):** payload real, response real
|
|
88
|
+
|
|
89
|
+
### Para funções de domínio / services
|
|
90
|
+
|
|
91
|
+
- **Assinatura tipada** (`fn name(args: Types) -> ReturnType` ou equivalente)
|
|
92
|
+
- **Pré-condições** verificáveis (estado obrigatório do banco/cache/etc.)
|
|
93
|
+
- **Pós-condições** verificáveis (o que muda no sistema após retornar OK)
|
|
94
|
+
- **Estados de erro** com tipo de exceção/Result/Either esperado
|
|
95
|
+
- **Comportamento em concorrência** quando relevante (idempotência, locking, retry)
|
|
96
|
+
|
|
97
|
+
### Para jobs / event handlers / workers
|
|
98
|
+
|
|
99
|
+
- **Trigger:** evento, cron, fila — incluir o **nome canônico**
|
|
100
|
+
- **Payload schema** com tipos
|
|
101
|
+
- **Retry policy** (backoff, max attempts, DLQ)
|
|
102
|
+
- **Idempotência:** chave + estratégia
|
|
103
|
+
- **SLA / timeout**
|
|
104
|
+
|
|
105
|
+
### Para modelos de dados
|
|
106
|
+
|
|
107
|
+
- Cada campo: tipo, nullable, default, constraints (unique, fk, check), índices
|
|
108
|
+
- Triggers ou hooks (soft-delete, audit, encryption-at-rest)
|
|
109
|
+
- Estado inicial / seed obrigatório (se aplicável)
|
|
110
|
+
|
|
111
|
+
### Critério de "Blueprint detalhado o suficiente"
|
|
112
|
+
|
|
113
|
+
Antes de salvar, valide internamente — se a resposta a **qualquer** pergunta abaixo for "não", o Blueprint ainda está raso e precisa ser expandido:
|
|
114
|
+
|
|
115
|
+
- [ ] Para cada endpoint, um humano não-familiarizado consegue escrever request/response sem perguntar nada?
|
|
116
|
+
- [ ] Para cada função pública, está claro **o que retorna** em todos os caminhos (sucesso + erros enumerados)?
|
|
117
|
+
- [ ] Edge cases foram **enumerados** ou só listados como "tratar edge cases"?
|
|
118
|
+
- [ ] Cada validação tem uma regra concreta (não "validar email" — `^[a-z0-9._%+-]+@...`)?
|
|
119
|
+
- [ ] Cada decisão arquitetural tem **justificativa** (não só "escolhemos X")?
|
|
120
|
+
|
|
121
|
+
**Anti-padrão a evitar:** seções como _"implementar autenticação"_ ou _"validar dados"_ — isso vai virar stub. Especifique **qual** algoritmo, **quais** campos, **quais** regras.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### 3. Salvar e aguardar aprovação humana
|
|
126
|
+
|
|
127
|
+
Salve `DARE/BLUEPRINT.md` e informe:
|
|
128
|
+
|
|
129
|
+
_"Blueprint gerado. Revise a arquitetura, os contratos de API e os critérios de DONE de cada fase — especialmente as tasks de complexidade HIGH. Quando aprovado, rode `/dare-tasks` para gerar o DAG e as specs de execução."_
|
|
130
|
+
|
|
131
|
+
**Não gere** `DARE/TASKS.md`, `DARE/dare-dag.yaml` nem arquivos em `DARE/EXECUTION/`.
|
|
132
|
+
Esses artefatos são responsabilidade exclusiva do `/dare-tasks`.
|
|
133
|
+
|
|
134
|
+
$ARGUMENTS
|