@brunosps00/dev-workflow 0.6.1 → 0.8.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.
Files changed (40) hide show
  1. package/README.md +18 -2
  2. package/lib/constants.js +62 -54
  3. package/lib/install-deps.js +13 -0
  4. package/package.json +1 -1
  5. package/scaffold/en/commands/dw-deps-audit.md +326 -0
  6. package/scaffold/en/commands/dw-dockerize.md +321 -0
  7. package/scaffold/en/commands/dw-find-skills.md +158 -0
  8. package/scaffold/en/commands/dw-help.md +4 -0
  9. package/scaffold/en/commands/dw-new-project.md +350 -0
  10. package/scaffold/en/templates/project-onepager.md +129 -0
  11. package/scaffold/pt-br/commands/dw-deps-audit.md +326 -0
  12. package/scaffold/pt-br/commands/dw-dockerize.md +321 -0
  13. package/scaffold/pt-br/commands/dw-find-skills.md +158 -0
  14. package/scaffold/pt-br/commands/dw-help.md +4 -0
  15. package/scaffold/pt-br/commands/dw-new-project.md +350 -0
  16. package/scaffold/pt-br/templates/project-onepager.md +129 -0
  17. package/scaffold/skills/docker-compose-recipes/SKILL.md +84 -0
  18. package/scaffold/skills/docker-compose-recipes/references/compose-composition.md +91 -0
  19. package/scaffold/skills/docker-compose-recipes/references/env-conventions.md +51 -0
  20. package/scaffold/skills/docker-compose-recipes/references/healthcheck-patterns.md +54 -0
  21. package/scaffold/skills/docker-compose-recipes/references/prod-vs-dev.md +85 -0
  22. package/scaffold/skills/docker-compose-recipes/services/elasticsearch.yml +34 -0
  23. package/scaffold/skills/docker-compose-recipes/services/jaeger.yml +24 -0
  24. package/scaffold/skills/docker-compose-recipes/services/localstack.yml +30 -0
  25. package/scaffold/skills/docker-compose-recipes/services/mailhog.yml +23 -0
  26. package/scaffold/skills/docker-compose-recipes/services/mailpit.yml +27 -0
  27. package/scaffold/skills/docker-compose-recipes/services/meilisearch.yml +28 -0
  28. package/scaffold/skills/docker-compose-recipes/services/memcached.yml +19 -0
  29. package/scaffold/skills/docker-compose-recipes/services/minio.yml +30 -0
  30. package/scaffold/skills/docker-compose-recipes/services/mysql.yml +30 -0
  31. package/scaffold/skills/docker-compose-recipes/services/postgres.yml +30 -0
  32. package/scaffold/skills/docker-compose-recipes/services/rabbitmq.yml +29 -0
  33. package/scaffold/skills/docker-compose-recipes/services/redis.yml +25 -0
  34. package/scaffold/skills/docker-compose-recipes/services/smtp4dev.yml +27 -0
  35. package/scaffold/skills/docker-compose-recipes/services/traefik.yml +42 -0
  36. package/scaffold/skills/docker-compose-recipes/services/typesense.yml +25 -0
  37. package/scaffold/skills/dw-council/SKILL.md +1 -8
  38. package/scaffold/skills/dw-memory/SKILL.md +1 -8
  39. package/scaffold/skills/dw-review-rigor/SKILL.md +1 -7
  40. package/scaffold/skills/dw-verify/SKILL.md +1 -6
