update inquirer to v9.x for better windows support

This commit is contained in:
Brian Madison
2025-12-22 18:18:16 +08:00
parent da21790531
commit 021936eaa9
783 changed files with 13034 additions and 413 deletions

View File

@@ -0,0 +1,131 @@
# /task-advanced-elicitation Command
When this command is used, execute the following task:
## Advanced Elicitation Task
<task id="_bmad/core/tasks/advanced-elicitation.xml" name="Advanced Elicitation" standalone="true"
methods="{project-root}/_bmad/core/tasks/advanced-elicitation-methods.csv"
agent-party="{project-root}/_bmad/_config/agent-manifest.csv">
<llm critical="true">
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
<i>DO NOT skip steps or change the sequence</i>
<i>HALT immediately when halt-conditions are met</i>
<i>Each action xml tag within step xml tag is a REQUIRED action to complete that step</i>
<i>Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution</i>
</llm>
<integration description="When called from workflow">
<desc>When called during template workflow processing:</desc>
<i>1. Receive or review the current section content that was just generated or</i>
<i>2. Apply elicitation methods iteratively to enhance that specific content</i>
<i>3. Return the enhanced version back when user selects 'x' to proceed and return back</i>
<i>4. The enhanced content replaces the original section content in the output document</i>
</integration>
<flow>
<step n="1" title="Method Registry Loading">
<action>Load and read {{methods}} and {{agent-party}}</action>
<csv-structure>
<i>category: Method grouping (core, structural, risk, etc.)</i>
<i>method_name: Display name for the method</i>
<i>description: Rich explanation of what the method does, when to use it, and why it's valuable</i>
<i>output_pattern: Flexible flow guide using → arrows (e.g., "analysis → insights → action")</i>
</csv-structure>
<context-analysis>
<i>Use conversation history</i>
<i>Analyze: content type, complexity, stakeholder needs, risk level, and creative potential</i>
</context-analysis>
<smart-selection>
<i>1. Analyze context: Content type, complexity, stakeholder needs, risk level, creative potential</i>
<i>2. Parse descriptions: Understand each method's purpose from the rich descriptions in CSV</i>
<i>3. Select 5 methods: Choose methods that best match the context based on their descriptions</i>
<i>4. Balance approach: Include mix of foundational and specialized techniques as appropriate</i>
</smart-selection>
</step>
<step n="2" title="Present Options and Handle Responses">
<format>
**Advanced Elicitation Options (If you launched Party Mode, they will participate randomly)**
Choose a number (1-5), [r] to Reshuffle, [a] List All, or [x] to Proceed:
1. [Method Name]
2. [Method Name]
3. [Method Name]
4. [Method Name]
5. [Method Name]
r. Reshuffle the list with 5 new options
a. List all methods with descriptions
x. Proceed / No Further Actions
</format>
<response-handling>
<case n="1-5">
<i>Execute the selected method using its description from the CSV</i>
<i>Adapt the method's complexity and output format based on the current context</i>
<i>Apply the method creatively to the current section content being enhanced</i>
<i>Display the enhanced version showing what the method revealed or improved</i>
<i>CRITICAL: Ask the user if they would like to apply the changes to the doc (y/n/other) and HALT to await response.</i>
<i>CRITICAL: ONLY if Yes, apply the changes. IF No, discard your memory of the proposed changes. If any other reply, try best to
follow the instructions given by the user.</i>
<i>CRITICAL: Re-present the same 1-5,r,x prompt to allow additional elicitations</i>
</case>
<case n="r">
<i>Select 5 random methods from advanced-elicitation-methods.csv, present new list with same prompt format</i>
<i>When selecting, try to think and pick a diverse set of methods covering different categories and approaches, with 1 and 2 being
potentially the most useful for the document or section being discovered</i>
</case>
<case n="x">
<i>Complete elicitation and proceed</i>
<i>Return the fully enhanced content back to create-doc.md</i>
<i>The enhanced content becomes the final version for that section</i>
<i>Signal completion back to create-doc.md to continue with next section</i>
</case>
<case n="a">
<i>List all methods with their descriptions from the CSV in a compact table</i>
<i>Allow user to select any method by name or number from the full list</i>
<i>After selection, execute the method as described in the n="1-5" case above</i>
</case>
<case n="direct-feedback">
<i>Apply changes to current section content and re-present choices</i>
</case>
<case n="multiple-numbers">
<i>Execute methods in sequence on the content, then re-offer choices</i>
</case>
</response-handling>
</step>
<step n="3" title="Execution Guidelines">
<i>Method execution: Use the description from CSV to understand and apply each method</i>
<i>Output pattern: Use the pattern as a flexible guide (e.g., "paths → evaluation → selection")</i>
<i>Dynamic adaptation: Adjust complexity based on content needs (simple to sophisticated)</i>
<i>Creative application: Interpret methods flexibly based on context while maintaining pattern consistency</i>
<i>Focus on actionable insights</i>
<i>Stay relevant: Tie elicitation to specific content being analyzed (the current section from the document being created unless user
indicates otherwise)</i>
<i>Identify personas: For single or multi-persona methods, clearly identify viewpoints, and use party members if available in memory
already</i>
<i>Critical loop behavior: Always re-offer the 1-5,r,a,x choices after each method execution</i>
<i>Continue until user selects 'x' to proceed with enhanced content, confirm or ask the user what should be accepted from the session</i>
<i>Each method application builds upon previous enhancements</i>
<i>Content preservation: Track all enhancements made during elicitation</i>
<i>Iterative enhancement: Each selected method (1-5) should:</i>
<i> 1. Apply to the current enhanced version of the content</i>
<i> 2. Show the improvements made</i>
<i> 3. Return to the prompt for additional elicitations or completion</i>
</step>
</flow>
</task>
## Usage
This command executes the Advanced Elicitation task from the BMAD CORE module.
## Module
Part of the BMAD CORE module.

