wizz-method 1.0.0 → 1.0.2

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 (709) hide show
  1. package/.claude/settings.local.json +8 -0
  2. package/.claude-plugin/marketplace.json +45 -45
  3. package/build/artifacts/llms-full.txt +476 -476
  4. package/build/site/404.html +3 -3
  5. package/build/site/explanation/advanced-elicitation/index.html +4 -4
  6. package/build/site/explanation/adversarial-review/index.html +5 -5
  7. package/build/site/explanation/analysis-phase/index.html +5 -5
  8. package/build/site/explanation/brainstorming/index.html +5 -5
  9. package/build/site/explanation/checkpoint-preview/index.html +6 -6
  10. package/build/site/explanation/established-projects-faq/index.html +5 -5
  11. package/build/site/explanation/forensic-investigation/index.html +6 -6
  12. package/build/site/explanation/named-agents/index.html +16 -16
  13. package/build/site/explanation/party-mode/index.html +9 -9
  14. package/build/site/explanation/preventing-agent-conflicts/index.html +5 -5
  15. package/build/site/explanation/project-context/index.html +19 -19
  16. package/build/site/explanation/quick-dev/index.html +6 -6
  17. package/build/site/explanation/web-bundles/index.html +10 -10
  18. package/build/site/explanation/why-solutioning-matters/index.html +5 -5
  19. package/build/site/how-to/customize-bmad/index.html +48 -48
  20. package/build/site/how-to/established-projects/index.html +17 -17
  21. package/build/site/how-to/expand-bmad-for-your-org/index.html +43 -43
  22. package/build/site/how-to/get-answers-about-bmad/index.html +14 -14
  23. package/build/site/how-to/install-bmad/index.html +23 -23
  24. package/build/site/how-to/install-custom-modules/index.html +17 -17
  25. package/build/site/how-to/non-interactive-installation/index.html +4 -4
  26. package/build/site/how-to/project-context/index.html +10 -10
  27. package/build/site/how-to/quick-fixes/index.html +8 -8
  28. package/build/site/how-to/shard-large-documents/index.html +8 -8
  29. package/build/site/how-to/upgrade-to-v6/index.html +11 -11
  30. package/build/site/how-to/use-web-bundles/index.html +6 -6
  31. package/build/site/index.html +28 -28
  32. package/build/site/llms-full.txt +476 -476
  33. package/build/site/pagefind/fragment/en_175de32.pf_fragment +0 -0
  34. package/build/site/pagefind/fragment/en_24258fb.pf_fragment +0 -0
  35. package/build/site/pagefind/fragment/en_24f53a6.pf_fragment +0 -0
  36. package/build/site/pagefind/fragment/en_27ba8f9.pf_fragment +0 -0
  37. package/build/site/pagefind/fragment/en_2b5aa5c.pf_fragment +0 -0
  38. package/build/site/pagefind/fragment/en_41cab15.pf_fragment +0 -0
  39. package/build/site/pagefind/fragment/en_49047e0.pf_fragment +0 -0
  40. package/build/site/pagefind/fragment/en_4a187d2.pf_fragment +0 -0
  41. package/build/site/pagefind/fragment/{en_22b33a0.pf_fragment → en_514725b.pf_fragment} +0 -0
  42. package/build/site/pagefind/fragment/en_56b1635.pf_fragment +0 -0
  43. package/build/site/pagefind/fragment/en_5ad92a9.pf_fragment +0 -0
  44. package/build/site/pagefind/fragment/en_7aea5bc.pf_fragment +0 -0
  45. package/build/site/pagefind/fragment/en_81bcd7f.pf_fragment +0 -0
  46. package/build/site/pagefind/fragment/en_82aec61.pf_fragment +0 -0
  47. package/build/site/pagefind/fragment/en_85dcebf.pf_fragment +0 -0
  48. package/build/site/pagefind/fragment/en_89a1a7a.pf_fragment +0 -0
  49. package/build/site/pagefind/fragment/en_8ade291.pf_fragment +0 -0
  50. package/build/site/pagefind/fragment/en_8c11f8a.pf_fragment +0 -0
  51. package/build/site/pagefind/fragment/en_8c1bde3.pf_fragment +0 -0
  52. package/build/site/pagefind/fragment/en_938e9c4.pf_fragment +0 -0
  53. package/build/site/pagefind/fragment/en_94bfc21.pf_fragment +0 -0
  54. package/build/site/pagefind/fragment/en_ab62b53.pf_fragment +0 -0
  55. package/build/site/pagefind/fragment/en_b0d23ee.pf_fragment +0 -0
  56. package/build/site/pagefind/fragment/en_b51d75b.pf_fragment +0 -0
  57. package/build/site/pagefind/fragment/en_bb113eb.pf_fragment +0 -0
  58. package/build/site/pagefind/fragment/en_c9fea21.pf_fragment +0 -0
  59. package/build/site/pagefind/fragment/en_cdd772f.pf_fragment +0 -0
  60. package/build/site/pagefind/fragment/en_cefed6a.pf_fragment +0 -0
  61. package/build/site/pagefind/fragment/en_da351b7.pf_fragment +0 -0
  62. package/build/site/pagefind/fragment/en_e07e982.pf_fragment +0 -0
  63. package/build/site/pagefind/fragment/en_ea289f9.pf_fragment +0 -0
  64. package/build/site/pagefind/fragment/en_f1c3711.pf_fragment +0 -0
  65. package/build/site/pagefind/fragment/en_f4389af.pf_fragment +0 -0
  66. package/build/site/pagefind/fragment/en_f52c9f9.pf_fragment +0 -0
  67. package/build/site/pagefind/index/en_82c64dc.pf_index +0 -0
  68. package/build/site/pagefind/index/en_d0dd3c7.pf_index +0 -0
  69. package/build/site/pagefind/index/en_e890f88.pf_index +0 -0
  70. package/build/site/pagefind/pagefind-entry.json +1 -1
  71. package/build/site/pagefind/pagefind.en_ee1b8a17c8.pf_meta +0 -0
  72. package/build/site/reference/agents/index.html +8 -8
  73. package/build/site/reference/commands/index.html +17 -17
  74. package/build/site/reference/core-tools/index.html +28 -28
  75. package/build/site/reference/modules/index.html +8 -8
  76. package/build/site/reference/testing/index.html +10 -10
  77. package/build/site/reference/workflow-map/index.html +18 -18
  78. package/build/site/roadmap/index.html +8 -8
  79. package/build/site/sitemap-0.xml +1 -1
  80. package/build/site/tutorials/getting-started/index.html +61 -61
  81. package/build/site/workflow-map-diagram.html +2 -2
  82. package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/evals.json +31 -31
  83. package/package.json +1 -1
  84. package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/SKILL.md +5 -5
  85. package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/customize.toml +1 -1
  86. package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/domain-steps/step-06-research-synthesis.md +1 -1
  87. package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/SKILL.md +5 -5
  88. package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/customize.toml +1 -1
  89. package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/steps/step-06-research-completion.md +1 -1
  90. package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/SKILL.md +5 -5
  91. package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/customize.toml +1 -1
  92. package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/technical-steps/step-06-research-synthesis.md +1 -1
  93. package/src/bmm-skills/1-analysis/{bmad-agent-analyst → wizz-agent-analyst}/SKILL.md +7 -7
  94. package/src/bmm-skills/1-analysis/{bmad-agent-analyst → wizz-agent-analyst}/customize.toml +13 -7
  95. package/src/bmm-skills/1-analysis/{bmad-agent-tech-writer → wizz-agent-tech-writer}/SKILL.md +7 -7
  96. package/src/bmm-skills/1-analysis/{bmad-agent-tech-writer → wizz-agent-tech-writer}/customize.toml +1 -1
  97. package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/SKILL.md +5 -5
  98. package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/customize.toml +1 -1
  99. package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/workflows/deep-dive-instructions.md +1 -1
  100. package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/workflows/deep-dive-workflow.md +1 -1
  101. package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/workflows/full-scan-instructions.md +1 -1
  102. package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/workflows/full-scan-workflow.md +1 -1
  103. package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/SKILL.md +6 -6
  104. package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/customize.toml +1 -1
  105. package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/references/verdict.md +1 -1
  106. package/src/bmm-skills/1-analysis/{bmad-product-brief → wizz-product-brief}/SKILL.md +6 -6
  107. package/src/bmm-skills/1-analysis/{bmad-product-brief → wizz-product-brief}/customize.toml +8 -8
  108. package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +74 -0
  109. package/src/bmm-skills/2-plan-workflows/{bmad-agent-pm → wizz-agent-pm}/SKILL.md +7 -7
  110. package/src/bmm-skills/2-plan-workflows/{bmad-agent-pm → wizz-agent-pm}/customize.toml +5 -4
  111. package/src/bmm-skills/2-plan-workflows/{bmad-agent-ux-designer → wizz-agent-ux-designer}/SKILL.md +7 -7
  112. package/src/bmm-skills/2-plan-workflows/{bmad-agent-ux-designer → wizz-agent-ux-designer}/customize.toml +2 -1
  113. package/src/bmm-skills/2-plan-workflows/{bmad-create-prd → wizz-create-prd}/SKILL.md +11 -11
  114. package/src/bmm-skills/2-plan-workflows/{bmad-create-prd → wizz-create-prd}/customize.toml +1 -1
  115. package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/SKILL.md +30 -0
  116. package/src/bmm-skills/2-plan-workflows/{bmad-edit-prd → wizz-edit-prd}/customize.toml +2 -2
  117. package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/SKILL.md +5 -5
  118. package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/assets/prd-template.md +1 -1
  119. package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/customize.toml +8 -8
  120. package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/references/headless.md +1 -1
  121. package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/SKILL.md +5 -5
  122. package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/customize.toml +5 -5
  123. package/src/bmm-skills/2-plan-workflows/{bmad-validate-prd → wizz-validate-prd}/SKILL.md +11 -11
  124. package/src/bmm-skills/2-plan-workflows/{bmad-validate-prd → wizz-validate-prd}/customize.toml +2 -2
  125. package/src/bmm-skills/3-solutioning/{bmad-agent-architect → wizz-agent-architect}/SKILL.md +7 -7
  126. package/src/bmm-skills/3-solutioning/{bmad-agent-architect → wizz-agent-architect}/customize.toml +3 -2
  127. package/src/bmm-skills/3-solutioning/{bmad-architecture → wizz-architecture}/SKILL.md +11 -11
  128. package/src/bmm-skills/3-solutioning/{bmad-architecture → wizz-architecture}/customize.toml +6 -6
  129. package/src/bmm-skills/3-solutioning/{bmad-architecture → wizz-architecture}/references/headless.md +1 -1
  130. package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/SKILL.md +5 -5
  131. package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/customize.toml +1 -1
  132. package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/steps/step-06-final-assessment.md +2 -2
  133. package/src/bmm-skills/3-solutioning/{bmad-create-architecture → wizz-create-architecture}/SKILL.md +11 -11
  134. package/src/bmm-skills/3-solutioning/{bmad-create-architecture → wizz-create-architecture}/customize.toml +1 -1
  135. package/src/bmm-skills/3-solutioning/{bmad-create-epics-and-stories → wizz-create-epics-and-stories}/SKILL.md +5 -5
  136. package/src/bmm-skills/3-solutioning/{bmad-create-epics-and-stories → wizz-create-epics-and-stories}/customize.toml +2 -2
  137. package/src/bmm-skills/3-solutioning/{bmad-create-epics-and-stories → wizz-create-epics-and-stories}/steps/step-01-validate-prerequisites.md +3 -3
  138. package/src/bmm-skills/3-solutioning/{bmad-create-epics-and-stories → wizz-create-epics-and-stories}/steps/step-02-design-epics.md +2 -2
  139. package/src/bmm-skills/3-solutioning/{bmad-create-epics-and-stories → wizz-create-epics-and-stories}/steps/step-03-create-stories.md +2 -2
  140. package/src/bmm-skills/3-solutioning/{bmad-create-epics-and-stories → wizz-create-epics-and-stories}/steps/step-04-final-validation.md +2 -2
  141. package/src/bmm-skills/3-solutioning/{bmad-generate-project-context → wizz-generate-project-context}/SKILL.md +5 -5
  142. package/src/bmm-skills/3-solutioning/{bmad-generate-project-context → wizz-generate-project-context}/customize.toml +1 -1
  143. package/src/bmm-skills/3-solutioning/{bmad-generate-project-context → wizz-generate-project-context}/steps/step-02-generate.md +4 -4
  144. package/src/bmm-skills/3-solutioning/{bmad-generate-project-context → wizz-generate-project-context}/steps/step-03-complete.md +1 -1
  145. package/src/bmm-skills/4-implementation/{bmad-agent-dev → wizz-agent-dev}/SKILL.md +7 -7
  146. package/src/bmm-skills/4-implementation/{bmad-agent-dev → wizz-agent-dev}/customize.toml +9 -8
  147. package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/SKILL.md +5 -5
  148. package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/customize.toml +1 -1
  149. package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/step-05-wrapup.md +1 -1
  150. package/src/bmm-skills/4-implementation/{bmad-code-review → wizz-code-review}/SKILL.md +5 -5
  151. package/src/bmm-skills/4-implementation/{bmad-code-review → wizz-code-review}/customize.toml +1 -1
  152. package/src/bmm-skills/4-implementation/{bmad-code-review → wizz-code-review}/steps/step-02-review.md +2 -2
  153. package/src/bmm-skills/4-implementation/{bmad-code-review → wizz-code-review}/steps/step-04-present.md +1 -1
  154. package/src/bmm-skills/4-implementation/{bmad-correct-course → wizz-correct-course}/SKILL.md +6 -6
  155. package/src/bmm-skills/4-implementation/{bmad-correct-course → wizz-correct-course}/customize.toml +1 -1
  156. package/src/bmm-skills/4-implementation/{bmad-create-story → wizz-create-story}/SKILL.md +6 -6
  157. package/src/bmm-skills/4-implementation/{bmad-create-story → wizz-create-story}/customize.toml +1 -1
  158. package/src/bmm-skills/4-implementation/{bmad-dev-story → wizz-dev-story}/SKILL.md +7 -6
  159. package/src/bmm-skills/4-implementation/{bmad-dev-story → wizz-dev-story}/customize.toml +1 -1
  160. package/src/bmm-skills/4-implementation/{bmad-investigate → wizz-investigate}/SKILL.md +5 -5
  161. package/src/bmm-skills/4-implementation/{bmad-investigate → wizz-investigate}/customize.toml +1 -1
  162. package/src/bmm-skills/4-implementation/{bmad-qa-generate-e2e-tests → wizz-qa-generate-e2e-tests}/SKILL.md +7 -7
  163. package/src/bmm-skills/4-implementation/{bmad-qa-generate-e2e-tests → wizz-qa-generate-e2e-tests}/customize.toml +1 -1
  164. package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/SKILL.md +7 -5
  165. package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/customize.toml +1 -1
  166. package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/step-02-plan.md +1 -1
  167. package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/step-04-review.md +2 -2
  168. package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/step-05-present.md +1 -1
  169. package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/step-oneshot.md +2 -2
  170. package/src/bmm-skills/4-implementation/{bmad-retrospective → wizz-retrospective}/SKILL.md +7 -7
  171. package/src/bmm-skills/4-implementation/{bmad-retrospective → wizz-retrospective}/customize.toml +1 -1
  172. package/src/bmm-skills/4-implementation/{bmad-sprint-planning → wizz-sprint-planning}/SKILL.md +6 -6
  173. package/src/bmm-skills/4-implementation/{bmad-sprint-planning → wizz-sprint-planning}/customize.toml +1 -1
  174. package/src/bmm-skills/4-implementation/{bmad-sprint-status → wizz-sprint-status}/SKILL.md +7 -7
  175. package/src/bmm-skills/4-implementation/{bmad-sprint-status → wizz-sprint-status}/customize.toml +1 -1
  176. package/src/bmm-skills/module-help.csv +31 -30
  177. package/src/bmm-skills/module.yaml +12 -7
  178. package/src/core-skills/module-help.csv +11 -11
  179. package/src/core-skills/module.yaml +1 -1
  180. package/src/core-skills/{bmad-advanced-elicitation → wizz-advanced-elicitation}/SKILL.md +3 -3
  181. package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/SKILL.md +4 -4
  182. package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/customize.toml +4 -4
  183. package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/finalize.md +3 -3
  184. package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/headless.md +1 -1
  185. package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/in-chat-techniques.md +1 -1
  186. package/src/core-skills/{bmad-customize → wizz-customize}/SKILL.md +14 -14
  187. package/src/core-skills/{bmad-customize → wizz-customize}/scripts/list_customizable_skills.py +5 -5
  188. package/src/core-skills/{bmad-customize → wizz-customize}/scripts/tests/test_list_customizable_skills.py +21 -21
  189. package/src/core-skills/{bmad-editorial-review-prose → wizz-editorial-review-prose}/SKILL.md +1 -1
  190. package/src/core-skills/{bmad-editorial-review-structure → wizz-editorial-review-structure}/SKILL.md +1 -1
  191. package/src/core-skills/{bmad-help → wizz-help}/SKILL.md +4 -4
  192. package/src/core-skills/{bmad-index-docs → wizz-index-docs}/SKILL.md +1 -1
  193. package/src/core-skills/{bmad-party-mode → wizz-party-mode}/SKILL.md +4 -4
  194. package/src/core-skills/{bmad-party-mode → wizz-party-mode}/customize.toml +3 -3
  195. package/src/core-skills/{bmad-party-mode → wizz-party-mode}/references/create-party.md +5 -5
  196. package/src/core-skills/{bmad-party-mode → wizz-party-mode}/scripts/resolve_party.py +4 -4
  197. package/src/core-skills/{bmad-party-mode → wizz-party-mode}/scripts/tests/test-resolve_party.py +15 -15
  198. package/src/core-skills/{bmad-review-adversarial-general → wizz-review-adversarial-general}/SKILL.md +1 -1
  199. package/src/core-skills/{bmad-review-edge-case-hunter → wizz-review-edge-case-hunter}/SKILL.md +1 -1
  200. package/src/core-skills/{bmad-shard-doc → wizz-shard-doc}/SKILL.md +1 -1
  201. package/src/core-skills/{bmad-spec → wizz-spec}/SKILL.md +13 -13
  202. package/src/core-skills/{bmad-spec → wizz-spec}/assets/headless-schemas.md +4 -4
  203. package/src/core-skills/{bmad-spec → wizz-spec}/customize.toml +5 -5
  204. package/src/modules/wizz/README.md +2 -2
  205. package/src/modules/wizz/agents/wizz-ads/SKILL.md +2 -2
  206. package/src/modules/wizz/agents/wizz-copy/SKILL.md +2 -2
  207. package/src/modules/wizz/agents/wizz-designer/SKILL.md +2 -2
  208. package/src/modules/wizz/agents/wizz-growth/SKILL.md +2 -2
  209. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +10 -10
  210. package/src/modules/wizz/agents/wizz-maestro/customize.toml +2 -2
  211. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +2 -2
  212. package/src/modules/wizz/agents/wizz-qa/SKILL.md +4 -4
  213. package/src/modules/wizz/agents/wizz-qa/customize.toml +1 -1
  214. package/src/modules/wizz/agents/wizz-seo/SKILL.md +2 -2
  215. package/src/modules/wizz/overrides/bmad-agent-analyst.toml +1 -1
  216. package/src/modules/wizz/overrides/bmad-agent-architect.toml +1 -1
  217. package/src/modules/wizz/overrides/bmad-agent-dev.toml +1 -1
  218. package/src/modules/wizz/overrides/bmad-agent-pm.toml +1 -1
  219. package/src/modules/wizz/overrides/bmad-agent-tech-writer.toml +1 -1
  220. package/src/modules/wizz/overrides/bmad-agent-ux-designer.toml +1 -1
  221. package/src/modules/wizz/scripts/wizz-init.mjs +8 -8
  222. package/src/scripts/resolve_config.py +6 -6
  223. package/src/scripts/resolve_customization.py +5 -5
  224. package/tools/installer/README.md +3 -3
  225. package/tools/installer/bmad-cli.js +3 -3
  226. package/tools/installer/cli-utils.js +15 -15
  227. package/tools/installer/commands/install.js +2 -2
  228. package/tools/installer/commands/status.js +5 -5
  229. package/tools/installer/commands/uninstall.js +9 -9
  230. package/tools/installer/core/install-paths.js +2 -2
  231. package/tools/installer/core/installer.js +28 -28
  232. package/tools/installer/core/manifest-generator.js +12 -12
  233. package/tools/installer/core/python-check.js +6 -6
  234. package/tools/installer/ide/_config-driven.js +2 -2
  235. package/tools/installer/ide/platform-codes.js +1 -1
  236. package/tools/installer/ide/shared/installed-skills.js +1 -1
  237. package/tools/installer/ide/shared/path-utils.js +4 -4
  238. package/tools/installer/install-messages.yaml +7 -11
  239. package/tools/installer/modules/external-manager.js +1 -1
  240. package/tools/installer/modules/official-modules.js +19 -7
  241. package/tools/installer/set-overrides.js +10 -10
  242. package/tools/installer/ui.js +8 -8
  243. package/tools/migrate-custom-module-paths.js +1 -1
  244. package/tools/skill-validator.md +3 -3
  245. package/web-bundles/prd-coach/prd-template.md +1 -1
  246. package/build/site/cs/404/index.html +0 -42
  247. package/build/site/cs/explanation/advanced-elicitation/index.html +0 -105
  248. package/build/site/cs/explanation/adversarial-review/index.html +0 -109
  249. package/build/site/cs/explanation/analysis-phase/index.html +0 -129
  250. package/build/site/cs/explanation/brainstorming/index.html +0 -92
  251. package/build/site/cs/explanation/checkpoint-preview/index.html +0 -121
  252. package/build/site/cs/explanation/established-projects-faq/index.html +0 -107
  253. package/build/site/cs/explanation/forensic-investigation/index.html +0 -167
  254. package/build/site/cs/explanation/named-agents/index.html +0 -187
  255. package/build/site/cs/explanation/party-mode/index.html +0 -101
  256. package/build/site/cs/explanation/preventing-agent-conflicts/index.html +0 -185
  257. package/build/site/cs/explanation/project-context/index.html +0 -198
  258. package/build/site/cs/explanation/quick-dev/index.html +0 -113
  259. package/build/site/cs/explanation/web-bundles/index.html +0 -178
  260. package/build/site/cs/explanation/why-solutioning-matters/index.html +0 -168
  261. package/build/site/cs/how-to/customize-bmad/index.html +0 -197
  262. package/build/site/cs/how-to/established-projects/index.html +0 -165
  263. package/build/site/cs/how-to/expand-bmad-for-your-org/index.html +0 -245
  264. package/build/site/cs/how-to/get-answers-about-bmad/index.html +0 -179
  265. package/build/site/cs/how-to/install-bmad/index.html +0 -124
  266. package/build/site/cs/how-to/install-custom-modules/index.html +0 -197
  267. package/build/site/cs/how-to/non-interactive-installation/index.html +0 -255
  268. package/build/site/cs/how-to/project-context/index.html +0 -138
  269. package/build/site/cs/how-to/quick-fixes/index.html +0 -122
  270. package/build/site/cs/how-to/shard-large-documents/index.html +0 -103
  271. package/build/site/cs/how-to/upgrade-to-v6/index.html +0 -185
  272. package/build/site/cs/how-to/use-web-bundles/index.html +0 -99
  273. package/build/site/cs/index.html +0 -129
  274. package/build/site/cs/reference/agents/index.html +0 -173
  275. package/build/site/cs/reference/commands/index.html +0 -250
  276. package/build/site/cs/reference/core-tools/index.html +0 -337
  277. package/build/site/cs/reference/modules/index.html +0 -132
  278. package/build/site/cs/reference/testing/index.html +0 -218
  279. package/build/site/cs/reference/workflow-map/index.html +0 -240
  280. package/build/site/cs/roadmap/index.html +0 -77
  281. package/build/site/cs/tutorials/getting-started/index.html +0 -382
  282. package/build/site/fr/404/index.html +0 -42
  283. package/build/site/fr/explanation/advanced-elicitation/index.html +0 -105
  284. package/build/site/fr/explanation/adversarial-review/index.html +0 -126
  285. package/build/site/fr/explanation/analysis-phase/index.html +0 -137
  286. package/build/site/fr/explanation/brainstorming/index.html +0 -92
  287. package/build/site/fr/explanation/checkpoint-preview/index.html +0 -121
  288. package/build/site/fr/explanation/established-projects-faq/index.html +0 -107
  289. package/build/site/fr/explanation/forensic-investigation/index.html +0 -194
  290. package/build/site/fr/explanation/named-agents/index.html +0 -187
  291. package/build/site/fr/explanation/party-mode/index.html +0 -112
  292. package/build/site/fr/explanation/preventing-agent-conflicts/index.html +0 -196
  293. package/build/site/fr/explanation/project-context/index.html +0 -198
  294. package/build/site/fr/explanation/quick-dev/index.html +0 -127
  295. package/build/site/fr/explanation/web-bundles/index.html +0 -198
  296. package/build/site/fr/explanation/why-solutioning-matters/index.html +0 -191
  297. package/build/site/fr/how-to/customize-bmad/index.html +0 -277
  298. package/build/site/fr/how-to/established-projects/index.html +0 -176
  299. package/build/site/fr/how-to/expand-bmad-for-your-org/index.html +0 -245
  300. package/build/site/fr/how-to/get-answers-about-bmad/index.html +0 -129
  301. package/build/site/fr/how-to/install-bmad/index.html +0 -330
  302. package/build/site/fr/how-to/install-custom-modules/index.html +0 -197
  303. package/build/site/fr/how-to/non-interactive-installation/index.html +0 -73
  304. package/build/site/fr/how-to/project-context/index.html +0 -138
  305. package/build/site/fr/how-to/quick-fixes/index.html +0 -130
  306. package/build/site/fr/how-to/shard-large-documents/index.html +0 -103
  307. package/build/site/fr/how-to/upgrade-to-v6/index.html +0 -202
  308. package/build/site/fr/how-to/use-web-bundles/index.html +0 -99
  309. package/build/site/fr/index.html +0 -144
  310. package/build/site/fr/reference/agents/index.html +0 -179
  311. package/build/site/fr/reference/commands/index.html +0 -264
  312. package/build/site/fr/reference/core-tools/index.html +0 -392
  313. package/build/site/fr/reference/modules/index.html +0 -146
  314. package/build/site/fr/reference/testing/index.html +0 -229
  315. package/build/site/fr/reference/workflow-map/index.html +0 -282
  316. package/build/site/fr/roadmap/index.html +0 -77
  317. package/build/site/fr/tutorials/getting-started/index.html +0 -406
  318. package/build/site/pagefind/fragment/cs-cz_178b946.pf_fragment +0 -0
  319. package/build/site/pagefind/fragment/cs-cz_19e1744.pf_fragment +0 -0
  320. package/build/site/pagefind/fragment/cs-cz_1b81518.pf_fragment +0 -0
  321. package/build/site/pagefind/fragment/cs-cz_24fd94a.pf_fragment +0 -0
  322. package/build/site/pagefind/fragment/cs-cz_25c5ff1.pf_fragment +0 -0
  323. package/build/site/pagefind/fragment/cs-cz_2a7d8c4.pf_fragment +0 -0
  324. package/build/site/pagefind/fragment/cs-cz_2b14d1f.pf_fragment +0 -0
  325. package/build/site/pagefind/fragment/cs-cz_34d3775.pf_fragment +0 -0
  326. package/build/site/pagefind/fragment/cs-cz_366f93d.pf_fragment +0 -0
  327. package/build/site/pagefind/fragment/cs-cz_4761b65.pf_fragment +0 -0
  328. package/build/site/pagefind/fragment/cs-cz_4d1a40a.pf_fragment +0 -0
  329. package/build/site/pagefind/fragment/cs-cz_57dfabb.pf_fragment +0 -0
  330. package/build/site/pagefind/fragment/cs-cz_5c68f33.pf_fragment +0 -0
  331. package/build/site/pagefind/fragment/cs-cz_5efaba9.pf_fragment +0 -0
  332. package/build/site/pagefind/fragment/cs-cz_5f63a83.pf_fragment +0 -0
  333. package/build/site/pagefind/fragment/cs-cz_73bbdce.pf_fragment +0 -0
  334. package/build/site/pagefind/fragment/cs-cz_7b6af37.pf_fragment +0 -0
  335. package/build/site/pagefind/fragment/cs-cz_7d51fe5.pf_fragment +0 -0
  336. package/build/site/pagefind/fragment/cs-cz_7db5922.pf_fragment +0 -0
  337. package/build/site/pagefind/fragment/cs-cz_83e7116.pf_fragment +0 -0
  338. package/build/site/pagefind/fragment/cs-cz_83fec4e.pf_fragment +0 -0
  339. package/build/site/pagefind/fragment/cs-cz_84972ee.pf_fragment +0 -0
  340. package/build/site/pagefind/fragment/cs-cz_94e9289.pf_fragment +0 -0
  341. package/build/site/pagefind/fragment/cs-cz_a0a122c.pf_fragment +0 -0
  342. package/build/site/pagefind/fragment/cs-cz_a3e7fad.pf_fragment +0 -0
  343. package/build/site/pagefind/fragment/cs-cz_af43e66.pf_fragment +0 -0
  344. package/build/site/pagefind/fragment/cs-cz_b4f4e0a.pf_fragment +0 -0
  345. package/build/site/pagefind/fragment/cs-cz_b51b8b3.pf_fragment +0 -0
  346. package/build/site/pagefind/fragment/cs-cz_ba705d5.pf_fragment +0 -0
  347. package/build/site/pagefind/fragment/cs-cz_c315625.pf_fragment +0 -0
  348. package/build/site/pagefind/fragment/cs-cz_cf5138a.pf_fragment +0 -0
  349. package/build/site/pagefind/fragment/cs-cz_df8bdfe.pf_fragment +0 -0
  350. package/build/site/pagefind/fragment/cs-cz_e1b56f8.pf_fragment +0 -0
  351. package/build/site/pagefind/fragment/cs-cz_e3e33bb.pf_fragment +0 -0
  352. package/build/site/pagefind/fragment/cs-cz_f9d07b3.pf_fragment +0 -0
  353. package/build/site/pagefind/fragment/en_026af96.pf_fragment +0 -0
  354. package/build/site/pagefind/fragment/en_132ea1f.pf_fragment +0 -0
  355. package/build/site/pagefind/fragment/en_15ee460.pf_fragment +0 -0
  356. package/build/site/pagefind/fragment/en_171773c.pf_fragment +0 -0
  357. package/build/site/pagefind/fragment/en_1a7ec42.pf_fragment +0 -0
  358. package/build/site/pagefind/fragment/en_1bb5ebb.pf_fragment +0 -0
  359. package/build/site/pagefind/fragment/en_229434b.pf_fragment +0 -0
  360. package/build/site/pagefind/fragment/en_38efcf3.pf_fragment +0 -0
  361. package/build/site/pagefind/fragment/en_3d17cef.pf_fragment +0 -0
  362. package/build/site/pagefind/fragment/en_426a8fd.pf_fragment +0 -0
  363. package/build/site/pagefind/fragment/en_446b27a.pf_fragment +0 -0
  364. package/build/site/pagefind/fragment/en_582ecad.pf_fragment +0 -0
  365. package/build/site/pagefind/fragment/en_5d6b1f1.pf_fragment +0 -0
  366. package/build/site/pagefind/fragment/en_66f3f7a.pf_fragment +0 -0
  367. package/build/site/pagefind/fragment/en_68872f8.pf_fragment +0 -0
  368. package/build/site/pagefind/fragment/en_6e9deef.pf_fragment +0 -0
  369. package/build/site/pagefind/fragment/en_70a6a7e.pf_fragment +0 -0
  370. package/build/site/pagefind/fragment/en_73f0b1e.pf_fragment +0 -0
  371. package/build/site/pagefind/fragment/en_768fd99.pf_fragment +0 -0
  372. package/build/site/pagefind/fragment/en_7e52baa.pf_fragment +0 -0
  373. package/build/site/pagefind/fragment/en_8068cdc.pf_fragment +0 -0
  374. package/build/site/pagefind/fragment/en_9385c94.pf_fragment +0 -0
  375. package/build/site/pagefind/fragment/en_95b9c04.pf_fragment +0 -0
  376. package/build/site/pagefind/fragment/en_9a95e82.pf_fragment +0 -0
  377. package/build/site/pagefind/fragment/en_a66c4ef.pf_fragment +0 -0
  378. package/build/site/pagefind/fragment/en_ac6318c.pf_fragment +0 -0
  379. package/build/site/pagefind/fragment/en_bba8f66.pf_fragment +0 -0
  380. package/build/site/pagefind/fragment/en_d9f7193.pf_fragment +0 -0
  381. package/build/site/pagefind/fragment/en_e0e52b1.pf_fragment +0 -0
  382. package/build/site/pagefind/fragment/en_ece4cbe.pf_fragment +0 -0
  383. package/build/site/pagefind/fragment/en_ed6969c.pf_fragment +0 -0
  384. package/build/site/pagefind/fragment/en_f12187d.pf_fragment +0 -0
  385. package/build/site/pagefind/fragment/en_f643df1.pf_fragment +0 -0
  386. package/build/site/pagefind/fragment/fr-fr_10fdc25.pf_fragment +0 -0
  387. package/build/site/pagefind/fragment/fr-fr_132e2e0.pf_fragment +0 -0
  388. package/build/site/pagefind/fragment/fr-fr_1529d31.pf_fragment +0 -0
  389. package/build/site/pagefind/fragment/fr-fr_1531e2c.pf_fragment +0 -0
  390. package/build/site/pagefind/fragment/fr-fr_1d51fb7.pf_fragment +0 -0
  391. package/build/site/pagefind/fragment/fr-fr_27d0aaf.pf_fragment +0 -0
  392. package/build/site/pagefind/fragment/fr-fr_583aea8.pf_fragment +0 -0
  393. package/build/site/pagefind/fragment/fr-fr_5c4f14f.pf_fragment +0 -0
  394. package/build/site/pagefind/fragment/fr-fr_654bb96.pf_fragment +0 -0
  395. package/build/site/pagefind/fragment/fr-fr_65e37ae.pf_fragment +0 -0
  396. package/build/site/pagefind/fragment/fr-fr_6898afa.pf_fragment +0 -0
  397. package/build/site/pagefind/fragment/fr-fr_68d0a0b.pf_fragment +0 -0
  398. package/build/site/pagefind/fragment/fr-fr_6ce4bc1.pf_fragment +0 -0
  399. package/build/site/pagefind/fragment/fr-fr_7ddd126.pf_fragment +0 -0
  400. package/build/site/pagefind/fragment/fr-fr_7f50a2e.pf_fragment +0 -0
  401. package/build/site/pagefind/fragment/fr-fr_8d2df1b.pf_fragment +0 -0
  402. package/build/site/pagefind/fragment/fr-fr_9b8d33d.pf_fragment +0 -0
  403. package/build/site/pagefind/fragment/fr-fr_9c7f851.pf_fragment +0 -0
  404. package/build/site/pagefind/fragment/fr-fr_9cf6892.pf_fragment +0 -0
  405. package/build/site/pagefind/fragment/fr-fr_a512e53.pf_fragment +0 -0
  406. package/build/site/pagefind/fragment/fr-fr_a7ad3f6.pf_fragment +0 -0
  407. package/build/site/pagefind/fragment/fr-fr_afeac81.pf_fragment +0 -0
  408. package/build/site/pagefind/fragment/fr-fr_b364826.pf_fragment +0 -0
  409. package/build/site/pagefind/fragment/fr-fr_bdb3e1e.pf_fragment +0 -0
  410. package/build/site/pagefind/fragment/fr-fr_c4884c3.pf_fragment +0 -0
  411. package/build/site/pagefind/fragment/fr-fr_c54c827.pf_fragment +0 -0
  412. package/build/site/pagefind/fragment/fr-fr_ca664c2.pf_fragment +0 -0
  413. package/build/site/pagefind/fragment/fr-fr_ce3562d.pf_fragment +0 -0
  414. package/build/site/pagefind/fragment/fr-fr_d086476.pf_fragment +0 -0
  415. package/build/site/pagefind/fragment/fr-fr_d0b4e62.pf_fragment +0 -0
  416. package/build/site/pagefind/fragment/fr-fr_df4c57f.pf_fragment +0 -0
  417. package/build/site/pagefind/fragment/fr-fr_e1c2fa8.pf_fragment +0 -0
  418. package/build/site/pagefind/fragment/fr-fr_eaa1363.pf_fragment +0 -0
  419. package/build/site/pagefind/fragment/fr-fr_f456c69.pf_fragment +0 -0
  420. package/build/site/pagefind/fragment/fr-fr_fe8d783.pf_fragment +0 -0
  421. package/build/site/pagefind/fragment/vi-vn_1e5b1da.pf_fragment +0 -0
  422. package/build/site/pagefind/fragment/vi-vn_3268948.pf_fragment +0 -0
  423. package/build/site/pagefind/fragment/vi-vn_37f0bf6.pf_fragment +0 -0
  424. package/build/site/pagefind/fragment/vi-vn_485232c.pf_fragment +0 -0
  425. package/build/site/pagefind/fragment/vi-vn_4d3bd13.pf_fragment +0 -0
  426. package/build/site/pagefind/fragment/vi-vn_4e578d2.pf_fragment +0 -0
  427. package/build/site/pagefind/fragment/vi-vn_4ed2533.pf_fragment +0 -0
  428. package/build/site/pagefind/fragment/vi-vn_533743c.pf_fragment +0 -0
  429. package/build/site/pagefind/fragment/vi-vn_5ffd258.pf_fragment +0 -0
  430. package/build/site/pagefind/fragment/vi-vn_6bfed03.pf_fragment +0 -0
  431. package/build/site/pagefind/fragment/vi-vn_6f2ed6d.pf_fragment +0 -0
  432. package/build/site/pagefind/fragment/vi-vn_71aa305.pf_fragment +0 -0
  433. package/build/site/pagefind/fragment/vi-vn_7577c2c.pf_fragment +0 -0
  434. package/build/site/pagefind/fragment/vi-vn_7883435.pf_fragment +0 -0
  435. package/build/site/pagefind/fragment/vi-vn_7f2e496.pf_fragment +0 -0
  436. package/build/site/pagefind/fragment/vi-vn_7fce614.pf_fragment +0 -0
  437. package/build/site/pagefind/fragment/vi-vn_86274a6.pf_fragment +0 -0
  438. package/build/site/pagefind/fragment/vi-vn_8c4fd62.pf_fragment +0 -0
  439. package/build/site/pagefind/fragment/vi-vn_a06c773.pf_fragment +0 -0
  440. package/build/site/pagefind/fragment/vi-vn_a2e535b.pf_fragment +0 -0
  441. package/build/site/pagefind/fragment/vi-vn_a4b9dbc.pf_fragment +0 -0
  442. package/build/site/pagefind/fragment/vi-vn_b2d8e01.pf_fragment +0 -0
  443. package/build/site/pagefind/fragment/vi-vn_b631cf6.pf_fragment +0 -0
  444. package/build/site/pagefind/fragment/vi-vn_c970ebb.pf_fragment +0 -0
  445. package/build/site/pagefind/fragment/vi-vn_d229f2a.pf_fragment +0 -0
  446. package/build/site/pagefind/fragment/vi-vn_d685e88.pf_fragment +0 -0
  447. package/build/site/pagefind/fragment/vi-vn_dab2c52.pf_fragment +0 -0
  448. package/build/site/pagefind/fragment/vi-vn_df5a829.pf_fragment +0 -0
  449. package/build/site/pagefind/fragment/vi-vn_dfcf280.pf_fragment +0 -0
  450. package/build/site/pagefind/fragment/vi-vn_e8ec8cf.pf_fragment +0 -0
  451. package/build/site/pagefind/fragment/vi-vn_e9f3439.pf_fragment +0 -0
  452. package/build/site/pagefind/fragment/vi-vn_f0bfe83.pf_fragment +0 -0
  453. package/build/site/pagefind/fragment/vi-vn_f5462f7.pf_fragment +0 -0
  454. package/build/site/pagefind/fragment/vi-vn_fcc9bb7.pf_fragment +0 -0
  455. package/build/site/pagefind/fragment/vi-vn_fd55264.pf_fragment +0 -0
  456. package/build/site/pagefind/fragment/vi-vn_ffd39df.pf_fragment +0 -0
  457. package/build/site/pagefind/fragment/zh-cn_119c5bb.pf_fragment +0 -0
  458. package/build/site/pagefind/fragment/zh-cn_198e8ce.pf_fragment +0 -0
  459. package/build/site/pagefind/fragment/zh-cn_19b87a8.pf_fragment +0 -0
  460. package/build/site/pagefind/fragment/zh-cn_1edc3a5.pf_fragment +0 -0
  461. package/build/site/pagefind/fragment/zh-cn_36ae67a.pf_fragment +0 -0
  462. package/build/site/pagefind/fragment/zh-cn_37ab313.pf_fragment +0 -0
  463. package/build/site/pagefind/fragment/zh-cn_3b56778.pf_fragment +0 -0
  464. package/build/site/pagefind/fragment/zh-cn_5735cd4.pf_fragment +0 -0
  465. package/build/site/pagefind/fragment/zh-cn_6110769.pf_fragment +0 -0
  466. package/build/site/pagefind/fragment/zh-cn_6d66d9e.pf_fragment +0 -0
  467. package/build/site/pagefind/fragment/zh-cn_731b3f5.pf_fragment +0 -0
  468. package/build/site/pagefind/fragment/zh-cn_82885ff.pf_fragment +0 -0
  469. package/build/site/pagefind/fragment/zh-cn_8be7aac.pf_fragment +0 -0
  470. package/build/site/pagefind/fragment/zh-cn_8c3fa9e.pf_fragment +0 -0
  471. package/build/site/pagefind/fragment/zh-cn_8f452f7.pf_fragment +0 -0
  472. package/build/site/pagefind/fragment/zh-cn_96ccc61.pf_fragment +0 -0
  473. package/build/site/pagefind/fragment/zh-cn_9f29932.pf_fragment +0 -0
  474. package/build/site/pagefind/fragment/zh-cn_a24d786.pf_fragment +0 -0
  475. package/build/site/pagefind/fragment/zh-cn_a598178.pf_fragment +0 -0
  476. package/build/site/pagefind/fragment/zh-cn_a603f17.pf_fragment +0 -0
  477. package/build/site/pagefind/fragment/zh-cn_a9cffcf.pf_fragment +0 -0
  478. package/build/site/pagefind/fragment/zh-cn_c1bebbd.pf_fragment +0 -0
  479. package/build/site/pagefind/fragment/zh-cn_c38cf84.pf_fragment +0 -0
  480. package/build/site/pagefind/fragment/zh-cn_c42a851.pf_fragment +0 -0
  481. package/build/site/pagefind/fragment/zh-cn_ce57c6e.pf_fragment +0 -0
  482. package/build/site/pagefind/fragment/zh-cn_d4b5cd5.pf_fragment +0 -0
  483. package/build/site/pagefind/fragment/zh-cn_da40e6b.pf_fragment +0 -0
  484. package/build/site/pagefind/fragment/zh-cn_da777ec.pf_fragment +0 -0
  485. package/build/site/pagefind/fragment/zh-cn_de145f9.pf_fragment +0 -0
  486. package/build/site/pagefind/fragment/zh-cn_e376bf7.pf_fragment +0 -0
  487. package/build/site/pagefind/fragment/zh-cn_e663978.pf_fragment +0 -0
  488. package/build/site/pagefind/fragment/zh-cn_e97a13b.pf_fragment +0 -0
  489. package/build/site/pagefind/fragment/zh-cn_f13873d.pf_fragment +0 -0
  490. package/build/site/pagefind/fragment/zh-cn_f25fad4.pf_fragment +0 -0
  491. package/build/site/pagefind/fragment/zh-cn_f7edf48.pf_fragment +0 -0
  492. package/build/site/pagefind/index/cs-cz_24147b6.pf_index +0 -0
  493. package/build/site/pagefind/index/cs-cz_82fc657.pf_index +0 -0
  494. package/build/site/pagefind/index/cs-cz_8f6a83c.pf_index +0 -0
  495. package/build/site/pagefind/index/en_432f933.pf_index +0 -0
  496. package/build/site/pagefind/index/en_70c744a.pf_index +0 -0
  497. package/build/site/pagefind/index/en_fd84991.pf_index +0 -0
  498. package/build/site/pagefind/index/fr-fr_7275484.pf_index +0 -0
  499. package/build/site/pagefind/index/fr-fr_8096dd3.pf_index +0 -0
  500. package/build/site/pagefind/index/fr-fr_b34df12.pf_index +0 -0
  501. package/build/site/pagefind/index/fr-fr_e6ad665.pf_index +0 -0
  502. package/build/site/pagefind/index/vi-vn_129cf7e.pf_index +0 -0
  503. package/build/site/pagefind/index/vi-vn_7f54472.pf_index +0 -0
  504. package/build/site/pagefind/index/vi-vn_c1f31ce.pf_index +0 -0
  505. package/build/site/pagefind/index/vi-vn_c56f634.pf_index +0 -0
  506. package/build/site/pagefind/index/zh-cn_5ed0486.pf_index +0 -0
  507. package/build/site/pagefind/index/zh-cn_ad4d724.pf_index +0 -0
  508. package/build/site/pagefind/index/zh-cn_bc9f7b6.pf_index +0 -0
  509. package/build/site/pagefind/pagefind.cs-cz_cd39a8505eabf.pf_meta +0 -0
  510. package/build/site/pagefind/pagefind.en_8ae84a1b9c.pf_meta +0 -0
  511. package/build/site/pagefind/pagefind.fr-fr_20fca6f342d9a.pf_meta +0 -0
  512. package/build/site/pagefind/pagefind.vi-vn_6a45d08c2bbc8.pf_meta +0 -0
  513. package/build/site/pagefind/pagefind.zh-cn_ae911ac338eae.pf_meta +0 -0
  514. package/build/site/pagefind/wasm.fr-fr.pagefind +0 -0
  515. package/build/site/vi-vn/404/index.html +0 -42
  516. package/build/site/vi-vn/bmad-developer-guide/index.html +0 -794
  517. package/build/site/vi-vn/explanation/advanced-elicitation/index.html +0 -105
  518. package/build/site/vi-vn/explanation/adversarial-review/index.html +0 -109
  519. package/build/site/vi-vn/explanation/analysis-phase/index.html +0 -129
  520. package/build/site/vi-vn/explanation/brainstorming/index.html +0 -92
  521. package/build/site/vi-vn/explanation/checkpoint-preview/index.html +0 -121
  522. package/build/site/vi-vn/explanation/established-projects-faq/index.html +0 -107
  523. package/build/site/vi-vn/explanation/forensic-investigation/index.html +0 -167
  524. package/build/site/vi-vn/explanation/named-agents/index.html +0 -187
  525. package/build/site/vi-vn/explanation/party-mode/index.html +0 -101
  526. package/build/site/vi-vn/explanation/preventing-agent-conflicts/index.html +0 -185
  527. package/build/site/vi-vn/explanation/project-context/index.html +0 -198
  528. package/build/site/vi-vn/explanation/quick-dev/index.html +0 -113
  529. package/build/site/vi-vn/explanation/web-bundles/index.html +0 -178
  530. package/build/site/vi-vn/explanation/why-solutioning-matters/index.html +0 -168
  531. package/build/site/vi-vn/how-to/customize-bmad/index.html +0 -277
  532. package/build/site/vi-vn/how-to/established-projects/index.html +0 -165
  533. package/build/site/vi-vn/how-to/expand-bmad-for-your-org/index.html +0 -228
  534. package/build/site/vi-vn/how-to/get-answers-about-bmad/index.html +0 -129
  535. package/build/site/vi-vn/how-to/install-bmad/index.html +0 -124
  536. package/build/site/vi-vn/how-to/install-custom-modules/index.html +0 -197
  537. package/build/site/vi-vn/how-to/non-interactive-installation/index.html +0 -300
  538. package/build/site/vi-vn/how-to/project-context/index.html +0 -138
  539. package/build/site/vi-vn/how-to/quick-fixes/index.html +0 -122
  540. package/build/site/vi-vn/how-to/shard-large-documents/index.html +0 -103
  541. package/build/site/vi-vn/how-to/upgrade-to-v6/index.html +0 -185
  542. package/build/site/vi-vn/how-to/use-web-bundles/index.html +0 -99
  543. package/build/site/vi-vn/index.html +0 -129
  544. package/build/site/vi-vn/reference/agents/index.html +0 -173
  545. package/build/site/vi-vn/reference/commands/index.html +0 -250
  546. package/build/site/vi-vn/reference/core-tools/index.html +0 -337
  547. package/build/site/vi-vn/reference/modules/index.html +0 -132
  548. package/build/site/vi-vn/reference/testing/index.html +0 -218
  549. package/build/site/vi-vn/reference/workflow-map/index.html +0 -240
  550. package/build/site/vi-vn/roadmap/index.html +0 -77
  551. package/build/site/vi-vn/tutorials/getting-started/index.html +0 -382
  552. package/build/site/zh-cn/404/index.html +0 -42
  553. package/build/site/zh-cn/explanation/advanced-elicitation/index.html +0 -142
  554. package/build/site/zh-cn/explanation/adversarial-review/index.html +0 -132
  555. package/build/site/zh-cn/explanation/analysis-phase/index.html +0 -129
  556. package/build/site/zh-cn/explanation/brainstorming/index.html +0 -147
  557. package/build/site/zh-cn/explanation/checkpoint-preview/index.html +0 -121
  558. package/build/site/zh-cn/explanation/established-projects-faq/index.html +0 -122
  559. package/build/site/zh-cn/explanation/forensic-investigation/index.html +0 -167
  560. package/build/site/zh-cn/explanation/named-agents/index.html +0 -187
  561. package/build/site/zh-cn/explanation/party-mode/index.html +0 -144
  562. package/build/site/zh-cn/explanation/preventing-agent-conflicts/index.html +0 -191
  563. package/build/site/zh-cn/explanation/project-context/index.html +0 -153
  564. package/build/site/zh-cn/explanation/quick-dev/index.html +0 -139
  565. package/build/site/zh-cn/explanation/web-bundles/index.html +0 -178
  566. package/build/site/zh-cn/explanation/why-solutioning-matters/index.html +0 -175
  567. package/build/site/zh-cn/how-to/customize-bmad/index.html +0 -202
  568. package/build/site/zh-cn/how-to/established-projects/index.html +0 -166
  569. package/build/site/zh-cn/how-to/expand-bmad-for-your-org/index.html +0 -223
  570. package/build/site/zh-cn/how-to/get-answers-about-bmad/index.html +0 -198
  571. package/build/site/zh-cn/how-to/install-bmad/index.html +0 -126
  572. package/build/site/zh-cn/how-to/install-custom-modules/index.html +0 -197
  573. package/build/site/zh-cn/how-to/non-interactive-installation/index.html +0 -254
  574. package/build/site/zh-cn/how-to/project-context/index.html +0 -143
  575. package/build/site/zh-cn/how-to/quick-fixes/index.html +0 -122
  576. package/build/site/zh-cn/how-to/shard-large-documents/index.html +0 -110
  577. package/build/site/zh-cn/how-to/upgrade-to-v6/index.html +0 -198
  578. package/build/site/zh-cn/how-to/use-web-bundles/index.html +0 -99
  579. package/build/site/zh-cn/index.html +0 -129
  580. package/build/site/zh-cn/reference/agents/index.html +0 -178
  581. package/build/site/zh-cn/reference/commands/index.html +0 -245
  582. package/build/site/zh-cn/reference/core-tools/index.html +0 -313
  583. package/build/site/zh-cn/reference/modules/index.html +0 -181
  584. package/build/site/zh-cn/reference/testing/index.html +0 -226
  585. package/build/site/zh-cn/reference/workflow-map/index.html +0 -238
  586. package/build/site/zh-cn/roadmap/index.html +0 -77
  587. package/build/site/zh-cn/tutorials/getting-started/index.html +0 -381
  588. package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md +0 -30
  589. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/branfield-memo.md +0 -0
  590. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/forkbird-brief/addendum.md +0 -0
  591. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/forkbird-brief/brief.md +0 -0
  592. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/forkbird-brief/decision-log.md +0 -0
  593. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/meridian-mobility-report.md +0 -0
  594. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/mossridge-brief/addendum.md +0 -0
  595. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/mossridge-brief/brief.md +0 -0
  596. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/mossridge-brief/decision-log.md +0 -0
  597. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/pantry-bridge-interviews.md +0 -0
  598. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/files/q2-brainstorm.md +0 -0
  599. /package/evals/bmm-skills/{bmad-product-brief → wizz-product-brief}/triggers.json +0 -0
  600. /package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/domain-steps/step-01-init.md +0 -0
  601. /package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/domain-steps/step-02-domain-analysis.md +0 -0
  602. /package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/domain-steps/step-03-competitive-landscape.md +0 -0
  603. /package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/domain-steps/step-04-regulatory-focus.md +0 -0
  604. /package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/domain-steps/step-05-technical-trends.md +0 -0
  605. /package/src/bmm-skills/1-analysis/research/{bmad-domain-research → wizz-domain-research}/research.template.md +0 -0
  606. /package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/research.template.md +0 -0
  607. /package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/steps/step-01-init.md +0 -0
  608. /package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/steps/step-02-customer-behavior.md +0 -0
  609. /package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/steps/step-03-customer-pain-points.md +0 -0
  610. /package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/steps/step-04-customer-decisions.md +0 -0
  611. /package/src/bmm-skills/1-analysis/research/{bmad-market-research → wizz-market-research}/steps/step-05-competitive-analysis.md +0 -0
  612. /package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/research.template.md +0 -0
  613. /package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/technical-steps/step-01-init.md +0 -0
  614. /package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/technical-steps/step-02-technical-overview.md +0 -0
  615. /package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/technical-steps/step-03-integration-patterns.md +0 -0
  616. /package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/technical-steps/step-04-architectural-patterns.md +0 -0
  617. /package/src/bmm-skills/1-analysis/research/{bmad-technical-research → wizz-technical-research}/technical-steps/step-05-implementation-research.md +0 -0
  618. /package/src/bmm-skills/1-analysis/{bmad-agent-tech-writer → wizz-agent-tech-writer}/explain-concept.md +0 -0
  619. /package/src/bmm-skills/1-analysis/{bmad-agent-tech-writer → wizz-agent-tech-writer}/mermaid-gen.md +0 -0
  620. /package/src/bmm-skills/1-analysis/{bmad-agent-tech-writer → wizz-agent-tech-writer}/validate-doc.md +0 -0
  621. /package/src/bmm-skills/1-analysis/{bmad-agent-tech-writer → wizz-agent-tech-writer}/write-document.md +0 -0
  622. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/checklist.md +0 -0
  623. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/documentation-requirements.csv +0 -0
  624. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/instructions.md +0 -0
  625. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/templates/deep-dive-template.md +0 -0
  626. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/templates/index-template.md +0 -0
  627. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/templates/project-overview-template.md +0 -0
  628. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/templates/project-scan-report-schema.json +0 -0
  629. /package/src/bmm-skills/1-analysis/{bmad-document-project → wizz-document-project}/templates/source-tree-template.md +0 -0
  630. /package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/agents/artifact-analyzer.md +0 -0
  631. /package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/agents/web-researcher.md +0 -0
  632. /package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/assets/prfaq-template.md +0 -0
  633. /package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/bmad-manifest.json +0 -0
  634. /package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/references/customer-faq.md +0 -0
  635. /package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/references/internal-faq.md +0 -0
  636. /package/src/bmm-skills/1-analysis/{bmad-prfaq → wizz-prfaq}/references/press-release.md +0 -0
  637. /package/src/bmm-skills/1-analysis/{bmad-product-brief → wizz-product-brief}/assets/brief-template.md +0 -0
  638. /package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/assets/headless-schemas.md +0 -0
  639. /package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/assets/prd-validation-checklist.md +0 -0
  640. /package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/assets/validation-report-template.html +0 -0
  641. /package/src/bmm-skills/2-plan-workflows/{bmad-prd → wizz-prd}/references/validate.md +0 -0
  642. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/color-themes.md +0 -0
  643. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/design-directions.md +0 -0
  644. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/design-example-editorial.md +0 -0
  645. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/design-example-mobile.md +0 -0
  646. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/design-example-shadcn.md +0 -0
  647. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/excalidraw-wireframe.md +0 -0
  648. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/experience-example-mobile.md +0 -0
  649. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/experience-example-shadcn.md +0 -0
  650. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/headless-schemas.md +0 -0
  651. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/key-screens.md +0 -0
  652. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/assets/validation-report-template.html +0 -0
  653. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/references/creative-tools.md +0 -0
  654. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/references/design-md-spec.md +0 -0
  655. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/references/headless.md +0 -0
  656. /package/src/bmm-skills/2-plan-workflows/{bmad-ux → wizz-ux}/references/validate.md +0 -0
  657. /package/src/bmm-skills/3-solutioning/{bmad-architecture → wizz-architecture}/assets/spine-template.md +0 -0
  658. /package/src/bmm-skills/3-solutioning/{bmad-architecture → wizz-architecture}/references/reviewer-gate.md +0 -0
  659. /package/src/bmm-skills/3-solutioning/{bmad-architecture → wizz-architecture}/scripts/lint_spine.py +0 -0
  660. /package/src/bmm-skills/3-solutioning/{bmad-architecture → wizz-architecture}/scripts/tests/test_lint_spine.py +0 -0
  661. /package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/steps/step-01-document-discovery.md +0 -0
  662. /package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/steps/step-02-prd-analysis.md +0 -0
  663. /package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/steps/step-03-epic-coverage-validation.md +0 -0
  664. /package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/steps/step-04-ux-alignment.md +0 -0
  665. /package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/steps/step-05-epic-quality-review.md +0 -0
  666. /package/src/bmm-skills/3-solutioning/{bmad-check-implementation-readiness → wizz-check-implementation-readiness}/templates/readiness-report-template.md +0 -0
  667. /package/src/bmm-skills/3-solutioning/{bmad-create-epics-and-stories → wizz-create-epics-and-stories}/templates/epics-template.md +0 -0
  668. /package/src/bmm-skills/3-solutioning/{bmad-generate-project-context → wizz-generate-project-context}/project-context-template.md +0 -0
  669. /package/src/bmm-skills/3-solutioning/{bmad-generate-project-context → wizz-generate-project-context}/steps/step-01-discover.md +0 -0
  670. /package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/generate-trail.md +0 -0
  671. /package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/step-01-orientation.md +0 -0
  672. /package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/step-02-walkthrough.md +0 -0
  673. /package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/step-03-detail-pass.md +0 -0
  674. /package/src/bmm-skills/4-implementation/{bmad-checkpoint-preview → wizz-checkpoint-preview}/step-04-testing.md +0 -0
  675. /package/src/bmm-skills/4-implementation/{bmad-code-review → wizz-code-review}/steps/step-01-gather-context.md +0 -0
  676. /package/src/bmm-skills/4-implementation/{bmad-code-review → wizz-code-review}/steps/step-03-triage.md +0 -0
  677. /package/src/bmm-skills/4-implementation/{bmad-correct-course → wizz-correct-course}/checklist.md +0 -0
  678. /package/src/bmm-skills/4-implementation/{bmad-create-story → wizz-create-story}/checklist.md +0 -0
  679. /package/src/bmm-skills/4-implementation/{bmad-create-story → wizz-create-story}/discover-inputs.md +0 -0
  680. /package/src/bmm-skills/4-implementation/{bmad-create-story → wizz-create-story}/template.md +0 -0
  681. /package/src/bmm-skills/4-implementation/{bmad-dev-story → wizz-dev-story}/checklist.md +0 -0
  682. /package/src/bmm-skills/4-implementation/{bmad-investigate → wizz-investigate}/references/case-file-template.md +0 -0
  683. /package/src/bmm-skills/4-implementation/{bmad-qa-generate-e2e-tests → wizz-qa-generate-e2e-tests}/checklist.md +0 -0
  684. /package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/compile-epic-context.md +0 -0
  685. /package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/spec-template.md +0 -0
  686. /package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/step-01-clarify-and-route.md +0 -0
  687. /package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/step-03-implement.md +0 -0
  688. /package/src/bmm-skills/4-implementation/{bmad-quick-dev → wizz-quick-dev}/sync-sprint-status.md +0 -0
  689. /package/src/bmm-skills/4-implementation/{bmad-sprint-planning → wizz-sprint-planning}/checklist.md +0 -0
  690. /package/src/bmm-skills/4-implementation/{bmad-sprint-planning → wizz-sprint-planning}/sprint-status-template.yaml +0 -0
  691. /package/src/core-skills/{bmad-advanced-elicitation → wizz-advanced-elicitation}/methods.csv +0 -0
  692. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/analysis/catalog-analysis.md +0 -0
  693. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/analysis/method-matrix.csv +0 -0
  694. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/assets/brain-icons.json +0 -0
  695. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/assets/brain-methods.csv +0 -0
  696. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/assets/brain-selector.html +0 -0
  697. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/converge.md +0 -0
  698. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/mode-autonomous.md +0 -0
  699. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/mode-facilitator.md +0 -0
  700. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/mode-partner.md +0 -0
  701. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/references/resume.md +0 -0
  702. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/scripts/brain.py +0 -0
  703. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/scripts/memlog.py +0 -0
  704. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/scripts/tests/test_brain.py +0 -0
  705. /package/src/core-skills/{bmad-brainstorming → wizz-brainstorming}/scripts/tests/test_memlog.py +0 -0
  706. /package/src/core-skills/{bmad-party-mode → wizz-party-mode}/references/mode-agent-team.md +0 -0
  707. /package/src/core-skills/{bmad-party-mode → wizz-party-mode}/references/mode-auto.md +0 -0
  708. /package/src/core-skills/{bmad-party-mode → wizz-party-mode}/references/mode-subagent.md +0 -0
  709. /package/src/core-skills/{bmad-spec → wizz-spec}/assets/spec-template.md +0 -0