@@ -0,0 +1,29 @@
1
+ # RabbitMQ 3 (management) — message broker + UI
2
+ # Env vars: RABBITMQ_USER, RABBITMQ_PASSWORD, RABBITMQ_PORT (default 5672), RABBITMQ_UI_PORT (default 15672)
3
+ # Application-side: AMQP_URL=amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@rabbitmq:5672/
4
+
5
+ rabbitmq:
6
+ image: rabbitmq:3-management-alpine
7
+ restart: unless-stopped
8
+ environment:
9
+ RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-app}
10
+ RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-app}
11
+ ports:
12
+ - "${RABBITMQ_PORT:-5672}:5672"
13
+ - "${RABBITMQ_UI_PORT:-15672}:15672"
14
+ volumes:
15
+ - rabbitmq_data:/var/lib/rabbitmq
16
+ healthcheck:
17
+ test: ["CMD", "rabbitmq-diagnostics", "ping"]
18
+ interval: 10s
19
+ timeout: 5s
20
+ retries: 10
21
+ start_period: 30s
22
+
23
+ # volumes:
24
+ # rabbitmq_data: {}
25
+ #
26
+ # Prod notes:
27
+ # - Drop the management UI port (15672) or put it behind a reverse proxy with auth.
28
+ # - Use rabbitmq:3-alpine (no management) in prod; manage via the cluster API.
29
+ # - Mount a custom rabbitmq.conf for clustering, queue limits, and TLS.
@@ -0,0 +1,25 @@
1
+ # Redis 7 — cache, pub/sub, BullMQ backend
2
+ # Env vars: REDIS_PORT (default 6379), REDIS_PASSWORD (optional in dev)
3
+ # Application-side: REDIS_URL=redis://redis:6379 or redis://:${REDIS_PASSWORD}@redis:6379
4
+
5
+ redis:
6
+ image: redis:7-alpine
7
+ restart: unless-stopped
8
+ command: ${REDIS_PASSWORD:+redis-server --requirepass ${REDIS_PASSWORD}}
9
+ ports:
10
+ - "${REDIS_PORT:-6379}:6379"
11
+ volumes:
12
+ - redis_data:/data
13
+ healthcheck:
14
+ test: ["CMD", "redis-cli", "ping"]
15
+ interval: 5s
16
+ timeout: 3s
17
+ retries: 10
18
+ start_period: 3s
19
+
20
+ # volumes:
21
+ # redis_data: {}
22
+ #
23
+ # Prod notes:
24
+ # - Always set REDIS_PASSWORD in prod. Drop public port; expose only on internal network.
25
+ # - For persistence in prod, mount a Redis config file with appendonly yes and tune save points.
@@ -0,0 +1,27 @@
1
+ # smtp4dev — Windows-friendly SMTP capture, .NET-based
2
+ # Env vars: SMTP4DEV_SMTP_PORT (default 2525), SMTP4DEV_UI_PORT (default 5000)
3
+ # Application-side SMTP config:
4
+ # SMTP_HOST=smtp4dev ; SMTP_PORT=25 (internal) ; SMTP_USER= ; SMTP_PASSWORD= ; SMTP_SECURE=false
5
+
6
+ smtp4dev:
7
+ image: rnwood/smtp4dev:v3
8
+ restart: unless-stopped
9
+ ports:
10
+ - "${SMTP4DEV_SMTP_PORT:-2525}:25"
11
+ - "${SMTP4DEV_UI_PORT:-5000}:80"
12
+ environment:
13
+ ServerOptions__HostName: smtp4dev
14
+ volumes:
15
+ - smtp4dev_data:/smtp4dev
16
+ healthcheck:
17
+ test: ["CMD", "wget", "--quiet", "--spider", "http://localhost:80"]
18
+ interval: 10s
19
+ timeout: 3s
20
+ retries: 5
21
+ start_period: 5s
22
+
23
+ # volumes:
24
+ # smtp4dev_data: {}
25
+ #
26
+ # Prod notes:
27
+ # - DEV ONLY. Do not ship to prod.
@@ -0,0 +1,42 @@
1
+ # Traefik 3 — reverse proxy + dev TLS via mkcert
2
+ # Env vars: TRAEFIK_HTTP_PORT (default 80), TRAEFIK_HTTPS_PORT (default 443), TRAEFIK_DASHBOARD_PORT (default 8080)
3
+ # Use Docker labels on other services to route traffic, e.g.:
4
+ # labels:
5
+ # - "traefik.enable=true"
6
+ # - "traefik.http.routers.web.rule=Host(`web.localhost`)"
7
+ # - "traefik.http.services.web.loadbalancer.server.port=3000"
8
+
9
+ traefik:
10
+ image: traefik:v3.1
11
+ restart: unless-stopped
12
+ command:
13
+ - "--api.insecure=true"
14
+ - "--providers.docker=true"
15
+ - "--providers.docker.exposedbydefault=false"
16
+ - "--entrypoints.web.address=:80"
17
+ - "--entrypoints.websecure.address=:443"
18
+ ports:
19
+ - "${TRAEFIK_HTTP_PORT:-80}:80"
20
+ - "${TRAEFIK_HTTPS_PORT:-443}:443"
21
+ - "${TRAEFIK_DASHBOARD_PORT:-8080}:8080"
22
+ volumes:
23
+ - /var/run/docker.sock:/var/run/docker.sock:ro
24
+ - traefik_certs:/certs
25
+ healthcheck:
26
+ test: ["CMD", "wget", "--quiet", "--spider", "http://localhost:8080/ping"]
27
+ interval: 10s
28
+ timeout: 3s
29
+ retries: 5
30
+ start_period: 5s
31
+
32
+ # volumes:
33
+ # traefik_certs: {}
34
+ #
35
+ # Dev TLS notes:
36
+ # - Run `mkcert -install && mkcert localhost '*.localhost'` once on the host, mount the certs
37
+ # into traefik_certs, and configure tls.options for HTTPS routes.
38
+ #
39
+ # Prod notes:
40
+ # - REMOVE --api.insecure=true. Bind the dashboard to a private network or behind basic auth.
41
+ # - Replace Docker provider with file/Kubernetes provider for prod orchestration.
42
+ # - Use ACME/Let's Encrypt resolver for prod TLS (configure --certificatesresolvers.le.acme.*).
@@ -0,0 +1,25 @@
1
+ # Typesense — alternative to Meilisearch, focus on typo tolerance and ranking
2
+ # Env vars: TYPESENSE_API_KEY, TYPESENSE_PORT (default 8108)
3
+ # Application-side: TYPESENSE_HOST=typesense; TYPESENSE_PORT=8108; TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
4
+
5
+ typesense:
6
+ image: typesense/typesense:0.27.1
7
+ restart: unless-stopped
8
+ command: --data-dir /data --api-key=${TYPESENSE_API_KEY:-typesense-dev-key} --enable-cors
9
+ ports:
10
+ - "${TYPESENSE_PORT:-8108}:8108"
11
+ volumes:
12
+ - typesense_data:/data
13
+ healthcheck:
14
+ test: ["CMD", "curl", "-f", "http://localhost:8108/health"]
15
+ interval: 10s
16
+ timeout: 3s
17
+ retries: 5
18
+ start_period: 5s
19
+
20
+ # volumes:
21
+ # typesense_data: {}
22
+ #
23
+ # Prod notes:
24
+ # - Generate a strong TYPESENSE_API_KEY; rotate periodically.
25
+ # - For HA, run a 3-node cluster (see Typesense docs for clustering).
@@ -1,13 +1,6 @@
1
1
  ---
