@brunosps00/dev-workflow 0.0.3 → 0.0.6
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 +42 -42
- package/bin/dev-workflow.js +6 -4
- package/lib/constants.js +42 -40
- package/lib/init.js +66 -19
- package/package.json +1 -1
- package/scaffold/en/commands/{analyze-project.md → dw-analyze-project.md} +69 -40
- package/scaffold/en/commands/{brainstorm.md → dw-brainstorm.md} +31 -4
- package/scaffold/en/commands/{bugfix.md → dw-bugfix.md} +63 -19
- package/scaffold/en/commands/{code-review.md → dw-code-review.md} +38 -15
- package/scaffold/en/commands/{commit.md → dw-commit.md} +25 -0
- package/scaffold/en/commands/{create-prd.md → dw-create-prd.md} +24 -10
- package/scaffold/en/commands/{create-tasks.md → dw-create-tasks.md} +11 -4
- package/scaffold/en/commands/{create-techspec.md → dw-create-techspec.md} +38 -11
- package/scaffold/en/commands/{deep-research.md → dw-deep-research.md} +18 -17
- package/scaffold/en/commands/{fix-qa.md → dw-fix-qa.md} +20 -3
- package/scaffold/en/commands/dw-functional-doc.md +276 -0
- package/scaffold/en/commands/{generate-pr.md → dw-generate-pr.md} +20 -5
- package/scaffold/en/commands/dw-help.md +309 -0
- package/scaffold/en/commands/{refactoring-analysis.md → dw-refactoring-analysis.md} +50 -26
- package/scaffold/en/commands/{review-implementation.md → dw-review-implementation.md} +25 -6
- package/scaffold/en/commands/{run-plan.md → dw-run-plan.md} +21 -6
- package/scaffold/en/commands/{run-qa.md → dw-run-qa.md} +32 -13
- package/scaffold/en/commands/{run-task.md → dw-run-task.md} +17 -7
- package/scaffold/en/references/playwright-patterns.md +136 -0
- package/scaffold/en/references/refactoring-catalog.md +167 -0
- package/scaffold/en/templates/brainstorm-matrix.md +44 -0
- package/scaffold/en/templates/functional-doc/case-matrix.md +5 -0
- package/scaffold/en/templates/functional-doc/e2e-runbook.md +3 -0
- package/scaffold/en/templates/functional-doc/features.md +3 -0
- package/scaffold/en/templates/functional-doc/overview.md +21 -0
- package/scaffold/en/templates/functional-doc/playwright.spec.ts.tpl +19 -0
- package/scaffold/en/templates/pr-bugfix-template.md +28 -0
- package/scaffold/en/templates/qa-test-credentials.md +37 -0
- package/scaffold/en/templates/tasks-template.md +1 -1
- package/scaffold/en/templates/techspec-template.md +1 -1
- package/scaffold/pt-br/commands/{analyze-project.md → dw-analyze-project.md} +94 -44
- package/scaffold/pt-br/commands/{brainstorm.md → dw-brainstorm.md} +32 -5
- package/scaffold/pt-br/commands/{bugfix.md → dw-bugfix.md} +73 -16
- package/scaffold/pt-br/commands/{code-review.md → dw-code-review.md} +80 -17
- package/scaffold/pt-br/commands/{commit.md → dw-commit.md} +45 -1
- package/scaffold/pt-br/commands/{create-prd.md → dw-create-prd.md} +25 -10
- package/scaffold/pt-br/commands/{create-tasks.md → dw-create-tasks.md} +24 -17
- package/scaffold/pt-br/commands/{create-techspec.md → dw-create-techspec.md} +40 -13
- package/scaffold/pt-br/commands/{deep-research.md → dw-deep-research.md} +19 -11
- package/scaffold/pt-br/commands/{fix-qa.md → dw-fix-qa.md} +30 -1
- package/scaffold/pt-br/commands/dw-functional-doc.md +276 -0
- package/scaffold/pt-br/commands/{generate-pr.md → dw-generate-pr.md} +61 -6
- package/scaffold/pt-br/commands/dw-help.md +248 -0
- package/scaffold/pt-br/commands/{refactoring-analysis.md → dw-refactoring-analysis.md} +49 -25
- package/scaffold/pt-br/commands/{review-implementation.md → dw-review-implementation.md} +53 -5
- package/scaffold/pt-br/commands/{run-plan.md → dw-run-plan.md} +100 -12
- package/scaffold/pt-br/commands/{run-qa.md → dw-run-qa.md} +93 -18
- package/scaffold/pt-br/commands/{run-task.md → dw-run-task.md} +35 -10
- package/scaffold/pt-br/references/playwright-patterns.md +133 -0
- package/scaffold/pt-br/references/refactoring-catalog.md +166 -0
- package/scaffold/pt-br/templates/brainstorm-matrix.md +44 -0
- package/scaffold/pt-br/templates/functional-doc/case-matrix.md +5 -0
- package/scaffold/pt-br/templates/functional-doc/e2e-runbook.md +3 -0
- package/scaffold/pt-br/templates/functional-doc/features.md +3 -0
- package/scaffold/pt-br/templates/functional-doc/overview.md +21 -0
- package/scaffold/pt-br/templates/functional-doc/playwright.spec.ts.tpl +19 -0
- package/scaffold/pt-br/templates/pr-bugfix-template.md +28 -0
- package/scaffold/pt-br/templates/qa-test-credentials.md +37 -0
- package/scaffold/pt-br/templates/tasks-template.md +2 -2
- package/scaffold/pt-br/templates/techspec-template.md +1 -1
- package/scaffold/rules-readme.md +3 -3
- package/scaffold/scripts/functional-doc/generate-dossier.mjs +821 -0
- package/scaffold/scripts/functional-doc/run-playwright-flow.mjs +275 -0
- package/scaffold/skills/agent-browser/SKILL.md +750 -0
- package/scaffold/skills/agent-browser/references/authentication.md +303 -0
- package/scaffold/skills/agent-browser/references/commands.md +295 -0
- package/scaffold/skills/agent-browser/references/profiling.md +120 -0
- package/scaffold/skills/agent-browser/references/proxy-support.md +194 -0
- package/scaffold/skills/agent-browser/references/session-management.md +193 -0
- package/scaffold/skills/agent-browser/references/snapshot-refs.md +219 -0
- package/scaffold/skills/agent-browser/references/video-recording.md +173 -0
- package/scaffold/skills/agent-browser/templates/authenticated-session.sh +105 -0
- package/scaffold/skills/agent-browser/templates/capture-workflow.sh +69 -0
- package/scaffold/skills/agent-browser/templates/form-automation.sh +62 -0
- package/scaffold/skills/humanizer/README.md +143 -0
- package/scaffold/skills/humanizer/SKILL.md +488 -0
- package/scaffold/skills/humanizer/WARP.md +53 -0
- package/scaffold/skills/remotion-best-practices/SKILL.md +61 -0
- package/scaffold/skills/remotion-best-practices/rules/3d.md +86 -0
- package/scaffold/skills/remotion-best-practices/rules/animations.md +27 -0
- package/scaffold/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/scaffold/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/scaffold/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- package/scaffold/skills/remotion-best-practices/rules/assets.md +78 -0
- package/scaffold/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
- package/scaffold/skills/remotion-best-practices/rules/audio.md +169 -0
- package/scaffold/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
- package/scaffold/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/scaffold/skills/remotion-best-practices/rules/charts.md +120 -0
- package/scaffold/skills/remotion-best-practices/rules/compositions.md +154 -0
- package/scaffold/skills/remotion-best-practices/rules/display-captions.md +184 -0
- package/scaffold/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/scaffold/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
- package/scaffold/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/scaffold/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/scaffold/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/scaffold/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/scaffold/skills/remotion-best-practices/rules/gifs.md +141 -0
- package/scaffold/skills/remotion-best-practices/rules/images.md +134 -0
- package/scaffold/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/scaffold/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/scaffold/skills/remotion-best-practices/rules/lottie.md +70 -0
- package/scaffold/skills/remotion-best-practices/rules/maps.md +412 -0
- package/scaffold/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/scaffold/skills/remotion-best-practices/rules/measuring-text.md +140 -0
- package/scaffold/skills/remotion-best-practices/rules/parameters.md +109 -0
- package/scaffold/skills/remotion-best-practices/rules/sequencing.md +118 -0
- package/scaffold/skills/remotion-best-practices/rules/sfx.md +26 -0
- package/scaffold/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/scaffold/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/scaffold/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/scaffold/skills/remotion-best-practices/rules/timing.md +179 -0
- package/scaffold/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/scaffold/skills/remotion-best-practices/rules/transitions.md +197 -0
- package/scaffold/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/scaffold/skills/remotion-best-practices/rules/trimming.md +51 -0
- package/scaffold/skills/remotion-best-practices/rules/videos.md +171 -0
- package/scaffold/skills/remotion-best-practices/rules/voiceover.md +99 -0
- package/scaffold/skills/security-review/LICENSE +22 -0
- package/scaffold/skills/security-review/SKILL.md +312 -0
- package/scaffold/skills/security-review/infrastructure/docker.md +432 -0
- package/scaffold/skills/security-review/languages/javascript.md +388 -0
- package/scaffold/skills/security-review/languages/python.md +363 -0
- package/scaffold/skills/security-review/references/api-security.md +519 -0
- package/scaffold/skills/security-review/references/authentication.md +353 -0
- package/scaffold/skills/security-review/references/authorization.md +372 -0
- package/scaffold/skills/security-review/references/business-logic.md +443 -0
- package/scaffold/skills/security-review/references/cryptography.md +329 -0
- package/scaffold/skills/security-review/references/csrf.md +398 -0
- package/scaffold/skills/security-review/references/data-protection.md +378 -0
- package/scaffold/skills/security-review/references/deserialization.md +410 -0
- package/scaffold/skills/security-review/references/error-handling.md +436 -0
- package/scaffold/skills/security-review/references/file-security.md +457 -0
- package/scaffold/skills/security-review/references/injection.md +259 -0
- package/scaffold/skills/security-review/references/logging.md +433 -0
- package/scaffold/skills/security-review/references/misconfiguration.md +435 -0
- package/scaffold/skills/security-review/references/modern-threats.md +475 -0
- package/scaffold/skills/security-review/references/ssrf.md +415 -0
- package/scaffold/skills/security-review/references/supply-chain.md +405 -0
- package/scaffold/skills/security-review/references/xss.md +336 -0
- package/scaffold/skills/vercel-react-best-practices/AGENTS.md +3648 -0
- package/scaffold/skills/vercel-react-best-practices/README.md +123 -0
- package/scaffold/skills/vercel-react-best-practices/SKILL.md +146 -0
- package/scaffold/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/scaffold/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/scaffold/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/scaffold/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/scaffold/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/scaffold/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/scaffold/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/scaffold/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/scaffold/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/scaffold/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/scaffold/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/scaffold/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/scaffold/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/scaffold/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/scaffold/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/scaffold/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/scaffold/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/scaffold/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/scaffold/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/scaffold/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/scaffold/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/scaffold/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/scaffold/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/scaffold/skills/webapp-testing/SKILL.md +133 -0
- package/scaffold/skills/webapp-testing/assets/test-helper.js +56 -0
- package/scaffold/en/commands/help.md +0 -289
- package/scaffold/pt-br/commands/help.md +0 -226
package/README.md
CHANGED
|
@@ -10,9 +10,9 @@ npx @brunosps00/dev-workflow init
|
|
|
10
10
|
|
|
11
11
|
This will:
|
|
12
12
|
1. Ask you to select a language (English or Portuguese)
|
|
13
|
-
2. Create
|
|
14
|
-
3. Create
|
|
15
|
-
4. Create
|
|
13
|
+
2. Create `.dw/commands/` with 17 workflow commands
|
|
14
|
+
3. Create `.dw/templates/` with document templates
|
|
15
|
+
4. Create `.dw/rules/` (populated by `/dw-analyze-project`)
|
|
16
16
|
5. Generate skill wrappers for Claude Code, Codex, Copilot, and OpenCode
|
|
17
17
|
6. Configure MCP servers (Context7 + Playwright)
|
|
18
18
|
|
|
@@ -20,89 +20,89 @@ This will:
|
|
|
20
20
|
|
|
21
21
|
### Planning
|
|
22
22
|
|
|
23
|
-
#### `/brainstorm`
|
|
23
|
+
#### `/dw-brainstorm`
|
|
24
24
|
Facilitates structured ideation before opening a PRD or implementation. Explores multiple directions — conservative, balanced, and bold — with trade-offs for each, then converges on concrete next steps. No code is written or files modified.
|
|
25
25
|
|
|
26
|
-
#### `/create-prd`
|
|
27
|
-
Creates a Product Requirements Document by first asking at least 7 clarification questions to fully understand the feature. Generates a structured PRD with numbered functional requirements focused on what and why, saved to
|
|
26
|
+
#### `/dw-create-prd`
|
|
27
|
+
Creates a Product Requirements Document by first asking at least 7 clarification questions to fully understand the feature. Generates a structured PRD with numbered functional requirements focused on what and why, saved to `.dw/spec/prd-[feature-name]/prd.md`.
|
|
28
28
|
|
|
29
|
-
#### `/create-techspec`
|
|
30
|
-
Generates a Technical Specification from an existing PRD after performing web searches and asking at least 7 clarification questions. Evaluates existing libraries vs custom development, defines testing strategy, branch naming, and integration architecture. Output is saved to
|
|
29
|
+
#### `/dw-create-techspec`
|
|
30
|
+
Generates a Technical Specification from an existing PRD after performing web searches and asking at least 7 clarification questions. Evaluates existing libraries vs custom development, defines testing strategy, branch naming, and integration architecture. Output is saved to `.dw/spec/prd-[feature-name]/techspec.md`.
|
|
31
31
|
|
|
32
|
-
#### `/create-tasks`
|
|
32
|
+
#### `/dw-create-tasks`
|
|
33
33
|
Breaks down the PRD and TechSpec into implementable tasks with a target of ~6 tasks per feature (max 2 functional requirements each). Creates individual task files with subtasks and success criteria, ensuring end-to-end coverage across backend, frontend, and functional UI. Requires approval before finalizing.
|
|
34
34
|
|
|
35
35
|
### Execution
|
|
36
36
|
|
|
37
|
-
#### `/run-task`
|
|
37
|
+
#### `/dw-run-task`
|
|
38
38
|
Executes a single task from the task list, implementing code that follows project patterns and includes mandatory unit tests. Performs Level 1 validation (acceptance criteria + tests + standards check) and creates a commit upon completion.
|
|
39
39
|
|
|
40
|
-
#### `/run-plan`
|
|
40
|
+
#### `/dw-run-plan`
|
|
41
41
|
Executes all pending tasks sequentially and automatically, with Level 1 validation after each task. After all tasks are complete, performs a final Level 2 review (PRD compliance) with an interactive corrections cycle until no gaps remain or the user accepts pending items.
|
|
42
42
|
|
|
43
|
-
#### `/bugfix`
|
|
43
|
+
#### `/dw-bugfix`
|
|
44
44
|
Analyzes and fixes bugs with automatic triage that distinguishes between bugs, feature requests, and excessive scope. Asks exactly 3 clarification questions before proposing a solution. Supports Direct mode (executes fix immediately) and Analysis mode (`--analysis`) that generates a document for the techspec/tasks pipeline.
|
|
45
45
|
|
|
46
46
|
### Quality
|
|
47
47
|
|
|
48
|
-
#### `/run-qa`
|
|
48
|
+
#### `/dw-run-qa`
|
|
49
49
|
Validates the implementation against PRD, TechSpec, and Tasks using Playwright MCP for E2E browser automation. Tests happy paths, edge cases, negative flows, and regressions while verifying WCAG 2.2 accessibility compliance. Generates a QA report, documents bugs with screenshot evidence, and detects stub/placeholder pages.
|
|
50
50
|
|
|
51
|
-
#### `/fix-qa`
|
|
51
|
+
#### `/dw-fix-qa`
|
|
52
52
|
Fixes bugs found during QA testing with evidence-driven retesting via Playwright MCP. Runs iterative cycles of identify → fix → retest, updating `QA/bugs.md` and `QA/qa-report.md` with status and retest evidence including screenshots and logs.
|
|
53
53
|
|
|
54
|
-
#### `/review-implementation`
|
|
54
|
+
#### `/dw-review-implementation`
|
|
55
55
|
Compares documented requirements (PRD + TechSpec + Tasks) against actual code as a Level 2 review. Maps each requirement to endpoints and tasks with evidence, identifies gaps, partial implementations, and extra undocumented code. Does not execute fixes — waits for user instruction.
|
|
56
56
|
|
|
57
|
-
#### `/code-review`
|
|
58
|
-
Performs a formal Level 3 code review before PR creation, verifying PRD compliance, code quality (SOLID, DRY, complexity, security), and conformance with project rules in
|
|
57
|
+
#### `/dw-code-review`
|
|
58
|
+
Performs a formal Level 3 code review before PR creation, verifying PRD compliance, code quality (SOLID, DRY, complexity, security), and conformance with project rules in `.dw/rules/`. Runs tests, verifies coverage targets, and generates a persistent report with APPROVED, APPROVED WITH CAVEATS, or REJECTED status.
|
|
59
59
|
|
|
60
|
-
#### `/refactoring-analysis`
|
|
60
|
+
#### `/dw-refactoring-analysis`
|
|
61
61
|
Audits the codebase for code smells and refactoring opportunities using Martin Fowler's catalog. Detects bloaters, change preventers, dispensables, couplers, conditional complexity, and DRY violations, then maps each to a concrete refactoring technique with before/after code sketches. Includes coupling/cohesion metrics, SOLID analysis, and a prioritized action plan (P0-P3).
|
|
62
62
|
|
|
63
63
|
### Git & PR
|
|
64
64
|
|
|
65
|
-
#### `/commit`
|
|
65
|
+
#### `/dw-commit`
|
|
66
66
|
Analyzes pending changes, groups them by feature or logical context, and creates atomic semantic commits following the Conventional Commits format. Uses allowed types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `ci`, `build`.
|
|
67
67
|
|
|
68
|
-
#### `/generate-pr`
|
|
68
|
+
#### `/dw-generate-pr`
|
|
69
69
|
Pushes the branch to remote and creates a Pull Request on GitHub with a structured description. Collects information from the PRD and modified files, runs tests, then generates a PR body with summary, changes grouped by module, test plan, and deploy notes.
|
|
70
70
|
|
|
71
71
|
### Utilities
|
|
72
72
|
|
|
73
|
-
#### `/analyze-project`
|
|
74
|
-
Scans the repository to identify tech stack, architectural patterns, naming conventions, and anti-patterns. Generates structured documentation in
|
|
73
|
+
#### `/dw-analyze-project`
|
|
74
|
+
Scans the repository to identify tech stack, architectural patterns, naming conventions, and anti-patterns. Generates structured documentation in `.dw/rules/` with a project overview (`index.md`) and per-module rule files containing real code examples, which are consumed by other workflow commands.
|
|
75
75
|
|
|
76
|
-
#### `/deep-research`
|
|
76
|
+
#### `/dw-deep-research`
|
|
77
77
|
Conducts multi-source research with citation tracking and verification across quick, standard, deep, and ultradeep modes. Executes parallel information gathering, triangulation, and cross-reference verification through 8+ phases, producing a professional report with complete bibliography.
|
|
78
78
|
|
|
79
|
-
#### `/help`
|
|
80
|
-
Displays the complete guide of available commands, integration flows, and when to use each one. Can be invoked without arguments for the full guide or with a specific command name (e.g., `/help create-prd`) for a detailed section.
|
|
79
|
+
#### `/dw-help`
|
|
80
|
+
Displays the complete guide of available commands, integration flows, and when to use each one. Can be invoked without arguments for the full guide or with a specific command name (e.g., `/dw-help create-prd`) for a detailed section.
|
|
81
81
|
|
|
82
82
|
## Workflow
|
|
83
83
|
|
|
84
84
|
```
|
|
85
|
-
/brainstorm
|
|
85
|
+
/dw-brainstorm
|
|
86
86
|
|
|
|
87
|
-
/create-prd -->
|
|
87
|
+
/dw-create-prd --> .dw/spec/prd-{name}/prd.md
|
|
88
88
|
|
|
|
89
|
-
/create-techspec -->
|
|
89
|
+
/dw-create-techspec --> .dw/spec/prd-{name}/techspec.md
|
|
90
90
|
|
|
|
91
|
-
/create-tasks -->
|
|
91
|
+
/dw-create-tasks --> .dw/spec/prd-{name}/tasks.md + {N}_task.md
|
|
92
92
|
|
|
|
93
|
-
/run-task (or /run-plan for all)
|
|
93
|
+
/dw-run-task (or /dw-run-plan for all)
|
|
94
94
|
|
|
|
95
|
-
/run-qa -->
|
|
95
|
+
/dw-run-qa --> .dw/spec/prd-{name}/QA/
|
|
96
96
|
|
|
|
97
|
-
/fix-qa (if bugs found)
|
|
97
|
+
/dw-fix-qa (if bugs found)
|
|
98
98
|
|
|
|
99
|
-
/review-implementation --> PRD compliance check
|
|
99
|
+
/dw-review-implementation --> PRD compliance check
|
|
100
100
|
|
|
|
101
|
-
/refactoring-analysis -->
|
|
101
|
+
/dw-refactoring-analysis --> .dw/spec/prd-{name}/dw-refactoring-analysis.md (optional)
|
|
102
102
|
|
|
|
103
|
-
/code-review -->
|
|
103
|
+
/dw-code-review --> .dw/spec/prd-{name}/QA/dw-code-review.md
|
|
104
104
|
|
|
|
105
|
-
/commit + /generate-pr
|
|
105
|
+
/dw-commit + /dw-generate-pr
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
## Platform Support
|
|
@@ -114,16 +114,16 @@ Displays the complete guide of available commands, integration flows, and when t
|
|
|
114
114
|
| Copilot | `.agents/skills/` | Full support |
|
|
115
115
|
| OpenCode | `.agents/skills/` | Full support |
|
|
116
116
|
|
|
117
|
-
All wrappers point to
|
|
117
|
+
All wrappers point to `.dw/commands/` as the single source of truth.
|
|
118
118
|
|
|
119
119
|
## Project Structure (after init)
|
|
120
120
|
|
|
121
121
|
```
|
|
122
122
|
your-project/
|
|
123
|
-
├──
|
|
123
|
+
├── .dw/
|
|
124
124
|
│ ├── commands/ # 16 workflow command files
|
|
125
125
|
│ ├── templates/ # Document templates (PRD, TechSpec, etc.)
|
|
126
|
-
│ ├── rules/ # Project-specific rules (run /analyze-project)
|
|
126
|
+
│ ├── rules/ # Project-specific rules (run /dw-analyze-project)
|
|
127
127
|
│ └── spec/ # PRD directories created by commands
|
|
128
128
|
├── .claude/
|
|
129
129
|
│ ├── skills/ # Claude Code wrappers
|
|
@@ -147,9 +147,9 @@ npx @brunosps00/dev-workflow help # Show help
|
|
|
147
147
|
|
|
148
148
|
After running `npx @brunosps00/dev-workflow init`:
|
|
149
149
|
|
|
150
|
-
1. **Run `/analyze-project`** in your AI assistant to generate project rules
|
|
151
|
-
2. **Run `/brainstorm`** to start planning a new feature
|
|
152
|
-
3. **Run `/help`** to see all available commands and workflows
|
|
150
|
+
1. **Run `/dw-analyze-project`** in your AI assistant to generate project rules
|
|
151
|
+
2. **Run `/dw-brainstorm`** to start planning a new feature
|
|
152
|
+
3. **Run `/dw-help`** to see all available commands and workflows
|
|
153
153
|
|
|
154
154
|
## License
|
|
155
155
|
|
package/bin/dev-workflow.js
CHANGED
|
@@ -18,16 +18,17 @@ const HELP_TEXT = `
|
|
|
18
18
|
|
|
19
19
|
Usage:
|
|
20
20
|
npx dev-workflow init [--force] [--lang=en|pt-br]
|
|
21
|
-
npx dev-workflow update [--
|
|
21
|
+
npx dev-workflow update [--lang=en|pt-br]
|
|
22
22
|
npx dev-workflow help
|
|
23
23
|
|
|
24
24
|
Commands:
|
|
25
|
-
init Scaffold
|
|
26
|
-
update Update commands
|
|
25
|
+
init Scaffold .dw/ (commands, templates, references, scripts, skills, rules, MCPs)
|
|
26
|
+
update Update managed files (commands, templates, references, scripts, skills, wrappers, MCPs)
|
|
27
|
+
Preserves: .dw/rules/, .dw/spec/, user data
|
|
27
28
|
help Show this help message
|
|
28
29
|
|
|
29
30
|
Options:
|
|
30
|
-
--force Overwrite existing files
|
|
31
|
+
--force Overwrite existing files (init only; update always overwrites managed files)
|
|
31
32
|
--lang=LANG Set language without prompt (en or pt-br)
|
|
32
33
|
|
|
33
34
|
Examples:
|
|
@@ -35,6 +36,7 @@ const HELP_TEXT = `
|
|
|
35
36
|
npx dev-workflow init --lang=en # English, no prompt
|
|
36
37
|
npx dev-workflow init --lang=pt-br # Portuguese, no prompt
|
|
37
38
|
npx dev-workflow init --force # Overwrite existing files
|
|
39
|
+
npx dev-workflow update --lang=en # Update all managed files to latest version
|
|
38
40
|
`;
|
|
39
41
|
|
|
40
42
|
async function main() {
|
package/lib/constants.js
CHANGED
|
@@ -1,41 +1,43 @@
|
|
|
1
1
|
const COMMANDS = {
|
|
2
2
|
en: [
|
|
3
|
-
{ name: 'analyze-project', description: 'Analyze repository stack, patterns, and conventions to generate project rules' },
|
|
4
|
-
{ name: 'brainstorm', description: 'Explore ideas and directions before starting implementation' },
|
|
5
|
-
{ name: 'bugfix', description: 'Analyze and fix bugs with automatic triage (bug vs feature vs scope)' },
|
|
6
|
-
{ name: 'code-review', description: 'Formal code review (Level 3) with persisted report' },
|
|
7
|
-
{ name: 'commit', description: 'Create semantic commits following Conventional Commits' },
|
|
8
|
-
{ name: 'create-prd', description: 'Create a Product Requirements Document with clarification questions' },
|
|
9
|
-
{ name: 'create-tasks', description: 'Break down PRD and TechSpec into implementable tasks' },
|
|
10
|
-
{ name: 'create-techspec', description: 'Create a Technical Specification from an existing PRD' },
|
|
11
|
-
{ name: 'deep-research', description: 'Conduct multi-source research with citation tracking and verification' },
|
|
12
|
-
{ name: 'fix-qa', description: 'Fix bugs found during QA and retest until stable' },
|
|
13
|
-
{ name: '
|
|
14
|
-
{ name: '
|
|
15
|
-
{ name: '
|
|
16
|
-
{ name: '
|
|
17
|
-
{ name: '
|
|
18
|
-
{ name: 'run-
|
|
19
|
-
{ name: 'run-
|
|
3
|
+
{ name: 'dw-analyze-project', description: 'Analyze repository stack, patterns, and conventions to generate project rules' },
|
|
4
|
+
{ name: 'dw-brainstorm', description: 'Explore ideas and directions before starting implementation' },
|
|
5
|
+
{ name: 'dw-bugfix', description: 'Analyze and fix bugs with automatic triage (bug vs feature vs scope)' },
|
|
6
|
+
{ name: 'dw-code-review', description: 'Formal code review (Level 3) with persisted report' },
|
|
7
|
+
{ name: 'dw-commit', description: 'Create semantic commits following Conventional Commits' },
|
|
8
|
+
{ name: 'dw-create-prd', description: 'Create a Product Requirements Document with clarification questions' },
|
|
9
|
+
{ name: 'dw-create-tasks', description: 'Break down PRD and TechSpec into implementable tasks' },
|
|
10
|
+
{ name: 'dw-create-techspec', description: 'Create a Technical Specification from an existing PRD' },
|
|
11
|
+
{ name: 'dw-deep-research', description: 'Conduct multi-source research with citation tracking and verification' },
|
|
12
|
+
{ name: 'dw-fix-qa', description: 'Fix bugs found during QA and retest until stable' },
|
|
13
|
+
{ name: 'dw-functional-doc', description: 'Generate functional documentation dossier with screen mapping, E2E flows, and Playwright validation' },
|
|
14
|
+
{ name: 'dw-generate-pr', description: 'Generate a Pull Request with structured description' },
|
|
15
|
+
{ name: 'dw-help', description: 'Show complete guide of available commands and workflows' },
|
|
16
|
+
{ name: 'dw-refactoring-analysis', description: 'Audit codebase for code smells and refactoring opportunities with prioritized report' },
|
|
17
|
+
{ name: 'dw-review-implementation', description: 'Review if all PRD requirements were correctly implemented' },
|
|
18
|
+
{ name: 'dw-run-plan', description: 'Execute ALL tasks sequentially until the plan is complete' },
|
|
19
|
+
{ name: 'dw-run-qa', description: 'Run visual QA with browser automation, E2E tests, and accessibility' },
|
|
20
|
+
{ name: 'dw-run-task', description: 'Execute a single task with built-in validation and testing' },
|
|
20
21
|
],
|
|
21
22
|
'pt-br': [
|
|
22
|
-
{ name: 'analyze-project', description: 'Analisa stack, patterns e convencoes do repositorio para gerar regras do projeto' },
|
|
23
|
-
{ name: 'brainstorm', description: 'Explorar ideias e direcoes antes de comecar a implementacao' },
|
|
24
|
-
{ name: 'bugfix', description: 'Analisar e corrigir bugs com triagem automatica (bug vs feature vs escopo)' },
|
|
25
|
-
{ name: 'code-review', description: 'Code review formal (Nivel 3) com relatorio persistido' },
|
|
26
|
-
{ name: 'commit', description: 'Criar commits semanticos seguindo Conventional Commits' },
|
|
27
|
-
{ name: 'create-prd', description: 'Criar um Product Requirements Document com perguntas de clarificacao' },
|
|
28
|
-
{ name: 'create-tasks', description: 'Quebrar PRD e TechSpec em tasks implementaveis' },
|
|
29
|
-
{ name: 'create-techspec', description: 'Criar uma Especificacao Tecnica a partir de um PRD existente' },
|
|
30
|
-
{ name: 'deep-research', description: 'Pesquisa multi-fonte com rastreamento de citacoes e verificacao' },
|
|
31
|
-
{ name: 'fix-qa', description: 'Corrigir bugs encontrados no QA e retestar ate estabilizar' },
|
|
32
|
-
{ name: '
|
|
33
|
-
{ name: '
|
|
34
|
-
{ name: '
|
|
35
|
-
{ name: '
|
|
36
|
-
{ name: '
|
|
37
|
-
{ name: 'run-
|
|
38
|
-
{ name: 'run-
|
|
23
|
+
{ name: 'dw-analyze-project', description: 'Analisa stack, patterns e convencoes do repositorio para gerar regras do projeto' },
|
|
24
|
+
{ name: 'dw-brainstorm', description: 'Explorar ideias e direcoes antes de comecar a implementacao' },
|
|
25
|
+
{ name: 'dw-bugfix', description: 'Analisar e corrigir bugs com triagem automatica (bug vs feature vs escopo)' },
|
|
26
|
+
{ name: 'dw-code-review', description: 'Code review formal (Nivel 3) com relatorio persistido' },
|
|
27
|
+
{ name: 'dw-commit', description: 'Criar commits semanticos seguindo Conventional Commits' },
|
|
28
|
+
{ name: 'dw-create-prd', description: 'Criar um Product Requirements Document com perguntas de clarificacao' },
|
|
29
|
+
{ name: 'dw-create-tasks', description: 'Quebrar PRD e TechSpec em tasks implementaveis' },
|
|
30
|
+
{ name: 'dw-create-techspec', description: 'Criar uma Especificacao Tecnica a partir de um PRD existente' },
|
|
31
|
+
{ name: 'dw-deep-research', description: 'Pesquisa multi-fonte com rastreamento de citacoes e verificacao' },
|
|
32
|
+
{ name: 'dw-fix-qa', description: 'Corrigir bugs encontrados no QA e retestar ate estabilizar' },
|
|
33
|
+
{ name: 'dw-functional-doc', description: 'Gerar dossie funcional com mapeamento de telas, fluxos E2E e validacao com Playwright' },
|
|
34
|
+
{ name: 'dw-generate-pr', description: 'Gerar um Pull Request com descricao estruturada' },
|
|
35
|
+
{ name: 'dw-help', description: 'Mostrar guia completo dos comandos e fluxos disponiveis' },
|
|
36
|
+
{ name: 'dw-refactoring-analysis', description: 'Auditar codebase para code smells e oportunidades de refatoracao com relatorio priorizado' },
|
|
37
|
+
{ name: 'dw-review-implementation', description: 'Revisar se todos os requisitos do PRD foram implementados corretamente' },
|
|
38
|
+
{ name: 'dw-run-plan', description: 'Executar TODAS as tasks sequencialmente ate completar o plano' },
|
|
39
|
+
{ name: 'dw-run-qa', description: 'Executar QA visual com automacao de browser, testes E2E e acessibilidade' },
|
|
40
|
+
{ name: 'dw-run-task', description: 'Executar uma task com validacao e testes integrados' },
|
|
39
41
|
],
|
|
40
42
|
};
|
|
41
43
|
|
|
@@ -47,21 +49,21 @@ name: ${name}
|
|
|
47
49
|
description: ${description}
|
|
48
50
|
---
|
|
49
51
|
|
|
50
|
-
Read and follow ALL instructions in
|
|
52
|
+
Read and follow ALL instructions in \`.dw/commands/${name}.md\`.
|
|
51
53
|
`,
|
|
52
54
|
},
|
|
53
55
|
codex: {
|
|
54
56
|
dir: '.codex/skills',
|
|
55
57
|
wrapperTemplate: (name, description) => `---
|
|
56
58
|
name: ${name}
|
|
57
|
-
description: Imported from
|
|
59
|
+
description: Imported from ./.dw/commands/${name}.md
|
|
58
60
|
---
|
|
59
61
|
<system_instructions>
|
|
60
62
|
This skill redirects to the project's source command.
|
|
61
63
|
|
|
62
|
-
Source of truth:
|
|
64
|
+
Source of truth: \`.dw/commands/${name}.md\`
|
|
63
65
|
|
|
64
|
-
1. Open and read
|
|
66
|
+
1. Open and read \`.dw/commands/${name}.md\` before executing.
|
|
65
67
|
2. Follow the source command entirely.
|
|
66
68
|
3. If divergence exists, the command file prevails.
|
|
67
69
|
</system_instructions>
|
|
@@ -74,10 +76,10 @@ name: ${name}
|
|
|
74
76
|
description: ${description}
|
|
75
77
|
---
|
|
76
78
|
<system_instructions>
|
|
77
|
-
Source of truth:
|
|
79
|
+
Source of truth: \`.dw/commands/${name}.md\`
|
|
78
80
|
|
|
79
81
|
Read and follow the complete instructions in the command file above.
|
|
80
|
-
This wrapper exists for tool discovery. All logic lives in
|
|
82
|
+
This wrapper exists for tool discovery. All logic lives in .dw/commands/.
|
|
81
83
|
</system_instructions>
|
|
82
84
|
`,
|
|
83
85
|
},
|
package/lib/init.js
CHANGED
|
@@ -11,6 +11,10 @@ async function run({ force = false, lang = null, mode = 'init' }) {
|
|
|
11
11
|
const projectRoot = process.cwd();
|
|
12
12
|
const isUpdate = mode === 'update';
|
|
13
13
|
|
|
14
|
+
// In update mode, always overwrite managed files (commands, templates, references, scripts, skills)
|
|
15
|
+
// but never touch user files (rules, spec, MCPs)
|
|
16
|
+
const managedForce = isUpdate ? true : force;
|
|
17
|
+
|
|
14
18
|
console.log(`\n dev-workflow ${isUpdate ? 'update' : 'init'}`);
|
|
15
19
|
console.log(` ${'='.repeat(40)}\n`);
|
|
16
20
|
|
|
@@ -30,8 +34,8 @@ async function run({ force = false, lang = null, mode = 'init' }) {
|
|
|
30
34
|
console.log(' Commands:');
|
|
31
35
|
const cmdResults = copyDir(
|
|
32
36
|
path.join(langDir, 'commands'),
|
|
33
|
-
path.join(projectRoot, '
|
|
34
|
-
|
|
37
|
+
path.join(projectRoot, '.dw', 'commands'),
|
|
38
|
+
managedForce
|
|
35
39
|
);
|
|
36
40
|
totalCreated += cmdResults.created;
|
|
37
41
|
totalSkipped += cmdResults.skipped;
|
|
@@ -42,20 +46,50 @@ async function run({ force = false, lang = null, mode = 'init' }) {
|
|
|
42
46
|
console.log(' Templates:');
|
|
43
47
|
const tplResults = copyDir(
|
|
44
48
|
path.join(langDir, 'templates'),
|
|
45
|
-
path.join(projectRoot, '
|
|
46
|
-
|
|
49
|
+
path.join(projectRoot, '.dw', 'templates'),
|
|
50
|
+
managedForce
|
|
47
51
|
);
|
|
48
52
|
totalCreated += tplResults.created;
|
|
49
53
|
totalSkipped += tplResults.skipped;
|
|
50
54
|
totalOverwritten += tplResults.overwritten;
|
|
51
55
|
console.log(` ${tplResults.created} created, ${tplResults.skipped} skipped, ${tplResults.overwritten} overwritten\n`);
|
|
52
56
|
|
|
53
|
-
//
|
|
57
|
+
// 3.5. Copy references (language-specific)
|
|
58
|
+
const refsSrcDir = path.join(langDir, 'references');
|
|
59
|
+
if (require('fs').existsSync(refsSrcDir)) {
|
|
60
|
+
console.log(' References:');
|
|
61
|
+
const refsResults = copyDir(
|
|
62
|
+
refsSrcDir,
|
|
63
|
+
path.join(projectRoot, '.dw', 'references'),
|
|
64
|
+
managedForce
|
|
65
|
+
);
|
|
66
|
+
totalCreated += refsResults.created;
|
|
67
|
+
totalSkipped += refsResults.skipped;
|
|
68
|
+
totalOverwritten += refsResults.overwritten;
|
|
69
|
+
console.log(` ${refsResults.created} created, ${refsResults.skipped} skipped, ${refsResults.overwritten} overwritten\n`);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// 3.6. Copy scripts (language-independent)
|
|
73
|
+
const scriptsSrcDir = path.join(SCAFFOLD_DIR, 'scripts');
|
|
74
|
+
if (require('fs').existsSync(scriptsSrcDir)) {
|
|
75
|
+
console.log(' Scripts:');
|
|
76
|
+
const scriptsResults = copyDir(
|
|
77
|
+
scriptsSrcDir,
|
|
78
|
+
path.join(projectRoot, '.dw', 'scripts'),
|
|
79
|
+
managedForce
|
|
80
|
+
);
|
|
81
|
+
totalCreated += scriptsResults.created;
|
|
82
|
+
totalSkipped += scriptsResults.skipped;
|
|
83
|
+
totalOverwritten += scriptsResults.overwritten;
|
|
84
|
+
console.log(` ${scriptsResults.created} created, ${scriptsResults.skipped} skipped, ${scriptsResults.overwritten} overwritten\n`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// 4. Create .dw/rules/ with README
|
|
54
88
|
if (!isUpdate) {
|
|
55
89
|
console.log(' Rules:');
|
|
56
|
-
ensureDir(path.join(projectRoot, '
|
|
90
|
+
ensureDir(path.join(projectRoot, '.dw', 'rules'));
|
|
57
91
|
const rulesReadmeSrc = path.join(SCAFFOLD_DIR, 'rules-readme.md');
|
|
58
|
-
const rulesReadmeDest = path.join(projectRoot, '
|
|
92
|
+
const rulesReadmeDest = path.join(projectRoot, '.dw', 'rules', 'README.md');
|
|
59
93
|
const status = writeFile(
|
|
60
94
|
rulesReadmeDest,
|
|
61
95
|
require('fs').readFileSync(rulesReadmeSrc, 'utf-8'),
|
|
@@ -67,34 +101,47 @@ async function run({ force = false, lang = null, mode = 'init' }) {
|
|
|
67
101
|
console.log();
|
|
68
102
|
}
|
|
69
103
|
|
|
70
|
-
// 5. Create
|
|
104
|
+
// 5. Create .dw/spec/
|
|
71
105
|
if (!isUpdate) {
|
|
72
|
-
ensureDir(path.join(projectRoot, '
|
|
106
|
+
ensureDir(path.join(projectRoot, '.dw', 'spec'));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// 5.5. Copy bundled skills to .agents/skills/
|
|
110
|
+
const skillsSrcDir = path.join(SCAFFOLD_DIR, 'skills');
|
|
111
|
+
if (require('fs').existsSync(skillsSrcDir)) {
|
|
112
|
+
console.log(' Bundled skills:');
|
|
113
|
+
const skillsResults = copyDir(
|
|
114
|
+
skillsSrcDir,
|
|
115
|
+
path.join(projectRoot, '.agents', 'skills'),
|
|
116
|
+
managedForce
|
|
117
|
+
);
|
|
118
|
+
totalCreated += skillsResults.created;
|
|
119
|
+
totalSkipped += skillsResults.skipped;
|
|
120
|
+
totalOverwritten += skillsResults.overwritten;
|
|
121
|
+
console.log(` ${skillsResults.created} created, ${skillsResults.skipped} skipped, ${skillsResults.overwritten} overwritten\n`);
|
|
73
122
|
}
|
|
74
123
|
|
|
75
124
|
// 6-8. Generate platform wrappers
|
|
76
125
|
console.log(' Platform wrappers:');
|
|
77
|
-
const wrapperResults = generateWrappers(projectRoot, commands,
|
|
126
|
+
const wrapperResults = generateWrappers(projectRoot, commands, managedForce);
|
|
78
127
|
totalCreated += wrapperResults.created;
|
|
79
128
|
totalSkipped += wrapperResults.skipped;
|
|
80
129
|
totalOverwritten += wrapperResults.overwritten;
|
|
81
130
|
console.log();
|
|
82
131
|
|
|
83
|
-
// 9. Install MCPs
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
console.log(` ${mcpResults.added} configured, ${mcpResults.skipped} already present\n`);
|
|
88
|
-
}
|
|
132
|
+
// 9. Install MCPs (always, including updates)
|
|
133
|
+
console.log(' MCP Servers:');
|
|
134
|
+
const mcpResults = installMCPs(projectRoot);
|
|
135
|
+
console.log(` ${mcpResults.added} configured, ${mcpResults.skipped} already present\n`);
|
|
89
136
|
|
|
90
137
|
// 10. Summary
|
|
91
138
|
console.log(` ${'='.repeat(40)}`);
|
|
92
139
|
console.log(` Done! ${totalCreated} created, ${totalSkipped} skipped, ${totalOverwritten} overwritten`);
|
|
93
140
|
console.log();
|
|
94
141
|
console.log(' Next steps:');
|
|
95
|
-
console.log(' 1. Run /analyze-project to generate project rules');
|
|
96
|
-
console.log(' 2. Run /brainstorm to start a new feature');
|
|
97
|
-
console.log(' 3. Run /help to see all available commands');
|
|
142
|
+
console.log(' 1. Run /dw-analyze-project to generate project rules');
|
|
143
|
+
console.log(' 2. Run /dw-brainstorm to start a new feature');
|
|
144
|
+
console.log(' 3. Run /dw-help to see all available commands');
|
|
98
145
|
console.log();
|
|
99
146
|
}
|
|
100
147
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brunosps00/dev-workflow",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "AI-driven development workflow commands for any project. Scaffolds a complete PRD-to-PR pipeline with multi-platform AI assistant support.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"dev-workflow": "./bin/dev-workflow.js"
|