@dewtech/dare-cli 3.0.0 → 3.2.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 +47 -39
- package/dist/__tests__/ensure-skills.test.d.ts +2 -0
- package/dist/__tests__/ensure-skills.test.d.ts.map +1 -0
- package/dist/__tests__/ensure-skills.test.js +67 -0
- package/dist/__tests__/ensure-skills.test.js.map +1 -0
- package/dist/__tests__/ide-command-parity.test.d.ts +2 -0
- package/dist/__tests__/ide-command-parity.test.d.ts.map +1 -0
- package/dist/__tests__/ide-command-parity.test.js +58 -0
- package/dist/__tests__/ide-command-parity.test.js.map +1 -0
- package/dist/__tests__/reverse-collection.test.d.ts +2 -0
- package/dist/__tests__/reverse-collection.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-collection.test.js +87 -0
- package/dist/__tests__/reverse-collection.test.js.map +1 -0
- package/dist/bin/dare.js +1 -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/dna.d.ts.map +1 -1
- package/dist/commands/dna.js +4 -0
- package/dist/commands/dna.js.map +1 -1
- 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.map +1 -1
- package/dist/commands/migrate.js +4 -0
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +2 -1
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/reverse.d.ts.map +1 -1
- package/dist/commands/reverse.js +27 -8
- package/dist/commands/reverse.js.map +1 -1
- package/dist/mcp-server/bin/server.js +0 -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/datamodel.d.ts.map +1 -1
- package/dist/utils/datamodel.js +97 -20
- package/dist/utils/datamodel.js.map +1 -1
- package/dist/utils/project-generator.d.ts +22 -1
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +85 -7
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/reverse-facts.d.ts +3 -2
- package/dist/utils/reverse-facts.d.ts.map +1 -1
- package/dist/utils/reverse-facts.js +89 -8
- package/dist/utils/reverse-facts.js.map +1 -1
- 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 +46 -16
- package/dist/utils/stack-bootstrap.js.map +1 -1
- package/package.json +91 -87
- package/templates/ide/antigravity/.agents/skills/dare-bootstrap/SKILL.md +32 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag/SKILL.md +32 -0
- package/templates/ide/antigravity/.agents/skills/dare-discover/SKILL.md +33 -0
- package/templates/ide/antigravity/.agents/skills/dare-graph/SKILL.md +35 -0
- package/templates/ide/antigravity/.agents/skills/dare-info/SKILL.md +31 -0
- package/templates/ide/antigravity/.agents/skills/dare-init/SKILL.md +35 -0
- package/templates/ide/antigravity/.agents/skills/dare-skill/SKILL.md +35 -0
- package/templates/ide/antigravity/.agents/skills/dare-update/SKILL.md +33 -0
- package/templates/ide/antigravity/.agents/skills/dare-validate/SKILL.md +33 -0
- package/templates/ide/antigravity/.agents/skills/dare-welcome/SKILL.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-bootstrap.md +27 -0
- package/templates/ide/claude/.claude/commands/dare-dag.md +27 -0
- package/templates/ide/claude/.claude/commands/dare-discover.md +28 -0
- package/templates/ide/claude/.claude/commands/dare-graph.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-info.md +26 -0
- package/templates/ide/claude/.claude/commands/dare-init.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-skill.md +30 -0
- package/templates/ide/claude/.claude/commands/dare-update.md +28 -0
- package/templates/ide/claude/.claude/commands/dare-validate.md +28 -0
- package/templates/ide/claude/.claude/commands/dare-welcome.md +25 -0
- package/templates/ide/cursor/.cursor/commands/{generate-blueprint.md → dare-blueprint.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-bootstrap.md +27 -0
- package/templates/ide/cursor/.cursor/commands/{run-dag.md → dare-dag-run.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{dag-viz.md → dare-dag-viz.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-dag.md +27 -0
- package/templates/ide/cursor/.cursor/commands/{generate-design.md → dare-design.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-discover.md +28 -0
- package/templates/ide/cursor/.cursor/commands/dare-dna.md +75 -0
- package/templates/ide/cursor/.cursor/commands/{generate-docker-compose.md → dare-docker-compose.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{generate-dockerfile.md → dare-dockerfile.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{execute-task.md → dare-execute.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-graph.md +30 -0
- package/templates/ide/cursor/.cursor/commands/dare-info.md +26 -0
- package/templates/ide/cursor/.cursor/commands/dare-init.md +30 -0
- package/templates/ide/cursor/.cursor/commands/dare-migrate.md +72 -0
- package/templates/ide/cursor/.cursor/commands/{refine-task.md → dare-refine.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-reverse.md +139 -0
- package/templates/ide/cursor/.cursor/commands/{review-task.md → dare-review.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-skill.md +30 -0
- package/templates/ide/cursor/.cursor/commands/{generate-tasks.md → dare-tasks.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/{telemetry-report.md → dare-telemetry.md} +1 -1
- package/templates/ide/cursor/.cursor/commands/dare-update.md +28 -0
- package/templates/ide/cursor/.cursor/commands/dare-validate.md +28 -0
- package/templates/ide/cursor/.cursor/commands/dare-welcome.md +25 -0
- 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/templates/ide/cursor/.cursor/commands/{generate-bugfix-design.md → dare-bugfix-design.md} +0 -0
- /package/templates/ide/cursor/.cursor/commands/{generate-feature-design.md → dare-feature-design.md} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Comando: /dare-dag
|
|
2
|
+
|
|
3
|
+
Mostra o DAG estático de tasks (`DARE/dare-dag.yaml`): ranks, dependências e caminho crítico. Use `dare dag viz` para exportar o diagrama.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare dag` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- Você quer ver a ordem de execução, os ranks e o caminho crítico das tasks.
|
|
10
|
+
- Antes de começar a execução, para conferir a topologia do plano.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare dag viz
|
|
16
|
+
dare dag viz --dag DARE/dare-dag.yaml
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## O que fazer
|
|
20
|
+
|
|
21
|
+
1. Rode `dare dag viz` para renderizar o grafo de tasks.
|
|
22
|
+
2. Confira ranks e dependências; tasks de mesmo rank podem rodar em paralelo.
|
|
23
|
+
3. Para validar a integridade do arquivo, use `/dare-validate`. Para executar, `/dare-execute`.
|
|
24
|
+
|
|
25
|
+
## Comandos relacionados
|
|
26
|
+
|
|
27
|
+
`/dare-validate` · `/dare-execute` · `/dare-graph`
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Comando: /dare-discover
|
|
2
|
+
|
|
3
|
+
Detecta a stack de um projeto já existente (brownfield) e instala os arquivos da metodologia DARE — incluindo os comandos/skills de IDE — sem tocar no código.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare discover` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- O usuário quer adotar o DARE em um repositório que **já existe**.
|
|
10
|
+
- Para entender/documentar o legado em profundidade depois, encadeie com `/dare-reverse` e `/dare-dna`.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare discover
|
|
16
|
+
dare discover --dir ./caminho/do/projeto
|
|
17
|
+
dare discover --check # só mostra a detecção, sem instalar nada
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## O que fazer
|
|
21
|
+
|
|
22
|
+
1. Rode `dare discover --check` primeiro para revisar a stack detectada.
|
|
23
|
+
2. Se a detecção estiver correta, rode `dare discover` para instalar os artefatos DARE + comandos de IDE.
|
|
24
|
+
3. Próximo passo: `/dare-reverse` (Fase 0 — coleta) e `/dare-dna` (convenções).
|
|
25
|
+
|
|
26
|
+
## Comandos relacionados
|
|
27
|
+
|
|
28
|
+
`/dare-reverse` · `/dare-dna` · `/dare-migrate`
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Comando: /dare-dna
|
|
2
|
+
|
|
3
|
+
Camada semântica da extração de DNA do projeto. Roda **depois** do comando `dare dna`, que já varreu
|
|
4
|
+
o código e extraiu os fatos de convenção. Sua função é **transformar fatos em regras acionáveis** —
|
|
5
|
+
o "como esse codebase faz as coisas" que uma nova feature deve respeitar.
|
|
6
|
+
|
|
7
|
+
## Como usar
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
/dare-dna # preenche o PROJECT-DNA.md gerado por `dare dna`
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
> Pré-requisito: rodar `dare dna` antes (gera `DARE/PROJECT-DNA.md` e `DARE/dna-facts.json`).
|
|
14
|
+
> Se não existirem, instrua o usuário a rodar `dare dna` primeiro.
|
|
15
|
+
|
|
16
|
+
## Quando usar
|
|
17
|
+
|
|
18
|
+
- Projeto **legado** que vai adotar o DARE para novas features, sem reescrever o existente.
|
|
19
|
+
- Acabou de rodar `dare dna` e o `PROJECT-DNA.md` tem seções `<!-- AGENT -->` em aberto.
|
|
20
|
+
- O objetivo é um **ruleset** que faça o agente seguir o padrão da casa, não o default genérico.
|
|
21
|
+
|
|
22
|
+
## O que fazer
|
|
23
|
+
|
|
24
|
+
### 1. Carregar os fatos (não re-varrer tudo)
|
|
25
|
+
|
|
26
|
+
- Leia `DARE/dna-facts.json` — fonte determinística (tooling, naming, camadas, testes, libs, commits).
|
|
27
|
+
- Abra **2-5 arquivos representativos por camada** (um controller, um service, um model, um teste) para
|
|
28
|
+
inferir os padrões que o CLI não detecta (tratamento de erro, validação, estilo de teste).
|
|
29
|
+
|
|
30
|
+
### 2. Preencher `DARE/PROJECT-DNA.md`
|
|
31
|
+
|
|
32
|
+
Substitua cada bloco `<!-- AGENT: ... -->`:
|
|
33
|
+
|
|
34
|
+
- **Convenções de Nomenclatura** — confirme o estilo detectado e documente exceções (ex.: componentes
|
|
35
|
+
em PascalCase, utilitários em kebab).
|
|
36
|
+
- **Arquitetura & Camadas** — nomeie o padrão com confiança (MVC / Layered / Hexagonal) e escreva as
|
|
37
|
+
**regras de onde cada coisa mora** (ex.: "controllers só orquestram; regra de negócio vai em services;
|
|
38
|
+
acesso a dados só em repositories").
|
|
39
|
+
- **Padrões de Teste** — onde os testes ficam, naming, assertions reais (não `expect(true)`), uso de
|
|
40
|
+
mocks/fixtures.
|
|
41
|
+
- **Tratamento de Erros & Validação** — como o projeto trata erros (exceptions, Result/Either, try/catch)
|
|
42
|
+
e valida inputs. Dê **exemplos concretos** do código real.
|
|
43
|
+
- **Regras de Ouro do Projeto** — liste o que **SEMPRE** e o que **NUNCA** fazer neste codebase.
|
|
44
|
+
- **⚠️ Incertezas / Inconsistências** — convenções ambíguas/misturadas que o humano precisa decidir.
|
|
45
|
+
|
|
46
|
+
**Não toque** nos fatos determinísticos já preenchidos pelo CLI (tooling, tabela de naming, libs).
|
|
47
|
+
|
|
48
|
+
### 3. Apresentar ao usuário
|
|
49
|
+
|
|
50
|
+
Resumo: arquitetura nomeada, principais regras de ouro, inconsistências encontradas. Reforce que o
|
|
51
|
+
`PROJECT-DNA.md` vira referência para `/dare-feature-design` e `/dare-execute` respeitarem o legado.
|
|
52
|
+
|
|
53
|
+
## Regras de ouro
|
|
54
|
+
|
|
55
|
+
1. **Descritivo, não aspiracional** — documente como o código É, não como deveria ser.
|
|
56
|
+
2. **Exemplos reais** — cite arquivos/trechos do próprio projeto nas regras.
|
|
57
|
+
3. **Sinalize inconsistência** — se o legado mistura padrões, diga isso em "⚠️ Incertezas", não invente um padrão único.
|
|
58
|
+
4. **Não re-varra** — os fatos já estão em `dna-facts.json`.
|
|
59
|
+
5. **Preserve o determinístico** — não reescreva tooling/naming/libs gerados pelo CLI.
|
|
60
|
+
|
|
61
|
+
## Antipatterns
|
|
62
|
+
|
|
63
|
+
| AP | Antipattern | Por quê |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| AP-01 | Documentar o padrão "ideal" em vez do real | O agente vai gerar código fora do estilo do legado |
|
|
66
|
+
| AP-02 | Forçar um padrão único onde o legado é inconsistente | Esconde a realidade; melhor sinalizar a incerteza |
|
|
67
|
+
| AP-03 | Reescrever os fatos determinísticos do CLI | Quebra a fonte de verdade |
|
|
68
|
+
| AP-04 | Regras vagas ("siga boas práticas") | Inúteis — o valor está na regra específica do projeto |
|
|
69
|
+
| AP-05 | Ignorar os testes existentes ao descrever o estilo de teste | Nova feature nasce inconsistente |
|
|
70
|
+
|
|
71
|
+
$ARGUMENTS
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
Skill MIT — parte do DARE Method. DNA do projeto (brownfield). Pareia com o comando `dare dna`.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Comando: /dare-graph
|
|
2
|
+
|
|
3
|
+
Consulta e visualiza o grafo de conhecimento do projeto (tasks, arquivos, schemas, endpoints, componentes, entidades e suas relações).
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare graph` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- Você quer entender dependências entre tasks/arquivos/entidades.
|
|
10
|
+
- Precisa achar nós relacionados a um termo, ou exportar um diagrama do grafo.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare graph stats # contagem de nós/arestas por tipo
|
|
16
|
+
dare graph query <termo> --limit 10 # busca nós por label/descrição
|
|
17
|
+
dare graph query auth --type endpoint
|
|
18
|
+
dare graph viz --format mermaid -o graph.mmd
|
|
19
|
+
dare graph ingest # re-sincroniza o grafo do dare-dag.yaml
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## O que fazer
|
|
23
|
+
|
|
24
|
+
1. Escolha o subcomando conforme a intenção: `stats`, `query <termo>`, `viz`, `ingest`.
|
|
25
|
+
2. Rode o comando e interprete a saída (para `viz`, abra/renderize o diagrama gerado).
|
|
26
|
+
3. Se o grafo parecer desatualizado, rode `dare graph ingest` para re-sincronizar.
|
|
27
|
+
|
|
28
|
+
## Comandos relacionados
|
|
29
|
+
|
|
30
|
+
`/dare-dag` · `/dare-execute`
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Comando: /dare-info
|
|
2
|
+
|
|
3
|
+
Mostra versão do CLI, caminhos relevantes e a integridade da instalação DARE no projeto atual.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare info` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- Algo parece errado no setup e você quer um diagnóstico rápido.
|
|
10
|
+
- Para confirmar a versão do CLI e os artefatos DARE presentes.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare info
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## O que fazer
|
|
19
|
+
|
|
20
|
+
1. Rode `dare info`.
|
|
21
|
+
2. Revise versão, caminhos e a checagem de integridade.
|
|
22
|
+
3. Se houver artefatos faltando/desatualizados, rode `/dare-update`.
|
|
23
|
+
|
|
24
|
+
## Comandos relacionados
|
|
25
|
+
|
|
26
|
+
`/dare-update` · `/dare-welcome`
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Comando: /dare-init
|
|
2
|
+
|
|
3
|
+
Cria um projeto DARE do zero (greenfield) com setup interativo: escolhe stack backend/frontend, knowledge graph, IDE e gera o scaffolder completo + DNA DARE.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare init` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- O usuário quer começar um projeto **novo** do zero.
|
|
10
|
+
- Não existe código ainda — é greenfield. Para projeto legado, use `/dare-discover`.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare init # fluxo interativo completo
|
|
16
|
+
dare init minha-api --stack node-nestjs
|
|
17
|
+
dare init meu-mcp --mcp node-ts --transport http
|
|
18
|
+
dare init api --stack go-gin --toolchain docker --non-interactive
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## O que fazer
|
|
22
|
+
|
|
23
|
+
1. Rode `dare init` (ou com `--stack`/`--mcp` se o usuário já decidiu a stack).
|
|
24
|
+
2. Responda aos prompts: nome, stack backend, frontend opcional, knowledge graph (json/sqlite/neo4j), IDE(s).
|
|
25
|
+
3. Ao final, o projeto tem scaffolder + os 7 artefatos de DNA + comandos/skills de IDE instalados.
|
|
26
|
+
4. Próximo passo: descreva a ideia com `/dare-design`.
|
|
27
|
+
|
|
28
|
+
## Comandos relacionados
|
|
29
|
+
|
|
30
|
+
`/dare-design` · `/dare-discover` · `/dare-bootstrap`
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Comando: /dare-migrate
|
|
2
|
+
|
|
3
|
+
Camada semântica da migração (Fase 2 brownfield). Roda **depois** de `dare migrate`, que já leu os
|
|
4
|
+
artefatos do `reverse`/`dna` e gerou os esqueletos. Sua função é **escrever a estratégia de migração
|
|
5
|
+
e os cenários Gherkin de paridade reais** — o contrato comportamental que garante uma reimplementação
|
|
6
|
+
fiel ao legado.
|
|
7
|
+
|
|
8
|
+
## Como usar
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
/dare-migrate
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
> Pré-requisito: rodar `dare migrate --to <stack>` antes (gera `DARE/MIGRATION/MIGRATION.md`,
|
|
15
|
+
> `migration-facts.json` e `parity/*.feature`). Isso por sua vez exige `dare reverse` já executado.
|
|
16
|
+
|
|
17
|
+
## Quando usar
|
|
18
|
+
|
|
19
|
+
- Projeto legado entendido (`reverse` + `dna` feitos) que será **reimplementado** em outra stack.
|
|
20
|
+
- Acabou de rodar `dare migrate` e o `MIGRATION.md`/`.feature` têm seções `<!-- AGENT -->`/`# AGENT`.
|
|
21
|
+
|
|
22
|
+
## O que fazer
|
|
23
|
+
|
|
24
|
+
### 1. Carregar contexto (não re-varrer)
|
|
25
|
+
- Leia `DARE/MIGRATION/migration-facts.json` (origem, alvo, módulos, blocking gaps).
|
|
26
|
+
- Leia `DARE/IDEIA.md` + `DARE/REVERSE/module-*.md` (o que cada módulo faz) e `DARE/PROJECT-DNA.md`
|
|
27
|
+
(convenções). Abra arquivos-chave do legado só o necessário para inferir comportamento.
|
|
28
|
+
|
|
29
|
+
### 2. Preencher `DARE/MIGRATION/MIGRATION.md`
|
|
30
|
+
- **Decisão de Paradigma** — origem e alvo mudam de paradigma (procedural→OO, monólito→serviços)?
|
|
31
|
+
Registre decisão + justificativa; se preservado, diga.
|
|
32
|
+
- **Estratégia de Migração** — big-bang vs. **strangler/parallel-run**; ordem dos módulos; feature flags.
|
|
33
|
+
- **Registro de Risco** — para cada **blocking gap** (🔴) pré-listado, escreva o tratamento; some os
|
|
34
|
+
riscos de regressão/dados/performance + mitigações.
|
|
35
|
+
- **Arquitetura-alvo** — desenhe na stack-alvo, **alinhada ao DNA** (camadas/convenções) quando o
|
|
36
|
+
paradigma for preservado; senão justifique a nova organização.
|
|
37
|
+
- **Plano de Cutover & Rollback** — passos de corte, validação de paridade (rodar os `.feature`),
|
|
38
|
+
critério de go/no-go e rollback.
|
|
39
|
+
|
|
40
|
+
### 3. Escrever os Gherkin de paridade (`parity/<módulo>.feature`)
|
|
41
|
+
- Um `Scenario` por **fluxo observável** do módulo, derivado do **comportamento legado real**
|
|
42
|
+
(não invente). `Given` estado inicial → `When` ação → `Then` resultado **idêntico ao legado**.
|
|
43
|
+
- Inclua casos de borda e formatação que o legado garante (ex.: arredondamento monetário, máscaras).
|
|
44
|
+
- Esses `.feature` são o **contrato de aceite** da reimplementação na stack-alvo.
|
|
45
|
+
|
|
46
|
+
### 4. Apresentar ao usuário
|
|
47
|
+
Resumo: decisão de paradigma, estratégia, nº de cenários de paridade, blocking gaps a resolver.
|
|
48
|
+
Reforce que cenários de paridade só valem se vierem do comportamento legado observado.
|
|
49
|
+
|
|
50
|
+
## Regras de ouro
|
|
51
|
+
|
|
52
|
+
1. **Paridade primeiro** — o objetivo é não quebrar comportamento; todo fluxo crítico vira `Scenario`.
|
|
53
|
+
2. **Blocking gaps são bloqueantes** — um 🔴 não resolvido é risco de reimplementação; trate ou registre.
|
|
54
|
+
3. **Respeite o DNA** — a arquitetura-alvo segue as convenções da casa quando faz sentido.
|
|
55
|
+
4. **Não invente comportamento** — cenário sem base no legado é fonte de regressão silenciosa.
|
|
56
|
+
5. **Strangler quando possível** — migração incremental com parallel-run reduz risco vs. big-bang.
|
|
57
|
+
|
|
58
|
+
## Antipatterns
|
|
59
|
+
|
|
60
|
+
| AP | Antipattern | Por quê |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| AP-01 | Gherkin genérico sem base no legado | Não garante paridade — vira regressão |
|
|
63
|
+
| AP-02 | Ignorar blocking gaps (🔴) | Reimplementa em cima de incerteza |
|
|
64
|
+
| AP-03 | Big-bang sem necessidade | Maximiza risco e dificulta rollback |
|
|
65
|
+
| AP-04 | Arquitetura-alvo desalinhada do DNA | Código novo vira ilha inconsistente |
|
|
66
|
+
| AP-05 | Reescrever os fatos determinísticos do CLI | Quebra a fonte de verdade |
|
|
67
|
+
|
|
68
|
+
$ARGUMENTS
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
Skill MIT — parte do DARE Method. Fase 2 (brownfield). Pareia com o comando `dare migrate`.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Comando: /dare-reverse
|
|
2
|
+
|
|
3
|
+
Camada semântica da engenharia reversa (Fase 0 / brownfield). Roda **depois** do comando
|
|
4
|
+
`dare reverse`, que já varreu o código e gerou os esqueletos. Sua função é **preencher as
|
|
5
|
+
inferências** que o CLI determinístico não faz: propósito, domínio, responsabilidades e os
|
|
6
|
+
**diagramas de fluxo** ("como a coisa funciona").
|
|
7
|
+
|
|
8
|
+
## Como usar
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
/dare-reverse # preenche os artefatos gerados por `dare reverse`
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
> Pré-requisito: rodar `dare reverse` antes (gera `DARE/IDEIA.md`, `DARE/REVERSE/module-*.md`
|
|
15
|
+
> e `DARE/REVERSE/reverse-facts.json`). Se não existirem, instrua o usuário a rodar `dare reverse` primeiro.
|
|
16
|
+
|
|
17
|
+
## Quando usar
|
|
18
|
+
|
|
19
|
+
- O usuário quer entender / documentar um projeto **legado** antes de adotar o DARE.
|
|
20
|
+
- Acabou de rodar `dare reverse` e os artefatos têm seções `<!-- AGENT: ... -->` em aberto.
|
|
21
|
+
- O objetivo é gerar uma **pré-arquitetura** (`IDEIA.md`) que depois vira `DESIGN.md`.
|
|
22
|
+
|
|
23
|
+
## Marcação de confiança (obrigatória)
|
|
24
|
+
|
|
25
|
+
Ao preencher cada `<!-- AGENT -->`, marque **cada afirmação** com seu nível de confiança + evidência:
|
|
26
|
+
|
|
27
|
+
- `- 🟢 <claim>. ` + `` `arquivo:linha` `` — **CONFIRMED**: evidência direta no código.
|
|
28
|
+
- `- 🟡 <claim>. ` + `` `arquivo:linha` `` — **INFERRED**: padrão/dedução; pode estar errado.
|
|
29
|
+
- `- 🔴 <claim>. → ver gaps.md` — **GAP**: não determinável pelo código.
|
|
30
|
+
|
|
31
|
+
Regra: só 🟢 com evidência direta; na dúvida, 🟡; sem base, 🔴 (e registre em `gaps.md`). Os fatos
|
|
32
|
+
estruturais (caminho, LOC, deps) já vêm pré-marcados 🟢 pelo CLI — **não os altere**.
|
|
33
|
+
|
|
34
|
+
## O que fazer
|
|
35
|
+
|
|
36
|
+
### 1. Carregar os fatos (não re-varrer tudo)
|
|
37
|
+
|
|
38
|
+
- Leia `DARE/REVERSE/reverse-facts.json` — é a fonte de fatos determinística (stack, módulos,
|
|
39
|
+
LOC, grafo de dependências). **Confie nela** para o inventário; não reconte arquivos.
|
|
40
|
+
- Para cada módulo, abra **2-5 arquivos representativos** (entrypoints, controllers, services,
|
|
41
|
+
models) — o suficiente para inferir responsabilidade e fluxo. Não leia o módulo inteiro.
|
|
42
|
+
|
|
43
|
+
### 2. Preencher `DARE/IDEIA.md`
|
|
44
|
+
|
|
45
|
+
Substitua cada bloco `<!-- AGENT: ... -->` por conteúdo real:
|
|
46
|
+
|
|
47
|
+
- **Propósito Inferido** — 2-4 frases: o que o software faz e por quê.
|
|
48
|
+
- **Domínio & Conceitos** — entidades de negócio + glossário (inferidos de models/migrations/nomes).
|
|
49
|
+
- **Modelo de Dados (reconstruído)** — entidades, campos-chave, relacionamentos (de migrations/ORM).
|
|
50
|
+
- **Superfície de API** — endpoints inferidos de rotas/controllers (método, rota, propósito).
|
|
51
|
+
- **Fluxo do Sistema** — um `flowchart TD` Mermaid do caminho principal de request/dados
|
|
52
|
+
atravessando os módulos. Ex.:
|
|
53
|
+
```mermaid
|
|
54
|
+
flowchart TD
|
|
55
|
+
Client[Cliente] --> API[API/Rotas]
|
|
56
|
+
API --> Auth[auth: valida token]
|
|
57
|
+
Auth --> Domain[users: regra de negócio]
|
|
58
|
+
Domain --> DB[(Persistência)]
|
|
59
|
+
```
|
|
60
|
+
- **⚠️ Incertezas / Gaps** — seja honesto: o que NÃO deu pra inferir com segurança, e perguntas
|
|
61
|
+
objetivas para o humano confirmar. Esta seção é o que protege o checkpoint human-in-the-loop.
|
|
62
|
+
|
|
63
|
+
**Não toque** no Mapa de Módulos nem na tabela (são determinísticos, gerados pelo CLI).
|
|
64
|
+
|
|
65
|
+
### 3. Preencher cada `DARE/REVERSE/module-*.md`
|
|
66
|
+
|
|
67
|
+
Para cada módulo, substitua os `<!-- AGENT -->`:
|
|
68
|
+
|
|
69
|
+
- **Responsabilidade** — 1-3 frases sobre o papel do módulo no sistema.
|
|
70
|
+
- **Superfície Pública** — o que ele expõe (funções/classes/endpoints/tipos exportados).
|
|
71
|
+
- **Como Funciona (fluxo)** — um `sequenceDiagram` Mermaid do fluxo de execução típico. Ex.:
|
|
72
|
+
```mermaid
|
|
73
|
+
sequenceDiagram
|
|
74
|
+
participant C as Caller
|
|
75
|
+
participant S as Service
|
|
76
|
+
participant R as Repository
|
|
77
|
+
participant DB as Database
|
|
78
|
+
C->>S: chamada(args)
|
|
79
|
+
S->>R: busca/persiste
|
|
80
|
+
R->>DB: query
|
|
81
|
+
DB-->>R: linhas
|
|
82
|
+
R-->>S: entidade
|
|
83
|
+
S-->>C: resultado
|
|
84
|
+
```
|
|
85
|
+
- **Dependências & Acoplamento** — comente as dependências listadas em "Depende de" e riscos
|
|
86
|
+
de acoplamento (ex.: dependência circular, módulo-hotspot HIGH com muitos dependentes).
|
|
87
|
+
|
|
88
|
+
### 4. Apresentar ao usuário
|
|
89
|
+
|
|
90
|
+
Mostre um resumo: propósito inferido, nº de módulos, principais incertezas. Reforce que o
|
|
91
|
+
`IDEIA.md` é um **rascunho a ser validado** — peça para o humano revisar antes de promover a DESIGN.
|
|
92
|
+
|
|
93
|
+
## Passo final — Gaps, Questions e Reviewer
|
|
94
|
+
|
|
95
|
+
1. **`gaps.md`** — consolide todos os 🔴 em `DARE/REVERSE/gaps.md`, classificados por severidade
|
|
96
|
+
(crítico / moderado / cosmético / fora-escopo) e com o tratamento sugerido.
|
|
97
|
+
2. **`questions.md`** — perguntas objetivas ao humano em `DARE/REVERSE/questions.md`.
|
|
98
|
+
3. **Reviewer (releia e reclassifique)** — reabra os arquivos-chave e revise os claims; rebaixe os
|
|
99
|
+
que não têm evidência suficiente (🟢→🟡 ou 🟡→🔴). Um spec honesto sobre suas incertezas vale mais
|
|
100
|
+
que um spec fluente que apresenta suposição como fato.
|
|
101
|
+
4. **Rode `dare reverse --report`** — o CLI conta os marcadores e gera `confidence-report.md` +
|
|
102
|
+
`traceability/code-spec-matrix.md` com o índice determinístico. Mostre o índice ao usuário.
|
|
103
|
+
|
|
104
|
+
## Modo `--deep` (Fase 3)
|
|
105
|
+
|
|
106
|
+
Se `dare reverse --deep` foi usado, há artefatos extras em `DARE/REVERSE/` a completar:
|
|
107
|
+
|
|
108
|
+
- **`erd.md`** — o CLI extraiu entidades de migrations/Prisma/ORM (🟢, com evidência). Complete
|
|
109
|
+
relações/entidades **não-explícitas** no schema (🟡) e corrija o que estiver errado.
|
|
110
|
+
- **`domain-rules.md`** — regras de negócio (validações, invariantes, cálculos, políticas), 🟢/🟡/🔴.
|
|
111
|
+
- **`state-machines.md`** — um `stateDiagram-v2` por entidade/fluxo com estados e transições reais.
|
|
112
|
+
- **`permissions.md`** — papéis, recursos e regras de autorização (quem pode o quê).
|
|
113
|
+
- **`c4/c4-context.md`** e **`c4/c4-container.md`** — atores/sistemas externos e containers de deploy.
|
|
114
|
+
(O nível *component* já é o mapa de módulos em `c4/c4-component.md`, gerado pelo CLI.)
|
|
115
|
+
|
|
116
|
+
## Regras de ouro
|
|
117
|
+
|
|
118
|
+
1. **Não invente.** Se um fluxo não está claro no código, marque 🔴 (gap) em vez de chutar.
|
|
119
|
+
2. **Fidelidade ao código real** — descreva o que o código faz, não o que deveria fazer.
|
|
120
|
+
3. **Diagramas enxutos** — um fluxo legível vale mais que um diagrama exaustivo e ilegível.
|
|
121
|
+
4. **Não re-varra** — os fatos já estão em `reverse-facts.json`; foque na inferência semântica.
|
|
122
|
+
5. **Preserve o determinístico** — nunca edite o Mapa de Módulos/tabela/grafo gerados pelo CLI.
|
|
123
|
+
|
|
124
|
+
## Antipatterns
|
|
125
|
+
|
|
126
|
+
| AP | Antipattern | Por quê |
|
|
127
|
+
|---|---|---|
|
|
128
|
+
| AP-01 | Inventar endpoints/entidades não presentes no código | Polui a pré-arquitetura com ficção |
|
|
129
|
+
| AP-02 | Reescrever a tabela de módulos do CLI | Quebra a fonte determinística |
|
|
130
|
+
| AP-03 | `sequenceDiagram` gigante e ilegível | Anula o propósito do diagrama |
|
|
131
|
+
| AP-04 | Pular a seção de Incertezas | Remove o ponto de validação humana |
|
|
132
|
+
| AP-05 | Ler o projeto inteiro arquivo a arquivo | Desperdiça contexto; os fatos já estão no JSON |
|
|
133
|
+
| AP-06 | Marcar tudo 🟢 sem evidência `file:line` | Infla a confiança e engana o humano — o valor está em separar 🟢/🟡/🔴 |
|
|
134
|
+
|
|
135
|
+
$ARGUMENTS
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
Skill MIT — parte do DARE Method. Fase 0 (brownfield). Pareia com o comando `dare reverse`.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Comando: /dare-skill
|
|
2
|
+
|
|
3
|
+
Adiciona, remove, lista, inspeciona, atualiza ou publica skills DARE neste projeto.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare skill` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- Você quer instalar uma skill extra (ex.: uma skill de stack) no projeto.
|
|
10
|
+
- Quer listar/inspecionar as skills disponíveis ou publicar uma própria.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare skill list
|
|
16
|
+
dare skill info <nome>
|
|
17
|
+
dare skill add <nome>
|
|
18
|
+
dare skill remove <nome>
|
|
19
|
+
dare skill update
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## O que fazer
|
|
23
|
+
|
|
24
|
+
1. Use `dare skill list` para ver o que está instalado/disponível.
|
|
25
|
+
2. Rode o subcomando desejado (`add`/`remove`/`info`/`update`/`publish`).
|
|
26
|
+
3. Confirme o resultado e, se mudou comandos de IDE, recarregue a IDE.
|
|
27
|
+
|
|
28
|
+
## Comandos relacionados
|
|
29
|
+
|
|
30
|
+
`/dare-update` · `/dare-info`
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Comando: /dare-update
|
|
2
|
+
|
|
3
|
+
Sincroniza os artefatos do projeto (comandos de IDE, skills, templates) com a versão instalada do DARE CLI, preservando customizações.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare update` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- Depois de atualizar o `@dewtech/dare-cli` para uma versão nova.
|
|
10
|
+
- Quando `dare info` apontar artefatos desatualizados.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare update --dry-run # mostra o que mudaria, sem escrever
|
|
16
|
+
dare update -y # aplica tudo, mantém customizações
|
|
17
|
+
dare update --target 3.2.0
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## O que fazer
|
|
21
|
+
|
|
22
|
+
1. Rode `dare update --dry-run` e revise o diff proposto.
|
|
23
|
+
2. Se estiver ok, rode `dare update -y`.
|
|
24
|
+
3. Evite `--force` salvo se o usuário aceitar sobrescrever arquivos customizados.
|
|
25
|
+
|
|
26
|
+
## Comandos relacionados
|
|
27
|
+
|
|
28
|
+
`/dare-info` · `/dare-welcome`
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Comando: /dare-validate
|
|
2
|
+
|
|
3
|
+
Valida `DARE/dare-dag.yaml` (ciclos, referências quebradas, campos obrigatórios). Adequado para pre-commit hooks e CI.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare validate` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- Antes de commitar mudanças no DAG.
|
|
10
|
+
- Em CI, como gate de integridade do plano de execução.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare validate
|
|
16
|
+
dare validate --strict # trata warnings como erros (CI-friendly)
|
|
17
|
+
dare validate --dag DARE/dare-dag.yaml
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## O que fazer
|
|
21
|
+
|
|
22
|
+
1. Rode `dare validate` (use `--strict` em CI).
|
|
23
|
+
2. Se houver erros, corrija o `dare-dag.yaml` apontado e rode de novo até passar.
|
|
24
|
+
3. Saída limpa = DAG íntegro e pronto para `/dare-execute`.
|
|
25
|
+
|
|
26
|
+
## Comandos relacionados
|
|
27
|
+
|
|
28
|
+
`/dare-dag` · `/dare-execute`
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Comando: /dare-welcome
|
|
2
|
+
|
|
3
|
+
Mostra o banner do DARE e um guia de início rápido com o fluxo Design → Architecture → Review → Execute.
|
|
4
|
+
|
|
5
|
+
> Este comando expõe o CLI `dare welcome` na IDE. O agente pode **rodar o comando no terminal** e interpretar a saída.
|
|
6
|
+
|
|
7
|
+
## Quando usar
|
|
8
|
+
|
|
9
|
+
- Primeiro contato com o DARE neste projeto.
|
|
10
|
+
- O usuário quer relembrar o fluxo canônico de comandos.
|
|
11
|
+
|
|
12
|
+
## Como rodar
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dare welcome
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## O que fazer
|
|
19
|
+
|
|
20
|
+
1. Rode `dare welcome`.
|
|
21
|
+
2. Apresente o fluxo: `/dare-design` → `/dare-blueprint` → `/dare-tasks` → `/dare-execute`.
|
|
22
|
+
|
|
23
|
+
## Comandos relacionados
|
|
24
|
+
|
|
25
|
+
`/dare-design` · `/dare-info`
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
skills:
|
|
3
|
+
- id: skill-go-gin-api
|
|
4
|
+
source: skill-go-gin-api
|
|
5
|
+
description: Gin + sqlc + swag + pgx Layered Design
|
|
6
|
+
- id: dare-ax
|
|
7
|
+
source: dare-ax
|
|
8
|
+
description: Agent eXperience invariants (llms.txt, OpenAPI, --json, rate limit)
|
|
9
|
+
- id: dare-layered-design
|
|
10
|
+
source: dare-layered-design
|
|
11
|
+
description: Handler → Service → Repository → Model 4-layer architecture
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Application
|
|
2
|
+
APP_PORT=8000
|
|
3
|
+
LOG_LEVEL=info
|
|
4
|
+
|
|
5
|
+
# Database
|
|
6
|
+
DATABASE_URL=postgres://user:pass@localhost:5432/myapi?sslmode=disable
|
|
7
|
+
|
|
8
|
+
# JWT auth
|
|
9
|
+
JWT_SECRET=replace-me-in-prod
|
|
10
|
+
JWT_EXP_HOURS=1
|
|
11
|
+
|
|
12
|
+
# Password hashing
|
|
13
|
+
BCRYPT_COST=12
|
|
14
|
+
|
|
15
|
+
# Rate limit (token bucket per IP)
|
|
16
|
+
RATE_LIMIT_PER_SEC=10
|
|
17
|
+
RATE_LIMIT_BURST=20
|
|
18
|
+
|
|
19
|
+
# CORS — comma-separated origins
|
|
20
|
+
CORS_ORIGINS=http://localhost:3000
|
|
21
|
+
|
|
22
|
+
# LLM
|
|
23
|
+
LLM_PROVIDER=dummy
|
|
24
|
+
# OPENAI_API_KEY=
|