2
2
  name: dw-council
3
- description: |
4
- Orchestrates a multi-advisor debate (3-5 archetypes) to stress-test
5
- high-stakes product, architecture, or scope decisions. Uses parallel
6
- subagents with steel-manning, concession tracking, and dissent-preserving
7
- synthesis. Invoked opt-in via `--council` flag from dw-brainstorm and
8
- dw-create-techspec, or standalone when the user explicitly needs a
9
- rigorous debate. Do not use for small decisions, routine implementation,
10
- or when a single answer is already obvious.
3
+ description: Multi-advisor debate (3-5 archetypes) with steel-manning and dissent preserved, for high-stakes product or architecture calls.
11
4
  allowed-tools:
12
5
  - Read
13
6
  - Task
@@ -1,13 +1,6 @@
1
1
  ---
2
2
  name: dw-memory
3
- description: |
4
- Maintains workflow-scoped memory for dev-workflow PRD runs using
5
- .dw/spec/prd-<name>/MEMORY.md (shared) and .dw/spec/prd-<name>/tasks/<N>_memory.md
6
- (task-local). Use when a dev-workflow command needs to persist or recall
7
- durable cross-task context (decisions, constraints, risks) across task
8
- executions. Invoked from dw-run-task, dw-run-plan, dw-autopilot, and
9
- dw-resume. Do not use for PR review remediation, user preferences, or
10
- event-log summarization.
3
+ description: Two-tier workflow memory (shared + per-task) with promotion test, so cross-task context survives without bloating files.
11
4
  allowed-tools:
12
5
  - Read
13
6
  - Write
@@ -1,12 +1,6 @@
1
1
  ---
2
2
  name: dw-review-rigor
3
- description: |
4
- Applies review discipline to code-review and analysis commands:
5
- de-duplicates issues, orders by severity, verifies intent before flagging,
6
- prioritizes signal over volume, and skips concerns that linters already
7
- catch. Invoked from dw-code-review, dw-review-implementation, and
8
- dw-refactoring-analysis. Do not use for fetching reviews from external
9
- providers or for executing fixes.
3
+ description: Five rules for review output — dedupe, severity-order, verify intent, skip linter noise, prefer signal over volume.
10
4
  allowed-tools:
11
5
  - Read
12
6
  - Grep
@@ -1,11 +1,6 @@
1
1
  ---
2
2
  name: dw-verify
3
- description: |
4
- Enforces fresh verification evidence before any completion, fix, or passing
5
- claim — and before commits or PR creation. Use when a dev-workflow command
6
- is about to report success, hand off work, or commit code. Invoked from
7
- dw-run-task, dw-run-plan, dw-fix-qa, dw-bugfix, dw-code-review, dw-generate-pr,
8
- and dw-quick. Do not use for early planning or brainstorming.
3
+ description: Demands fresh verification evidence before any success claim or commit. No PASS report, no claim — no exceptions.
9
4
  allowed-tools:
10
5
  - Bash
11
6
  - Read