View File

@@ -0,0 +1,81 @@
# /task-index-docs Command
When this command is used, execute the following task:
## Index Docs Task
<task id="_bmad/core/tasks/index-docs" name="Index Docs"
description="Generates or updates an index.md of all documents in the specified directory" webskip="true" standalone="true">
<llm critical="true">
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
<i>DO NOT skip steps or change the sequence</i>
<i>HALT immediately when halt-conditions are met</i>
<i>Each action xml tag within step xml tag is a REQUIRED action to complete that step</i>
<i>Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution</i>
</llm>
<flow>
<step n="1" title="Scan Directory">
<i>List all files and subdirectories in the target location</i>
</step>
<step n="2" title="Group Content">
<i>Organize files by type, purpose, or subdirectory</i>
</step>
<step n="3" title="Generate Descriptions">
<i>Read each file to understand its actual purpose and create brief (3-10 word) descriptions based on the content, not just the
filename</i>
</step>
<step n="4" title="Create/Update Index">
<i>Write or update index.md with organized file listings</i>
</step>
</flow>
<output-format>
<example>
# Directory Index
## Files
- **[filename.ext](./filename.ext)** - Brief description
- **[another-file.ext](./another-file.ext)** - Brief description
## Subdirectories
### subfolder/
- **[file1.ext](./subfolder/file1.ext)** - Brief description
- **[file2.ext](./subfolder/file2.ext)** - Brief description
### another-folder/
- **[file3.ext](./another-folder/file3.ext)** - Brief description
</example>
</output-format>
<halt-conditions critical="true">
<i>HALT if target directory does not exist or is inaccessible</i>
<i>HALT if user does not have write permissions to create index.md</i>
</halt-conditions>
<validation>
<i>Use relative paths starting with ./</i>
<i>Group similar files together</i>
<i>Read file contents to generate accurate descriptions - don't guess from filenames</i>
<i>Keep descriptions concise but informative (3-10 words)</i>
<i>Sort alphabetically within groups</i>
<i>Skip hidden files (starting with .) unless specified</i>
</validation>
</task>
## Usage
This command executes the Index Docs task from the BMAD CORE module.
## Module
Part of the BMAD CORE module.

View File

