bmad-method 4.37.0 → 4.39.1

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 (251) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
  3. package/.github/workflows/discord.yaml +11 -2
  4. package/.github/workflows/format-check.yaml +42 -0
  5. package/.github/workflows/manual-release.yaml +173 -0
  6. package/.husky/pre-commit +3 -0
  7. package/.vscode/settings.json +26 -1
  8. package/CHANGELOG.md +2 -23
  9. package/README.md +2 -0
  10. package/bmad-core/agent-teams/team-all.yaml +1 -1
  11. package/bmad-core/agents/analyst.md +16 -15
  12. package/bmad-core/agents/architect.md +11 -11
  13. package/bmad-core/agents/bmad-master.md +23 -22
  14. package/bmad-core/agents/bmad-orchestrator.md +13 -17
  15. package/bmad-core/agents/dev.md +14 -11
  16. package/bmad-core/agents/pm.md +15 -14
  17. package/bmad-core/agents/po.md +9 -8
  18. package/bmad-core/agents/qa.md +42 -22
  19. package/bmad-core/agents/sm.md +7 -6
  20. package/bmad-core/agents/ux-expert.md +6 -5
  21. package/bmad-core/core-config.yaml +2 -0
  22. package/bmad-core/data/bmad-kb.md +1 -1
  23. package/bmad-core/data/test-levels-framework.md +146 -0
  24. package/bmad-core/data/test-priorities-matrix.md +172 -0
  25. package/bmad-core/tasks/apply-qa-fixes.md +148 -0
  26. package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
  27. package/bmad-core/tasks/nfr-assess.md +343 -0
  28. package/bmad-core/tasks/qa-gate.md +161 -0
  29. package/bmad-core/tasks/review-story.md +234 -74
  30. package/bmad-core/tasks/risk-profile.md +353 -0
  31. package/bmad-core/tasks/test-design.md +174 -0
  32. package/bmad-core/tasks/trace-requirements.md +264 -0
  33. package/bmad-core/templates/architecture-tmpl.yaml +49 -49
  34. package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
  35. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
  36. package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
  37. package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
  38. package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
  39. package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
  40. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
  41. package/bmad-core/templates/market-research-tmpl.yaml +2 -2
  42. package/bmad-core/templates/prd-tmpl.yaml +9 -9
  43. package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
  44. package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
  45. package/bmad-core/templates/story-tmpl.yaml +12 -12
  46. package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
  47. package/bmad-core/workflows/brownfield-service.yaml +1 -1
  48. package/bmad-core/workflows/brownfield-ui.yaml +1 -1
  49. package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
  50. package/bmad-core/workflows/greenfield-service.yaml +1 -1
  51. package/bmad-core/workflows/greenfield-ui.yaml +1 -1
  52. package/common/utils/bmad-doc-template.md +5 -5
  53. package/dist/agents/analyst.txt +1086 -1079
  54. package/dist/agents/architect.txt +1534 -1526
  55. package/dist/agents/bmad-master.txt +646 -632
  56. package/dist/agents/bmad-orchestrator.txt +40 -18
  57. package/dist/agents/dev.txt +158 -19
  58. package/dist/agents/pm.txt +1082 -1107
  59. package/dist/agents/po.txt +314 -332
  60. package/dist/agents/qa.txt +1754 -151
  61. package/dist/agents/sm.txt +88 -98
  62. package/dist/agents/ux-expert.txt +80 -87
  63. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -146
  64. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -86
  65. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -48
  66. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +1903 -1941
  67. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +15 -50
  68. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -195
  69. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -15
  70. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -37
  71. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +2660 -2752
  72. package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +871 -0
  73. package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +78 -0
  74. package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +839 -0
  75. package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
  76. package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +861 -0
  77. package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +796 -0
  78. package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +927 -0
  79. package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +842 -0
  80. package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1126 -0
  81. package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +864 -0
  82. package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +5917 -0
  83. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -27
  84. package/dist/teams/team-all.txt +5541 -3768
  85. package/dist/teams/team-fullstack.txt +3014 -2987
  86. package/dist/teams/team-ide-minimal.txt +2219 -469
  87. package/dist/teams/team-no-ui.txt +2993 -2966
  88. package/docs/enhanced-ide-development-workflow.md +220 -15
  89. package/docs/user-guide.md +271 -18
  90. package/docs/versioning-and-releases.md +122 -44
  91. package/docs/working-in-the-brownfield.md +264 -31
  92. package/eslint.config.mjs +119 -0
  93. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
  94. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
  95. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
  96. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
  97. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
  98. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
  99. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
  100. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
  101. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  102. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  103. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
  104. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
  105. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
  106. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
  107. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
  108. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
  109. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
  110. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  111. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  112. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
  113. package/expansion-packs/bmad-creative-writing/README.md +132 -0
  114. package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +19 -0
  115. package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +91 -0
  116. package/expansion-packs/bmad-creative-writing/agents/book-critic.md +35 -0
  117. package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +90 -0
  118. package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +41 -0
  119. package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +89 -0
  120. package/expansion-packs/bmad-creative-writing/agents/editor.md +90 -0
  121. package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +92 -0
  122. package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +90 -0
  123. package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +92 -0
  124. package/expansion-packs/bmad-creative-writing/agents/world-builder.md +91 -0
  125. package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +16 -0
  126. package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +16 -0
  127. package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +16 -0
  128. package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +16 -0
  129. package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +15 -0
  130. package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +16 -0
  131. package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +16 -0
  132. package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +15 -0
  133. package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +15 -0
  134. package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +16 -0
  135. package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +16 -0
  136. package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +18 -0
  137. package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +16 -0
  138. package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +16 -0
  139. package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +16 -0
  140. package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +16 -0
  141. package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +49 -0
  142. package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +16 -0
  143. package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +16 -0
  144. package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +16 -0
  145. package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +15 -0
  146. package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +16 -0
  147. package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +16 -0
  148. package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +16 -0
  149. package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +16 -0
  150. package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +16 -0
  151. package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +16 -0
  152. package/expansion-packs/bmad-creative-writing/config.yaml +11 -0
  153. package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +197 -0
  154. package/expansion-packs/bmad-creative-writing/data/story-structures.md +58 -0
  155. package/expansion-packs/bmad-creative-writing/docs/brief.md +183 -0
  156. package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +117 -0
  157. package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +16 -0
  158. package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +55 -0
  159. package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +22 -0
  160. package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +16 -0
  161. package/expansion-packs/bmad-creative-writing/tasks/build-world.md +17 -0
  162. package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +15 -0
  163. package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +101 -0
  164. package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +19 -0
  165. package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +19 -0
  166. package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +17 -0
  167. package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +93 -0
  168. package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +16 -0
  169. package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +16 -0
  170. package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +16 -0
  171. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +18 -0
  172. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +19 -0
  173. package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +16 -0
  174. package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +18 -0
  175. package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +16 -0
  176. package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +17 -0
  177. package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +16 -0
  178. package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +15 -0
  179. package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +16 -0
  180. package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +51 -0
  181. package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +96 -0
  182. package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +81 -0
  183. package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
  184. package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +97 -0
  185. package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +77 -0
  186. package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +54 -0
  187. package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
  188. package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +88 -0
  189. package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +176 -0
  190. package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +58 -0
  191. package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +51 -0
  192. package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
  193. package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +92 -0
  194. package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +86 -0
  195. package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +79 -0
  196. package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +65 -0
  197. package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
  198. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
  199. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
  200. package/package.json +62 -39
  201. package/prettier.config.mjs +32 -0
  202. package/sync-version.sh +23 -0
  203. package/tools/bmad-npx-wrapper.js +10 -10
  204. package/tools/builders/web-builder.js +124 -130
  205. package/tools/bump-all-versions.js +42 -33
  206. package/tools/bump-expansion-version.js +23 -16
  207. package/tools/cli.js +10 -12
  208. package/tools/flattener/aggregate.js +10 -10
  209. package/tools/flattener/binary.js +44 -17
  210. package/tools/flattener/discovery.js +19 -18
  211. package/tools/flattener/files.js +6 -6
  212. package/tools/flattener/ignoreRules.js +125 -125
  213. package/tools/flattener/main.js +426 -70
  214. package/tools/flattener/projectRoot.js +186 -25
  215. package/tools/flattener/prompts.js +9 -9
  216. package/tools/flattener/stats.helpers.js +395 -0
  217. package/tools/flattener/stats.js +64 -14
  218. package/tools/flattener/test-matrix.js +413 -0
  219. package/tools/flattener/xml.js +33 -31
  220. package/tools/installer/bin/bmad.js +156 -113
  221. package/tools/installer/config/ide-agent-config.yaml +1 -1
  222. package/tools/installer/config/install.config.yaml +13 -3
  223. package/tools/installer/lib/config-loader.js +46 -42
  224. package/tools/installer/lib/file-manager.js +91 -113
  225. package/tools/installer/lib/ide-base-setup.js +57 -56
  226. package/tools/installer/lib/ide-setup.js +545 -399
  227. package/tools/installer/lib/installer.js +875 -714
  228. package/tools/installer/lib/memory-profiler.js +54 -53
  229. package/tools/installer/lib/module-manager.js +19 -15
  230. package/tools/installer/lib/resource-locator.js +26 -28
  231. package/tools/installer/package.json +19 -19
  232. package/tools/lib/dependency-resolver.js +26 -30
  233. package/tools/lib/yaml-utils.js +7 -7
  234. package/tools/preview-release-notes.js +66 -0
  235. package/tools/shared/bannerArt.js +3 -3
  236. package/tools/sync-installer-version.js +7 -9
  237. package/tools/update-expansion-version.js +14 -15
  238. package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
  239. package/tools/version-bump.js +41 -26
  240. package/tools/yaml-format.js +56 -43
  241. package/.github/workflows/release.yaml +0 -60
  242. package/.releaserc.json +0 -21
  243. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
  244. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
  245. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
  246. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
  247. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
  248. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
  249. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
  250. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
  251. package/tools/semantic-release-sync-installer.js +0 -30
