bmad-method 6.2.3-next.2 → 6.2.3-next.21
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-plugin/marketplace.json +0 -4
- package/README.md +1 -1
- package/README_CN.md +1 -1
- package/README_VN.md +110 -0
- package/package.json +2 -1
- package/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md +7 -4
- package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md +6 -4
- package/src/bmm-skills/1-analysis/bmad-document-project/workflow.md +8 -10
- package/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md +96 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/agents/artifact-analyzer.md +60 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/agents/web-researcher.md +49 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/assets/prfaq-template.md +62 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/bmad-manifest.json +16 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/references/customer-faq.md +55 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/references/internal-faq.md +51 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/references/press-release.md +60 -0
- package/src/bmm-skills/1-analysis/bmad-prfaq/references/verdict.md +79 -0
- package/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +1 -6
- package/src/bmm-skills/1-analysis/bmad-product-brief/bmad-manifest.json +1 -1
- package/src/bmm-skills/1-analysis/research/bmad-domain-research/workflow.md +8 -6
- package/src/bmm-skills/1-analysis/research/bmad-market-research/workflow.md +8 -6
- package/src/bmm-skills/1-analysis/research/bmad-technical-research/workflow.md +8 -6
- package/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md +6 -4
- package/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md +6 -4
- package/src/bmm-skills/2-plan-workflows/bmad-create-prd/workflow.md +8 -9
- package/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/workflow.md +8 -9
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +1 -1
- package/src/bmm-skills/2-plan-workflows/bmad-edit-prd/workflow.md +8 -9
- package/src/bmm-skills/2-plan-workflows/bmad-validate-prd/workflow.md +8 -9
- package/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md +6 -4
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +1 -1
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +1 -1
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +1 -1
- package/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/workflow.md +9 -11
- package/src/bmm-skills/3-solutioning/bmad-create-architecture/workflow.md +8 -14
- package/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/workflow.md +10 -12
- package/src/bmm-skills/3-solutioning/bmad-generate-project-context/workflow.md +8 -12
- package/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md +11 -4
- package/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md +29 -0
- package/src/bmm-skills/4-implementation/bmad-checkpoint-preview/generate-trail.md +38 -0
- package/src/bmm-skills/4-implementation/bmad-checkpoint-preview/step-01-orientation.md +105 -0
- package/src/bmm-skills/4-implementation/bmad-checkpoint-preview/step-02-walkthrough.md +89 -0
- package/src/bmm-skills/4-implementation/bmad-checkpoint-preview/step-03-detail-pass.md +106 -0
- package/src/bmm-skills/4-implementation/bmad-checkpoint-preview/step-04-testing.md +74 -0
- package/src/bmm-skills/4-implementation/bmad-checkpoint-preview/step-05-wrapup.md +24 -0
- package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-01-gather-context.md +38 -15
- package/src/bmm-skills/4-implementation/bmad-correct-course/checklist.md +2 -2
- package/src/bmm-skills/4-implementation/bmad-correct-course/workflow.md +8 -8
- package/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/checklist.md +1 -1
- package/src/bmm-skills/4-implementation/bmad-quick-dev/spec-template.md +1 -1
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-01-clarify-and-route.md +11 -2
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-03-implement.md +2 -0
- package/src/bmm-skills/4-implementation/bmad-quick-dev/step-oneshot.md +17 -4
- package/src/bmm-skills/4-implementation/bmad-retrospective/workflow.md +134 -134
- package/src/bmm-skills/4-implementation/bmad-sprint-planning/sprint-status-template.yaml +1 -1
- package/src/bmm-skills/4-implementation/bmad-sprint-planning/workflow.md +3 -3
- package/src/bmm-skills/4-implementation/bmad-sprint-status/workflow.md +2 -2
- package/src/bmm-skills/module-help.csv +3 -1
- package/src/core-skills/bmad-advanced-elicitation/SKILL.md +1 -2
- package/src/core-skills/bmad-distillator/SKILL.md +0 -1
- package/src/core-skills/bmad-distillator/resources/distillate-format-reference.md +9 -9
- package/src/core-skills/bmad-party-mode/SKILL.md +121 -2
- package/tools/installer/core/installer.js +6 -53
- package/tools/installer/core/manifest-generator.js +9 -0
- package/tools/installer/external-official-modules.yaml +1 -1
- package/tools/installer/ide/platform-codes.yaml +6 -4
- package/tools/installer/modules/custom-modules.js +105 -0
- package/tools/installer/modules/external-manager.js +34 -3
- package/tools/platform-codes.yaml +6 -0
- package/src/bmm-skills/2-plan-workflows/create-prd/data/domain-complexity.csv +0 -15
- package/src/bmm-skills/2-plan-workflows/create-prd/data/prd-purpose.md +0 -197
- package/src/bmm-skills/2-plan-workflows/create-prd/data/project-types.csv +0 -11
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +0 -224
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +0 -191
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +0 -209
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +0 -174
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -214
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +0 -228
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +0 -217
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -205
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -243
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +0 -263
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +0 -209
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -264
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +0 -242
- package/src/bmm-skills/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +0 -232
- package/src/bmm-skills/2-plan-workflows/create-prd/workflow-validate-prd.md +0 -65
- package/src/bmm-skills/4-implementation/bmad-agent-qa/SKILL.md +0 -59
- package/src/bmm-skills/4-implementation/bmad-agent-qa/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/4-implementation/bmad-agent-quick-flow-solo-dev/SKILL.md +0 -51
- package/src/bmm-skills/4-implementation/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +0 -11
- package/src/bmm-skills/4-implementation/bmad-agent-sm/SKILL.md +0 -53
- package/src/bmm-skills/4-implementation/bmad-agent-sm/bmad-skill-manifest.yaml +0 -11
- package/src/core-skills/bmad-init/SKILL.md +0 -100
- package/src/core-skills/bmad-init/resources/core-module.yaml +0 -25
- package/src/core-skills/bmad-init/scripts/bmad_init.py +0 -624
- package/src/core-skills/bmad-init/scripts/tests/test_bmad_init.py +0 -393
- package/src/core-skills/bmad-party-mode/steps/step-01-agent-loading.md +0 -138
- package/src/core-skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +0 -187
- package/src/core-skills/bmad-party-mode/steps/step-03-graceful-exit.md +0 -167
- package/src/core-skills/bmad-party-mode/workflow.md +0 -190
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
# WORKFLOW NOTES:
|
|
30
30
|
# ===============
|
|
31
31
|
# - Mark epic as 'in-progress' when starting work on its first story
|
|
32
|
-
# -
|
|
32
|
+
# - Developer typically creates next story ONLY after previous one is 'done' to incorporate learnings
|
|
33
33
|
# - Dev moves story to 'review', then Dev runs code-review (fresh context, ideally different LLM)
|
|
34
34
|
|
|
35
35
|
# EXAMPLE STRUCTURE (your actual epics/stories will replace these):
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Goal:** Generate sprint status tracking from epics, detecting current story statuses and building a complete sprint-status.yaml file.
|
|
4
4
|
|
|
5
|
-
**Your Role:** You are a
|
|
5
|
+
**Your Role:** You are a Developer generating and maintaining sprint tracking. Parse epic files, detect story statuses, and produce a structured sprint-status.yaml.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -162,7 +162,7 @@ development_status:
|
|
|
162
162
|
# ===============
|
|
163
163
|
# - Epic transitions to 'in-progress' automatically when first story is created
|
|
164
164
|
# - Stories can be worked in parallel if team capacity allows
|
|
165
|
-
# -
|
|
165
|
+
# - Developer typically creates next story after previous one is 'done' to incorporate learnings
|
|
166
166
|
# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)
|
|
167
167
|
|
|
168
168
|
generated: { date }
|
|
@@ -260,4 +260,4 @@ optional ↔ done
|
|
|
260
260
|
2. **Sequential Default**: Stories are typically worked in order, but parallel work is supported
|
|
261
261
|
3. **Parallel Work Supported**: Multiple stories can be `in-progress` if team capacity allows
|
|
262
262
|
4. **Review Before Done**: Stories should pass through `review` before `done`
|
|
263
|
-
5. **Learning Transfer**:
|
|
263
|
+
5. **Learning Transfer**: Developer typically creates next story after previous one is `done` to incorporate learnings
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Goal:** Summarize sprint status, surface risks, and recommend the next workflow action.
|
|
4
4
|
|
|
5
|
-
**Your Role:** You are a
|
|
5
|
+
**Your Role:** You are a Developer providing clear, actionable sprint visibility. No time estimates — focus on status, risks, and next steps.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -129,7 +129,7 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
|
|
|
129
129
|
4. Else if any story status == backlog → recommend `create-story`
|
|
130
130
|
5. Else if any retrospective status == optional → recommend `retrospective`
|
|
131
131
|
6. Else → All implementation items done; congratulate the user - you both did amazing work together!
|
|
132
|
-
<action>Store selected recommendation as: next_story_id, next_workflow_id, next_agent (
|
|
132
|
+
<action>Store selected recommendation as: next_story_id, next_workflow_id, next_agent (DEV)</action>
|
|
133
133
|
</step>
|
|
134
134
|
|
|
135
135
|
<step n="4" goal="Display summary">
|
|
@@ -12,7 +12,8 @@ BMad Method,bmad-brainstorming,Brainstorm Project,BP,Expert guided facilitation
|
|
|
12
12
|
BMad Method,bmad-market-research,Market Research,MR,"Market analysis competitive landscape customer needs and trends.",,1-analysis,,,false,"planning_artifacts|project-knowledge",research documents
|
|
13
13
|
BMad Method,bmad-domain-research,Domain Research,DR,Industry domain deep dive subject matter expertise and terminology.,,1-analysis,,,false,"planning_artifacts|project_knowledge",research documents
|
|
14
14
|
BMad Method,bmad-technical-research,Technical Research,TR,Technical feasibility architecture options and implementation approaches.,,1-analysis,,,false,"planning_artifacts|project_knowledge",research documents
|
|
15
|
-
BMad Method,bmad-product-brief,Create Brief,CB,
|
|
15
|
+
BMad Method,bmad-product-brief,Create Brief,CB,An expert guided experience to nail down your product idea in a brief. a gentler approach than PRFAQ when you are already sure of your concept and nothing will sway you.,,-A,1-analysis,,,false,planning_artifacts,product brief
|
|
16
|
+
BMad Method,bmad-prfaq,PRFAQ Challenge,WB,Working Backwards guided experience to forge and stress-test your product concept to ensure you have a great product that users will love and need through the PRFAQ gauntlet to determine feasibility and alignment with user needs. alternative to product brief.,,-H,1-analysis,,,false,planning_artifacts,prfaq document
|
|
16
17
|
BMad Method,bmad-create-prd,Create PRD,CP,Expert led facilitation to produce your Product Requirements Document.,,2-planning,,,true,planning_artifacts,prd
|
|
17
18
|
BMad Method,bmad-validate-prd,Validate PRD,VP,,,[path],2-planning,bmad-create-prd,,false,planning_artifacts,prd validation report
|
|
18
19
|
BMad Method,bmad-edit-prd,Edit PRD,EP,,,[path],2-planning,bmad-validate-prd,,false,planning_artifacts,updated prd
|
|
@@ -26,5 +27,6 @@ BMad Method,bmad-create-story,Create Story,CS,"Story cycle start: Prepare first
|
|
|
26
27
|
BMad Method,bmad-create-story,Validate Story,VS,Validates story readiness and completeness before development work begins.,validate,,4-implementation,bmad-create-story:create,bmad-dev-story,false,implementation_artifacts,story validation report
|
|
27
28
|
BMad Method,bmad-dev-story,Dev Story,DS,Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed.,,4-implementation,bmad-create-story:validate,,true,,
|
|
28
29
|
BMad Method,bmad-code-review,Code Review,CR,Story cycle: If issues back to DS if approved then next CS or ER if epic complete.,,4-implementation,bmad-dev-story,,false,,
|
|
30
|
+
BMad Method,bmad-checkpoint-preview,Checkpoint,CK,Guided walkthrough of a change from purpose and context into details. Use for human review of commits branches or PRs.,,4-implementation,,,false,,
|
|
29
31
|
BMad Method,bmad-qa-generate-e2e-tests,QA Automation Test,QA,Generate automated API and E2E tests for implemented code. NOT for code review or story validation — use CR for that.,,4-implementation,bmad-dev-story,,false,implementation_artifacts,test suite
|
|
30
32
|
BMad Method,bmad-retrospective,Retrospective,ER,Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC.,,4-implementation,bmad-code-review,,false,implementation_artifacts,retrospective
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bmad-advanced-elicitation
|
|
3
3
|
description: 'Push the LLM to reconsider, refine, and improve its recent output. Use when user asks for deeper critique or mentions a known deeper critique method, e.g. socratic, first principles, pre-mortem, red team.'
|
|
4
|
-
agent_party: '{project-root}/_bmad/_config/agent-manifest.csv'
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# Advanced Elicitation
|
|
@@ -36,7 +35,7 @@ When invoked from another prompt or process:
|
|
|
36
35
|
|
|
37
36
|
### Step 1: Method Registry Loading
|
|
38
37
|
|
|
39
|
-
**Action:** Load and read `./methods.csv` and
|
|
38
|
+
**Action:** Load and read `./methods.csv` and '{project-root}/_bmad/_config/agent-manifest.csv'
|
|
40
39
|
|
|
41
40
|
#### CSV Structure
|
|
42
41
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bmad-distillator
|
|
3
3
|
description: Lossless LLM-optimized compression of source documents. Use when the user requests to 'distill documents' or 'create a distillate'.
|
|
4
|
-
argument-hint: "[to create provide input paths] [--validate distillate-path to confirm distillate is lossless and optimized]"
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# Distillator: A Document Distillation Engine
|
|
@@ -81,18 +81,18 @@ When the same fact appears in both a brief and discovery notes:
|
|
|
81
81
|
|
|
82
82
|
**Brief says:**
|
|
83
83
|
```
|
|
84
|
-
bmad-
|
|
84
|
+
bmad-help must always be included as a base skill in every bundle
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
**Discovery notes say:**
|
|
88
88
|
```
|
|
89
|
-
bmad-
|
|
90
|
-
(solves
|
|
89
|
+
bmad-help must always be included as a base skill in every bundle/install
|
|
90
|
+
(solves discoverability problem)
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
**Distillate keeps the more contextual version:**
|
|
94
94
|
```
|
|
95
|
-
- bmad-
|
|
95
|
+
- bmad-help: always included as base skill in every bundle (solves discoverability)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
### Decision/Rationale Compression
|
|
@@ -128,7 +128,7 @@ parts: 1
|
|
|
128
128
|
|
|
129
129
|
## Core Concept
|
|
130
130
|
- BMAD Next-Gen Installer: replaces monolithic Node.js CLI with skill-based plugin architecture for distributing BMAD methodology across 40+ AI platforms
|
|
131
|
-
- Three layers: self-describing plugins (bmad-manifest.json), cross-platform install via Vercel skills CLI (MIT), runtime registration via bmad-
|
|
131
|
+
- Three layers: self-describing plugins (bmad-manifest.json), cross-platform install via Vercel skills CLI (MIT), runtime registration via bmad-setup skill
|
|
132
132
|
- Transforms BMAD from dev-only methodology into open platform for any domain (creative, therapeutic, educational, personal)
|
|
133
133
|
|
|
134
134
|
## Problem
|
|
@@ -141,7 +141,7 @@ parts: 1
|
|
|
141
141
|
- Plugins: skill bundles with Anthropic plugin standard as base format + bmad-manifest.json extending for BMAD-specific metadata (installer options, capabilities, help integration, phase ordering, dependencies)
|
|
142
142
|
- Existing manifest example: `{"module-code":"bmm","replaces-skill":"bmad-create-product-brief","capabilities":[{"name":"create-brief","menu-code":"CB","supports-headless":true,"phase-name":"1-analysis","after":["brainstorming"],"before":["create-prd"],"is-required":true}]}`
|
|
143
143
|
- Vercel skills CLI handles platform translation; integration pattern (wrap/fork/call) is PRD decision
|
|
144
|
-
- bmad-
|
|
144
|
+
- bmad-setup: global skill scanning installed bmad-manifest.json files, registering capabilities, configuring project settings; always included as base skill in every bundle (solves bootstrapping)
|
|
145
145
|
- bmad-update: plugin update path without full reinstall; technical approach (diff/replace/preserve customizations) is PRD decision
|
|
146
146
|
- Distribution tiers: (1) NPX installer wrapping skills CLI for technical users, (2) zip bundle + platform-specific README for non-technical users, (3) future marketplace
|
|
147
147
|
- Non-technical path has honest friction: "copy to right folder" requires knowing where; per-platform README instructions; improves over time as low-code space matures
|
|
@@ -161,13 +161,13 @@ parts: 1
|
|
|
161
161
|
- Zero (or near-zero) custom platform directory code; delegated to skills CLI ecosystem
|
|
162
162
|
- Installation verified on top platforms by volume; skills CLI handles long tail
|
|
163
163
|
- Non-technical install path validated with non-developer users
|
|
164
|
-
- bmad-
|
|
164
|
+
- bmad-setup discovers/registers all plugins from manifests; clear errors for malformed manifests
|
|
165
165
|
- At least one external module author successfully publishes plugin using manifest system
|
|
166
166
|
- bmad-update works without full reinstall
|
|
167
167
|
- Existing CLI users have documented migration path
|
|
168
168
|
|
|
169
169
|
## Scope
|
|
170
|
-
- In: manifest spec, bmad-
|
|
170
|
+
- In: manifest spec, bmad-setup, bmad-update, Vercel CLI integration, NPX installer, zip bundles, migration path
|
|
171
171
|
- Out: BMAD Builder, marketplace web platform, skill conversion (prerequisite, separate), one-click install for all platforms, monetization, quality certification process (gated-submission principle is architectural requirement; process defined separately)
|
|
172
172
|
- Deferred: CI/CD integration, telemetry for module authors, air-gapped enterprise install, zip bundle integrity verification (checksums/signing), deeper non-technical platform integrations
|
|
173
173
|
|
|
@@ -214,7 +214,7 @@ parts: 1
|
|
|
214
214
|
|
|
215
215
|
## Opportunities
|
|
216
216
|
- Module authors as acquisition channel: each published plugin distributes BMAD to creator's audience
|
|
217
|
-
- CI/CD integration: bmad-
|
|
217
|
+
- CI/CD integration: bmad-setup as pipeline one-liner increases stickiness
|
|
218
218
|
- Educational institutions: structured methodology + non-technical install → university AI curriculum
|
|
219
219
|
- Skill composability: mixing BMAD modules with third-party skills for custom methodology stacks
|
|
220
220
|
|
|
@@ -1,6 +1,125 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bmad-party-mode
|
|
3
|
-
description: 'Orchestrates group discussions between
|
|
3
|
+
description: 'Orchestrates group discussions between installed BMAD agents, enabling natural multi-agent conversations where each agent is a real subagent with independent thinking. Use when user requests party mode, wants multiple agent perspectives, group discussion, roundtable, or multi-agent conversation about their project.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# Party Mode
|
|
7
|
+
|
|
8
|
+
Facilitate roundtable discussions where BMAD agents participate as **real subagents** — each spawned independently via the Agent tool so they think for themselves. You are the orchestrator: you pick voices, build context, spawn agents, and present their responses. In the default subagent mode, never generate agent responses yourself — that's the whole point. In `--solo` mode, you roleplay all agents directly.
|
|
9
|
+
|
|
10
|
+
## Why This Matters
|
|
11
|
+
|
|
12
|
+
The whole point of party mode is that each agent produces a genuinely independent perspective. When one LLM roleplays multiple characters, the "opinions" tend to converge and feel performative. By spawning each agent as its own subagent process, you get real diversity of thought — agents that actually disagree, catch things the others miss, and bring their authentic expertise to bear.
|
|
13
|
+
|
|
14
|
+
## Arguments
|
|
15
|
+
|
|
16
|
+
Party mode accepts optional arguments when invoked:
|
|
17
|
+
|
|
18
|
+
- `--model <model>` — Force all subagents to use a specific model (e.g. `--model haiku`, `--model opus`). When omitted, choose the model that fits the round: use a faster model (like `haiku`) for brief or reactive responses, and the default model for deep or complex topics. Match model weight to the depth of thinking the round requires.
|
|
19
|
+
- `--solo` — Run without subagents. Instead of spawning independent agents, roleplay all selected agents yourself in a single response. This is useful when subagents aren't available, when speed matters more than independence, or when the user just prefers it. Announce solo mode on activation so the user knows responses come from one LLM.
|
|
20
|
+
|
|
21
|
+
## On Activation
|
|
22
|
+
|
|
23
|
+
1. **Parse arguments** — check for `--model` and `--solo` flags from the user's invocation.
|
|
24
|
+
|
|
25
|
+
2. Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
|
|
26
|
+
- Use `{user_name}` for greeting
|
|
27
|
+
- Use `{communication_language}` for all communications
|
|
28
|
+
|
|
29
|
+
3. **Read the agent manifest** at `{project-root}/_bmad/_config/agent-manifest.csv`. Build an internal roster of available agents with their displayName, title, icon, role, identity, communicationStyle, and principles.
|
|
30
|
+
|
|
31
|
+
4. **Load project context** — search for `**/project-context.md`. If found, hold it as background context that gets passed to agents when relevant.
|
|
32
|
+
|
|
33
|
+
5. **Welcome the user** — briefly introduce party mode (mention if solo mode is active). Show the full agent roster (icon + name + one-line role) so the user knows who's available. Ask what they'd like to discuss.
|
|
34
|
+
|
|
35
|
+
## The Core Loop
|
|
36
|
+
|
|
37
|
+
For each user message:
|
|
38
|
+
|
|
39
|
+
### 1. Pick the Right Voices
|
|
40
|
+
|
|
41
|
+
Choose 2-4 agents whose expertise is most relevant to what the user is asking. Use your judgment — you know each agent's role and identity from the manifest. Some guidelines:
|
|
42
|
+
|
|
43
|
+
- **Simple question**: 2 agents with the most relevant expertise
|
|
44
|
+
- **Complex or cross-cutting topic**: 3-4 agents from different domains
|
|
45
|
+
- **User names specific agents**: Always include those, plus 1-2 complementary voices
|
|
46
|
+
- **User asks an agent to respond to another**: Spawn just that agent with the other's response as context
|
|
47
|
+
- **Rotate over time** — avoid the same 2 agents dominating every round
|
|
48
|
+
|
|
49
|
+
### 2. Build Context and Spawn
|
|
50
|
+
|
|
51
|
+
For each selected agent, spawn a subagent using the Agent tool. Each subagent gets:
|
|
52
|
+
|
|
53
|
+
**The agent prompt** (built from the manifest data):
|
|
54
|
+
```
|
|
55
|
+
You are {displayName} ({title}), a BMAD agent in a collaborative roundtable discussion.
|
|
56
|
+
|
|
57
|
+
## Your Persona
|
|
58
|
+
- Icon: {icon}
|
|
59
|
+
- Communication Style: {communicationStyle}
|
|
60
|
+
- Principles: {principles}
|
|
61
|
+
- Identity: {identity}
|
|
62
|
+
|
|
63
|
+
## Discussion Context
|
|
64
|
+
{summary of the conversation so far — keep under 400 words}
|
|
65
|
+
|
|
66
|
+
{project context if relevant}
|
|
67
|
+
|
|
68
|
+
## What Other Agents Said This Round
|
|
69
|
+
{if this is a cross-talk or reaction request, include the responses being reacted to — otherwise omit this section}
|
|
70
|
+
|
|
71
|
+
## The User's Message
|
|
72
|
+
{the user's actual message}
|
|
73
|
+
|
|
74
|
+
## Guidelines
|
|
75
|
+
- Respond authentically as {displayName}. Your perspective should reflect your genuine expertise.
|
|
76
|
+
- Start your response with: {icon} **{displayName}:**
|
|
77
|
+
- Speak in {communication_language}.
|
|
78
|
+
- Scale your response to the substance — don't pad. If you have a brief point, make it briefly.
|
|
79
|
+
- Disagree with other agents when your expertise tells you to. Don't hedge or be polite about it.
|
|
80
|
+
- If you have nothing substantive to add, say so in one sentence rather than manufacturing an opinion.
|
|
81
|
+
- You may ask the user direct questions if something needs clarification.
|
|
82
|
+
- Do NOT use tools. Just respond with your perspective.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Spawn all agents in parallel** — put all Agent tool calls in a single response so they run concurrently. If `--model` was specified, use that model for all subagents. Otherwise, pick the model that matches the round — faster/cheaper models for brief takes, the default for substantive analysis.
|
|
86
|
+
|
|
87
|
+
**Solo mode** — if `--solo` is active, skip spawning. Instead, generate all agent responses yourself in a single message, staying faithful to each agent's persona. Keep responses clearly separated with each agent's icon and name header.
|
|
88
|
+
|
|
89
|
+
### 3. Present Responses
|
|
90
|
+
|
|
91
|
+
Present each agent's full response to the user — distinct, complete, and in their own voice. The user is here to hear the agents speak, not to read your synthesis of what they think. Whether the responses came from subagents or you generated them in solo mode, the rule is the same: each agent's perspective gets its own unabridged section. Never blend, paraphrase, or condense agent responses into a summary.
|
|
92
|
+
|
|
93
|
+
The format is simple: each agent's response one after another, separated by a blank line. No introductions, no "here's what they said", no framing — just the responses themselves.
|
|
94
|
+
|
|
95
|
+
After all agent responses are presented in full, you may optionally add a brief **Orchestrator Note** — flagging a disagreement worth exploring, or suggesting an agent to bring in next round. Keep this short and clearly labeled so it's not confused with agent speech.
|
|
96
|
+
|
|
97
|
+
### 4. Handle Follow-ups
|
|
98
|
+
|
|
99
|
+
The user drives what happens next. Common patterns:
|
|
100
|
+
|
|
101
|
+
| User says... | You do... |
|
|
102
|
+
|---|---|
|
|
103
|
+
| Continues the general discussion | Pick fresh agents, repeat the loop |
|
|
104
|
+
| "Winston, what do you think about what Sally said?" | Spawn just Winston with Sally's response as context |
|
|
105
|
+
| "Bring in Amelia on this" | Spawn Amelia with a summary of the discussion so far |
|
|
106
|
+
| "I agree with John, let's go deeper on that" | Spawn John + 1-2 others to expand on John's point |
|
|
107
|
+
| "What would Mary and Amelia think about Winston's approach?" | Spawn Mary and Amelia with Winston's response as context |
|
|
108
|
+
| Asks a question directed at everyone | Back to step 1 with all agents |
|
|
109
|
+
|
|
110
|
+
The key insight: you can spawn any combination at any time. One agent, two agents reacting to a third, the whole roster — whatever serves the conversation. Each spawn is cheap and independent.
|
|
111
|
+
|
|
112
|
+
## Keeping Context Manageable
|
|
113
|
+
|
|
114
|
+
As the conversation grows, you'll need to summarize prior rounds rather than passing the full transcript to each subagent. Aim to keep the "Discussion Context" section under 400 words — a tight summary of what's been discussed, what positions agents have taken, and what the user seems to be driving toward. Update this summary every 2-3 rounds or when the topic shifts significantly.
|
|
115
|
+
|
|
116
|
+
## When Things Go Sideways
|
|
117
|
+
|
|
118
|
+
- **Agents are all saying the same thing**: Bring in a contrarian voice, or ask a specific agent to play devil's advocate by framing the prompt that way.
|
|
119
|
+
- **Discussion is going in circles**: Summarize the impasse and ask the user what angle they want to explore next.
|
|
120
|
+
- **User seems disengaged**: Ask directly — continue, change topic, or wrap up?
|
|
121
|
+
- **Agent gives a weak response**: Don't retry. Present it and let the user decide if they want more from that agent.
|
|
122
|
+
|
|
123
|
+
## Exit
|
|
124
|
+
|
|
125
|
+
When the user says they're done (any natural phrasing — "thanks", "that's all", "end party mode", etc.), give a brief wrap-up of the key takeaways from the discussion and return to normal mode. Don't force exit triggers — just read the room.
|
|
@@ -1144,59 +1144,12 @@ class Installer {
|
|
|
1144
1144
|
const configuredIdes = existingInstall.ides;
|
|
1145
1145
|
const projectRoot = path.dirname(bmadDir);
|
|
1146
1146
|
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
id: source.id,
|
|
1154
|
-
name: source.name || source.id,
|
|
1155
|
-
sourcePath: source.path,
|
|
1156
|
-
cached: false, // From CLI, will be re-cached
|
|
1157
|
-
});
|
|
1158
|
-
}
|
|
1159
|
-
}
|
|
1160
|
-
}
|
|
1161
|
-
const cacheDir = path.join(bmadDir, '_config', 'custom');
|
|
1162
|
-
if (await fs.pathExists(cacheDir)) {
|
|
1163
|
-
const cachedModules = await fs.readdir(cacheDir, { withFileTypes: true });
|
|
1164
|
-
|
|
1165
|
-
for (const cachedModule of cachedModules) {
|
|
1166
|
-
const moduleId = cachedModule.name;
|
|
1167
|
-
const cachedPath = path.join(cacheDir, moduleId);
|
|
1168
|
-
|
|
1169
|
-
// Skip if path doesn't exist (broken symlink, deleted dir) - avoids lstat ENOENT
|
|
1170
|
-
if (!(await fs.pathExists(cachedPath))) {
|
|
1171
|
-
continue;
|
|
1172
|
-
}
|
|
1173
|
-
if (!cachedModule.isDirectory()) {
|
|
1174
|
-
continue;
|
|
1175
|
-
}
|
|
1176
|
-
|
|
1177
|
-
// Skip if we already have this module from manifest
|
|
1178
|
-
if (customModuleSources.has(moduleId)) {
|
|
1179
|
-
continue;
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
|
-
// Check if this is an external official module - skip cache for those
|
|
1183
|
-
const isExternal = await this.externalModuleManager.hasModule(moduleId);
|
|
1184
|
-
if (isExternal) {
|
|
1185
|
-
continue;
|
|
1186
|
-
}
|
|
1187
|
-
|
|
1188
|
-
// Check if this is actually a custom module (has module.yaml)
|
|
1189
|
-
const moduleYamlPath = path.join(cachedPath, 'module.yaml');
|
|
1190
|
-
if (await fs.pathExists(moduleYamlPath)) {
|
|
1191
|
-
customModuleSources.set(moduleId, {
|
|
1192
|
-
id: moduleId,
|
|
1193
|
-
name: moduleId,
|
|
1194
|
-
sourcePath: cachedPath,
|
|
1195
|
-
cached: true,
|
|
1196
|
-
});
|
|
1197
|
-
}
|
|
1198
|
-
}
|
|
1199
|
-
}
|
|
1147
|
+
const customModuleSources = await this.customModules.assembleQuickUpdateSources(
|
|
1148
|
+
config,
|
|
1149
|
+
existingInstall,
|
|
1150
|
+
bmadDir,
|
|
1151
|
+
this.externalModuleManager,
|
|
1152
|
+
);
|
|
1200
1153
|
|
|
1201
1154
|
// Get available modules (what we have source for)
|
|
1202
1155
|
const availableModulesData = await new OfficialModules().listAvailable();
|
|
@@ -377,10 +377,12 @@ class ManifestGenerator {
|
|
|
377
377
|
*/
|
|
378
378
|
async writeMainManifest(cfgDir) {
|
|
379
379
|
const manifestPath = path.join(cfgDir, 'manifest.yaml');
|
|
380
|
+
const installedModuleSet = new Set(this.modules);
|
|
380
381
|
|
|
381
382
|
// Read existing manifest to preserve install date
|
|
382
383
|
let existingInstallDate = null;
|
|
383
384
|
const existingModulesMap = new Map();
|
|
385
|
+
let existingCustomModules = [];
|
|
384
386
|
|
|
385
387
|
if (await fs.pathExists(manifestPath)) {
|
|
386
388
|
try {
|
|
@@ -402,6 +404,12 @@ class ManifestGenerator {
|
|
|
402
404
|
}
|
|
403
405
|
}
|
|
404
406
|
}
|
|
407
|
+
|
|
408
|
+
if (existingManifest.customModules && Array.isArray(existingManifest.customModules)) {
|
|
409
|
+
// We filter here so manifest regeneration preserves source metadata only for custom modules that
|
|
410
|
+
// are still installed. Without that, customModules can retain stale entries for modules that were removed.
|
|
411
|
+
existingCustomModules = existingManifest.customModules.filter((customModule) => installedModuleSet.has(customModule?.id));
|
|
412
|
+
}
|
|
405
413
|
} catch {
|
|
406
414
|
// If we can't read existing manifest, continue with defaults
|
|
407
415
|
}
|
|
@@ -437,6 +445,7 @@ class ManifestGenerator {
|
|
|
437
445
|
lastUpdated: new Date().toISOString(),
|
|
438
446
|
},
|
|
439
447
|
modules: updatedModules,
|
|
448
|
+
customModules: existingCustomModules,
|
|
440
449
|
ides: this.selectedIdes,
|
|
441
450
|
};
|
|
442
451
|
|
|
@@ -33,7 +33,6 @@ platforms:
|
|
|
33
33
|
legacy_targets:
|
|
34
34
|
- .claude/commands
|
|
35
35
|
target_dir: .claude/skills
|
|
36
|
-
ancestor_conflict_check: true
|
|
37
36
|
|
|
38
37
|
cline:
|
|
39
38
|
name: "Cline"
|
|
@@ -51,7 +50,6 @@ platforms:
|
|
|
51
50
|
- .codex/prompts
|
|
52
51
|
- ~/.codex/prompts
|
|
53
52
|
target_dir: .agents/skills
|
|
54
|
-
ancestor_conflict_check: true
|
|
55
53
|
|
|
56
54
|
codebuddy:
|
|
57
55
|
name: "CodeBuddy"
|
|
@@ -102,10 +100,15 @@ platforms:
|
|
|
102
100
|
- .iflow/commands
|
|
103
101
|
target_dir: .iflow/skills
|
|
104
102
|
|
|
103
|
+
junie:
|
|
104
|
+
name: "Junie"
|
|
105
|
+
preferred: false
|
|
106
|
+
installer:
|
|
107
|
+
target_dir: .agents/skills
|
|
108
|
+
|
|
105
109
|
kilo:
|
|
106
110
|
name: "KiloCoder"
|
|
107
111
|
preferred: false
|
|
108
|
-
suspended: "Kilo Code does not yet support the Agent Skills standard. Support is paused until they implement it. See https://github.com/kilocode/kilo-code/issues for updates."
|
|
109
112
|
installer:
|
|
110
113
|
legacy_targets:
|
|
111
114
|
- .kilocode/workflows
|
|
@@ -135,7 +138,6 @@ platforms:
|
|
|
135
138
|
- .opencode/agent
|
|
136
139
|
- .opencode/command
|
|
137
140
|
target_dir: .opencode/skills
|
|
138
|
-
ancestor_conflict_check: true
|
|
139
141
|
|
|
140
142
|
pi:
|
|
141
143
|
name: "Pi"
|
|
@@ -192,6 +192,111 @@ class CustomModules {
|
|
|
192
192
|
|
|
193
193
|
return this.paths;
|
|
194
194
|
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Assemble quick-update source candidates before install() hands them to discoverPaths().
|
|
198
|
+
* This exists because discoverPaths() consumes already-prepared quick-update sources,
|
|
199
|
+
* while quickUpdate() still has to build that source map from manifest, explicit inputs,
|
|
200
|
+
* and cache conventions.
|
|
201
|
+
* Precedence: manifest-backed paths, explicit sources override them, then cached modules.
|
|
202
|
+
* @param {Object} config - Quick update configuration
|
|
203
|
+
* @param {Object} existingInstall - Existing installation snapshot
|
|
204
|
+
* @param {string} bmadDir - BMAD directory
|
|
205
|
+
* @param {Object} externalModuleManager - External module manager
|
|
206
|
+
* @returns {Promise<Map<string, Object>>} Map of custom module ID to source info
|
|
207
|
+
*/
|
|
208
|
+
async assembleQuickUpdateSources(config, existingInstall, bmadDir, externalModuleManager) {
|
|
209
|
+
const projectRoot = path.dirname(bmadDir);
|
|
210
|
+
const customModuleSources = new Map();
|
|
211
|
+
|
|
212
|
+
if (existingInstall.customModules) {
|
|
213
|
+
for (const customModule of existingInstall.customModules) {
|
|
214
|
+
// Skip if no ID - can't reliably track or re-cache without it
|
|
215
|
+
if (!customModule?.id) continue;
|
|
216
|
+
|
|
217
|
+
let sourcePath = customModule.sourcePath;
|
|
218
|
+
if (sourcePath && sourcePath.startsWith('_config')) {
|
|
219
|
+
// Paths are relative to BMAD dir, but we want absolute paths for install
|
|
220
|
+
sourcePath = path.join(bmadDir, sourcePath);
|
|
221
|
+
} else if (!sourcePath && customModule.relativePath) {
|
|
222
|
+
// Fall back to relativePath
|
|
223
|
+
sourcePath = path.resolve(projectRoot, customModule.relativePath);
|
|
224
|
+
} else if (sourcePath && !path.isAbsolute(sourcePath)) {
|
|
225
|
+
// If we have a sourcePath but it's not absolute, resolve it relative to project root
|
|
226
|
+
sourcePath = path.resolve(projectRoot, sourcePath);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// If we still don't have a valid source path, skip this module
|
|
230
|
+
if (!sourcePath || !(await fs.pathExists(sourcePath))) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
customModuleSources.set(customModule.id, {
|
|
235
|
+
id: customModule.id,
|
|
236
|
+
name: customModule.name || customModule.id,
|
|
237
|
+
sourcePath,
|
|
238
|
+
relativePath: customModule.relativePath,
|
|
239
|
+
cached: false,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (config.customContent?.sources?.length > 0) {
|
|
245
|
+
for (const source of config.customContent.sources) {
|
|
246
|
+
if (source.id && source.path) {
|
|
247
|
+
customModuleSources.set(source.id, {
|
|
248
|
+
id: source.id,
|
|
249
|
+
name: source.name || source.id,
|
|
250
|
+
sourcePath: source.path,
|
|
251
|
+
cached: false, // From CLI, will be re-cached
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const cacheDir = path.join(bmadDir, '_config', 'custom');
|
|
258
|
+
if (!(await fs.pathExists(cacheDir))) {
|
|
259
|
+
return customModuleSources;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const cachedModules = await fs.readdir(cacheDir, { withFileTypes: true });
|
|
263
|
+
for (const cachedModule of cachedModules) {
|
|
264
|
+
const moduleId = cachedModule.name;
|
|
265
|
+
const cachedPath = path.join(cacheDir, moduleId);
|
|
266
|
+
|
|
267
|
+
// Skip if path doesn't exist (broken symlink, deleted dir) - avoids lstat ENOENT
|
|
268
|
+
if (!(await fs.pathExists(cachedPath))) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
if (!cachedModule.isDirectory()) {
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Skip if we already have this module from manifest
|
|
276
|
+
if (customModuleSources.has(moduleId)) {
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// Check if this is an external official module - skip cache for those
|
|
281
|
+
const isExternal = await externalModuleManager.hasModule(moduleId);
|
|
282
|
+
if (isExternal) {
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// Check if this is actually a custom module (has module.yaml)
|
|
287
|
+
const moduleYamlPath = path.join(cachedPath, 'module.yaml');
|
|
288
|
+
if (await fs.pathExists(moduleYamlPath)) {
|
|
289
|
+
customModuleSources.set(moduleId, {
|
|
290
|
+
id: moduleId,
|
|
291
|
+
name: moduleId,
|
|
292
|
+
sourcePath: cachedPath,
|
|
293
|
+
cached: true,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return customModuleSources;
|
|
299
|
+
}
|
|
195
300
|
}
|
|
196
301
|
|
|
197
302
|
module.exports = { CustomModules };
|
|
@@ -313,10 +313,41 @@ class ExternalModuleManager {
|
|
|
313
313
|
|
|
314
314
|
// The module-definition specifies the path to module.yaml relative to repo root
|
|
315
315
|
// We need to return the directory containing module.yaml
|
|
316
|
-
const moduleDefinitionPath = moduleInfo.moduleDefinition; // e.g., '
|
|
317
|
-
const
|
|
316
|
+
const moduleDefinitionPath = moduleInfo.moduleDefinition; // e.g., 'skills/module.yaml'
|
|
317
|
+
const configuredPath = path.join(cloneDir, moduleDefinitionPath);
|
|
318
318
|
|
|
319
|
-
|
|
319
|
+
if (await fs.pathExists(configuredPath)) {
|
|
320
|
+
return path.dirname(configuredPath);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// Fallback: search skills/ and src/ (root level and one level deep for subfolders)
|
|
324
|
+
for (const dir of ['skills', 'src']) {
|
|
325
|
+
const rootCandidate = path.join(cloneDir, dir, 'module.yaml');
|
|
326
|
+
if (await fs.pathExists(rootCandidate)) {
|
|
327
|
+
return path.dirname(rootCandidate);
|
|
328
|
+
}
|
|
329
|
+
const dirPath = path.join(cloneDir, dir);
|
|
330
|
+
if (await fs.pathExists(dirPath)) {
|
|
331
|
+
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
332
|
+
for (const entry of entries) {
|
|
333
|
+
if (entry.isDirectory()) {
|
|
334
|
+
const subCandidate = path.join(dirPath, entry.name, 'module.yaml');
|
|
335
|
+
if (await fs.pathExists(subCandidate)) {
|
|
336
|
+
return path.dirname(subCandidate);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// Check repo root as last fallback
|
|
344
|
+
const rootCandidate = path.join(cloneDir, 'module.yaml');
|
|
345
|
+
if (await fs.pathExists(rootCandidate)) {
|
|
346
|
+
return path.dirname(rootCandidate);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// Nothing found: return configured path (preserves old behavior for error messaging)
|
|
350
|
+
return path.dirname(configuredPath);
|
|
320
351
|
}
|
|
321
352
|
}
|
|
322
353
|
|
|
@@ -127,6 +127,12 @@ platforms:
|
|
|
127
127
|
category: ide
|
|
128
128
|
description: "AI-powered IDE with cascade flows"
|
|
129
129
|
|
|
130
|
+
junie:
|
|
131
|
+
name: "Junie"
|
|
132
|
+
preferred: false
|
|
133
|
+
category: cli
|
|
134
|
+
description: "AI coding agent by JetBrains"
|
|
135
|
+
|
|
130
136
|
ona:
|
|
131
137
|
name: "Ona"
|
|
132
138
|
preferred: false
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
domain,signals,complexity,key_concerns,required_knowledge,suggested_workflow,web_searches,special_sections
|
|
2
|
-
healthcare,"medical,diagnostic,clinical,FDA,patient,treatment,HIPAA,therapy,pharma,drug",high,"FDA approval;Clinical validation;HIPAA compliance;Patient safety;Medical device classification;Liability","Regulatory pathways;Clinical trial design;Medical standards;Data privacy;Integration requirements","domain-research","FDA software medical device guidance {date};HIPAA compliance software requirements;Medical software standards {date};Clinical validation software","clinical_requirements;regulatory_pathway;validation_methodology;safety_measures"
|
|
3
|
-
fintech,"payment,banking,trading,investment,crypto,wallet,transaction,KYC,AML,funds,fintech",high,"Regional compliance;Security standards;Audit requirements;Fraud prevention;Data protection","KYC/AML requirements;PCI DSS;Open banking;Regional laws (US/EU/APAC);Crypto regulations","domain-research","fintech regulations {date};payment processing compliance {date};open banking API standards;cryptocurrency regulations {date}","compliance_matrix;security_architecture;audit_requirements;fraud_prevention"
|
|
4
|
-
govtech,"government,federal,civic,public sector,citizen,municipal,voting",high,"Procurement rules;Security clearance;Accessibility (508);FedRAMP;Privacy;Transparency","Government procurement;Security frameworks;Accessibility standards;Privacy laws;Open data requirements","domain-research","government software procurement {date};FedRAMP compliance requirements;section 508 accessibility;government security standards","procurement_compliance;security_clearance;accessibility_standards;transparency_requirements"
|
|
5
|
-
edtech,"education,learning,student,teacher,curriculum,assessment,K-12,university,LMS",medium,"Student privacy (COPPA/FERPA);Accessibility;Content moderation;Age verification;Curriculum standards","Educational privacy laws;Learning standards;Accessibility requirements;Content guidelines;Assessment validity","domain-research","educational software privacy {date};COPPA FERPA compliance;WCAG education requirements;learning management standards","privacy_compliance;content_guidelines;accessibility_features;curriculum_alignment"
|
|
6
|
-
aerospace,"aircraft,spacecraft,aviation,drone,satellite,propulsion,flight,radar,navigation",high,"Safety certification;DO-178C compliance;Performance validation;Simulation accuracy;Export controls","Aviation standards;Safety analysis;Simulation validation;ITAR/export controls;Performance requirements","domain-research + technical-model","DO-178C software certification;aerospace simulation standards {date};ITAR export controls software;aviation safety requirements","safety_certification;simulation_validation;performance_requirements;export_compliance"
|
|
7
|
-
automotive,"vehicle,car,autonomous,ADAS,automotive,driving,EV,charging",high,"Safety standards;ISO 26262;V2X communication;Real-time requirements;Certification","Automotive standards;Functional safety;V2X protocols;Real-time systems;Testing requirements","domain-research","ISO 26262 automotive software;automotive safety standards {date};V2X communication protocols;EV charging standards","safety_standards;functional_safety;communication_protocols;certification_requirements"
|
|
8
|
-
scientific,"research,algorithm,simulation,modeling,computational,analysis,data science,ML,AI",medium,"Reproducibility;Validation methodology;Peer review;Performance;Accuracy;Computational resources","Scientific method;Statistical validity;Computational requirements;Domain expertise;Publication standards","technical-model","scientific computing best practices {date};research reproducibility standards;computational modeling validation;peer review software","validation_methodology;accuracy_metrics;reproducibility_plan;computational_requirements"
|
|
9
|
-
legaltech,"legal,law,contract,compliance,litigation,patent,attorney,court",high,"Legal ethics;Bar regulations;Data retention;Attorney-client privilege;Court system integration","Legal practice rules;Ethics requirements;Court filing systems;Document standards;Confidentiality","domain-research","legal technology ethics {date};law practice management software requirements;court filing system standards;attorney client privilege technology","ethics_compliance;data_retention;confidentiality_measures;court_integration"
|
|
10
|
-
insuretech,"insurance,claims,underwriting,actuarial,policy,risk,premium",high,"Insurance regulations;Actuarial standards;Data privacy;Fraud detection;State compliance","Insurance regulations by state;Actuarial methods;Risk modeling;Claims processing;Regulatory reporting","domain-research","insurance software regulations {date};actuarial standards software;insurance fraud detection;state insurance compliance","regulatory_requirements;risk_modeling;fraud_detection;reporting_compliance"
|
|
11
|
-
energy,"energy,utility,grid,solar,wind,power,electricity,oil,gas",high,"Grid compliance;NERC standards;Environmental regulations;Safety requirements;Real-time operations","Energy regulations;Grid standards;Environmental compliance;Safety protocols;SCADA systems","domain-research","energy sector software compliance {date};NERC CIP standards;smart grid requirements;renewable energy software standards","grid_compliance;safety_protocols;environmental_compliance;operational_requirements"
|
|
12
|
-
process_control,"industrial automation,process control,PLC,SCADA,DCS,HMI,operational technology,OT,control system,cyberphysical,MES,historian,instrumentation,I&C,P&ID",high,"Functional safety;OT cybersecurity;Real-time control requirements;Legacy system integration;Process safety and hazard analysis;Environmental compliance and permitting;Engineering authority and PE requirements","Functional safety standards;OT security frameworks;Industrial protocols;Process control architecture;Plant reliability and maintainability","domain-research + technical-model","IEC 62443 OT cybersecurity requirements {date};functional safety software requirements {date};industrial process control architecture;ISA-95 manufacturing integration","functional_safety;ot_security;process_requirements;engineering_authority"
|
|
13
|
-
building_automation,"building automation,BAS,BMS,HVAC,smart building,lighting control,fire alarm,fire protection,fire suppression,life safety,elevator,access control,DDC,energy management,sequence of operations,commissioning",high,"Life safety codes;Building energy standards;Multi-trade coordination and interoperability;Commissioning and ongoing operational performance;Indoor environmental quality and occupant comfort;Engineering authority and PE requirements","Building automation protocols;HVAC and mechanical controls;Fire alarm, fire protection, and life safety design;Commissioning process and sequence of operations;Building codes and energy standards","domain-research","smart building software architecture {date};BACnet integration best practices;building automation cybersecurity {date};ASHRAE building standards","life_safety;energy_compliance;commissioning_requirements;engineering_authority"
|
|
14
|
-
gaming,"game,player,gameplay,level,character,multiplayer,quest",redirect,"REDIRECT TO GAME WORKFLOWS","Game design","game-brief","NA","NA"
|
|
15
|
-
general,"",low,"Standard requirements;Basic security;User experience;Performance","General software practices","continue","software development best practices {date}","standard_requirements"
|