bmad-method 6.0.5-next.8 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/bmm/agents/analyst.agent.yaml +1 -1
- package/src/bmm/module-help.csv +1 -1
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +1 -1
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +1 -1
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +1 -1
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +1 -1
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +2 -2
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +2 -2
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +2 -2
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +2 -2
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +2 -2
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +2 -2
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +2 -2
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +2 -2
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +31 -13
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +1 -1
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +6 -2
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +1 -1
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +4 -0
- package/src/bmm/workflows/4-implementation/code-review/workflow.md +4 -7
- package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md +0 -4
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +1 -1
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +1 -1
- package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +1 -1
- package/src/core/module-help.csv +2 -2
- package/src/core/workflows/bmad-brainstorming/SKILL.md +6 -0
- package/src/core/workflows/bmad-brainstorming/bmad-skill-manifest.yaml +1 -0
- package/src/core/workflows/{brainstorming → bmad-brainstorming}/workflow.md +2 -5
- package/src/core/workflows/bmad-party-mode/SKILL.md +6 -0
- package/src/core/workflows/bmad-party-mode/bmad-skill-manifest.yaml +1 -0
- package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-03-graceful-exit.md +0 -1
- package/src/core/workflows/{party-mode → bmad-party-mode}/workflow.md +0 -4
- package/tools/cli/external-official-modules.yaml +18 -18
- package/tools/cli/installers/lib/core/installer.js +25 -8
- package/tools/cli/installers/lib/ide/_base-ide.js +0 -1
- package/tools/cli/installers/lib/ide/_config-driven.js +9 -4
- package/tools/cli/installers/lib/ide/manager.js +3 -3
- package/tools/cli/lib/agent/compiler.js +1 -1
- package/.augment/code_review_guidelines.yaml +0 -231
- package/.coderabbit.yaml +0 -85
- package/.github/CODE_OF_CONDUCT.md +0 -128
- package/.github/FUNDING.yaml +0 -15
- package/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -124
- package/.github/ISSUE_TEMPLATE/config.yaml +0 -8
- package/.github/ISSUE_TEMPLATE/documentation.yaml +0 -55
- package/.github/ISSUE_TEMPLATE/feature-request.md +0 -22
- package/.github/ISSUE_TEMPLATE/issue.md +0 -32
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -13
- package/.github/scripts/discord-helpers.sh +0 -34
- package/.github/workflows/coderabbit-review.yaml +0 -22
- package/.github/workflows/discord.yaml +0 -90
- package/.github/workflows/docs.yaml +0 -64
- package/.github/workflows/publish.yaml +0 -133
- package/.github/workflows/quality.yaml +0 -116
- package/.husky/pre-commit +0 -20
- package/.markdownlint-cli2.yaml +0 -41
- package/.nvmrc +0 -1
- package/.prettierignore +0 -12
- package/.vscode/settings.json +0 -96
- package/CHANGELOG.md +0 -1785
- package/CNAME +0 -1
- package/CONTRIBUTING.md +0 -176
- package/CONTRIBUTORS.md +0 -32
- package/SECURITY.md +0 -85
- package/TRADEMARK.md +0 -55
- package/Wordmark.png +0 -0
- package/banner-bmad-method.png +0 -0
- package/docs/404.md +0 -9
- package/docs/_STYLE_GUIDE.md +0 -370
- package/docs/explanation/advanced-elicitation.md +0 -49
- package/docs/explanation/adversarial-review.md +0 -59
- package/docs/explanation/brainstorming.md +0 -33
- package/docs/explanation/established-projects-faq.md +0 -50
- package/docs/explanation/party-mode.md +0 -59
- package/docs/explanation/preventing-agent-conflicts.md +0 -112
- package/docs/explanation/project-context.md +0 -157
- package/docs/explanation/quick-dev-new-preview.md +0 -73
- package/docs/explanation/quick-flow.md +0 -77
- package/docs/explanation/why-solutioning-matters.md +0 -77
- package/docs/how-to/customize-bmad.md +0 -172
- package/docs/how-to/established-projects.md +0 -117
- package/docs/how-to/get-answers-about-bmad.md +0 -138
- package/docs/how-to/install-bmad.md +0 -116
- package/docs/how-to/non-interactive-installation.md +0 -171
- package/docs/how-to/project-context.md +0 -136
- package/docs/how-to/quick-fixes.md +0 -123
- package/docs/how-to/shard-large-documents.md +0 -78
- package/docs/how-to/upgrade-to-v6.md +0 -100
- package/docs/index.md +0 -60
- package/docs/reference/agents.md +0 -28
- package/docs/reference/commands.md +0 -145
- package/docs/reference/modules.md +0 -76
- package/docs/reference/testing.md +0 -106
- package/docs/reference/workflow-map.md +0 -89
- package/docs/roadmap.mdx +0 -136
- package/docs/tutorials/getting-started.md +0 -275
- package/docs/zh-cn/404.md +0 -9
- package/docs/zh-cn/_STYLE_GUIDE.md +0 -370
- package/docs/zh-cn/explanation/advanced-elicitation.md +0 -62
- package/docs/zh-cn/explanation/adversarial-review.md +0 -71
- package/docs/zh-cn/explanation/brainstorming.md +0 -43
- package/docs/zh-cn/explanation/established-projects-faq.md +0 -60
- package/docs/zh-cn/explanation/party-mode.md +0 -79
- package/docs/zh-cn/explanation/preventing-agent-conflicts.md +0 -137
- package/docs/zh-cn/explanation/project-context.md +0 -176
- package/docs/zh-cn/explanation/quick-flow.md +0 -93
- package/docs/zh-cn/explanation/why-solutioning-matters.md +0 -90
- package/docs/zh-cn/how-to/customize-bmad.md +0 -182
- package/docs/zh-cn/how-to/established-projects.md +0 -134
- package/docs/zh-cn/how-to/get-answers-about-bmad.md +0 -144
- package/docs/zh-cn/how-to/install-bmad.md +0 -105
- package/docs/zh-cn/how-to/non-interactive-installation.md +0 -181
- package/docs/zh-cn/how-to/project-context.md +0 -152
- package/docs/zh-cn/how-to/quick-fixes.md +0 -140
- package/docs/zh-cn/how-to/shard-large-documents.md +0 -86
- package/docs/zh-cn/how-to/upgrade-to-v6.md +0 -120
- package/docs/zh-cn/index.md +0 -69
- package/docs/zh-cn/reference/agents.md +0 -41
- package/docs/zh-cn/reference/commands.md +0 -166
- package/docs/zh-cn/reference/modules.md +0 -94
- package/docs/zh-cn/reference/testing.md +0 -122
- package/docs/zh-cn/reference/workflow-map.md +0 -104
- package/docs/zh-cn/roadmap.mdx +0 -152
- package/docs/zh-cn/tutorials/getting-started.md +0 -300
- package/eslint.config.mjs +0 -141
- package/prettier.config.mjs +0 -32
- package/src/core/workflows/brainstorming/bmad-skill-manifest.yaml +0 -3
- package/src/core/workflows/party-mode/bmad-skill-manifest.yaml +0 -3
- package/test/README.md +0 -295
- package/test/adversarial-review-tests/README.md +0 -56
- package/test/adversarial-review-tests/sample-content.md +0 -46
- package/test/adversarial-review-tests/test-cases.yaml +0 -103
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +0 -27
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +0 -30
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +0 -22
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +0 -20
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +0 -24
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +0 -31
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +0 -25
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +0 -26
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +0 -24
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +0 -27
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +0 -23
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +0 -24
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +0 -27
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +0 -27
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +0 -24
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +0 -29
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +0 -31
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +0 -28
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +0 -28
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +0 -5
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +0 -28
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +0 -11
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +0 -19
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +0 -18
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +0 -22
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +0 -27
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +0 -31
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +0 -22
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +0 -38
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +0 -23
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +0 -31
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +0 -34
- package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +0 -23
- package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +0 -24
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +0 -22
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +0 -28
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +0 -30
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +0 -24
- package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +0 -3
- package/test/fixtures/file-refs-csv/invalid/empty-data.csv +0 -1
- package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +0 -3
- package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +0 -3
- package/test/fixtures/file-refs-csv/valid/bmm-style.csv +0 -3
- package/test/fixtures/file-refs-csv/valid/core-style.csv +0 -3
- package/test/fixtures/file-refs-csv/valid/minimal.csv +0 -2
- package/test/test-agent-schema.js +0 -387
- package/test/test-cli-integration.sh +0 -159
- package/test/test-file-refs-csv.js +0 -133
- package/test/test-install-to-bmad.js +0 -154
- package/test/test-installation-components.js +0 -1796
- package/test/test-rehype-plugins.mjs +0 -1050
- package/test/test-workflow-path-regex.js +0 -88
- package/test/unit-test-schema.js +0 -133
- package/tools/build-docs.mjs +0 -464
- package/tools/docs/_prompt-external-modules-page.md +0 -59
- package/tools/docs/fix-refs.md +0 -91
- package/tools/docs/native-skills-migration-checklist.md +0 -281
- package/tools/fix-doc-links.js +0 -285
- package/tools/validate-agent-schema.js +0 -110
- package/tools/validate-doc-links.js +0 -407
- package/tools/validate-file-refs.js +0 -556
- package/website/README.md +0 -75
- package/website/astro.config.mjs +0 -157
- package/website/public/diagrams/quick-dev-diagram.png +0 -0
- package/website/public/favicon.ico +0 -0
- package/website/public/img/bmad-dark.png +0 -0
- package/website/public/img/bmad-light.png +0 -0
- package/website/public/workflow-map-diagram.html +0 -361
- package/website/src/components/Banner.astro +0 -62
- package/website/src/components/Header.astro +0 -96
- package/website/src/components/MobileMenuFooter.astro +0 -33
- package/website/src/content/config.ts +0 -7
- package/website/src/content/i18n/zh-CN.json +0 -28
- package/website/src/lib/site-url.mjs +0 -25
- package/website/src/pages/404.astro +0 -11
- package/website/src/pages/robots.txt.ts +0 -48
- package/website/src/rehype-base-paths.js +0 -112
- package/website/src/rehype-markdown-links.js +0 -119
- package/website/src/styles/custom.css +0 -805
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/brain-methods.csv +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-01-session-setup.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-01b-continue.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02a-user-selected.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02b-ai-recommended.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02c-random-selection.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02d-progressive-flow.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-03-technique-execution.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-04-idea-organization.md +0 -0
- /package/src/core/workflows/{brainstorming → bmad-brainstorming}/template.md +0 -0
- /package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-01-agent-loading.md +0 -0
- /package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-02-discussion-orchestration.md +0 -0
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Issue
|
|
3
|
-
about: Report a problem or something that's not working
|
|
4
|
-
title: ''
|
|
5
|
-
labels: ''
|
|
6
|
-
assignees: ''
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
**Describe the bug**
|
|
10
|
-
A clear and concise description of what the bug is.
|
|
11
|
-
|
|
12
|
-
**Steps to reproduce**
|
|
13
|
-
1. What were you doing when the bug occurred?
|
|
14
|
-
2. What steps can recreate the issue?
|
|
15
|
-
|
|
16
|
-
**Expected behavior**
|
|
17
|
-
A clear and concise description of what you expected to happen.
|
|
18
|
-
|
|
19
|
-
**Environment (if relevant)**
|
|
20
|
-
- Model(s) used:
|
|
21
|
-
- Agentic IDE used:
|
|
22
|
-
- BMad version:
|
|
23
|
-
- Project language:
|
|
24
|
-
|
|
25
|
-
**Screenshots or links**
|
|
26
|
-
If applicable, add screenshots or links to help explain the problem.
|
|
27
|
-
|
|
28
|
-
**PR**
|
|
29
|
-
If you'd like to contribute a fix, please indicate you're working on it or link to your PR. See [CONTRIBUTING.md](../../CONTRIBUTING.md) — contributions are always welcome!
|
|
30
|
-
|
|
31
|
-
**Additional context**
|
|
32
|
-
Add any other context about the problem here. The more information you provide, the easier it is to help.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
## What
|
|
2
|
-
<!-- 1-2 sentences describing WHAT changed -->
|
|
3
|
-
|
|
4
|
-
## Why
|
|
5
|
-
<!-- 1-2 sentences explaining WHY this change is needed -->
|
|
6
|
-
<!-- Fixes `#issue_number` (if applicable) -->
|
|
7
|
-
|
|
8
|
-
## How
|
|
9
|
-
<!-- 2-3 bullets listing HOW you implemented it -->
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
## Testing
|
|
13
|
-
<!-- 1-2 sentences on how you tested this -->
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Discord notification helper functions
|
|
3
|
-
|
|
4
|
-
# Escape markdown special chars and @mentions for safe Discord display
|
|
5
|
-
# Skips content inside <URL> wrappers to preserve URLs intact
|
|
6
|
-
esc() {
|
|
7
|
-
awk '{
|
|
8
|
-
result = ""; in_url = 0; n = length($0)
|
|
9
|
-
for (i = 1; i <= n; i++) {
|
|
10
|
-
c = substr($0, i, 1)
|
|
11
|
-
if (c == "<" && substr($0, i, 8) ~ /^<https?:/) in_url = 1
|
|
12
|
-
if (in_url) { result = result c; if (c == ">") in_url = 0 }
|
|
13
|
-
else if (c == "@") result = result "@ "
|
|
14
|
-
else if (index("[]\\*_()~`", c) > 0) result = result "\\" c
|
|
15
|
-
else result = result c
|
|
16
|
-
}
|
|
17
|
-
print result
|
|
18
|
-
}'
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
# Truncate to $1 chars (or 80 if wall-of-text with <3 spaces)
|
|
22
|
-
trunc() {
|
|
23
|
-
local max=$1
|
|
24
|
-
local txt=$(tr '\n\r' ' ' | cut -c1-"$max")
|
|
25
|
-
local spaces=$(printf '%s' "$txt" | tr -cd ' ' | wc -c)
|
|
26
|
-
[ "$spaces" -lt 3 ] && [ ${#txt} -gt 80 ] && txt=$(printf '%s' "$txt" | cut -c1-80)
|
|
27
|
-
printf '%s' "$txt"
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
# Remove incomplete URL at end of truncated text (incomplete URLs are useless)
|
|
31
|
-
strip_trailing_url() { sed -E 's~<?https?://[^[:space:]]*$~~'; }
|
|
32
|
-
|
|
33
|
-
# Wrap URLs in <> to suppress Discord embeds (keeps links clickable)
|
|
34
|
-
wrap_urls() { sed -E 's~https?://[^[:space:]<>]+~<&>~g'; }
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
name: Trigger CodeRabbit on Ready for Review
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request_target:
|
|
5
|
-
types: [ready_for_review]
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
trigger-review:
|
|
9
|
-
runs-on: ubuntu-latest
|
|
10
|
-
permissions:
|
|
11
|
-
pull-requests: write
|
|
12
|
-
steps:
|
|
13
|
-
- name: Request CodeRabbit review
|
|
14
|
-
uses: actions/github-script@v7
|
|
15
|
-
with:
|
|
16
|
-
script: |
|
|
17
|
-
await github.rest.issues.createComment({
|
|
18
|
-
owner: context.repo.owner,
|
|
19
|
-
repo: context.repo.repo,
|
|
20
|
-
issue_number: context.payload.pull_request.number,
|
|
21
|
-
body: '@coderabbitai review'
|
|
22
|
-
});
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
name: Discord Notification
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
types: [opened, closed]
|
|
6
|
-
issues:
|
|
7
|
-
types: [opened]
|
|
8
|
-
|
|
9
|
-
env:
|
|
10
|
-
MAX_TITLE: 100
|
|
11
|
-
MAX_BODY: 250
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
pull_request:
|
|
15
|
-
if: github.event_name == 'pull_request'
|
|
16
|
-
runs-on: ubuntu-latest
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
with:
|
|
20
|
-
ref: ${{ github.event.repository.default_branch }}
|
|
21
|
-
sparse-checkout: .github/scripts
|
|
22
|
-
sparse-checkout-cone-mode: false
|
|
23
|
-
- name: Notify Discord
|
|
24
|
-
env:
|
|
25
|
-
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
|
26
|
-
ACTION: ${{ github.event.action }}
|
|
27
|
-
MERGED: ${{ github.event.pull_request.merged }}
|
|
28
|
-
PR_NUM: ${{ github.event.pull_request.number }}
|
|
29
|
-
PR_URL: ${{ github.event.pull_request.html_url }}
|
|
30
|
-
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
31
|
-
PR_USER: ${{ github.event.pull_request.user.login }}
|
|
32
|
-
PR_BODY: ${{ github.event.pull_request.body }}
|
|
33
|
-
run: |
|
|
34
|
-
set -o pipefail
|
|
35
|
-
source .github/scripts/discord-helpers.sh
|
|
36
|
-
[ -z "$WEBHOOK" ] && exit 0
|
|
37
|
-
|
|
38
|
-
if [ "$ACTION" = "opened" ]; then ICON="🔀"; LABEL="New PR"
|
|
39
|
-
elif [ "$ACTION" = "closed" ] && [ "$MERGED" = "true" ]; then ICON="🎉"; LABEL="Merged"
|
|
40
|
-
elif [ "$ACTION" = "closed" ]; then ICON="❌"; LABEL="Closed"; fi
|
|
41
|
-
|
|
42
|
-
TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc)
|
|
43
|
-
[ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
|
|
44
|
-
BODY=$(printf '%s' "$PR_BODY" | trunc $MAX_BODY)
|
|
45
|
-
if [ -n "$PR_BODY" ] && [ ${#PR_BODY} -gt $MAX_BODY ]; then
|
|
46
|
-
BODY=$(printf '%s' "$BODY" | strip_trailing_url)
|
|
47
|
-
fi
|
|
48
|
-
BODY=$(printf '%s' "$BODY" | wrap_urls | esc)
|
|
49
|
-
[ -n "$PR_BODY" ] && [ ${#PR_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
|
50
|
-
[ -n "$BODY" ] && BODY=" · $BODY"
|
|
51
|
-
USER=$(printf '%s' "$PR_USER" | esc)
|
|
52
|
-
|
|
53
|
-
MSG="$ICON **[$LABEL #$PR_NUM: $TITLE](<$PR_URL>)**"$'\n'"by @$USER$BODY"
|
|
54
|
-
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
|
55
|
-
|
|
56
|
-
issues:
|
|
57
|
-
if: github.event_name == 'issues'
|
|
58
|
-
runs-on: ubuntu-latest
|
|
59
|
-
steps:
|
|
60
|
-
- uses: actions/checkout@v4
|
|
61
|
-
with:
|
|
62
|
-
ref: ${{ github.event.repository.default_branch }}
|
|
63
|
-
sparse-checkout: .github/scripts
|
|
64
|
-
sparse-checkout-cone-mode: false
|
|
65
|
-
- name: Notify Discord
|
|
66
|
-
env:
|
|
67
|
-
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
|
68
|
-
ISSUE_NUM: ${{ github.event.issue.number }}
|
|
69
|
-
ISSUE_URL: ${{ github.event.issue.html_url }}
|
|
70
|
-
ISSUE_TITLE: ${{ github.event.issue.title }}
|
|
71
|
-
ISSUE_USER: ${{ github.event.issue.user.login }}
|
|
72
|
-
ISSUE_BODY: ${{ github.event.issue.body }}
|
|
73
|
-
run: |
|
|
74
|
-
set -o pipefail
|
|
75
|
-
source .github/scripts/discord-helpers.sh
|
|
76
|
-
[ -z "$WEBHOOK" ] && exit 0
|
|
77
|
-
|
|
78
|
-
TITLE=$(printf '%s' "$ISSUE_TITLE" | trunc $MAX_TITLE | esc)
|
|
79
|
-
[ ${#ISSUE_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
|
|
80
|
-
BODY=$(printf '%s' "$ISSUE_BODY" | trunc $MAX_BODY)
|
|
81
|
-
if [ -n "$ISSUE_BODY" ] && [ ${#ISSUE_BODY} -gt $MAX_BODY ]; then
|
|
82
|
-
BODY=$(printf '%s' "$BODY" | strip_trailing_url)
|
|
83
|
-
fi
|
|
84
|
-
BODY=$(printf '%s' "$BODY" | wrap_urls | esc)
|
|
85
|
-
[ -n "$ISSUE_BODY" ] && [ ${#ISSUE_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
|
86
|
-
[ -n "$BODY" ] && BODY=" · $BODY"
|
|
87
|
-
USER=$(printf '%s' "$ISSUE_USER" | esc)
|
|
88
|
-
|
|
89
|
-
MSG="🐛 **[Issue #$ISSUE_NUM: $TITLE](<$ISSUE_URL>)**"$'\n'"by @$USER$BODY"
|
|
90
|
-
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
name: Deploy Documentation
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
paths:
|
|
8
|
-
- "docs/**"
|
|
9
|
-
- "website/**"
|
|
10
|
-
- "tools/build-docs.mjs"
|
|
11
|
-
- ".github/workflows/docs.yaml"
|
|
12
|
-
workflow_dispatch:
|
|
13
|
-
|
|
14
|
-
permissions:
|
|
15
|
-
contents: read
|
|
16
|
-
pages: write
|
|
17
|
-
id-token: write
|
|
18
|
-
|
|
19
|
-
concurrency:
|
|
20
|
-
group: "pages"
|
|
21
|
-
# No big win in setting this to true — risk of cancelling a deploy mid-flight.
|
|
22
|
-
cancel-in-progress: false
|
|
23
|
-
|
|
24
|
-
jobs:
|
|
25
|
-
build:
|
|
26
|
-
runs-on: ubuntu-latest
|
|
27
|
-
steps:
|
|
28
|
-
- name: Checkout repository
|
|
29
|
-
uses: actions/checkout@v4
|
|
30
|
-
with:
|
|
31
|
-
# Full history needed for Starlight's lastUpdated timestamps (git log)
|
|
32
|
-
fetch-depth: 0
|
|
33
|
-
|
|
34
|
-
- name: Setup Node.js
|
|
35
|
-
uses: actions/setup-node@v4
|
|
36
|
-
with:
|
|
37
|
-
node-version-file: ".nvmrc"
|
|
38
|
-
cache: "npm"
|
|
39
|
-
|
|
40
|
-
- name: Install dependencies
|
|
41
|
-
run: npm ci
|
|
42
|
-
|
|
43
|
-
- name: Build documentation
|
|
44
|
-
env:
|
|
45
|
-
# Override site URL from GitHub repo variable if set
|
|
46
|
-
# Otherwise, astro.config.mjs will compute from GITHUB_REPOSITORY
|
|
47
|
-
SITE_URL: ${{ vars.SITE_URL }}
|
|
48
|
-
run: npm run docs:build
|
|
49
|
-
|
|
50
|
-
- name: Upload artifact
|
|
51
|
-
uses: actions/upload-pages-artifact@v3
|
|
52
|
-
with:
|
|
53
|
-
path: build/site
|
|
54
|
-
|
|
55
|
-
deploy:
|
|
56
|
-
environment:
|
|
57
|
-
name: github-pages
|
|
58
|
-
url: ${{ steps.deployment.outputs.page_url }}
|
|
59
|
-
runs-on: ubuntu-latest
|
|
60
|
-
needs: build
|
|
61
|
-
steps:
|
|
62
|
-
- name: Deploy to GitHub Pages
|
|
63
|
-
id: deployment
|
|
64
|
-
uses: actions/deploy-pages@v4
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
name: Publish
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
paths:
|
|
7
|
-
- "src/**"
|
|
8
|
-
- "tools/cli/**"
|
|
9
|
-
- "package.json"
|
|
10
|
-
workflow_dispatch:
|
|
11
|
-
inputs:
|
|
12
|
-
channel:
|
|
13
|
-
description: "Publish channel"
|
|
14
|
-
required: true
|
|
15
|
-
default: "latest"
|
|
16
|
-
type: choice
|
|
17
|
-
options:
|
|
18
|
-
- latest
|
|
19
|
-
- next
|
|
20
|
-
bump:
|
|
21
|
-
description: "Version bump type (latest channel only)"
|
|
22
|
-
required: false
|
|
23
|
-
default: "patch"
|
|
24
|
-
type: choice
|
|
25
|
-
options:
|
|
26
|
-
- patch
|
|
27
|
-
- minor
|
|
28
|
-
- major
|
|
29
|
-
|
|
30
|
-
concurrency:
|
|
31
|
-
group: publish
|
|
32
|
-
cancel-in-progress: ${{ github.event_name == 'push' }}
|
|
33
|
-
|
|
34
|
-
permissions:
|
|
35
|
-
id-token: write
|
|
36
|
-
contents: write
|
|
37
|
-
|
|
38
|
-
jobs:
|
|
39
|
-
publish:
|
|
40
|
-
if: github.event_name != 'workflow_dispatch' || github.ref == 'refs/heads/main'
|
|
41
|
-
runs-on: ubuntu-latest
|
|
42
|
-
steps:
|
|
43
|
-
- name: Checkout
|
|
44
|
-
uses: actions/checkout@v4
|
|
45
|
-
with:
|
|
46
|
-
fetch-depth: 0
|
|
47
|
-
token: ${{ secrets.GITHUB_TOKEN }}
|
|
48
|
-
|
|
49
|
-
- name: Setup Node
|
|
50
|
-
uses: actions/setup-node@v4
|
|
51
|
-
with:
|
|
52
|
-
node-version-file: ".nvmrc"
|
|
53
|
-
cache: "npm"
|
|
54
|
-
|
|
55
|
-
- name: Ensure trusted publishing toolchain
|
|
56
|
-
run: |
|
|
57
|
-
# npm trusted publishing requires Node >= 22.14.0 and npm >= 11.5.1.
|
|
58
|
-
npm install --global npm@11.6.2
|
|
59
|
-
|
|
60
|
-
- name: Configure git user
|
|
61
|
-
if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
|
|
62
|
-
run: |
|
|
63
|
-
git config user.name "github-actions[bot]"
|
|
64
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
65
|
-
|
|
66
|
-
- name: Install dependencies
|
|
67
|
-
run: npm ci
|
|
68
|
-
|
|
69
|
-
- name: Run tests
|
|
70
|
-
run: npm test
|
|
71
|
-
|
|
72
|
-
- name: Derive next prerelease version
|
|
73
|
-
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.channel == 'next')
|
|
74
|
-
run: |
|
|
75
|
-
NEXT_VER=$(npm view bmad-method@next version 2>/dev/null || echo "")
|
|
76
|
-
LATEST_VER=$(npm view bmad-method@latest version 2>/dev/null || echo "")
|
|
77
|
-
|
|
78
|
-
# Determine the best base version for the next prerelease.
|
|
79
|
-
BASE=$(node -e "
|
|
80
|
-
const semver = require('semver');
|
|
81
|
-
const next = process.argv[1] || null;
|
|
82
|
-
const latest = process.argv[2] || null;
|
|
83
|
-
if (!next && !latest) process.exit(0);
|
|
84
|
-
if (!next) { console.log(latest); process.exit(0); }
|
|
85
|
-
if (!latest) { console.log(next); process.exit(0); }
|
|
86
|
-
const nextBase = next.replace(/-next\.\d+$/, '');
|
|
87
|
-
console.log(semver.gt(latest, nextBase) ? latest : next);
|
|
88
|
-
" "$NEXT_VER" "$LATEST_VER")
|
|
89
|
-
|
|
90
|
-
if [ -n "$BASE" ]; then
|
|
91
|
-
npm version "$BASE" --no-git-tag-version --allow-same-version
|
|
92
|
-
fi
|
|
93
|
-
npm version prerelease --preid=next --no-git-tag-version
|
|
94
|
-
|
|
95
|
-
- name: Bump stable version
|
|
96
|
-
if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
|
|
97
|
-
run: 'npm version ${{ inputs.bump }} -m "chore(release): v%s [skip ci]"'
|
|
98
|
-
|
|
99
|
-
- name: Publish prerelease to npm
|
|
100
|
-
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.channel == 'next')
|
|
101
|
-
run: npm publish --tag next --provenance
|
|
102
|
-
|
|
103
|
-
- name: Publish stable release to npm
|
|
104
|
-
if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
|
|
105
|
-
run: npm publish --tag latest --provenance
|
|
106
|
-
|
|
107
|
-
- name: Push version commit and tag
|
|
108
|
-
if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
|
|
109
|
-
run: git push origin main --follow-tags
|
|
110
|
-
|
|
111
|
-
- name: Create GitHub Release
|
|
112
|
-
if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
|
|
113
|
-
run: |
|
|
114
|
-
TAG="v$(node -p 'require("./package.json").version')"
|
|
115
|
-
gh release create "$TAG" --generate-notes
|
|
116
|
-
env:
|
|
117
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
118
|
-
|
|
119
|
-
- name: Notify Discord
|
|
120
|
-
if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
|
|
121
|
-
continue-on-error: true
|
|
122
|
-
run: |
|
|
123
|
-
set -o pipefail
|
|
124
|
-
source .github/scripts/discord-helpers.sh
|
|
125
|
-
[ -z "$WEBHOOK" ] && exit 0
|
|
126
|
-
|
|
127
|
-
VERSION=$(node -p 'require("./package.json").version')
|
|
128
|
-
RELEASE_URL="${{ github.server_url }}/${{ github.repository }}/releases/tag/v${VERSION}"
|
|
129
|
-
MSG=$(printf '📦 **[bmad-method v%s released](<%s>)**' "$VERSION" "$RELEASE_URL" | esc)
|
|
130
|
-
|
|
131
|
-
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
|
132
|
-
env:
|
|
133
|
-
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
name: Quality & Validation
|
|
2
|
-
|
|
3
|
-
# Runs comprehensive quality checks on all PRs:
|
|
4
|
-
# - Prettier (formatting)
|
|
5
|
-
# - ESLint (linting)
|
|
6
|
-
# - markdownlint (markdown quality)
|
|
7
|
-
# - Schema validation (YAML structure)
|
|
8
|
-
# - Agent schema tests (fixture-based validation)
|
|
9
|
-
# - Installation component tests (compilation)
|
|
10
|
-
# - Bundle validation (web bundle integrity)
|
|
11
|
-
|
|
12
|
-
"on":
|
|
13
|
-
pull_request:
|
|
14
|
-
branches: ["**"]
|
|
15
|
-
workflow_dispatch:
|
|
16
|
-
|
|
17
|
-
jobs:
|
|
18
|
-
prettier:
|
|
19
|
-
runs-on: ubuntu-latest
|
|
20
|
-
steps:
|
|
21
|
-
- name: Checkout
|
|
22
|
-
uses: actions/checkout@v4
|
|
23
|
-
|
|
24
|
-
- name: Setup Node
|
|
25
|
-
uses: actions/setup-node@v4
|
|
26
|
-
with:
|
|
27
|
-
node-version-file: ".nvmrc"
|
|
28
|
-
cache: "npm"
|
|
29
|
-
|
|
30
|
-
- name: Install dependencies
|
|
31
|
-
run: npm ci
|
|
32
|
-
|
|
33
|
-
- name: Prettier format check
|
|
34
|
-
run: npm run format:check
|
|
35
|
-
|
|
36
|
-
eslint:
|
|
37
|
-
runs-on: ubuntu-latest
|
|
38
|
-
steps:
|
|
39
|
-
- name: Checkout
|
|
40
|
-
uses: actions/checkout@v4
|
|
41
|
-
|
|
42
|
-
- name: Setup Node
|
|
43
|
-
uses: actions/setup-node@v4
|
|
44
|
-
with:
|
|
45
|
-
node-version-file: ".nvmrc"
|
|
46
|
-
cache: "npm"
|
|
47
|
-
|
|
48
|
-
- name: Install dependencies
|
|
49
|
-
run: npm ci
|
|
50
|
-
|
|
51
|
-
- name: ESLint
|
|
52
|
-
run: npm run lint
|
|
53
|
-
|
|
54
|
-
markdownlint:
|
|
55
|
-
runs-on: ubuntu-latest
|
|
56
|
-
steps:
|
|
57
|
-
- name: Checkout
|
|
58
|
-
uses: actions/checkout@v4
|
|
59
|
-
|
|
60
|
-
- name: Setup Node
|
|
61
|
-
uses: actions/setup-node@v4
|
|
62
|
-
with:
|
|
63
|
-
node-version-file: ".nvmrc"
|
|
64
|
-
cache: "npm"
|
|
65
|
-
|
|
66
|
-
- name: Install dependencies
|
|
67
|
-
run: npm ci
|
|
68
|
-
|
|
69
|
-
- name: markdownlint
|
|
70
|
-
run: npm run lint:md
|
|
71
|
-
|
|
72
|
-
docs:
|
|
73
|
-
runs-on: ubuntu-latest
|
|
74
|
-
steps:
|
|
75
|
-
- name: Checkout
|
|
76
|
-
uses: actions/checkout@v4
|
|
77
|
-
|
|
78
|
-
- name: Setup Node
|
|
79
|
-
uses: actions/setup-node@v4
|
|
80
|
-
with:
|
|
81
|
-
node-version-file: ".nvmrc"
|
|
82
|
-
cache: "npm"
|
|
83
|
-
|
|
84
|
-
- name: Install dependencies
|
|
85
|
-
run: npm ci
|
|
86
|
-
|
|
87
|
-
- name: Build documentation
|
|
88
|
-
# Note: build-docs.mjs runs link validation internally before building
|
|
89
|
-
run: npm run docs:build
|
|
90
|
-
|
|
91
|
-
validate:
|
|
92
|
-
runs-on: ubuntu-latest
|
|
93
|
-
steps:
|
|
94
|
-
- name: Checkout
|
|
95
|
-
uses: actions/checkout@v4
|
|
96
|
-
|
|
97
|
-
- name: Setup Node
|
|
98
|
-
uses: actions/setup-node@v4
|
|
99
|
-
with:
|
|
100
|
-
node-version-file: ".nvmrc"
|
|
101
|
-
cache: "npm"
|
|
102
|
-
|
|
103
|
-
- name: Install dependencies
|
|
104
|
-
run: npm ci
|
|
105
|
-
|
|
106
|
-
- name: Validate YAML schemas
|
|
107
|
-
run: npm run validate:schemas
|
|
108
|
-
|
|
109
|
-
- name: Run agent schema validation tests
|
|
110
|
-
run: npm run test:schemas
|
|
111
|
-
|
|
112
|
-
- name: Test agent compilation components
|
|
113
|
-
run: npm run test:install
|
|
114
|
-
|
|
115
|
-
- name: Validate file references
|
|
116
|
-
run: npm run validate:refs
|
package/.husky/pre-commit
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env sh
|
|
2
|
-
|
|
3
|
-
# Auto-fix changed files and stage them
|
|
4
|
-
npx --no-install lint-staged
|
|
5
|
-
|
|
6
|
-
# Validate everything
|
|
7
|
-
npm test
|
|
8
|
-
|
|
9
|
-
# Validate docs links only when docs change
|
|
10
|
-
if command -v rg >/dev/null 2>&1; then
|
|
11
|
-
if git diff --cached --name-only | rg -q '^docs/'; then
|
|
12
|
-
npm run docs:validate-links
|
|
13
|
-
npm run docs:build
|
|
14
|
-
fi
|
|
15
|
-
else
|
|
16
|
-
if git diff --cached --name-only | grep -Eq '^docs/'; then
|
|
17
|
-
npm run docs:validate-links
|
|
18
|
-
npm run docs:build
|
|
19
|
-
fi
|
|
20
|
-
fi
|
package/.markdownlint-cli2.yaml
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# markdownlint-cli2 configuration
|
|
2
|
-
# https://github.com/DavidAnson/markdownlint-cli2
|
|
3
|
-
|
|
4
|
-
ignores:
|
|
5
|
-
- "**/node_modules/**"
|
|
6
|
-
- test/fixtures/**
|
|
7
|
-
- CODE_OF_CONDUCT.md
|
|
8
|
-
- _bmad/**
|
|
9
|
-
- _bmad*/**
|
|
10
|
-
- .agent/**
|
|
11
|
-
- .claude/**
|
|
12
|
-
- .roo/**
|
|
13
|
-
- .codex/**
|
|
14
|
-
- .kiro/**
|
|
15
|
-
- sample-project/**
|
|
16
|
-
- test-project-install/**
|
|
17
|
-
- z*/**
|
|
18
|
-
|
|
19
|
-
# Rule configuration
|
|
20
|
-
config:
|
|
21
|
-
# Disable all rules by default
|
|
22
|
-
default: false
|
|
23
|
-
|
|
24
|
-
# Heading levels should increment by one (h1 -> h2 -> h3, not h1 -> h3)
|
|
25
|
-
MD001: true
|
|
26
|
-
|
|
27
|
-
# Duplicate sibling headings (same heading text at same level under same parent)
|
|
28
|
-
MD024:
|
|
29
|
-
siblings_only: true
|
|
30
|
-
|
|
31
|
-
# Trailing commas in headings (likely typos)
|
|
32
|
-
MD026:
|
|
33
|
-
punctuation: ","
|
|
34
|
-
|
|
35
|
-
# Bare URLs - may not render as links in all parsers
|
|
36
|
-
# Should use <url> or [text](url) format
|
|
37
|
-
MD034: true
|
|
38
|
-
|
|
39
|
-
# Spaces inside emphasis markers - breaks rendering
|
|
40
|
-
# e.g., "* text *" won't render as emphasis
|
|
41
|
-
MD037: true
|
package/.nvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
22
|
package/.prettierignore
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# Test fixtures with intentionally broken/malformed files
|
|
2
|
-
test/fixtures/**
|
|
3
|
-
|
|
4
|
-
# Contributor Covenant (external standard)
|
|
5
|
-
CODE_OF_CONDUCT.md
|
|
6
|
-
|
|
7
|
-
# BMAD runtime folders (user-specific, not in repo)
|
|
8
|
-
_bmad/
|
|
9
|
-
_bmad*/
|
|
10
|
-
|
|
11
|
-
# IDE integration folders (user-specific, not in repo)
|
|
12
|
-
.junie/
|
package/.vscode/settings.json
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"chat.agent.enabled": true,
|
|
3
|
-
"chat.agent.maxRequests": 15,
|
|
4
|
-
"github.copilot.chat.agent.runTasks": true,
|
|
5
|
-
"chat.mcp.discovery.enabled": {
|
|
6
|
-
"claude-desktop": true,
|
|
7
|
-
"windsurf": true,
|
|
8
|
-
"cursor-global": true,
|
|
9
|
-
"cursor-workspace": true
|
|
10
|
-
},
|
|
11
|
-
"github.copilot.chat.agent.autoFix": true,
|
|
12
|
-
"chat.tools.autoApprove": false,
|
|
13
|
-
"cSpell.words": [
|
|
14
|
-
"Agentic",
|
|
15
|
-
"atlasing",
|
|
16
|
-
"Biostatistician",
|
|
17
|
-
"bmad",
|
|
18
|
-
"Cordova",
|
|
19
|
-
"customresourcedefinitions",
|
|
20
|
-
"dashboarded",
|
|
21
|
-
"Decisioning",
|
|
22
|
-
"eksctl",
|
|
23
|
-
"elicitations",
|
|
24
|
-
"Excalidraw",
|
|
25
|
-
"filecomplete",
|
|
26
|
-
"fintech",
|
|
27
|
-
"fluxcd",
|
|
28
|
-
"frontmatter",
|
|
29
|
-
"gamedev",
|
|
30
|
-
"gitops",
|
|
31
|
-
"implementability",
|
|
32
|
-
"Improv",
|
|
33
|
-
"inclusivity",
|
|
34
|
-
"ingressgateway",
|
|
35
|
-
"istioctl",
|
|
36
|
-
"metroidvania",
|
|
37
|
-
"NACLs",
|
|
38
|
-
"nodegroup",
|
|
39
|
-
"platformconfigs",
|
|
40
|
-
"Playfocus",
|
|
41
|
-
"playtesting",
|
|
42
|
-
"pointerdown",
|
|
43
|
-
"pointerup",
|
|
44
|
-
"Polyrepo",
|
|
45
|
-
"replayability",
|
|
46
|
-
"roguelike",
|
|
47
|
-
"roomodes",
|
|
48
|
-
"Runbook",
|
|
49
|
-
"runbooks",
|
|
50
|
-
"Shardable",
|
|
51
|
-
"Softlock",
|
|
52
|
-
"solutioning",
|
|
53
|
-
"speedrunner",
|
|
54
|
-
"substep",
|
|
55
|
-
"tekton",
|
|
56
|
-
"tilemap",
|
|
57
|
-
"tileset",
|
|
58
|
-
"tmpl",
|
|
59
|
-
"Trae",
|
|
60
|
-
"Unsharded",
|
|
61
|
-
"VNET"
|
|
62
|
-
],
|
|
63
|
-
"json.schemas": [
|
|
64
|
-
{
|
|
65
|
-
"fileMatch": ["package.json"],
|
|
66
|
-
"url": "https://json.schemastore.org/package.json"
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"fileMatch": [".vscode/settings.json"],
|
|
70
|
-
"url": "vscode://schemas/settings/folder"
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
|
-
"editor.formatOnSave": true,
|
|
74
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
75
|
-
"[javascript]": {
|
|
76
|
-
"editor.defaultFormatter": "vscode.typescript-language-features"
|
|
77
|
-
},
|
|
78
|
-
"[json]": {
|
|
79
|
-
"editor.defaultFormatter": "vscode.json-language-features"
|
|
80
|
-
},
|
|
81
|
-
"[yaml]": {
|
|
82
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
83
|
-
},
|
|
84
|
-
"[markdown]": {
|
|
85
|
-
"editor.defaultFormatter": "yzhang.markdown-all-in-one"
|
|
86
|
-
},
|
|
87
|
-
"yaml.format.enable": false,
|
|
88
|
-
"editor.codeActionsOnSave": {
|
|
89
|
-
"source.fixAll.eslint": "explicit"
|
|
90
|
-
},
|
|
91
|
-
"editor.rulers": [140],
|
|
92
|
-
"[xml]": {
|
|
93
|
-
"editor.defaultFormatter": "redhat.vscode-xml"
|
|
94
|
-
},
|
|
95
|
-
"xml.format.maxLineWidth": 140
|
|
96
|
-
}
|