@@ -1,147 +1,147 @@
1
- const fs = require("fs-extra");
2
- const path = require("node:path");
3
- const ignore = require("ignore");
1
+ const fs = require('fs-extra');
2
+ const path = require('node:path');
3
+ const ignore = require('ignore');
4
4
 
5
5
  // Central default ignore patterns for discovery and filtering.
6
6
  // These complement .gitignore and are applied regardless of VCS presence.
7
7
  const DEFAULT_PATTERNS = [
8
8
  // Project/VCS
9
- "**/.bmad-core/**",
10
- "**/.git/**",
11
- "**/.svn/**",
12
- "**/.hg/**",
13
- "**/.bzr/**",
9
+ '**/.bmad-core/**',
10
+ '**/.git/**',
11
+ '**/.svn/**',
12
+ '**/.hg/**',
13
+ '**/.bzr/**',
14
14
  // Package/build outputs
15
- "**/node_modules/**",
16
- "**/bower_components/**",
17
- "**/vendor/**",
18
- "**/packages/**",
19
- "**/build/**",
20
- "**/dist/**",
21
- "**/out/**",
22
- "**/target/**",
23
- "**/bin/**",
24
- "**/obj/**",
25
- "**/release/**",
26
- "**/debug/**",
15
+ '**/node_modules/**',
16
+ '**/bower_components/**',
17
+ '**/vendor/**',
18
+ '**/packages/**',
19
+ '**/build/**',
20
+ '**/dist/**',
21
+ '**/out/**',
22
+ '**/target/**',
23
+ '**/bin/**',
24
+ '**/obj/**',
25
+ '**/release/**',
26
+ '**/debug/**',
27
27
  // Environments
28
- "**/.venv/**",
29
- "**/venv/**",
30
- "**/.virtualenv/**",
31
- "**/virtualenv/**",
32
- "**/env/**",
28
+ '**/.venv/**',
29
+ '**/venv/**',
30
+ '**/.virtualenv/**',
31
+ '**/virtualenv/**',
32
+ '**/env/**',
33
33
  // Logs & coverage
34
- "**/*.log",
35
- "**/npm-debug.log*",
36
- "**/yarn-debug.log*",
37
- "**/yarn-error.log*",
38
- "**/lerna-debug.log*",
39
- "**/coverage/**",
40
- "**/.nyc_output/**",
41
- "**/.coverage/**",
42
- "**/test-results/**",
34
+ '**/*.log',
35
+ '**/npm-debug.log*',
36
+ '**/yarn-debug.log*',
37
+ '**/yarn-error.log*',
38
+ '**/lerna-debug.log*',
39
+ '**/coverage/**',
40
+ '**/.nyc_output/**',
41
+ '**/.coverage/**',
42
+ '**/test-results/**',
43
43
  // Caches & temp
44
- "**/.cache/**",
45
- "**/.tmp/**",
46
- "**/.temp/**",
47
- "**/tmp/**",
48
- "**/temp/**",
49
- "**/.sass-cache/**",
44
+ '**/.cache/**',
45
+ '**/.tmp/**',
46
+ '**/.temp/**',
47
+ '**/tmp/**',
48
+ '**/temp/**',
49
+ '**/.sass-cache/**',
50
50
  // IDE/editor
51
- "**/.vscode/**",
52
- "**/.idea/**",
53
- "**/*.swp",
54
- "**/*.swo",
55
- "**/*~",
56
- "**/.project",
57
- "**/.classpath",
58
- "**/.settings/**",
59
- "**/*.sublime-project",
60
- "**/*.sublime-workspace",
51
+ '**/.vscode/**',
52
+ '**/.idea/**',
53
+ '**/*.swp',
54
+ '**/*.swo',
55
+ '**/*~',
56
+ '**/.project',
57
+ '**/.classpath',
58
+ '**/.settings/**',
59
+ '**/*.sublime-project',
60
+ '**/*.sublime-workspace',
61
61
  // Lockfiles
62
- "**/package-lock.json",
63
- "**/yarn.lock",
64
- "**/pnpm-lock.yaml",
65
- "**/composer.lock",
66
- "**/Pipfile.lock",
62
+ '**/package-lock.json',
63
+ '**/yarn.lock',
64
+ '**/pnpm-lock.yaml',
65
+ '**/composer.lock',
66
+ '**/Pipfile.lock',
67
67
  // Python/Java/compiled artifacts
68
- "**/*.pyc",
69
- "**/*.pyo",
70
- "**/*.pyd",
71
- "**/__pycache__/**",
72
- "**/*.class",
73
- "**/*.jar",
74
- "**/*.war",
75
- "**/*.ear",
76
- "**/*.o",
77
- "**/*.so",
78
- "**/*.dll",
79
- "**/*.exe",
68
+ '**/*.pyc',
69
+ '**/*.pyo',
70
+ '**/*.pyd',
71
+ '**/__pycache__/**',
72
+ '**/*.class',
73
+ '**/*.jar',
74
+ '**/*.war',
75
+ '**/*.ear',
76
+ '**/*.o',
77
+ '**/*.so',
78
+ '**/*.dll',
79
+ '**/*.exe',
80
80
  // System junk
81
- "**/lib64/**",
82
- "**/.venv/lib64/**",
83
- "**/venv/lib64/**",
84
- "**/_site/**",
85
- "**/.jekyll-cache/**",
86
- "**/.jekyll-metadata",
87
- "**/.DS_Store",
88
- "**/.DS_Store?",
89
- "**/._*",
90
- "**/.Spotlight-V100/**",
91
- "**/.Trashes/**",
92
- "**/ehthumbs.db",
93
- "**/Thumbs.db",
94
- "**/desktop.ini",
81
+ '**/lib64/**',
82
+ '**/.venv/lib64/**',
83
+ '**/venv/lib64/**',
84
+ '**/_site/**',
85
+ '**/.jekyll-cache/**',
86
+ '**/.jekyll-metadata',
87
+ '**/.DS_Store',
88
+ '**/.DS_Store?',
89
+ '**/._*',
90
+ '**/.Spotlight-V100/**',
91
+ '**/.Trashes/**',
92
+ '**/ehthumbs.db',
93
+ '**/Thumbs.db',
94
+ '**/desktop.ini',
95
95
  // XML outputs
96
- "**/flattened-codebase.xml",
97
- "**/repomix-output.xml",
96
+ '**/flattened-codebase.xml',
97
+ '**/repomix-output.xml',
98
98
  // Images, media, fonts, archives, docs, dylibs
99
- "**/*.jpg",
100
- "**/*.jpeg",
101
- "**/*.png",
102
- "**/*.gif",
103
- "**/*.bmp",
104
- "**/*.ico",
105
- "**/*.svg",
106
- "**/*.pdf",
107
- "**/*.doc",
108
- "**/*.docx",
109
- "**/*.xls",
110
- "**/*.xlsx",
111
- "**/*.ppt",
112
- "**/*.pptx",
113
- "**/*.zip",
114
- "**/*.tar",
115
- "**/*.gz",
116
- "**/*.rar",
117
- "**/*.7z",
118
- "**/*.dylib",
119
- "**/*.mp3",
120
- "**/*.mp4",
121
- "**/*.avi",
122
- "**/*.mov",
123
- "**/*.wav",
124
- "**/*.ttf",
125
- "**/*.otf",
126
- "**/*.woff",
127
- "**/*.woff2",
99
+ '**/*.jpg',
100
+ '**/*.jpeg',
101
+ '**/*.png',
102
+ '**/*.gif',
103
+ '**/*.bmp',
104
+ '**/*.ico',
105
+ '**/*.svg',
106
+ '**/*.pdf',
107
+ '**/*.doc',
108
+ '**/*.docx',
109
+ '**/*.xls',
110
+ '**/*.xlsx',
111
+ '**/*.ppt',
112
+ '**/*.pptx',
113
+ '**/*.zip',
114
+ '**/*.tar',
115
+ '**/*.gz',
116
+ '**/*.rar',
117
+ '**/*.7z',
118
+ '**/*.dylib',
119
+ '**/*.mp3',
120
+ '**/*.mp4',
121
+ '**/*.avi',
122
+ '**/*.mov',
123
+ '**/*.wav',
124
+ '**/*.ttf',
125
+ '**/*.otf',
126
+ '**/*.woff',
127
+ '**/*.woff2',
128
128
  // Env files
129
- "**/.env",
130
- "**/.env.*",
131
- "**/*.env",
129
+ '**/.env',
130
+ '**/.env.*',
131
+ '**/*.env',
132
132
  // Misc
133
- "**/junit.xml",
133
+ '**/junit.xml',
134
134
  ];