@@ -1,277 +0,0 @@
1
- <!DOCTYPE html><html lang="vi-VN" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-uxe7q6yi"> <head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Cách tùy chỉnh BMad | Wizz Method</title><link rel="canonical" href="http://localhost:3000/vi-vn/how-to/customize-bmad/"/><link rel="alternate" hreflang="en" href="http://localhost:3000/how-to/customize-bmad/"/><link rel="alternate" hreflang="vi-VN" href="http://localhost:3000/vi-vn/how-to/customize-bmad/"/><link rel="alternate" hreflang="zh-CN" href="http://localhost:3000/zh-cn/how-to/customize-bmad/"/><link rel="alternate" hreflang="fr-FR" href="http://localhost:3000/fr/how-to/customize-bmad/"/><link rel="alternate" hreflang="cs-CZ" href="http://localhost:3000/cs/how-to/customize-bmad/"/><link rel="sitemap" href="/sitemap-index.xml"/><link rel="shortcut icon" href="/wizz-icon-orange.svg" type="image/svg+xml"/><meta name="generator" content="Astro v5.18.1"/><meta name="generator" content="Starlight v0.37.5"/><meta property="og:title" content="Cách tùy chỉnh BMad"/><meta property="og:type" content="article"/><meta property="og:url" content="http://localhost:3000/vi-vn/how-to/customize-bmad/"/><meta property="og:locale" content="vi-VN"/><meta property="og:description" content="Tùy chỉnh agent và workflow trong khi vẫn giữ khả năng tương thích khi cập nhật"/><meta property="og:site_name" content="Wizz Method"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Tùy chỉnh agent và workflow trong khi vẫn giữ khả năng tương thích khi cập nhật"/><meta name="ai-terms" content="AI-optimized documentation: http://localhost:3000/llms-full.txt (plain text, ~100k tokens, complete Wizz Method reference). Index: http://localhost:3000/llms.txt"/><meta name="llms-full" content="http://localhost:3000/llms-full.txt"/><meta name="llms" content="http://localhost:3000/llms.txt"/><script>
2
- window.StarlightThemeProvider = (() => {
3
- const storedTheme =
4
- typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme');
5
- const theme =
6
- storedTheme ||
7
- (window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark');
8
- document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark';
9
- return {
10
- updatePickers(theme = storedTheme || 'auto') {
11
- document.querySelectorAll('starlight-theme-select').forEach((picker) => {
12
- const select = picker.querySelector('select');
13
- if (select) select.value = theme;
14
- /** @type {HTMLTemplateElement | null} */
15
- const tmpl = document.querySelector(`#theme-icons`);
16
- const newIcon = tmpl && tmpl.content.querySelector('.' + theme);
17
- if (newIcon) {
18
- const oldIcon = picker.querySelector('svg.label-icon');
19
- if (oldIcon) {
20
- oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes);
21
- }
22
- }
23
- });
24
- },
25
- };
26
- })();
27
- </script><template id="theme-icons"><svg aria-hidden="true" class="light astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/_astro/print.DNXP8c50.css" media="print"><link rel="stylesheet" href="/_astro/index.DdjI3lF_.css"><script type="module" src="/_astro/page.B1D-nYk3.js"></script></head> <body class="astro-uxe7q6yi"> <a href="#_top" class="astro-7lpm5qv4">Chuyển đến nội dung chính</a> <div class="page sl-flex astro-2xv6dk2n"> <header class="header astro-2xv6dk2n"><div class="ai-banner astro-kggsjsm4" role="note" aria-label="AI documentation notice"> <span class="astro-kggsjsm4">🤖 Consolidated, AI-optimized Wizz Method docs: <a href="http://localhost:3000/llms-full.txt" class="astro-kggsjsm4">llms-full.txt</a>. Fetch this plain text file for complete context.</span> </div> <div class="header sl-flex astro-3ef6ksr2"> <div class="title-wrapper sl-flex astro-3ef6ksr2"> <a href="/vi-vn" class="site-title sl-flex astro-sv76zpkw"> <span class="astro-sv76zpkw" translate="no"> Wizz Method </span> </a> </div> <div class="sl-flex print:hidden astro-3ef6ksr2"> <site-search class="astro-3ef6ksr2 astro-kbzrce66" data-translations="{&#34;placeholder&#34;:&#34;Tìm kiếm&#34;}"> <button data-open-modal disabled aria-label="Tìm kiếm" aria-keyshortcuts="Control+K" class="astro-kbzrce66"> <svg aria-hidden="true" class="astro-kbzrce66 astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg> <span class="sl-hidden md:sl-block astro-kbzrce66" aria-hidden="true">Tìm kiếm</span> <kbd class="sl-hidden md:sl-flex astro-kbzrce66" style="display: none;"> <kbd class="astro-kbzrce66">Ctrl</kbd><kbd class="astro-kbzrce66">K</kbd> </kbd> </button> <dialog style="padding:0" aria-label="Tìm kiếm" class="astro-kbzrce66"> <div class="dialog-frame sl-flex astro-kbzrce66"> <button data-close-modal class="sl-flex md:sl-hidden astro-kbzrce66"> Hủy </button> <div class="search-container astro-kbzrce66"> <div id="starlight__search" class="astro-kbzrce66"></div> </div> </div> </dialog> </site-search> <script>
28
- (() => {
29
- const openBtn = document.querySelector('button[data-open-modal]');
30
- const shortcut = openBtn?.querySelector('kbd');
31
- if (!openBtn || !(shortcut instanceof HTMLElement)) return;
32
- const platformKey = shortcut.querySelector('kbd');
33
- if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) {
34
- platformKey.textContent = '⌘';
35
- openBtn.setAttribute('aria-keyshortcuts', 'Meta+K');
36
- }
37
- shortcut.style.display = '';
38
- })();
39
- </script> <script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.cjYDvRdi.js"></script> </div> <div class="sl-hidden md:sl-flex print:hidden right-group astro-3ef6ksr2"> <div class="sl-flex social-icons astro-3ef6ksr2"> <a href="https://github.com/wizzcomms/wizz-method" rel="me" class="sl-flex astro-bgmygzip"><span class="sr-only astro-bgmygzip">GitHub</span><svg aria-hidden="true" class="astro-bgmygzip astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg></a> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-nmwkdvwx"> <span class="sr-only astro-nmwkdvwx">Chọn giao diện</span> <svg aria-hidden="true" class="icon label-icon astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg> <select autocomplete="off" class="astro-nmwkdvwx"> <option value="dark" class="astro-nmwkdvwx">Tối</option><option value="light" class="astro-nmwkdvwx">Sáng</option><option value="auto" selected class="astro-nmwkdvwx">Tự động</option> </select> <svg aria-hidden="true" class="icon caret astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg> </label> </starlight-theme-select> <script>
40
- StarlightThemeProvider.updatePickers();
41
- </script> <script type="module">const r="starlight-theme",o=e=>e==="auto"||e==="dark"||e==="light"?e:"auto",c=()=>o(typeof localStorage<"u"&&localStorage.getItem(r));function n(e){typeof localStorage<"u"&&localStorage.setItem(r,e==="light"||e==="dark"?e:"")}const l=()=>matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";function t(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e==="auto"?l():e,n(e)}matchMedia("(prefers-color-scheme: light)").addEventListener("change",()=>{c()==="auto"&&t("auto")});class s extends HTMLElement{constructor(){super(),t(c()),this.querySelector("select")?.addEventListener("change",a=>{a.currentTarget instanceof HTMLSelectElement&&t(o(a.currentTarget.value))})}}customElements.define("starlight-theme-select",s);</script> <starlight-lang-select><label style="--sl-select-width: 7em" class="astro-nmwkdvwx"> <span class="sr-only astro-nmwkdvwx">Chọn ngôn ngữ</span> <svg aria-hidden="true" class="icon label-icon astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path fill-rule="evenodd" d="M8.516 3a.94.94 0 0 0-.941.94v1.15H2.94a.94.94 0 1 0 0 1.882h7.362a7.422 7.422 0 0 1-1.787 3.958 7.42 7.42 0 0 1-1.422-2.425.94.94 0 1 0-1.774.627 9.303 9.303 0 0 0 1.785 3.043 7.422 7.422 0 0 1-4.164 1.278.94.94 0 1 0 0 1.881 9.303 9.303 0 0 0 5.575-1.855 9.303 9.303 0 0 0 4.11 1.74l-.763 1.525a.968.968 0 0 0-.016.034l-1.385 2.77a.94.94 0 1 0 1.683.841l1.133-2.267h5.806l1.134 2.267a.94.94 0 0 0 1.683-.841l-1.385-2.769a.95.95 0 0 0-.018-.036l-3.476-6.951a.94.94 0 0 0-1.682 0l-1.82 3.639a7.423 7.423 0 0 1-3.593-1.256 9.303 9.303 0 0 0 2.27-5.203h1.894a.94.94 0 0 0 0-1.881H9.456V3.94A.94.94 0 0 0 8.516 3Zm6.426 11.794a1.068 1.068 0 0 1-.02.039l-.703 1.407h3.924l-1.962-3.924-1.24 2.478Z" clip-rule="evenodd"/></svg> <select autocomplete="off" class="astro-nmwkdvwx"> <option value="/how-to/customize-bmad/" class="astro-nmwkdvwx">English</option><option value="/vi-vn/how-to/customize-bmad/" selected class="astro-nmwkdvwx">Tiếng Việt</option><option value="/zh-cn/how-to/customize-bmad/" class="astro-nmwkdvwx">简体中文</option><option value="/fr/how-to/customize-bmad/" class="astro-nmwkdvwx">Français</option><option value="/cs/how-to/customize-bmad/" class="astro-nmwkdvwx">Čeština</option> </select> <svg aria-hidden="true" class="icon caret astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg> </label> </starlight-lang-select><script type="module">class s extends HTMLElement{constructor(){super();const e=this.querySelector("select");e&&(e.addEventListener("change",t=>{t.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=t.currentTarget.value)}),window.addEventListener("pageshow",t=>{if(!t.persisted)return;const n=e.querySelector("option[selected]")?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}}customElements.define("starlight-lang-select",s);</script> </div> </div> </header> <nav class="sidebar print:hidden astro-2xv6dk2n" aria-label="Điều hướng chính"> <starlight-menu-button class="print:hidden astro-rcmu22v7"> <button aria-expanded="false" aria-label="Menu" aria-controls="starlight__sidebar" class="sl-flex md:sl-hidden astro-rcmu22v7"> <svg aria-hidden="true" class="open-menu astro-rcmu22v7 astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg> <svg aria-hidden="true" class="close-menu astro-rcmu22v7 astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="m13.41 12 6.3-6.29a1.004 1.004 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1.004 1.004 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 0 1.42.998.998 0 0 0 1.42 0l6.29-6.3 6.29 6.3a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.42L13.41 12Z"/></svg> </button> </starlight-menu-button> <script type="module">class s extends HTMLElement{constructor(){super(),this.btn=this.querySelector("button"),this.btn.addEventListener("click",()=>this.toggleExpanded());const t=this.closest("nav");t&&t.addEventListener("keyup",e=>this.closeOnEscape(e))}setExpanded(t){this.setAttribute("aria-expanded",String(t)),document.body.toggleAttribute("data-mobile-menu-expanded",t)}toggleExpanded(){this.setExpanded(this.getAttribute("aria-expanded")!=="true")}closeOnEscape(t){t.code==="Escape"&&(this.setExpanded(!1),this.btn.focus())}}customElements.define("starlight-menu-button",s);</script> <div id="starlight__sidebar" class="sidebar-pane astro-2xv6dk2n"> <div class="sidebar-content sl-flex astro-2xv6dk2n"> <sl-sidebar-state-persist data-hash="10wi2mh" class="astro-t57j3vat"> <script aria-hidden="true">
42
- (() => {
43
- try {
44
- if (!matchMedia('(min-width: 50em)').matches) return;
45
- /** @type {HTMLElement | null} */
46
- const target = document.querySelector('sl-sidebar-state-persist');
47
- const state = JSON.parse(sessionStorage.getItem('sl-sidebar-state') || '0');
48
- if (!target || !state || target.dataset.hash !== state.hash) return;
49
- window._starlightScrollRestore = state.scroll;
50
- customElements.define(
51
- 'sl-sidebar-restore',
52
- class SidebarRestore extends HTMLElement {
53
- connectedCallback() {
54
- try {
55
- const idx = parseInt(this.dataset.index || '');
56
- const details = this.closest('details');
57
- if (details && typeof state.open[idx] === 'boolean') details.open = state.open[idx];
58
- } catch {}
59
- }
60
- }
61
- );
62
- } catch {}
63
- })();
64
- </script> <ul class="top-level astro-yhouv36n"> <li class="astro-yhouv36n"> <a href="/vi-vn/" class="large astro-yhouv36n"> <span class="astro-yhouv36n">Chào mừng</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/roadmap/" class="large astro-yhouv36n"> <span class="astro-yhouv36n">Lộ trình</span> </a> </li><li class="astro-yhouv36n"> <details open class="astro-yhouv36n"> <summary class="astro-yhouv36n"> <span class="group-label astro-yhouv36n"> <span class="large astro-yhouv36n">Hướng dẫn nhập môn</span> </span> <svg aria-hidden="true" class="caret astro-yhouv36n astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <sl-sidebar-restore data-index="0"></sl-sidebar-restore> <ul class="astro-yhouv36n"> <li class="astro-yhouv36n"> <a href="/vi-vn/tutorials/getting-started/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Bắt đầu</span> </a> </li> </ul> </details> </li><li class="astro-yhouv36n"> <details open class="astro-yhouv36n"> <summary class="astro-yhouv36n"> <span class="group-label astro-yhouv36n"> <span class="large astro-yhouv36n">Hướng dẫn tác vụ</span> </span> <svg aria-hidden="true" class="caret astro-yhouv36n astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <sl-sidebar-restore data-index="1"></sl-sidebar-restore> <ul class="astro-yhouv36n"> <li class="astro-yhouv36n"> <a href="/vi-vn/how-to/install-bmad/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Cách cài đặt BMad</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/non-interactive-installation/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Cài đặt không tương tác</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/install-custom-modules/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Cài đặt module tùy chỉnh và module cộng đồng</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/upgrade-to-v6/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Cách nâng cấp lên v6</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/get-answers-about-bmad/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Cách tìm câu trả lời về BMad</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/quick-fixes/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Sửa nhanh</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/established-projects/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Dự án đã tồn tại</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/customize-bmad/" aria-current="page" class="astro-yhouv36n"> <span class="astro-yhouv36n">Cách tùy chỉnh BMad</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/project-context/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Quản lý bối cảnh dự án</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/shard-large-documents/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Hướng dẫn chia nhỏ tài liệu</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/expand-bmad-for-your-org/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Cách mở rộng BMad cho tổ chức của bạn</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/how-to/use-web-bundles/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Use Web Bundles</span> </a> </li> </ul> </details> </li><li class="astro-yhouv36n"> <details class="astro-yhouv36n"> <summary class="astro-yhouv36n"> <span class="group-label astro-yhouv36n"> <span class="large astro-yhouv36n">Giải thích</span> </span> <svg aria-hidden="true" class="caret astro-yhouv36n astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <sl-sidebar-restore data-index="2"></sl-sidebar-restore> <ul class="astro-yhouv36n"> <li class="astro-yhouv36n"> <a href="/vi-vn/explanation/named-agents/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Agent có tên riêng (Named Agents)</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/analysis-phase/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Giai đoạn phân tích: từ ý tưởng đến nền tảng</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/brainstorming/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Động não ý tưởng</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/advanced-elicitation/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Khai thác nâng cao</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/why-solutioning-matters/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Vì sao solutioning quan trọng</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/preventing-agent-conflicts/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Ngăn xung đột giữa các agent</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/quick-dev/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Phát triển nhanh</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/checkpoint-preview/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Xem trước Checkpoint</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/adversarial-review/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Đánh giá đối kháng</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/forensic-investigation/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Forensic Investigation</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/party-mode/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Chế độ Party</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/project-context/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Bối cảnh dự án</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/established-projects-faq/" class="astro-yhouv36n"> <span class="astro-yhouv36n">FAQ cho dự án đã tồn tại</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/explanation/web-bundles/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Web Bundles</span> </a> </li> </ul> </details> </li><li class="astro-yhouv36n"> <details class="astro-yhouv36n"> <summary class="astro-yhouv36n"> <span class="group-label astro-yhouv36n"> <span class="large astro-yhouv36n">Tham chiếu</span> </span> <svg aria-hidden="true" class="caret astro-yhouv36n astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <sl-sidebar-restore data-index="3"></sl-sidebar-restore> <ul class="astro-yhouv36n"> <li class="astro-yhouv36n"> <a href="/vi-vn/reference/workflow-map/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Sơ đồ workflow</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/reference/agents/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Các agent</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/reference/core-tools/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Công cụ cốt lõi</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/reference/commands/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Các skill</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/reference/modules/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Các Module Chính Thức</span> </a> </li><li class="astro-yhouv36n"> <a href="/vi-vn/reference/testing/" class="astro-yhouv36n"> <span class="astro-yhouv36n">Các Tùy Chọn Kiểm Thử</span> </a> </li> </ul> </details> </li> </ul> <script aria-hidden="true">
65
- (() => {
66
- const scroller = document.getElementById('starlight__sidebar');
67
- if (!window._starlightScrollRestore || !scroller) return;
68
- scroller.scrollTop = window._starlightScrollRestore;
69
- delete window._starlightScrollRestore;
70
- })();
71
- </script> </sl-sidebar-state-persist> <div class="md:sl-hidden"> <div class="mobile-preferences sl-flex astro-lbnvevm2"> <div class="sl-flex social-icons astro-lbnvevm2"> <a href="https://github.com/wizzcomms/wizz-method" rel="me" class="sl-flex astro-bgmygzip"><span class="sr-only astro-bgmygzip">GitHub</span><svg aria-hidden="true" class="astro-bgmygzip astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg></a> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-nmwkdvwx"> <span class="sr-only astro-nmwkdvwx">Chọn giao diện</span> <svg aria-hidden="true" class="icon label-icon astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg> <select autocomplete="off" class="astro-nmwkdvwx"> <option value="dark" class="astro-nmwkdvwx">Tối</option><option value="light" class="astro-nmwkdvwx">Sáng</option><option value="auto" selected class="astro-nmwkdvwx">Tự động</option> </select> <svg aria-hidden="true" class="icon caret astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg> </label> </starlight-theme-select> <script>
72
- StarlightThemeProvider.updatePickers();
73
- </script> <starlight-lang-select><label style="--sl-select-width: 7em" class="astro-nmwkdvwx"> <span class="sr-only astro-nmwkdvwx">Chọn ngôn ngữ</span> <svg aria-hidden="true" class="icon label-icon astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path fill-rule="evenodd" d="M8.516 3a.94.94 0 0 0-.941.94v1.15H2.94a.94.94 0 1 0 0 1.882h7.362a7.422 7.422 0 0 1-1.787 3.958 7.42 7.42 0 0 1-1.422-2.425.94.94 0 1 0-1.774.627 9.303 9.303 0 0 0 1.785 3.043 7.422 7.422 0 0 1-4.164 1.278.94.94 0 1 0 0 1.881 9.303 9.303 0 0 0 5.575-1.855 9.303 9.303 0 0 0 4.11 1.74l-.763 1.525a.968.968 0 0 0-.016.034l-1.385 2.77a.94.94 0 1 0 1.683.841l1.133-2.267h5.806l1.134 2.267a.94.94 0 0 0 1.683-.841l-1.385-2.769a.95.95 0 0 0-.018-.036l-3.476-6.951a.94.94 0 0 0-1.682 0l-1.82 3.639a7.423 7.423 0 0 1-3.593-1.256 9.303 9.303 0 0 0 2.27-5.203h1.894a.94.94 0 0 0 0-1.881H9.456V3.94A.94.94 0 0 0 8.516 3Zm6.426 11.794a1.068 1.068 0 0 1-.02.039l-.703 1.407h3.924l-1.962-3.924-1.24 2.478Z" clip-rule="evenodd"/></svg> <select autocomplete="off" class="astro-nmwkdvwx"> <option value="/how-to/customize-bmad/" class="astro-nmwkdvwx">English</option><option value="/vi-vn/how-to/customize-bmad/" selected class="astro-nmwkdvwx">Tiếng Việt</option><option value="/zh-cn/how-to/customize-bmad/" class="astro-nmwkdvwx">简体中文</option><option value="/fr/how-to/customize-bmad/" class="astro-nmwkdvwx">Français</option><option value="/cs/how-to/customize-bmad/" class="astro-nmwkdvwx">Čeština</option> </select> <svg aria-hidden="true" class="icon caret astro-nmwkdvwx astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg> </label> </starlight-lang-select> </div> </div> </div> </div> </nav> <div class="main-frame astro-2xv6dk2n"> <script type="module">const a=document.getElementById("starlight__sidebar"),n=a?.querySelector("sl-sidebar-state-persist"),o="sl-sidebar-state",i=()=>{let t=[];const e=n?.dataset.hash||"";try{const s=sessionStorage.getItem(o),r=JSON.parse(s||"{}");Array.isArray(r.open)&&r.hash===e&&(t=r.open)}catch{}return{hash:e,open:t,scroll:a?.scrollTop||0}},c=t=>{try{sessionStorage.setItem(o,JSON.stringify(t))}catch{}},d=()=>c(i()),l=(t,e)=>{const s=i();s.open[e]=t,c(s)};n?.addEventListener("click",t=>{if(!(t.target instanceof Element))return;const e=t.target.closest("summary")?.closest("details");if(!e)return;const s=e.querySelector("sl-sidebar-restore"),r=parseInt(s?.dataset.index||"");isNaN(r)||l(!e.open,r)});addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&d()});addEventListener("pageHide",d);</script> <div class="lg:sl-flex astro-ppt5ty36"> <aside class="right-sidebar-container print:hidden astro-ppt5ty36"> <div class="right-sidebar astro-ppt5ty36"> <script type="module" src="/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.hwBsy0Mo.js"></script><script type="module" src="/_astro/TableOfContents.astro_astro_type_script_index_0_lang.FuRcXuRY.js"></script><div class="lg:sl-hidden astro-se4agvxv"><mobile-starlight-toc data-min-h="2" data-max-h="3" class="astro-c5ccmeve"><nav aria-labelledby="starlight__on-this-page--mobile" class="astro-c5ccmeve"><details id="starlight__mobile-toc" class="astro-c5ccmeve"><summary id="starlight__on-this-page--mobile" class="sl-flex astro-c5ccmeve"><span class="toggle sl-flex astro-c5ccmeve">Trên trang này<svg aria-hidden="true" class="caret astro-c5ccmeve astro-zf5byosl" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></span><span class="display-current astro-c5ccmeve"></span></summary><div class="dropdown astro-c5ccmeve"><ul class="isMobile astro-xsqhb6qp" style="--depth: 0;"> <li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#_top" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Tổng quan</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#khi-nào-nên-dùng" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Khi nào nên dùng</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#cách-hoạt-động" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Cách hoạt động</span> </a> <ul class="isMobile astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#mô-hình-override-ba-lớp" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Mô hình override ba lớp</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#quy-tắc-merge-theo-hình-dạng-không-theo-tên-trường" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Quy tắc merge theo hình dạng, không theo tên trường</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#một-số-trường-của-agent-là-chỉ-đọc" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Một số trường của agent là chỉ đọc</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#các-bước-thực-hiện" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Các bước thực hiện</span> </a> <ul class="isMobile astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#1-tìm-bề-mặt-tùy-chỉnh-của-skill" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">1. Tìm bề mặt tùy chỉnh của skill</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#2-tạo-file-override-của-bạn" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">2. Tạo file override của bạn</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#3-tùy-chỉnh-đúng-phần-bạn-cần" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">3. Tùy chỉnh đúng phần bạn cần</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#4-cá-nhân-và-team" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">4. Cá nhân và team</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#cách-quá-trình-resolve-diễn-ra" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Cách quá trình resolve diễn ra</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#tùy-chỉnh-workflow" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Tùy chỉnh workflow</span> </a> <ul class="isMobile astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#thứ-tự-activation" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Thứ tự activation</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#phạm-vi-của-đợt-triển-khai-đầu-tiên-này" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Phạm vi của đợt triển khai đầu tiên này</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#cấu-hình-trung-tâm" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Cấu hình trung tâm</span> </a> <ul class="isMobile astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#merge-bốn-lớp" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Merge bốn lớp</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#cái-gì-nằm-ở-đâu" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Cái gì nằm ở đâu</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#quy-tắc-chỉnh-sửa" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Quy tắc chỉnh sửa</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#ví-dụ-đổi-thương-hiệu-cho-một-agent" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Ví dụ: đổi thương hiệu cho một agent</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#ví-dụ-thêm-một-agent-hư-cấu" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Ví dụ: thêm một agent hư cấu</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#ví-dụ-override-thiết-lập-cài-đặt-của-module" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Ví dụ: override thiết lập cài đặt của module</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#khi-nào-dùng-bề-mặt-nào" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Khi nào dùng bề mặt nào</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#ví-dụ-thực-chiến" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Ví dụ thực chiến</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#khắc-phục-sự-cố" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Khắc phục sự cố</span> </a> </li> </ul> </div></details></nav></mobile-starlight-toc></div><div class="right-sidebar-panel sl-hidden lg:sl-block astro-se4agvxv"><div class="sl-container astro-se4agvxv"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">Trên trang này</h2><ul class="astro-xsqhb6qp" style="--depth: 0;"> <li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#_top" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Tổng quan</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#khi-nào-nên-dùng" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Khi nào nên dùng</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#cách-hoạt-động" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Cách hoạt động</span> </a> <ul class="astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#mô-hình-override-ba-lớp" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Mô hình override ba lớp</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#quy-tắc-merge-theo-hình-dạng-không-theo-tên-trường" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Quy tắc merge theo hình dạng, không theo tên trường</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#một-số-trường-của-agent-là-chỉ-đọc" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Một số trường của agent là chỉ đọc</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#các-bước-thực-hiện" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Các bước thực hiện</span> </a> <ul class="astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#1-tìm-bề-mặt-tùy-chỉnh-của-skill" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">1. Tìm bề mặt tùy chỉnh của skill</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#2-tạo-file-override-của-bạn" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">2. Tạo file override của bạn</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#3-tùy-chỉnh-đúng-phần-bạn-cần" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">3. Tùy chỉnh đúng phần bạn cần</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#4-cá-nhân-và-team" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">4. Cá nhân và team</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#cách-quá-trình-resolve-diễn-ra" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Cách quá trình resolve diễn ra</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#tùy-chỉnh-workflow" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Tùy chỉnh workflow</span> </a> <ul class="astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#thứ-tự-activation" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Thứ tự activation</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#phạm-vi-của-đợt-triển-khai-đầu-tiên-này" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Phạm vi của đợt triển khai đầu tiên này</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#cấu-hình-trung-tâm" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Cấu hình trung tâm</span> </a> <ul class="astro-xsqhb6qp" style="--depth: 1;"> <li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#merge-bốn-lớp" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Merge bốn lớp</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#cái-gì-nằm-ở-đâu" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Cái gì nằm ở đâu</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#quy-tắc-chỉnh-sửa" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Quy tắc chỉnh sửa</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#ví-dụ-đổi-thương-hiệu-cho-một-agent" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Ví dụ: đổi thương hiệu cho một agent</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#ví-dụ-thêm-một-agent-hư-cấu" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Ví dụ: thêm một agent hư cấu</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#ví-dụ-override-thiết-lập-cài-đặt-của-module" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Ví dụ: override thiết lập cài đặt của module</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 1;"> <a href="#khi-nào-dùng-bề-mặt-nào" class="astro-xsqhb6qp" style="--depth: 1;"> <span class="astro-xsqhb6qp" style="--depth: 1;">Khi nào dùng bề mặt nào</span> </a> </li> </ul> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#ví-dụ-thực-chiến" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Ví dụ thực chiến</span> </a> </li><li class="astro-xsqhb6qp" style="--depth: 0;"> <a href="#khắc-phục-sự-cố" class="astro-xsqhb6qp" style="--depth: 0;"> <span class="astro-xsqhb6qp" style="--depth: 0;">Khắc phục sự cố</span> </a> </li> </ul> </nav></starlight-toc></div></div> </div> </aside> <div class="main-pane astro-ppt5ty36"> <main data-pagefind-body class="astro-uxe7q6yi" lang="vi-VN" dir="ltr"> <div class="content-panel astro-aoj46c3a"> <div class="sl-container astro-aoj46c3a"> <h1 id="_top" class="astro-obdi53jg">Cách tùy chỉnh BMad</h1> </div> </div> <div class="content-panel astro-aoj46c3a"> <div class="sl-container astro-aoj46c3a"> <div class="sl-markdown-content"> <p>Điều chỉnh persona của agent, chèn ngữ cảnh theo domain, thêm khả năng mới và cấu hình hành vi workflow mà không cần sửa các file đã cài. Các tùy chỉnh của bạn sẽ được giữ nguyên qua mọi lần cập nhật.</p>
74
- <aside aria-label="Không muốn tự viết TOML? Hãy dùng bmad-customize" class="starlight-aside starlight-aside--tip"><p class="starlight-aside__title" aria-hidden="true"><svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.43909 8.85483L1.44039 8.85354L4.96668 5.33815C5.30653 4.99386 5.7685 4.79662 6.2524 4.78972L6.26553 4.78963L12.9014 4.78962L13.8479 3.84308C16.9187 0.772319 20.0546 0.770617 21.4678 0.975145C21.8617 1.02914 22.2271 1.21053 22.5083 1.4917C22.7894 1.77284 22.9708 2.13821 23.0248 2.53199C23.2294 3.94517 23.2278 7.08119 20.1569 10.1521L19.2107 11.0983V17.7338L19.2106 17.7469C19.2037 18.2308 19.0067 18.6933 18.6624 19.0331L15.1456 22.5608C14.9095 22.7966 14.6137 22.964 14.29 23.0449C13.9663 23.1259 13.6267 23.1174 13.3074 23.0204C12.9881 22.9235 12.7011 22.7417 12.4771 22.4944C12.2533 22.2473 12.1006 21.9441 12.0355 21.6171L11.1783 17.3417L6.65869 12.822L4.34847 12.3589L2.38351 11.965C2.05664 11.8998 1.75272 11.747 1.50564 11.5232C1.25835 11.2992 1.07653 11.0122 0.979561 10.6929C0.882595 10.3736 0.874125 10.034 0.955057 9.7103C1.03599 9.38659 1.20328 9.09092 1.43909 8.85483ZM6.8186 10.8724L2.94619 10.096L6.32006 6.73268H10.9583L6.8186 10.8724ZM15.2219 5.21703C17.681 2.75787 20.0783 2.75376 21.1124 2.8876C21.2462 3.92172 21.2421 6.31895 18.783 8.77812L12.0728 15.4883L8.51172 11.9272L15.2219 5.21703ZM13.9042 21.0538L13.1279 17.1811L17.2676 13.0414V17.68L13.9042 21.0538Z"></path><path d="M9.31827 18.3446C9.45046 17.8529 9.17864 17.3369 8.68945 17.1724C8.56178 17.1294 8.43145 17.1145 8.30512 17.1243C8.10513 17.1398 7.91519 17.2172 7.76181 17.3434C7.62613 17.455 7.51905 17.6048 7.45893 17.7835C6.97634 19.2186 5.77062 19.9878 4.52406 20.4029C4.08525 20.549 3.6605 20.644 3.29471 20.7053C3.35607 20.3395 3.45098 19.9148 3.59711 19.476C4.01221 18.2294 4.78141 17.0237 6.21648 16.5411C6.39528 16.481 6.54504 16.3739 6.65665 16.2382C6.85126 16.0016 6.92988 15.678 6.84417 15.3647C6.83922 15.3466 6.83373 15.3286 6.82767 15.3106C6.74106 15.053 6.55701 14.8557 6.33037 14.7459C6.10949 14.6389 5.84816 14.615 5.59715 14.6994C5.47743 14.7397 5.36103 14.7831 5.24786 14.8294C3.22626 15.6569 2.2347 17.4173 1.75357 18.8621C1.49662 19.6337 1.36993 20.3554 1.30679 20.8818C1.27505 21.1464 1.25893 21.3654 1.25072 21.5213C1.24662 21.5993 1.24448 21.6618 1.24337 21.7066L1.243 21.7226L1.24235 21.7605L1.2422 21.7771L1.24217 21.7827L1.24217 21.7856C1.24217 22.3221 1.67703 22.7579 2.2137 22.7579L2.2155 22.7579L2.22337 22.7578L2.23956 22.7577C2.25293 22.7575 2.27096 22.7572 2.29338 22.7567C2.33821 22.7555 2.40073 22.7534 2.47876 22.7493C2.63466 22.7411 2.85361 22.725 3.11822 22.6932C3.64462 22.6301 4.36636 22.5034 5.13797 22.2464C6.58274 21.7653 8.3431 20.7738 9.17063 18.7522C9.21696 18.639 9.26037 18.5226 9.30064 18.4029C9.30716 18.3835 9.31304 18.364 9.31827 18.3446Z"></path></svg>Không muốn tự viết TOML? Hãy dùng <code dir="auto">bmad-customize</code></p><div class="starlight-aside__content"><p>Skill <code dir="auto">bmad-customize</code> là trợ lý tạo cấu hình có hướng dẫn cho <strong>bề mặt override agent/workflow theo từng skill</strong> được mô tả trong tài liệu này. Nó quét những gì có thể tùy chỉnh trong bản cài đặt của bạn, giúp bạn chọn đúng bề mặt (agent hay workflow), ghi file override và xác minh merge đã áp dụng. Override ở mức cấu hình trung tâm (<code dir="auto">_bmad/custom/config.toml</code>) chưa nằm trong phạm vi v1, nên phần đó vẫn cần viết tay theo mục Cấu hình trung tâm bên dưới. Hãy chạy skill này khi bạn muốn thay đổi theo từng skill; tài liệu này là phần tham chiếu cho <em>có thể tùy chỉnh gì</em> và merge hoạt động ra sao.</p></div></aside>
75
- <div class="sl-heading-wrapper level-h2"><h2 id="khi-nào-nên-dùng">Khi nào nên dùng</h2><a class="sl-anchor-link" href="#khi-nào-nên-dùng"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Khi nào nên dùng”</span></a></div>
76
- <ul>
77
- <li>Bạn muốn thay đổi tính cách hoặc phong cách giao tiếp của agent</li>
78
- <li>Bạn cần cung cấp cho agent các “persistent facts” để luôn nhớ, ví dụ “tổ chức của chúng tôi chỉ dùng AWS”</li>
79
- <li>Bạn muốn thêm các bước khởi động có tính thủ tục mà agent phải chạy mỗi phiên</li>
80
- <li>Bạn muốn thêm menu item tùy chỉnh để gọi skill hoặc prompt riêng</li>
81
- <li>Team của bạn cần các tùy chỉnh dùng chung được commit vào git, đồng thời vẫn cho phép mỗi cá nhân chồng thêm sở thích riêng</li>
82
- </ul>
83
- <aside aria-label="Điều kiện tiên quyết" class="starlight-aside starlight-aside--note"><p class="starlight-aside__title" aria-hidden="true"><svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"><path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z"></path></svg>Điều kiện tiên quyết</p><div class="starlight-aside__content"><ul>
84
- <li>BMad đã được cài trong dự án của bạn (xem <a href="/vi-vn/how-to/install-bmad/">Cách cài đặt BMad</a>)</li>
85
- <li>Python 3.11+ có trên PATH của bạn (để chạy resolver; dùng stdlib <code dir="auto">tomllib</code>, không cần <code dir="auto">pip install</code>, <code dir="auto">uv</code> hay virtualenv)</li>
86
- <li>Một trình soạn thảo văn bản cho file TOML</li>
87
- </ul></div></aside>
88
- <div class="sl-heading-wrapper level-h2"><h2 id="cách-hoạt-động">Cách hoạt động</h2><a class="sl-anchor-link" href="#cách-hoạt-động"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Cách hoạt động”</span></a></div>
89
- <p>Mỗi skill có thể tùy chỉnh đều đi kèm một file <code dir="auto">customize.toml</code> chứa cấu hình mặc định. File này định nghĩa toàn bộ bề mặt tùy chỉnh của skill, nên hãy đọc nó để biết có thể chỉnh gì. Bạn <strong>không bao giờ</strong> sửa trực tiếp file này. Thay vào đó, bạn tạo các file override dạng thưa, chỉ chứa những trường bạn muốn đổi.</p>
90
- <div class="sl-heading-wrapper level-h3"><h3 id="mô-hình-override-ba-lớp">Mô hình override ba lớp</h3><a class="sl-anchor-link" href="#mô-hình-override-ba-lớp"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Mô hình override ba lớp”</span></a></div>
91
- <div class="expressive-code"><link rel="stylesheet" href="/_astro/ec.v4551.css"><script type="module" src="/_astro/ec.0vx5m.js"></script><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">Ưu tiên 1 (thắng): _bmad/custom/{skill-name}.user.toml (cá nhân, bị gitignore)</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">Ưu tiên 2: _bmad/custom/{skill-name}.toml (team/tổ chức, được commit)</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">Ưu tiên 3 (gốc): customize.toml của chính skill (mặc định)</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="Ưu tiên 1 (thắng): _bmad/custom/{skill-name}.user.toml (cá nhân, bị gitignore)Ưu tiên 2: _bmad/custom/{skill-name}.toml (team/tổ chức, được commit)Ưu tiên 3 (gốc): customize.toml của chính skill (mặc định)"><div></div></button></div></figure></div>
92
- <p>Thư mục <code dir="auto">_bmad/custom/</code> ban đầu là rỗng. File chỉ xuất hiện khi ai đó thực sự bắt đầu tùy chỉnh.</p>
93
- <div class="sl-heading-wrapper level-h3"><h3 id="quy-tắc-merge-theo-hình-dạng-không-theo-tên-trường">Quy tắc merge theo hình dạng, không theo tên trường</h3><a class="sl-anchor-link" href="#quy-tắc-merge-theo-hình-dạng-không-theo-tên-trường"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Quy tắc merge theo hình dạng, không theo tên trường”</span></a></div>
94
- <p>Resolver áp dụng bốn quy tắc cấu trúc. Tên trường không được hardcode riêng; hành vi hoàn toàn được quyết định bởi dạng dữ liệu:</p>
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
- <table><thead><tr><th>Dạng</th><th>Quy tắc</th></tr></thead><tbody><tr><td>Scalar (string, int, bool, float)</td><td>Giá trị override sẽ thắng</td></tr><tr><td>Table</td><td>Deep merge, tức merge đệ quy theo các quy tắc này</td></tr><tr><td>Mảng các table mà mọi phần tử đều dùng cùng <strong>một</strong> trường định danh (<code dir="auto">code</code> ở tất cả phần tử, hoặc <code dir="auto">id</code> ở tất cả phần tử)</td><td>Merge theo khóa đó, phần tử trùng khóa sẽ <strong>thay tại chỗ</strong>, phần tử mới sẽ <strong>append</strong></td></tr><tr><td>Mọi mảng khác (mảng scalar, table không có định danh, hoặc trộn <code dir="auto">code</code> và <code dir="auto">id</code>)</td><td><strong>Append</strong>: phần tử gốc trước, rồi team, rồi user</td></tr></tbody></table>
121
- <p><strong>Không có cơ chế xóa.</strong> Override không thể xóa phần tử mặc định. Nếu bạn cần vô hiệu hóa một menu item mặc định, hãy override nó theo <code dir="auto">code</code> bằng mô tả hoặc prompt no-op. Nếu cần tái cấu trúc mảng sâu hơn, bạn phải fork skill.</p>
122
- <p><strong>Quy ước <code dir="auto">code</code> / <code dir="auto">id</code>.</strong> BMad dùng <code dir="auto">code</code> (định danh ngắn như <code dir="auto">"BP"</code> hoặc <code dir="auto">"R1"</code>) và <code dir="auto">id</code> (định danh ổn định dài hơn) làm merge key cho mảng các table. Nếu bạn tự tạo một mảng table muốn có khả năng replace-by-key thay vì append-only, hãy chọn <strong>một</strong> quy ước duy nhất và dùng nhất quán cho toàn bộ mảng. Nếu trộn <code dir="auto">code</code> ở phần tử này và <code dir="auto">id</code> ở phần tử khác, resolver sẽ rơi về chế độ append vì nó không đoán merge theo khóa nào.</p>
123
- <div class="sl-heading-wrapper level-h3"><h3 id="một-số-trường-của-agent-là-chỉ-đọc">Một số trường của agent là chỉ đọc</h3><a class="sl-anchor-link" href="#một-số-trường-của-agent-là-chỉ-đọc"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Một số trường của agent là chỉ đọc”</span></a></div>
124
- <p><code dir="auto">agent.name</code> và <code dir="auto">agent.title</code> vẫn nằm trong <code dir="auto">customize.toml</code> như metadata nguồn gốc, nhưng <code dir="auto">SKILL.md</code> của agent không đọc hai trường này ở runtime, vì danh tính của agent được hardcode. Bạn đặt <code dir="auto">name = "Bob"</code> trong file override cũng sẽ không có tác dụng. Nếu bạn thật sự cần một agent với tên khác, hãy copy thư mục skill, đổi tên và phát hành nó như một custom skill.</p>
125
- <div class="sl-heading-wrapper level-h2"><h2 id="các-bước-thực-hiện">Các bước thực hiện</h2><a class="sl-anchor-link" href="#các-bước-thực-hiện"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Các bước thực hiện”</span></a></div>
126
- <div class="sl-heading-wrapper level-h3"><h3 id="1-tìm-bề-mặt-tùy-chỉnh-của-skill">1. Tìm bề mặt tùy chỉnh của skill</h3><a class="sl-anchor-link" href="#1-tìm-bề-mặt-tùy-chỉnh-của-skill"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “1. Tìm bề mặt tùy chỉnh của skill”</span></a></div>
127
- <p>Hãy mở file <code dir="auto">customize.toml</code> trong thư mục skill đã được cài. Ví dụ với PM agent:</p>
128
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">.claude/skills/bmad-agent-pm/customize.toml</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code=".claude/skills/bmad-agent-pm/customize.toml"><div></div></button></div></figure></div>
129
- <p>(Đường dẫn cụ thể thay đổi theo IDE: Cursor dùng <code dir="auto">.cursor/skills/</code>, Cline dùng <code dir="auto">.cline/skills/</code>, v.v.)</p>
130
- <p>Đây là schema chính thức. Mọi trường bạn nhìn thấy trong file này đều có thể tùy chỉnh, ngoại trừ các trường danh tính chỉ đọc đã nêu ở trên.</p>
131
- <div class="sl-heading-wrapper level-h3"><h3 id="2-tạo-file-override-của-bạn">2. Tạo file override của bạn</h3><a class="sl-anchor-link" href="#2-tạo-file-override-của-bạn"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “2. Tạo file override của bạn”</span></a></div>
132
- <p>Tạo thư mục <code dir="auto">_bmad/custom/</code> ở root dự án nếu nó chưa tồn tại. Sau đó tạo file đặt theo tên skill:</p>
133
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">_bmad/custom/</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#d6deeb;--1:#403f53"> </span></span><span style="--0:#d6deeb;--1:#403f53">bmad-agent-pm.toml # override của team (commit vào git)</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#d6deeb;--1:#403f53"> </span></span><span style="--0:#d6deeb;--1:#403f53">bmad-agent-pm.user.toml # sở thích cá nhân (gitignore)</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="_bmad/custom/ bmad-agent-pm.toml # override của team (commit vào git) bmad-agent-pm.user.toml # sở thích cá nhân (gitignore)"><div></div></button></div></figure></div>
134
- <aside aria-label="KHÔNG copy nguyên file customize.toml" class="starlight-aside starlight-aside--caution"><p class="starlight-aside__title" aria-hidden="true"><svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"><path d="M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z"></path></svg>KHÔNG copy nguyên file <code dir="auto">customize.toml</code></p><div class="starlight-aside__content"><p>File override phải <strong>thưa</strong>. Chỉ đưa vào những trường bạn thực sự muốn đổi, không hơn.</p><p>Mọi trường bạn bỏ qua sẽ tự động được kế thừa từ lớp bên dưới. Nếu bạn copy toàn bộ <code dir="auto">customize.toml</code> vào file override, những bản cập nhật sau này sẽ không chảy vào các giá trị mặc định mới nữa và bạn sẽ âm thầm bị lệch qua mỗi release.</p></div></aside>
135
- <p><strong>Ví dụ: đổi icon và thêm một principle</strong></p>
136
- <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">_bmad/custom/bmad-agent-pm.toml</span></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Chỉ ghi những trường cần đổi. Phần còn lại vẫn kế thừa.</span></div></div><div class="ec-line"><div class="code">
137
- </div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[agent]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">icon</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">🏥</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">principles</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Không phát hành bất cứ thứ gì không thể vượt qua kiểm toán của FDA.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="# Chỉ ghi những trường cần đổi. Phần còn lại vẫn kế thừa.[agent]icon = &#x22;🏥&#x22;principles = [ &#x22;Không phát hành bất cứ thứ gì không thể vượt qua kiểm toán của FDA.&#x22;,]"><div></div></button></div></figure></div>
138
- <p>Ví dụ này append thêm principle mới vào danh sách mặc định và thay icon. Mọi trường khác vẫn giữ nguyên như bản gốc.</p>
139
- <div class="sl-heading-wrapper level-h3"><h3 id="3-tùy-chỉnh-đúng-phần-bạn-cần">3. Tùy chỉnh đúng phần bạn cần</h3><a class="sl-anchor-link" href="#3-tùy-chỉnh-đúng-phần-bạn-cần"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “3. Tùy chỉnh đúng phần bạn cần”</span></a></div>
140
- <p>Mọi ví dụ bên dưới đều giả định schema agent phẳng của BMad. Các trường nằm trực tiếp trong <code dir="auto">[agent]</code>, không có các sub-table như <code dir="auto">metadata</code> hay <code dir="auto">persona</code>.</p>
141
- <p><strong>Scalar (<code dir="auto">icon</code>, <code dir="auto">role</code>, <code dir="auto">identity</code>, <code dir="auto">communication_style</code>).</strong> Scalar override sẽ thắng, nên bạn chỉ cần đặt những trường đang muốn đổi:</p>
142
- <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">_bmad/custom/bmad-agent-pm.toml</span></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[agent]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">icon</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">🏥</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">role</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Dẫn dắt product discovery cho domain healthcare có ràng buộc pháp lý.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">communication_style</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Chính xác, nhạy với compliance, đặt các câu hỏi mang hình dạng kiểm soát ngay từ sớm.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="[agent]icon = &#x22;🏥&#x22;role = &#x22;Dẫn dắt product discovery cho domain healthcare có ràng buộc pháp lý.&#x22;communication_style = &#x22;Chính xác, nhạy với compliance, đặt các câu hỏi mang hình dạng kiểm soát ngay từ sớm.&#x22;"><div></div></button></div></figure></div>
143
- <p><strong>Persistent facts, principles, activation hooks (các mảng append).</strong> Bốn mảng dưới đây đều là append-only. Phần tử của team được thêm sau mặc định, phần tử user được thêm cuối cùng.</p>
144
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[agent]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Các fact tĩnh mà agent luôn giữ trong đầu trong cả phiên: quy tắc tổ chức,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># hằng số domain, sở thích của người dùng. Khác với runtime memory sidecar.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F">#</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Mỗi mục có thể là một câu literal, hoặc tham chiếu `file:` để nạp nội dung</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># file làm facts (hỗ trợ cả glob).</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">persistent_facts</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Tổ chức của chúng tôi chỉ dùng AWS, không đề xuất GCP hay Azure.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Mọi PRD đều phải có legal sign-off trước khi engineering kickoff.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Người dùng mục tiêu là bác sĩ lâm sàng, không phải bệnh nhân, nên ví dụ phải bám theo đối tượng đó.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">file:{project-root}/docs/compliance/hipaa-overview.md</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">file:{project-root}/_bmad/custom/company-glossary.md</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div><div class="ec-line"><div class="code">
145
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Thêm vào hệ giá trị của agent</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">principles</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Không phát hành bất cứ thứ gì không thể vượt qua kiểm toán của FDA.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Giá trị người dùng là trước hết, compliance là luôn luôn.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div><div class="ec-line"><div class="code">
146
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Chạy TRƯỚC activation tiêu chuẩn (persona, persistent_facts, config, greet).</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Dùng cho pre-flight load, compliance checks, hoặc thứ gì cần có sẵn trong</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># context trước khi agent tự giới thiệu.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">activation_steps_prepend</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Quét {project-root}/docs/compliance/ và nạp mọi tài liệu liên quan HIPAA vào context.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div><div class="ec-line"><div class="code">
147
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Chạy SAU khi greet, TRƯỚC menu. Dùng cho thiết lập nặng về context mà bạn</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># muốn chạy sau khi người dùng đã được chào.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">activation_steps_append</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Đọc {project-root}/_bmad/custom/company-glossary.md nếu file tồn tại.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="[agent]# Các fact tĩnh mà agent luôn giữ trong đầu trong cả phiên: quy tắc tổ chức,# hằng số domain, sở thích của người dùng. Khác với runtime memory sidecar.## Mỗi mục có thể là một câu literal, hoặc tham chiếu &#x60;file:&#x60; để nạp nội dung# file làm facts (hỗ trợ cả glob).persistent_facts = [ &#x22;Tổ chức của chúng tôi chỉ dùng AWS, không đề xuất GCP hay Azure.&#x22;, &#x22;Mọi PRD đều phải có legal sign-off trước khi engineering kickoff.&#x22;, &#x22;Người dùng mục tiêu là bác sĩ lâm sàng, không phải bệnh nhân, nên ví dụ phải bám theo đối tượng đó.&#x22;, &#x22;file:{project-root}/docs/compliance/hipaa-overview.md&#x22;, &#x22;file:{project-root}/_bmad/custom/company-glossary.md&#x22;,]# Thêm vào hệ giá trị của agentprinciples = [ &#x22;Không phát hành bất cứ thứ gì không thể vượt qua kiểm toán của FDA.&#x22;, &#x22;Giá trị người dùng là trước hết, compliance là luôn luôn.&#x22;,]# Chạy TRƯỚC activation tiêu chuẩn (persona, persistent_facts, config, greet).# Dùng cho pre-flight load, compliance checks, hoặc thứ gì cần có sẵn trong# context trước khi agent tự giới thiệu.activation_steps_prepend = [ &#x22;Quét {project-root}/docs/compliance/ và nạp mọi tài liệu liên quan HIPAA vào context.&#x22;,]# Chạy SAU khi greet, TRƯỚC menu. Dùng cho thiết lập nặng về context mà bạn# muốn chạy sau khi người dùng đã được chào.activation_steps_append = [ &#x22;Đọc {project-root}/_bmad/custom/company-glossary.md nếu file tồn tại.&#x22;,]"><div></div></button></div></figure></div>
148
- <p><strong>Hai hook này có vai trò khác nhau.</strong> <code dir="auto">prepend</code> chạy trước lời chào để agent có thể nạp ngữ cảnh cần thiết ngay cả khi cá nhân hóa lời chào. <code dir="auto">append</code> chạy sau lời chào để người dùng không phải nhìn màn hình trống trong lúc agent quét một lượng lớn context.</p>
149
- <p><strong>Tùy chỉnh menu (merge theo <code dir="auto">code</code>).</strong> Menu là một mảng table. Mỗi item có trường <code dir="auto">code</code>, nên resolver merge theo mã này: item có <code dir="auto">code</code> trùng sẽ thay tại chỗ, item mới sẽ được append.</p>
150
- <p>Với TOML array-of-tables, mỗi item dùng cú pháp <code dir="auto">[[agent.menu]]</code>:</p>
151
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Thay item CE hiện có bằng một custom skill</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[[agent.menu]]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">code</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">CE</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">description</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Tạo Epic theo framework delivery của tổ chức</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">skill</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">custom-create-epics</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code">
152
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Thêm item mới (RC chưa tồn tại trong mặc định)</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[[agent.menu]]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">code</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">RC</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">description</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Chạy compliance pre-check</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">prompt</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"""</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">Đọc {project-root}/_bmad/custom/compliance-checklist.md</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">và quét toàn bộ tài liệu trong {planning_artifacts} theo checklist đó.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">Báo cáo mọi khoảng trống và trích dẫn điều khoản quy định tương ứng.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"""</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="# Thay item CE hiện có bằng một custom skill[[agent.menu]]code = &#x22;CE&#x22;description = &#x22;Tạo Epic theo framework delivery của tổ chức&#x22;skill = &#x22;custom-create-epics&#x22;# Thêm item mới (RC chưa tồn tại trong mặc định)[[agent.menu]]code = &#x22;RC&#x22;description = &#x22;Chạy compliance pre-check&#x22;prompt = &#x22;&#x22;&#x22;Đọc {project-root}/_bmad/custom/compliance-checklist.mdvà quét toàn bộ tài liệu trong {planning_artifacts} theo checklist đó.Báo cáo mọi khoảng trống và trích dẫn điều khoản quy định tương ứng.&#x22;&#x22;&#x22;"><div></div></button></div></figure></div>
153
- <p>Mỗi menu item chỉ có đúng một trong hai trường <code dir="auto">skill</code> hoặc <code dir="auto">prompt</code>. Những item không xuất hiện trong file override của bạn sẽ giữ nguyên mặc định.</p>
154
- <p><strong>Tham chiếu file.</strong> Khi một trường văn bản cần trỏ tới file (trong <code dir="auto">persistent_facts</code>, <code dir="auto">activation_steps_prepend</code>, <code dir="auto">activation_steps_append</code>, hoặc <code dir="auto">prompt</code> của menu item), hãy dùng đường dẫn đầy đủ dựa trên <code dir="auto">{project-root}</code>. Dù file nằm cạnh override trong <code dir="auto">_bmad/custom/</code>, bạn vẫn nên viết rõ là <code dir="auto">{project-root}/_bmad/custom/info.md</code>. Agent sẽ resolve <code dir="auto">{project-root}</code> ở runtime.</p>
155
- <div class="sl-heading-wrapper level-h3"><h3 id="4-cá-nhân-và-team">4. Cá nhân và team</h3><a class="sl-anchor-link" href="#4-cá-nhân-và-team"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “4. Cá nhân và team”</span></a></div>
156
- <p><strong>File của team</strong> (<code dir="auto">bmad-agent-pm.toml</code>): commit vào git, áp dụng cho cả tổ chức. Dùng cho compliance rules, company persona, năng lực tùy chỉnh dùng chung.</p>
157
- <p><strong>File cá nhân</strong> (<code dir="auto">bmad-agent-pm.user.toml</code>): tự động bị gitignore. Dùng cho điều chỉnh giọng điệu, sở thích workflow cá nhân và các fact riêng mà agent cần lưu ý cho riêng bạn.</p>
158
- <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">_bmad/custom/bmad-agent-pm.user.toml</span></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[agent]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">persistent_facts</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Khi trình bày phương án, luôn kèm ước lượng độ phức tạp ở mức thô (low/medium/high).</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="[agent]persistent_facts = [ &#x22;Khi trình bày phương án, luôn kèm ước lượng độ phức tạp ở mức thô (low/medium/high).&#x22;,]"><div></div></button></div></figure></div>
159
- <div class="sl-heading-wrapper level-h2"><h2 id="cách-quá-trình-resolve-diễn-ra">Cách quá trình resolve diễn ra</h2><a class="sl-anchor-link" href="#cách-quá-trình-resolve-diễn-ra"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Cách quá trình resolve diễn ra”</span></a></div>
160
- <p>Khi agent được kích hoạt, <code dir="auto">SKILL.md</code> của nó sẽ gọi một shared Python script để merge ba lớp nói trên và trả về block kết quả ở dạng JSON. Script này dùng <code dir="auto">tomllib</code> của Python stdlib, nên <code dir="auto">python3</code> thuần là đủ:</p>
161
- <div class="expressive-code"><figure class="frame is-terminal not-content"><figcaption class="header"><span class="title"></span><span class="sr-only">Terminal window</span></figcaption><pre data-language="bash"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">python3</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">{project-root}/_bmad/scripts/resolve_customization.py</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--skill</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">{skill-root}</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--key</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">agent</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="python3 {project-root}/_bmad/scripts/resolve_customization.py \ --skill {skill-root} \ --key agent"><div></div></button></div></figure></div>
162
- <p><strong>Yêu cầu</strong>: Python 3.11+ vì các phiên bản cũ hơn không có <code dir="auto">tomllib</code>. Không cần <code dir="auto">pip install</code>, không cần <code dir="auto">uv</code>, không cần virtualenv. Bạn có thể kiểm tra bằng <code dir="auto">python3 --version</code>. Trên một số nền tảng, <code dir="auto">python3</code> mặc định vẫn là 3.10 hoặc thấp hơn, nên có thể bạn sẽ phải cài 3.11+ riêng.</p>
163
- <p><code dir="auto">--skill</code> trỏ vào thư mục skill đã cài, nơi có file <code dir="auto">customize.toml</code>. Tên skill được lấy từ basename của thư mục, sau đó script sẽ tự tìm <code dir="auto">_bmad/custom/{skill-name}.toml</code> và <code dir="auto">{skill-name}.user.toml</code>.</p>
164
- <p>Một số lệnh hữu ích:</p>
165
- <div class="expressive-code"><figure class="frame is-terminal not-content"><figcaption class="header"><span class="title"></span><span class="sr-only">Terminal window</span></figcaption><pre data-language="bash"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Resolve toàn bộ block agent</span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">python3</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">{project-root}/_bmad/scripts/resolve_customization.py</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--skill</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">/duong-dan/tuyet-doi/toi/bmad-agent-pm</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--key</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">agent</span></div></div><div class="ec-line"><div class="code">
166
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Resolve một trường cụ thể</span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">python3</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">{project-root}/_bmad/scripts/resolve_customization.py</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--skill</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">/duong-dan/tuyet-doi/toi/bmad-agent-pm</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--key</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">agent.icon</span></div></div><div class="ec-line"><div class="code">
167
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Dump toàn bộ</span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">python3</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">{project-root}/_bmad/scripts/resolve_customization.py</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--skill</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">/duong-dan/tuyet-doi/toi/bmad-agent-pm</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="python3 {project-root}/_bmad/scripts/resolve_customization.py \ --skill /duong-dan/tuyet-doi/toi/bmad-agent-pm \ --key agentpython3 {project-root}/_bmad/scripts/resolve_customization.py \ --skill /duong-dan/tuyet-doi/toi/bmad-agent-pm \ --key agent.iconpython3 {project-root}/_bmad/scripts/resolve_customization.py \ --skill /duong-dan/tuyet-doi/toi/bmad-agent-pm"><div></div></button></div></figure></div>
168
- <p>Đầu ra luôn là JSON. Nếu script này không khả dụng trên một nền tảng nào đó, <code dir="auto">SKILL.md</code> sẽ hướng dẫn agent đọc trực tiếp ba file TOML và áp dụng cùng các quy tắc merge.</p>
169
- <div class="sl-heading-wrapper level-h2"><h2 id="tùy-chỉnh-workflow">Tùy chỉnh workflow</h2><a class="sl-anchor-link" href="#tùy-chỉnh-workflow"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Tùy chỉnh workflow”</span></a></div>
170
- <p>Workflow, tức các skill điều phối tiến trình nhiều bước như <code dir="auto">bmad-product-brief</code>, dùng cùng cơ chế override như agent. Khác biệt là bề mặt tùy chỉnh của chúng nằm dưới <code dir="auto">[workflow]</code> thay vì <code dir="auto">[agent]</code>:</p>
171
- <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">_bmad/custom/bmad-product-brief.toml</span></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[workflow]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Giống agent: prepend/append chạy trước và sau activation mặc định của</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># workflow. Override sẽ append vào mặc định.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">activation_steps_prepend</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Nạp {project-root}/docs/product/north-star-principles.md làm context.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div><div class="ec-line"><div class="code">
172
- </div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">activation_steps_append</span><span style="--0:#D6DEEB;--1:#403F53"> = []</span></div></div><div class="ec-line"><div class="code">
173
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Cũng dùng semantics literal-hoặc-file: như phía agent. Những fact này được</span></div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># nạp làm context nền tảng trong suốt lần chạy workflow.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">persistent_facts</span><span style="--0:#D6DEEB;--1:#403F53"> = [</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Mọi brief đều phải có một mục explicit về regulatory risk.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">file:{project-root}/docs/compliance/product-brief-checklist.md</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div><div class="ec-line"><div class="code">
174
- </div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Scalar: chạy đúng một lần khi workflow hoàn tất output chính. Override thắng.</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">on_complete</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Tóm tắt brief trong ba gạch đầu dòng rồi hỏi người dùng có muốn gửi email qua skill gws-gmail-send không.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="[workflow]# Giống agent: prepend/append chạy trước và sau activation mặc định của# workflow. Override sẽ append vào mặc định.activation_steps_prepend = [ &#x22;Nạp {project-root}/docs/product/north-star-principles.md làm context.&#x22;,]activation_steps_append = []# Cũng dùng semantics literal-hoặc-file: như phía agent. Những fact này được# nạp làm context nền tảng trong suốt lần chạy workflow.persistent_facts = [ &#x22;Mọi brief đều phải có một mục explicit về regulatory risk.&#x22;, &#x22;file:{project-root}/docs/compliance/product-brief-checklist.md&#x22;,]# Scalar: chạy đúng một lần khi workflow hoàn tất output chính. Override thắng.on_complete = &#x22;Tóm tắt brief trong ba gạch đầu dòng rồi hỏi người dùng có muốn gửi email qua skill gws-gmail-send không.&#x22;"><div></div></button></div></figure></div>
175
- <p>Cùng một quy ước trường có thể đi xuyên qua ranh giới agent/workflow: <code dir="auto">activation_steps_prepend</code>, <code dir="auto">activation_steps_append</code>, <code dir="auto">persistent_facts</code> với tham chiếu <code dir="auto">file:</code>, và các table kiểu menu <code dir="auto">[[...]]</code> dùng <code dir="auto">code</code> hoặc <code dir="auto">id</code> làm khóa merge. Resolver áp dụng đúng bốn quy tắc cấu trúc đã nêu bất kể top-level key là gì. Tham chiếu từ <code dir="auto">SKILL.md</code> cũng theo namespace tương ứng: <code dir="auto">{workflow.activation_steps_prepend}</code>, <code dir="auto">{workflow.persistent_facts}</code>, <code dir="auto">{workflow.on_complete}</code>. Mọi trường bổ sung mà một workflow tự expose, ví dụ output path, toggle, review setting hay stage flag, cũng sẽ đi theo cùng cơ chế merge dựa trên shape. Muốn biết chính xác workflow đó cho chỉnh gì, hãy đọc <code dir="auto">customize.toml</code> của nó.</p>
176
- <div class="sl-heading-wrapper level-h3"><h3 id="thứ-tự-activation">Thứ tự activation</h3><a class="sl-anchor-link" href="#thứ-tự-activation"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Thứ tự activation”</span></a></div>
177
- <p>Workflow có thể tùy chỉnh sẽ chạy activation theo thứ tự cố định để bạn biết hook của mình được kích hoạt khi nào:</p>
178
- <ol>
179
- <li>Resolve block <code dir="auto">[workflow]</code> bằng merge base -> team -> user</li>
180
- <li>Chạy <code dir="auto">activation_steps_prepend</code> theo đúng thứ tự</li>
181
- <li>Nạp <code dir="auto">persistent_facts</code> làm ngữ cảnh nền tảng cho cả lần chạy</li>
182
- <li>Nạp config (<code dir="auto">_bmad/bmm/config.yaml</code>) và resolve các biến chuẩn như tên dự án, ngôn ngữ, đường dẫn, ngày tháng</li>
183
- <li>Chào người dùng</li>
184
- <li>Chạy <code dir="auto">activation_steps_append</code> theo đúng thứ tự</li>
185
- </ol>
186
- <p>Sau bước 6, phần thân chính của workflow mới bắt đầu. Hãy dùng <code dir="auto">activation_steps_prepend</code> khi bạn cần load context trước cả lúc cá nhân hóa lời chào; dùng <code dir="auto">activation_steps_append</code> khi phần thiết lập khá nặng và bạn muốn người dùng thấy lời chào trước.</p>
187
- <div class="sl-heading-wrapper level-h3"><h3 id="phạm-vi-của-đợt-triển-khai-đầu-tiên-này">Phạm vi của đợt triển khai đầu tiên này</h3><a class="sl-anchor-link" href="#phạm-vi-của-đợt-triển-khai-đầu-tiên-này"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Phạm vi của đợt triển khai đầu tiên này”</span></a></div>
188
- <p>Khả năng tùy chỉnh đang được mở rộng dần. Những trường đã mô tả ở trên, gồm <code dir="auto">activation_steps_prepend</code>, <code dir="auto">activation_steps_append</code>, <code dir="auto">persistent_facts</code>, <code dir="auto">on_complete</code>, là <strong>bề mặt nền tảng</strong> mà mọi workflow có thể tùy chỉnh đều sẽ hỗ trợ, và chúng sẽ ổn định qua các phiên bản. Ngày hôm nay, chỉ với những trường này bạn đã có thể kiểm soát những điểm lớn: thêm bước trước/sau, ghim context nền tảng, kích hoạt hành động tiếp theo sau khi workflow hoàn tất.</p>
189
- <p>Theo thời gian, từng workflow sẽ expose thêm <strong>các điểm tùy chỉnh chuyên biệt hơn</strong> gắn với chính công việc của workflow đó, ví dụ toggle ở từng bước, stage flag, đường dẫn template đầu ra hoặc review gate. Khi những trường đó xuất hiện, chúng sẽ được chồng thêm lên bề mặt nền tảng chứ không thay thế nó, nên những tùy chỉnh bạn viết hôm nay vẫn tiếp tục dùng được.</p>
190
- <p>Nếu bạn đang cần một “núm tinh chỉnh” chi tiết hơn nhưng workflow chưa expose, hãy tạm dùng <code dir="auto">activation_steps_*</code> và <code dir="auto">persistent_facts</code> để điều hướng hành vi, hoặc mở issue mô tả chính xác điểm tùy chỉnh bạn muốn. Chính những nhu cầu đó sẽ quyết định trường nào được bổ sung tiếp theo.</p>
191
- <div class="sl-heading-wrapper level-h2"><h2 id="cấu-hình-trung-tâm">Cấu hình trung tâm</h2><a class="sl-anchor-link" href="#cấu-hình-trung-tâm"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Cấu hình trung tâm”</span></a></div>
192
- <p><code dir="auto">customize.toml</code> theo từng skill bao phủ <strong>hành vi sâu</strong> như hook, menu, <code dir="auto">persistent_facts</code>, override persona cho một agent hay workflow đơn lẻ. Một bề mặt khác sẽ bao phủ <strong>trạng thái cắt ngang</strong> như các câu trả lời lúc cài đặt và roster agent mà những skill bên ngoài như <code dir="auto">bmad-party-mode</code>, <code dir="auto">bmad-retrospective</code> và <code dir="auto">bmad-advanced-elicitation</code> sử dụng. Bề mặt đó nằm trong bốn file TOML ở root dự án:</p>
193
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">_bmad/config.toml (do installer quản lý) team scope: câu trả lời lúc cài đặt + agent roster</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">_bmad/config.user.toml (do installer quản lý) user scope: user_name, language, skill level</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">_bmad/custom/config.toml (do con người viết) team overrides (commit vào git)</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">_bmad/custom/config.user.toml (do con người viết) personal overrides (gitignore)</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="_bmad/config.toml (do installer quản lý) team scope: câu trả lời lúc cài đặt + agent roster_bmad/config.user.toml (do installer quản lý) user scope: user_name, language, skill level_bmad/custom/config.toml (do con người viết) team overrides (commit vào git)_bmad/custom/config.user.toml (do con người viết) personal overrides (gitignore)"><div></div></button></div></figure></div>
194
- <div class="sl-heading-wrapper level-h3"><h3 id="merge-bốn-lớp">Merge bốn lớp</h3><a class="sl-anchor-link" href="#merge-bốn-lớp"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Merge bốn lớp”</span></a></div>
195
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">Ưu tiên 1 (thắng): _bmad/custom/config.user.toml</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">Ưu tiên 2: _bmad/custom/config.toml</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">Ưu tiên 3: _bmad/config.user.toml</span></div></div><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">Ưu tiên 4 (gốc): _bmad/config.toml</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="Ưu tiên 1 (thắng): _bmad/custom/config.user.tomlƯu tiên 2: _bmad/custom/config.tomlƯu tiên 3: _bmad/config.user.tomlƯu tiên 4 (gốc): _bmad/config.toml"><div></div></button></div></figure></div>
196
- <p>Các quy tắc cấu trúc hoàn toàn giống phần per-skill customize: scalar override, table deep-merge, mảng dùng <code dir="auto">code</code> hoặc <code dir="auto">id</code> sẽ merge theo khóa, các mảng khác thì append.</p>
197
- <div class="sl-heading-wrapper level-h3"><h3 id="cái-gì-nằm-ở-đâu">Cái gì nằm ở đâu</h3><a class="sl-anchor-link" href="#cái-gì-nằm-ở-đâu"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Cái gì nằm ở đâu”</span></a></div>
198
- <p>Installer sẽ phân chia câu trả lời theo <code dir="auto">scope:</code> khai báo trên từng prompt trong <code dir="auto">module.yaml</code>:</p>
199
- <ul>
200
- <li>Các section <code dir="auto">[core]</code> và <code dir="auto">[modules.&#x3C;code>]</code>: chứa câu trả lời khi cài. <code dir="auto">scope = team</code> sẽ được ghi vào <code dir="auto">_bmad/config.toml</code>; <code dir="auto">scope = user</code> sẽ nằm trong <code dir="auto">_bmad/config.user.toml</code></li>
201
- <li>Section <code dir="auto">[agents.&#x3C;code>]</code>: “bản chất” của agent gồm code, name, title, icon, description, team, được chưng cất từ khối <code dir="auto">agents:</code> trong <code dir="auto">module.yaml</code> của từng module. Phần này luôn ở scope team</li>
202
- </ul>
203
- <div class="sl-heading-wrapper level-h3"><h3 id="quy-tắc-chỉnh-sửa">Quy tắc chỉnh sửa</h3><a class="sl-anchor-link" href="#quy-tắc-chỉnh-sửa"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Quy tắc chỉnh sửa”</span></a></div>
204
- <ul>
205
- <li><code dir="auto">_bmad/config.toml</code> và <code dir="auto">_bmad/config.user.toml</code> sẽ <strong>được tạo lại sau mỗi lần cài đặt</strong> từ những câu trả lời mà installer thu thập. Hãy coi chúng là output chỉ đọc; mọi chỉnh sửa trực tiếp sẽ bị ghi đè ở lần cài tiếp theo. Nếu muốn thay đổi bền vững một giá trị cài đặt, hãy chạy lại installer hoặc chồng giá trị đó bằng <code dir="auto">_bmad/custom/config.toml</code></li>
206
- <li><code dir="auto">_bmad/custom/config.toml</code> và <code dir="auto">_bmad/custom/config.user.toml</code> sẽ <strong>không bao giờ</strong> bị installer động vào. Đây mới là bề mặt đúng để thêm custom agent, override descriptor của agent, ép các thiết lập dùng chung cho team và ghim mọi giá trị bạn muốn giữ nguyên bất kể câu trả lời lúc cài là gì</li>
207
- </ul>
208
- <div class="sl-heading-wrapper level-h3"><h3 id="ví-dụ-đổi-thương-hiệu-cho-một-agent">Ví dụ: đổi thương hiệu cho một agent</h3><a class="sl-anchor-link" href="#ví-dụ-đổi-thương-hiệu-cho-một-agent"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Ví dụ: đổi thương hiệu cho một agent”</span></a></div>
209
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># _bmad/custom/config.toml (commit vào git, áp dụng cho mọi developer)</span></div></div><div class="ec-line"><div class="code">
210
- </div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[agents.bmad-agent-pm]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">description</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">PM trong domain healthcare, nhạy với compliance, luôn đặt câu hỏi theo hướng FDA ngay từ đầu.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">icon</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">🏥</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="# _bmad/custom/config.toml (commit vào git, áp dụng cho mọi developer)[agents.bmad-agent-pm]description = &#x22;PM trong domain healthcare, nhạy với compliance, luôn đặt câu hỏi theo hướng FDA ngay từ đầu.&#x22;icon = &#x22;🏥&#x22;"><div></div></button></div></figure></div>
211
- <p>Resolver sẽ merge đè lên <code dir="auto">[agents.bmad-agent-pm]</code> do installer sinh ra. <code dir="auto">bmad-party-mode</code> và mọi roster consumer khác sẽ tự động thấy description mới này.</p>
212
- <div class="sl-heading-wrapper level-h3"><h3 id="ví-dụ-thêm-một-agent-hư-cấu">Ví dụ: thêm một agent hư cấu</h3><a class="sl-anchor-link" href="#ví-dụ-thêm-một-agent-hư-cấu"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Ví dụ: thêm một agent hư cấu”</span></a></div>
213
- <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># _bmad/custom/config.user.toml (cá nhân, gitignore)</span></div></div><div class="ec-line"><div class="code">
214
- </div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[agents.kirk]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">team</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">startrek</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">name</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Captain James T. Kirk</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">title</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Starship Captain</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">icon</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">🖖</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">description</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">Một chỉ huy táo bạo, thích bẻ luật. Nói chuyện có các quãng ngắt đầy kịch tính. Suy nghĩ thành tiếng về gánh nặng của quyền chỉ huy.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="# _bmad/custom/config.user.toml (cá nhân, gitignore)[agents.kirk]team = &#x22;startrek&#x22;name = &#x22;Captain James T. Kirk&#x22;title = &#x22;Starship Captain&#x22;icon = &#x22;🖖&#x22;description = &#x22;Một chỉ huy táo bạo, thích bẻ luật. Nói chuyện có các quãng ngắt đầy kịch tính. Suy nghĩ thành tiếng về gánh nặng của quyền chỉ huy.&#x22;"><div></div></button></div></figure></div>
215
- <p>Không cần tạo thư mục skill. Chỉ riêng “essence” này cũng đủ để party-mode spawn Kirk như một giọng nói trong cuộc bàn tròn. Bạn có thể lọc theo trường <code dir="auto">team</code> để chỉ mời nhóm Enterprise.</p>
216
- <div class="sl-heading-wrapper level-h3"><h3 id="ví-dụ-override-thiết-lập-cài-đặt-của-module">Ví dụ: override thiết lập cài đặt của module</h3><a class="sl-anchor-link" href="#ví-dụ-override-thiết-lập-cài-đặt-của-module"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Ví dụ: override thiết lập cài đặt của module”</span></a></div>
217
- <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">_bmad/custom/config.toml</span></figcaption><pre data-language="toml"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">[modules.bmm]</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">planning_artifacts</span><span style="--0:#D6DEEB;--1:#403F53"> = </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#984E4D">/shared/org-planning-artifacts</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="[modules.bmm]planning_artifacts = &#x22;/shared/org-planning-artifacts&#x22;"><div></div></button></div></figure></div>
218
- <p>Giá trị override này sẽ thắng mọi câu trả lời mà từng developer đã nhập khi cài trên máy của họ. Rất hữu ích khi bạn muốn ghim convention của cả team.</p>
219
- <div class="sl-heading-wrapper level-h3"><h3 id="khi-nào-dùng-bề-mặt-nào">Khi nào dùng bề mặt nào</h3><a class="sl-anchor-link" href="#khi-nào-dùng-bề-mặt-nào"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Khi nào dùng bề mặt nào”</span></a></div>
220
-
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
-
240
-
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
- <table><thead><tr><th>Nhu cầu</th><th>Bề mặt nên dùng</th></tr></thead><tbody><tr><td>Thêm lời nhắc gọi MCP tool vào mọi dev workflow</td><td>Theo từng skill: <code dir="auto">_bmad/custom/bmad-agent-dev.toml</code> trong <code dir="auto">persistent_facts</code></td></tr><tr><td>Thêm menu item cho một agent</td><td>Theo từng skill: <code dir="auto">_bmad/custom/bmad-agent-{role}.toml</code> với <code dir="auto">[[agent.menu]]</code></td></tr><tr><td>Đổi template đầu ra của một workflow</td><td>Theo từng skill: <code dir="auto">_bmad/custom/{workflow}.toml</code> bằng scalar override</td></tr><tr><td>Đổi descriptor công khai của một agent</td><td><strong>Cấu hình trung tâm</strong>: <code dir="auto">_bmad/custom/config.toml</code> ở <code dir="auto">[agents.&#x3C;code>]</code></td></tr><tr><td>Thêm custom agent hoặc agent hư cấu vào roster</td><td><strong>Cấu hình trung tâm</strong>: <code dir="auto">_bmad/custom/config*.toml</code> với entry mới <code dir="auto">[agents.&#x3C;code>]</code></td></tr><tr><td>Ghim thiết lập cài đặt dùng chung của team</td><td><strong>Cấu hình trung tâm</strong>: <code dir="auto">_bmad/custom/config.toml</code> trong <code dir="auto">[modules.&#x3C;code>]</code> hoặc <code dir="auto">[core]</code></td></tr></tbody></table>
254
- <p>Trong cùng một dự án, bạn hoàn toàn có thể dùng đồng thời cả hai bề mặt này.</p>
255
- <div class="sl-heading-wrapper level-h2"><h2 id="ví-dụ-thực-chiến">Ví dụ thực chiến</h2><a class="sl-anchor-link" href="#ví-dụ-thực-chiến"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Ví dụ thực chiến”</span></a></div>
256
- <p>Để xem các recipe thiên về doanh nghiệp như định hình một agent trên mọi workflow mà nó dispatch, ép workflow tuân thủ convention nội bộ, publish output lên Confluence và Jira, tùy chỉnh agent roster, hoặc thay template đầu ra bằng template riêng của tổ chức, hãy xem <a href="/vi-vn/how-to/expand-bmad-for-your-org/">Cách mở rộng BMad cho tổ chức của bạn</a>.</p>
257
- <div class="sl-heading-wrapper level-h2"><h2 id="khắc-phục-sự-cố">Khắc phục sự cố</h2><a class="sl-anchor-link" href="#khắc-phục-sự-cố"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Phần tiêu đề “Khắc phục sự cố”</span></a></div>
258
- <p><strong>Tùy chỉnh không xuất hiện?</strong></p>
259
- <ul>
260
- <li>Kiểm tra file của bạn có nằm đúng trong <code dir="auto">_bmad/custom/</code> và dùng đúng tên skill không</li>
261
- <li>Kiểm tra cú pháp TOML: string phải có ngoặc kép, table header dùng <code dir="auto">[section]</code>, array-of-tables dùng <code dir="auto">[[section]]</code>, và mọi khóa scalar hay array của một table phải xuất hiện <em>trước</em> bất kỳ <code dir="auto">[[subtables]]</code> nào của table đó trong file</li>
262
- <li>Với agent, phần tùy chỉnh phải nằm dưới <code dir="auto">[agent]</code>, và các trường bên dưới header đó sẽ thuộc <code dir="auto">agent</code> cho tới khi bạn mở table header khác</li>
263
- <li>Hãy nhớ rằng <code dir="auto">agent.name</code> và <code dir="auto">agent.title</code> là chỉ đọc, override vào đó sẽ không có tác dụng</li>
264
- </ul>
265
- <p><strong>Tùy chỉnh bị hỏng sau khi update?</strong></p>
266
- <ul>
267
- <li>Bạn có copy nguyên file <code dir="auto">customize.toml</code> vào file override không? <strong>Đừng làm vậy.</strong> File override chỉ nên chứa phần chênh lệch. Nếu copy nguyên file, bạn sẽ khóa cứng mặc định cũ và dần lệch khỏi các bản phát hành mới.</li>
268
- </ul>
269
- <p><strong>Muốn biết có thể tùy chỉnh gì?</strong></p>
270
- <ul>
271
- <li>Chạy skill <code dir="auto">bmad-customize</code>. Nó sẽ liệt kê mọi skill có thể tùy chỉnh trong dự án, cho biết skill nào đã có override, rồi dẫn bạn qua quá trình thêm hoặc sửa một override</li>
272
- <li>Hoặc đọc trực tiếp <code dir="auto">customize.toml</code> của skill. Mọi trường ở đó đều có thể tùy chỉnh, trừ <code dir="auto">name</code> và <code dir="auto">title</code></li>
273
- </ul>
274
- <p><strong>Muốn reset?</strong></p>
275
- <ul>
276
- <li>Xóa file override của bạn trong <code dir="auto">_bmad/custom/</code>, skill sẽ tự động rơi về cấu hình mặc định tích hợp sẵn</li>
277
- </ul> </div> <footer class="sl-flex astro-a726w4al"> <div class="meta sl-flex astro-a726w4al"> </div> <div class="pagination-links print:hidden astro-uu4deccg" dir="ltr"> </div> </footer> </div> </div> </main> </div> </div> </div> </div> </body></html>