@@ -0,0 +1,104 @@
# /task-validate-workflow Command
When this command is used, execute the following task:
## Validate Workflow Task
<task id="_bmad/core/tasks/validate-workflow.xml" name="Validate Workflow Output">
<objective>Run a checklist against a document with thorough analysis and produce a validation report</objective>
<inputs>
<input name="workflow" desc="Workflow path containing checklist.md" />
<input name="checklist" desc="Checklist to validate against (defaults to workflow's checklist.md)" />
<input name="document" desc="Document to validate (ask user if not specified)" />
</inputs>
<flow>
<step n="1" title="Setup">
<action>If checklist not provided, load checklist.md from workflow location</action>
<action>Try to fuzzy match for files similar to the input document name or if user did not provide the document. If document not
provided or unsure, ask user: "Which document should I validate?"</action>
<action>Load both the checklist and document</action>
</step>
<step n="2" title="Validate" critical="true">
<mandate>For EVERY checklist item, WITHOUT SKIPPING ANY:</mandate>
<for-each-item>
<action>Read requirement carefully</action>
<action>Search document for evidence along with any ancillary loaded documents or artifacts (quotes with line numbers)</action>
<action>Analyze deeply - look for explicit AND implied coverage</action>
<mark-as>
✓ PASS - Requirement fully met (provide evidence)
⚠ PARTIAL - Some coverage but incomplete (explain gaps)
✗ FAIL - Not met or severely deficient (explain why)
N/A - Not applicable (explain reason)
</mark-as>
</for-each-item>
<critical>DO NOT SKIP ANY SECTIONS OR ITEMS</critical>
</step>
<step n="3" title="Generate Report">
<action>Create validation-report-{timestamp}.md in document's folder</action>
<report-format>
# Validation Report
**Document:** {document-path}
**Checklist:** {checklist-path}
**Date:** {timestamp}
## Summary
- Overall: X/Y passed (Z%)
- Critical Issues: {count}
## Section Results
### {Section Name}
Pass Rate: X/Y (Z%)
{For each item:}
[MARK] {Item description}
Evidence: {Quote with line# or explanation}
{If FAIL/PARTIAL: Impact: {why this matters}}
## Failed Items
{All ✗ items with recommendations}
## Partial Items
{All ⚠ items with what's missing}
## Recommendations
1. Must Fix: {critical failures}
2. Should Improve: {important gaps}
3. Consider: {minor improvements}
</report-format>
</step>
<step n="4" title="Summary for User">
<action>Present section-by-section summary</action>
<action>Highlight all critical issues</action>
<action>Provide path to saved report</action>
<action>HALT - do not continue unless user asks</action>
</step>
</flow>
<critical-rules>
<rule>NEVER skip sections - validate EVERYTHING</rule>
<rule>ALWAYS provide evidence (quotes + line numbers) for marks</rule>
<rule>Think deeply about each requirement - don't rush</rule>
<rule>Save report to document's folder automatically</rule>
<rule>HALT after presenting summary - wait for user</rule>
</critical-rules>
</task>
## Usage
This command executes the Validate Workflow task from the BMAD CORE module.
## Module
Part of the BMAD CORE module.

View File

@@ -0,0 +1,251 @@
# /task-workflow Command
When this command is used, execute the following task:
## Workflow Task
<task id="_bmad/core/tasks/workflow.xml" name="Execute Workflow">
<objective>Execute given workflow by loading its configuration, following instructions, and producing output</objective>
<llm critical="true">
<mandate>Always read COMPLETE files - NEVER use offset/limit when reading any workflow related files</mandate>
<mandate>Instructions are MANDATORY - either as file path, steps or embedded list in YAML, XML or markdown</mandate>
<mandate>Execute ALL steps in instructions IN EXACT ORDER</mandate>
<mandate>Save to template output file after EVERY "template-output" tag</mandate>
<mandate>NEVER skip a step - YOU are responsible for every steps execution without fail or excuse</mandate>
</llm>
<WORKFLOW-RULES critical="true">
<rule n="1">Steps execute in exact numerical order (1, 2, 3...)</rule>
<rule n="2">Optional steps: Ask user unless #yolo mode active</rule>
<rule n="3">Template-output tags: Save content, discuss with the user the section completed, and NEVER proceed until the users indicates
to proceed (unless YOLO mode has been activated)</rule>
</WORKFLOW-RULES>
<flow>
<step n="1" title="Load and Initialize Workflow">
<substep n="1a" title="Load Configuration and Resolve Variables">
<action>Read workflow.yaml from provided path</action>
<mandate>Load config_source (REQUIRED for all modules)</mandate>
<phase n="1">Load external config from config_source path</phase>
<phase n="2">Resolve all {config_source}: references with values from config</phase>
<phase n="3">Resolve system variables (date:system-generated) and paths ({project-root}, {installed_path})</phase>
<phase n="4">Ask user for input of any variables that are still unknown</phase>
</substep>
<substep n="1b" title="Load Required Components">
<mandate>Instructions: Read COMPLETE file from path OR embedded list (REQUIRED)</mandate>
<check>If template path → Read COMPLETE template file</check>
<check>If validation path → Note path for later loading when needed</check>
<check>If template: false → Mark as action-workflow (else template-workflow)</check>
<note>Data files (csv, json) → Store paths only, load on-demand when instructions reference them</note>
</substep>
<substep n="1c" title="Initialize Output" if="template-workflow">
<action>Resolve default_output_file path with all variables and {{date}}</action>
<action>Create output directory if doesn't exist</action>
<action>If template-workflow → Write template to output file with placeholders</action>
<action>If action-workflow → Skip file creation</action>
</substep>
</step>
<step n="2" title="Process Each Instruction Step in Order">
<iterate>For each step in instructions:</iterate>
<substep n="2a" title="Handle Step Attributes">
<check>If optional="true" and NOT #yolo → Ask user to include</check>
<check>If if="condition" → Evaluate condition</check>
<check>If for-each="item" → Repeat step for each item</check>
<check>If repeat="n" → Repeat step n times</check>
</substep>
<substep n="2b" title="Execute Step Content">
<action>Process step instructions (markdown or XML tags)</action>
<action>Replace {{variables}} with values (ask user if unknown)</action>
<execute-tags>
<tag>action xml tag → Perform the action</tag>
<tag>check if="condition" xml tag → Conditional block wrapping actions (requires closing &lt;/check&gt;)</tag>
<tag>ask xml tag → Prompt user and WAIT for response</tag>
<tag>invoke-workflow xml tag → Execute another workflow with given inputs and the workflow.xml runner</tag>
<tag>invoke-task xml tag → Execute specified task</tag>
<tag>invoke-protocol name="protocol_name" xml tag → Execute reusable protocol from protocols section</tag>
<tag>goto step="x" → Jump to specified step</tag>
</execute-tags>
</substep>
<substep n="2c" title="Handle template-output Tags">
<if tag="template-output">
<mandate>Generate content for this section</mandate>
<mandate>Save to file (Write first time, Edit subsequent)</mandate>
<action>Display generated content</action>
<ask> [a] Advanced Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO the rest of this document only. WAIT for response. <if
response="a">
<action>Start the advanced elicitation workflow {project-root}/_bmad/core/tasks/advanced-elicitation.xml</action>
</if>
<if
response="c">
<action>Continue to next step</action>
</if>
<if response="p">
<action>Start the party-mode workflow {project-root}/_bmad/core/workflows/party-mode/workflow.yaml</action>
</if>
<if
response="y">
<action>Enter #yolo mode for the rest of the workflow</action>
</if>
</ask>
</if>
</substep>
<substep n="2d" title="Step Completion">
<check>If no special tags and NOT #yolo:</check>
<ask>Continue to next step? (y/n/edit)</ask>
</substep>
</step>
<step n="3" title="Completion">
<check>Confirm document saved to output path</check>
<action>Report workflow completion</action>
</step>
</flow>
<execution-modes>
<mode name="normal">Full user interaction and confirmation of EVERY step at EVERY template output - NO EXCEPTIONS except yolo MODE</mode>
<mode name="yolo">Skip all confirmations and elicitation, minimize prompts and try to produce all of the workflow automatically by
simulating the remaining discussions with an simulated expert user</mode>
</execution-modes>
<supported-tags desc="Instructions can use these tags">
<structural>
<tag>step n="X" goal="..." - Define step with number and goal</tag>
<tag>optional="true" - Step can be skipped</tag>
<tag>if="condition" - Conditional execution</tag>
<tag>for-each="collection" - Iterate over items</tag>
<tag>repeat="n" - Repeat n times</tag>
</structural>
<execution>
<tag>action - Required action to perform</tag>
<tag>action if="condition" - Single conditional action (inline, no closing tag needed)</tag>
<tag>check if="condition"&gt;...&lt;/check&gt; - Conditional block wrapping multiple items (closing tag required)</tag>
<tag>ask - Get user input (ALWAYS wait for response before continuing)</tag>
<tag>goto - Jump to another step</tag>
<tag>invoke-workflow - Call another workflow</tag>
<tag>invoke-task - Call a task</tag>
<tag>invoke-protocol - Execute a reusable protocol (e.g., discover_inputs)</tag>
</execution>
<output>
<tag>template-output - Save content checkpoint</tag>
<tag>critical - Cannot be skipped</tag>
<tag>example - Show example output</tag>
</output>
</supported-tags>
<protocols desc="Reusable workflow protocols that can be invoked via invoke-protocol tag">
<protocol name="discover_inputs" desc="Smart file discovery and loading based on input_file_patterns">
<objective>Intelligently load project files (whole or sharded) based on workflow's input_file_patterns configuration</objective>
<critical>Only execute if workflow.yaml contains input_file_patterns section</critical>
<flow>
<step n="1" title="Parse Input File Patterns">
<action>Read input_file_patterns from loaded workflow.yaml</action>
<action>For each pattern group (prd, architecture, epics, etc.), note the load_strategy if present</action>
</step>
<step n="2" title="Load Files Using Smart Strategies">
<iterate>For each pattern in input_file_patterns:</iterate>
<substep n="2a" title="Try Sharded Documents First">
<check if="sharded pattern exists">
<action>Determine load_strategy from pattern config (defaults to FULL_LOAD if not specified)</action>
<strategy name="FULL_LOAD">
<desc>Load ALL files in sharded directory - used for PRD, Architecture, UX, brownfield docs</desc>
<action>Use glob pattern to find ALL .md files (e.g., "{output_folder}/*architecture*/*.md")</action>
<action>Load EVERY matching file completely</action>
<action>Concatenate content in logical order (index.md first if exists, then alphabetical)</action>
<action>Store in variable: {pattern_name_content}</action>
</strategy>
<strategy name="SELECTIVE_LOAD">
<desc>Load specific shard using template variable - example: used for epics with {{epic_num}}</desc>
<action>Check for template variables in sharded_single pattern (e.g., {{epic_num}})</action>
<action>If variable undefined, ask user for value OR infer from context</action>
<action>Resolve template to specific file path</action>
<action>Load that specific file</action>
<action>Store in variable: {pattern_name_content}</action>
</strategy>
<strategy name="INDEX_GUIDED">
<desc>Load index.md, analyze structure and description of each doc in the index, then intelligently load relevant docs</desc>
<mandate>DO NOT BE LAZY - use best judgment to load documents that might have relevant information, even if only a 5% chance</mandate>
<action>Load index.md from sharded directory</action>
<action>Parse table of contents, links, section headers</action>
<action>Analyze workflow's purpose and objective</action>
<action>Identify which linked/referenced documents are likely relevant</action>
<example>If workflow is about authentication and index shows "Auth Overview", "Payment Setup", "Deployment" → Load auth
docs, consider deployment docs, skip payment</example>
<action>Load all identified relevant documents</action>
<action>Store combined content in variable: {pattern_name_content}</action>
<note>When in doubt, LOAD IT - context is valuable, being thorough is better than missing critical info</note>
</strategy>
<action>Mark pattern as RESOLVED, skip to next pattern</action>
</check>
</substep>
<substep n="2b" title="Try Whole Document if No Sharded Found">
<check if="no sharded matches found OR no sharded pattern exists">
<action>Attempt glob match on 'whole' pattern (e.g., "{output_folder}/*prd*.md")</action>
<check if="matches found">
<action>Load ALL matching files completely (no offset/limit)</action>
<action>Store content in variable: {pattern_name_content} (e.g., {prd_content})</action>
<action>Mark pattern as RESOLVED, skip to next pattern</action>
</check>
</check>
</substep>
<substep n="2c" title="Handle Not Found">
<check if="no matches for sharded OR whole">
<action>Set {pattern_name_content} to empty string</action>
<action>Note in session: "No {pattern_name} files found" (not an error, just unavailable, offer use change to provide)</action>
</check>
</substep>
</step>
<step n="3" title="Report Discovery Results">
<action>List all loaded content variables with file counts</action>
<example>
✓ Loaded {prd_content} from 5 sharded files: prd/index.md, prd/requirements.md, ...
✓ Loaded {architecture_content} from 1 file: Architecture.md
✓ Loaded {epics_content} from selective load: epics/epic-3.md
○ No ux_design files found
</example>
<note>This gives workflow transparency into what context is available</note>
</step>
</flow>
</protocol>
</protocols>
<llm final="true">
<critical-rules>
• This is the complete workflow execution engine
• You MUST Follow instructions exactly as written
• The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml
• You MUST have already loaded and processed: {installed_path}/workflow.yaml
• This workflow uses INTENT-DRIVEN PLANNING - adapt organically to product type and context
• YOU ARE FACILITATING A CONVERSATION With a user to produce a final document step by step. The whole process is meant to be
collaborative helping the user flesh out their ideas. Do not rush or optimize and skip any section.
</critical-rules>
</llm>
</task>
## Usage
This command executes the Workflow task from the BMAD CORE module.
## Module
Part of the BMAD CORE module.