135
135
 
136
136
  async function readIgnoreFile(filePath) {
137
137
  try {
138
- if (!await fs.pathExists(filePath)) return [];
139
- const content = await fs.readFile(filePath, "utf8");
138
+ if (!(await fs.pathExists(filePath))) return [];
139
+ const content = await fs.readFile(filePath, 'utf8');
140
140
  return content
141
- .split("\n")
141
+ .split('\n')
142
142
  .map((l) => l.trim())
143
- .filter((l) => l && !l.startsWith("#"));
144
- } catch (err) {
143
+ .filter((l) => l && !l.startsWith('#'));
144
+ } catch {
145
145
  return [];
146
146
  }
147
147
  }
@@ -153,18 +153,18 @@ async function parseGitignore(gitignorePath) {
153
153
 
154
154
  async function loadIgnore(rootDir, extraPatterns = []) {
155
155
  const ig = ignore();
156
- const gitignorePath = path.join(rootDir, ".gitignore");
156
+ const gitignorePath = path.join(rootDir, '.gitignore');
157
157
  const patterns = [
158
- ...await readIgnoreFile(gitignorePath),
158
+ ...(await readIgnoreFile(gitignorePath)),
159
159
  ...DEFAULT_PATTERNS,
160
160
  ...extraPatterns,
161
161
  ];
162
162
  // De-duplicate
163
- const unique = Array.from(new Set(patterns.map((p) => String(p))));
163
+ const unique = [...new Set(patterns.map(String))];
164
164
  ig.add(unique);
165
165
 
166
166
  // Include-only filter: return true if path should be included
167
- const filter = (relativePath) => !ig.ignores(relativePath.replace(/\\/g, "/"));
167
+ const filter = (relativePath) => !ig.ignores(relativePath.replaceAll('\\', '/'));
168
168
 
169
169
  return { ig, filter, patterns: unique };
170
170
  }