@jhl8041/dooray-mcp 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/bmad_agent_bmad-master.md +14 -0
- package/.claude/commands/bmad_bmm_agent_analyst.md +14 -0
- package/.claude/commands/bmad_bmm_agent_architect.md +14 -0
- package/.claude/commands/bmad_bmm_agent_dev.md +14 -0
- package/.claude/commands/bmad_bmm_agent_pm.md +14 -0
- package/.claude/commands/bmad_bmm_agent_quick-flow-solo-dev.md +14 -0
- package/.claude/commands/bmad_bmm_agent_sm.md +14 -0
- package/.claude/commands/bmad_bmm_agent_tea.md +14 -0
- package/.claude/commands/bmad_bmm_agent_tech-writer_tech-writer.md +14 -0
- package/.claude/commands/bmad_bmm_agent_ux-designer.md +14 -0
- package/.claude/commands/bmad_bmm_check-implementation-readiness.md +5 -0
- package/.claude/commands/bmad_bmm_code-review.md +13 -0
- package/.claude/commands/bmad_bmm_correct-course.md +13 -0
- package/.claude/commands/bmad_bmm_create-architecture.md +5 -0
- package/.claude/commands/bmad_bmm_create-epics-and-stories.md +5 -0
- package/.claude/commands/bmad_bmm_create-excalidraw-dataflow.md +13 -0
- package/.claude/commands/bmad_bmm_create-excalidraw-diagram.md +13 -0
- package/.claude/commands/bmad_bmm_create-excalidraw-flowchart.md +13 -0
- package/.claude/commands/bmad_bmm_create-excalidraw-wireframe.md +13 -0
- package/.claude/commands/bmad_bmm_create-prd.md +5 -0
- package/.claude/commands/bmad_bmm_create-product-brief.md +5 -0
- package/.claude/commands/bmad_bmm_create-story.md +13 -0
- package/.claude/commands/bmad_bmm_create-ux-design.md +5 -0
- package/.claude/commands/bmad_bmm_dev-story.md +13 -0
- package/.claude/commands/bmad_bmm_document-project.md +13 -0
- package/.claude/commands/bmad_bmm_quick-dev.md +5 -0
- package/.claude/commands/bmad_bmm_quick-spec.md +5 -0
- package/.claude/commands/bmad_bmm_research.md +5 -0
- package/.claude/commands/bmad_bmm_retrospective.md +13 -0
- package/.claude/commands/bmad_bmm_sprint-planning.md +13 -0
- package/.claude/commands/bmad_bmm_sprint-status.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-atdd.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-automate.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-ci.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-framework.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-nfr.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-test-design.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-test-review.md +13 -0
- package/.claude/commands/bmad_bmm_testarch-trace.md +13 -0
- package/.claude/commands/bmad_brainstorming.md +5 -0
- package/.claude/commands/bmad_editorial-review-prose.md +9 -0
- package/.claude/commands/bmad_editorial-review-structure.md +10 -0
- package/.claude/commands/bmad_help.md +9 -0
- package/.claude/commands/bmad_index-docs.md +9 -0
- package/.claude/commands/bmad_party-mode.md +5 -0
- package/.claude/commands/bmad_review-adversarial-general.md +9 -0
- package/.claude/commands/bmad_shard-doc.md +9 -0
- package/_bmad/_config/agent-manifest.csv +11 -0
- package/_bmad/_config/agents/bmm-analyst.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-architect.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-dev.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-pm.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-sm.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-tea.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -0
- package/_bmad/_config/agents/core-bmad-master.customize.yaml +41 -0
- package/_bmad/_config/bmad-help.csv +40 -0
- package/_bmad/_config/files-manifest.csv +281 -0
- package/_bmad/_config/manifest.yaml +21 -0
- package/_bmad/_config/task-manifest.csv +9 -0
- package/_bmad/_config/tool-manifest.csv +1 -0
- package/_bmad/_config/workflow-manifest.csv +32 -0
- package/_bmad/bmm/agents/analyst.md +76 -0
- package/_bmad/bmm/agents/architect.md +58 -0
- package/_bmad/bmm/agents/dev.md +69 -0
- package/_bmad/bmm/agents/pm.md +72 -0
- package/_bmad/bmm/agents/quick-flow-solo-dev.md +69 -0
- package/_bmad/bmm/agents/sm.md +70 -0
- package/_bmad/bmm/agents/tea.md +70 -0
- package/_bmad/bmm/agents/tech-writer/tech-writer.md +70 -0
- package/_bmad/bmm/agents/ux-designer.md +57 -0
- package/_bmad/bmm/config.yaml +16 -0
- package/_bmad/bmm/data/project-context-template.md +26 -0
- package/_bmad/bmm/module-help.csv +32 -0
- package/_bmad/bmm/teams/default-party.csv +21 -0
- package/_bmad/bmm/teams/team-fullstack.yaml +12 -0
- package/_bmad/bmm/testarch/knowledge/adr-quality-readiness-checklist.md +350 -0
- package/_bmad/bmm/testarch/knowledge/api-request.md +442 -0
- package/_bmad/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
- package/_bmad/bmm/testarch/knowledge/auth-session.md +552 -0
- package/_bmad/bmm/testarch/knowledge/burn-in.md +273 -0
- package/_bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -0
- package/_bmad/bmm/testarch/knowledge/component-tdd.md +486 -0
- package/_bmad/bmm/testarch/knowledge/contract-testing.md +957 -0
- package/_bmad/bmm/testarch/knowledge/data-factories.md +500 -0
- package/_bmad/bmm/testarch/knowledge/email-auth.md +721 -0
- package/_bmad/bmm/testarch/knowledge/error-handling.md +725 -0
- package/_bmad/bmm/testarch/knowledge/feature-flags.md +750 -0
- package/_bmad/bmm/testarch/knowledge/file-utils.md +463 -0
- package/_bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -0
- package/_bmad/bmm/testarch/knowledge/fixtures-composition.md +382 -0
- package/_bmad/bmm/testarch/knowledge/intercept-network-call.md +430 -0
- package/_bmad/bmm/testarch/knowledge/log.md +429 -0
- package/_bmad/bmm/testarch/knowledge/network-error-monitor.md +405 -0
- package/_bmad/bmm/testarch/knowledge/network-first.md +486 -0
- package/_bmad/bmm/testarch/knowledge/network-recorder.md +527 -0
- package/_bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -0
- package/_bmad/bmm/testarch/knowledge/overview.md +286 -0
- package/_bmad/bmm/testarch/knowledge/playwright-config.md +730 -0
- package/_bmad/bmm/testarch/knowledge/probability-impact.md +601 -0
- package/_bmad/bmm/testarch/knowledge/recurse.md +421 -0
- package/_bmad/bmm/testarch/knowledge/risk-governance.md +615 -0
- package/_bmad/bmm/testarch/knowledge/selective-testing.md +732 -0
- package/_bmad/bmm/testarch/knowledge/selector-resilience.md +527 -0
- package/_bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
- package/_bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -0
- package/_bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/_bmad/bmm/testarch/knowledge/test-quality.md +664 -0
- package/_bmad/bmm/testarch/knowledge/timing-debugging.md +372 -0
- package/_bmad/bmm/testarch/knowledge/visual-debugging.md +524 -0
- package/_bmad/bmm/testarch/tea-index.csv +35 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/_bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/_bmad/bmm/workflows/1-analysis/research/workflow.md +173 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +13 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +218 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +433 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow.md +150 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +135 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
- package/_bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/_bmad/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +50 -0
- package/_bmad/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/_bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +59 -0
- package/_bmad/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/_bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
- package/_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -0
- package/_bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +57 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +176 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +149 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +192 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +145 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/_bmad/bmm/workflows/document-project/checklist.md +245 -0
- package/_bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/_bmad/bmm/workflows/document-project/instructions.md +221 -0
- package/_bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/_bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/_bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/_bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/_bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/_bmad/bmm/workflows/document-project/workflow.yaml +28 -0
- package/_bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/_bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/_bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/_bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/_bmad/bmm/workflows/testarch/atdd/checklist.md +374 -0
- package/_bmad/bmm/workflows/testarch/atdd/instructions.md +806 -0
- package/_bmad/bmm/workflows/testarch/atdd/workflow.yaml +45 -0
- package/_bmad/bmm/workflows/testarch/automate/checklist.md +582 -0
- package/_bmad/bmm/workflows/testarch/automate/instructions.md +1324 -0
- package/_bmad/bmm/workflows/testarch/automate/workflow.yaml +52 -0
- package/_bmad/bmm/workflows/testarch/ci/checklist.md +247 -0
- package/_bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
- package/_bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
- package/_bmad/bmm/workflows/testarch/ci/instructions.md +536 -0
- package/_bmad/bmm/workflows/testarch/ci/workflow.yaml +45 -0
- package/_bmad/bmm/workflows/testarch/framework/checklist.md +320 -0
- package/_bmad/bmm/workflows/testarch/framework/instructions.md +481 -0
- package/_bmad/bmm/workflows/testarch/framework/workflow.yaml +47 -0
- package/_bmad/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
- package/_bmad/bmm/workflows/testarch/nfr-assess/instructions.md +726 -0
- package/_bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +461 -0
- package/_bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -0
- package/_bmad/bmm/workflows/testarch/test-design/checklist.md +407 -0
- package/_bmad/bmm/workflows/testarch/test-design/instructions.md +1158 -0
- package/_bmad/bmm/workflows/testarch/test-design/test-design-architecture-template.md +213 -0
- package/_bmad/bmm/workflows/testarch/test-design/test-design-qa-template.md +286 -0
- package/_bmad/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
- package/_bmad/bmm/workflows/testarch/test-design/workflow.yaml +69 -0
- package/_bmad/bmm/workflows/testarch/test-review/checklist.md +472 -0
- package/_bmad/bmm/workflows/testarch/test-review/instructions.md +628 -0
- package/_bmad/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
- package/_bmad/bmm/workflows/testarch/test-review/workflow.yaml +46 -0
- package/_bmad/bmm/workflows/testarch/trace/checklist.md +642 -0
- package/_bmad/bmm/workflows/testarch/trace/instructions.md +1030 -0
- package/_bmad/bmm/workflows/testarch/trace/trace-template.md +675 -0
- package/_bmad/bmm/workflows/testarch/trace/workflow.yaml +55 -0
- package/_bmad/core/agents/bmad-master.md +56 -0
- package/_bmad/core/config.yaml +9 -0
- package/_bmad/core/module-help.csv +9 -0
- package/_bmad/core/resources/excalidraw/README.md +160 -0
- package/_bmad/core/resources/excalidraw/excalidraw-helpers.md +127 -0
- package/_bmad/core/resources/excalidraw/library-loader.md +50 -0
- package/_bmad/core/resources/excalidraw/validate-json-instructions.md +79 -0
- package/_bmad/core/tasks/editorial-review-prose.xml +100 -0
- package/_bmad/core/tasks/editorial-review-structure.xml +209 -0
- package/_bmad/core/tasks/help.md +62 -0
- package/_bmad/core/tasks/index-docs.xml +65 -0
- package/_bmad/core/tasks/review-adversarial-general.xml +48 -0
- package/_bmad/core/tasks/shard-doc.xml +109 -0
- package/_bmad/core/tasks/workflow.xml +235 -0
- package/_bmad/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/_bmad/core/workflows/advanced-elicitation/workflow.xml +117 -0
- package/_bmad/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/_bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
- package/_bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/_bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/_bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/_bmad/core/workflows/brainstorming/template.md +15 -0
- package/_bmad/core/workflows/brainstorming/workflow.md +58 -0
- package/_bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/_bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/_bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
- package/_bmad/core/workflows/party-mode/workflow.md +194 -0
- package/dist/api/client.d.ts +16 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +91 -5
- package/dist/api/client.js.map +1 -1
- package/dist/api/projects.d.ts +22 -1
- package/dist/api/projects.d.ts.map +1 -1
- package/dist/api/projects.js +32 -0
- package/dist/api/projects.js.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/projects/delete-attachment-from-task.d.ts.map +1 -0
- package/dist/tools/projects/delete-attachment-from-task.js.map +1 -0
- package/dist/tools/projects/delete-attachment.d.ts +55 -0
- package/dist/tools/projects/delete-attachment.d.ts.map +1 -0
- package/dist/tools/projects/delete-attachment.js +115 -0
- package/dist/tools/projects/delete-attachment.js.map +1 -0
- package/dist/tools/projects/download-attachment.d.ts +55 -0
- package/dist/tools/projects/download-attachment.d.ts.map +1 -0
- package/dist/tools/projects/download-attachment.js +153 -0
- package/dist/tools/projects/download-attachment.js.map +1 -0
- package/dist/tools/projects/get-attachment-list.d.ts +48 -0
- package/dist/tools/projects/get-attachment-list.d.ts.map +1 -0
- package/dist/tools/projects/get-attachment-list.js +118 -0
- package/dist/tools/projects/get-attachment-list.js.map +1 -0
- package/dist/tools/projects/get-attachment-metadata.d.ts +55 -0
- package/dist/tools/projects/get-attachment-metadata.d.ts.map +1 -0
- package/dist/tools/projects/get-attachment-metadata.js +120 -0
- package/dist/tools/projects/get-attachment-metadata.js.map +1 -0
- package/dist/tools/projects/register-attachment-to-task.d.ts.map +1 -0
- package/dist/tools/projects/register-attachment-to-task.js.map +1 -0
- package/dist/tools/projects/upload-attachment.d.ts +55 -0
- package/dist/tools/projects/upload-attachment.d.ts.map +1 -0
- package/dist/tools/projects/upload-attachment.js +143 -0
- package/dist/tools/projects/upload-attachment.js.map +1 -0
- package/dist/types/dooray-api.d.ts +15 -0
- package/dist/types/dooray-api.d.ts.map +1 -1
- package/docs/architecture.md +227 -0
- package/docs/development-guide.md +336 -0
- package/docs/index.md +115 -0
- package/docs/project-overview.md +105 -0
- package/docs/project-scan-report.json +120 -0
- package/docs/source-tree-analysis.md +240 -0
- package/package.json +1 -1
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# Burn-in Test Runner
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
Use smart test selection with git diff analysis to run only affected tests. Filter out irrelevant changes (configs, types, docs) and control test volume with percentage-based execution. Reduce unnecessary CI runs while maintaining reliability.
|
|
6
|
+
|
|
7
|
+
## Rationale
|
|
8
|
+
|
|
9
|
+
Playwright's `--only-changed` triggers all affected tests:
|
|
10
|
+
|
|
11
|
+
- Config file changes trigger hundreds of tests
|
|
12
|
+
- Type definition changes cause full suite runs
|
|
13
|
+
- No volume control (all or nothing)
|
|
14
|
+
- Slow CI pipelines
|
|
15
|
+
|
|
16
|
+
The `burn-in` utility provides:
|
|
17
|
+
|
|
18
|
+
- **Smart filtering**: Skip patterns for irrelevant files (configs, types, docs)
|
|
19
|
+
- **Volume control**: Run percentage of affected tests after filtering
|
|
20
|
+
- **Custom dependency analysis**: More accurate than Playwright's built-in
|
|
21
|
+
- **CI optimization**: Faster pipelines without sacrificing confidence
|
|
22
|
+
- **Process of elimination**: Start with all → filter irrelevant → control volume
|
|
23
|
+
|
|
24
|
+
## Pattern Examples
|
|
25
|
+
|
|
26
|
+
### Example 1: Basic Burn-in Setup
|
|
27
|
+
|
|
28
|
+
**Context**: Run burn-in on changed files compared to main branch.
|
|
29
|
+
|
|
30
|
+
**Implementation**:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// Step 1: Create burn-in script
|
|
34
|
+
// playwright/scripts/burn-in-changed.ts
|
|
35
|
+
import { runBurnIn } from '@seontechnologies/playwright-utils/burn-in'
|
|
36
|
+
|
|
37
|
+
async function main() {
|
|
38
|
+
await runBurnIn({
|
|
39
|
+
configPath: 'playwright/config/.burn-in.config.ts',
|
|
40
|
+
baseBranch: 'main'
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
main().catch(console.error)
|
|
45
|
+
|
|
46
|
+
// Step 2: Create config
|
|
47
|
+
// playwright/config/.burn-in.config.ts
|
|
48
|
+
import type { BurnInConfig } from '@seontechnologies/playwright-utils/burn-in'
|
|
49
|
+
|
|
50
|
+
const config: BurnInConfig = {
|
|
51
|
+
// Files that never trigger tests (first filter)
|
|
52
|
+
skipBurnInPatterns: [
|
|
53
|
+
'**/config/**',
|
|
54
|
+
'**/*constants*',
|
|
55
|
+
'**/*types*',
|
|
56
|
+
'**/*.md',
|
|
57
|
+
'**/README*'
|
|
58
|
+
],
|
|
59
|
+
|
|
60
|
+
// Run 30% of remaining tests after skip filter
|
|
61
|
+
burnInTestPercentage: 0.3,
|
|
62
|
+
|
|
63
|
+
// Burn-in repetition
|
|
64
|
+
burnIn: {
|
|
65
|
+
repeatEach: 3, // Run each test 3 times
|
|
66
|
+
retries: 1 // Allow 1 retry
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export default config
|
|
71
|
+
|
|
72
|
+
// Step 3: Add package.json script
|
|
73
|
+
{
|
|
74
|
+
"scripts": {
|
|
75
|
+
"test:pw:burn-in-changed": "tsx playwright/scripts/burn-in-changed.ts"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Key Points**:
|
|
81
|
+
|
|
82
|
+
- Two-stage filtering: skip patterns, then volume control
|
|
83
|
+
- `skipBurnInPatterns` eliminates irrelevant files
|
|
84
|
+
- `burnInTestPercentage` controls test volume (0.3 = 30%)
|
|
85
|
+
- Custom dependency analysis finds actually affected tests
|
|
86
|
+
|
|
87
|
+
### Example 2: CI Integration
|
|
88
|
+
|
|
89
|
+
**Context**: Use burn-in in GitHub Actions for efficient CI runs.
|
|
90
|
+
|
|
91
|
+
**Implementation**:
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
# .github/workflows/burn-in.yml
|
|
95
|
+
name: Burn-in Changed Tests
|
|
96
|
+
|
|
97
|
+
on:
|
|
98
|
+
pull_request:
|
|
99
|
+
branches: [main]
|
|
100
|
+
|
|
101
|
+
jobs:
|
|
102
|
+
burn-in:
|
|
103
|
+
runs-on: ubuntu-latest
|
|
104
|
+
steps:
|
|
105
|
+
- uses: actions/checkout@v4
|
|
106
|
+
with:
|
|
107
|
+
fetch-depth: 0 # Need git history
|
|
108
|
+
|
|
109
|
+
- name: Setup Node
|
|
110
|
+
uses: actions/setup-node@v4
|
|
111
|
+
|
|
112
|
+
- name: Install dependencies
|
|
113
|
+
run: npm ci
|
|
114
|
+
|
|
115
|
+
- name: Run burn-in on changed tests
|
|
116
|
+
run: npm run test:pw:burn-in-changed -- --base-branch=origin/main
|
|
117
|
+
|
|
118
|
+
- name: Upload artifacts
|
|
119
|
+
if: failure()
|
|
120
|
+
uses: actions/upload-artifact@v4
|
|
121
|
+
with:
|
|
122
|
+
name: burn-in-failures
|
|
123
|
+
path: test-results/
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Key Points**:
|
|
127
|
+
|
|
128
|
+
- `fetch-depth: 0` for full git history
|
|
129
|
+
- Pass `--base-branch=origin/main` for PR comparison
|
|
130
|
+
- Upload artifacts only on failure
|
|
131
|
+
- Significantly faster than full suite
|
|
132
|
+
|
|
133
|
+
### Example 3: How It Works (Process of Elimination)
|
|
134
|
+
|
|
135
|
+
**Context**: Understanding the filtering pipeline.
|
|
136
|
+
|
|
137
|
+
**Scenario:**
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Git diff finds: 21 changed files
|
|
141
|
+
├─ Step 1: Skip patterns filter
|
|
142
|
+
│ Removed: 6 files (*.md, config/*, *types*)
|
|
143
|
+
│ Remaining: 15 files
|
|
144
|
+
│
|
|
145
|
+
├─ Step 2: Dependency analysis
|
|
146
|
+
│ Tests that import these 15 files: 45 tests
|
|
147
|
+
│
|
|
148
|
+
└─ Step 3: Volume control (30%)
|
|
149
|
+
Final tests to run: 14 tests (30% of 45)
|
|
150
|
+
|
|
151
|
+
Result: Run 14 targeted tests instead of 147 with --only-changed!
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Key Points**:
|
|
155
|
+
|
|
156
|
+
- Three-stage pipeline: skip → analyze → control
|
|
157
|
+
- Custom dependency analysis (not just imports)
|
|
158
|
+
- Percentage applies AFTER filtering
|
|
159
|
+
- Dramatically reduces CI time
|
|
160
|
+
|
|
161
|
+
### Example 4: Environment-Specific Configuration
|
|
162
|
+
|
|
163
|
+
**Context**: Different settings for local vs CI environments.
|
|
164
|
+
|
|
165
|
+
**Implementation**:
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
import type { BurnInConfig } from '@seontechnologies/playwright-utils/burn-in';
|
|
169
|
+
|
|
170
|
+
const config: BurnInConfig = {
|
|
171
|
+
skipBurnInPatterns: ['**/config/**', '**/*types*', '**/*.md'],
|
|
172
|
+
|
|
173
|
+
// CI runs fewer iterations, local runs more
|
|
174
|
+
burnInTestPercentage: process.env.CI ? 0.2 : 0.3,
|
|
175
|
+
|
|
176
|
+
burnIn: {
|
|
177
|
+
repeatEach: process.env.CI ? 2 : 3,
|
|
178
|
+
retries: process.env.CI ? 0 : 1, // No retries in CI
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export default config;
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Key Points**:
|
|
186
|
+
|
|
187
|
+
- `process.env.CI` for environment detection
|
|
188
|
+
- Lower percentage in CI (20% vs 30%)
|
|
189
|
+
- Fewer iterations in CI (2 vs 3)
|
|
190
|
+
- No retries in CI (fail fast)
|
|
191
|
+
|
|
192
|
+
### Example 5: Sharding Support
|
|
193
|
+
|
|
194
|
+
**Context**: Distribute burn-in tests across multiple CI workers.
|
|
195
|
+
|
|
196
|
+
**Implementation**:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// burn-in-changed.ts with sharding
|
|
200
|
+
import { runBurnIn } from '@seontechnologies/playwright-utils/burn-in';
|
|
201
|
+
|
|
202
|
+
async function main() {
|
|
203
|
+
const shardArg = process.argv.find((arg) => arg.startsWith('--shard='));
|
|
204
|
+
|
|
205
|
+
if (shardArg) {
|
|
206
|
+
process.env.PW_SHARD = shardArg.split('=')[1];
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
await runBurnIn({
|
|
210
|
+
configPath: 'playwright/config/.burn-in.config.ts',
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
```yaml
|
|
216
|
+
# GitHub Actions with sharding
|
|
217
|
+
jobs:
|
|
218
|
+
burn-in:
|
|
219
|
+
strategy:
|
|
220
|
+
matrix:
|
|
221
|
+
shard: [1/3, 2/3, 3/3]
|
|
222
|
+
steps:
|
|
223
|
+
- run: npm run test:pw:burn-in-changed -- --shard=${{ matrix.shard }}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Key Points**:
|
|
227
|
+
|
|
228
|
+
- Pass `--shard=1/3` for parallel execution
|
|
229
|
+
- Burn-in respects Playwright sharding
|
|
230
|
+
- Distribute across multiple workers
|
|
231
|
+
- Reduces total CI time further
|
|
232
|
+
|
|
233
|
+
## Integration with CI Workflow
|
|
234
|
+
|
|
235
|
+
When setting up CI with `*ci` workflow, recommend burn-in for:
|
|
236
|
+
|
|
237
|
+
- Pull request validation
|
|
238
|
+
- Pre-merge checks
|
|
239
|
+
- Nightly builds (subset runs)
|
|
240
|
+
|
|
241
|
+
## Related Fragments
|
|
242
|
+
|
|
243
|
+
- `ci-burn-in.md` - Traditional burn-in patterns (10-iteration loops)
|
|
244
|
+
- `selective-testing.md` - Test selection strategies
|
|
245
|
+
- `overview.md` - Installation
|
|
246
|
+
|
|
247
|
+
## Anti-Patterns
|
|
248
|
+
|
|
249
|
+
**❌ Over-aggressive skip patterns:**
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
skipBurnInPatterns: [
|
|
253
|
+
'**/*', // Skips everything!
|
|
254
|
+
];
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**✅ Targeted skip patterns:**
|
|
258
|
+
|
|
259
|
+
```typescript
|
|
260
|
+
skipBurnInPatterns: ['**/config/**', '**/*types*', '**/*.md', '**/*constants*'];
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**❌ Too low percentage (false confidence):**
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
burnInTestPercentage: 0.05; // Only 5% - might miss issues
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**✅ Balanced percentage:**
|
|
270
|
+
|
|
271
|
+
```typescript
|
|
272
|
+
burnInTestPercentage: 0.2; // 20% in CI, provides good coverage
|
|
273
|
+
```
|