Commit Graph

1394 Commits

Author SHA1 Message Date
Dicky Moore c916b78dea chore: acknowledge migration scope and request focused review
This PR is intentionally large due to coupled workflow.md migration and step-flow parity updates across runtime, installer, and tests.\n\nFollow-up work can be split by domain if maintainers prefer smaller review surfaces.
2026-02-08 17:50:56 +00:00
Dicky Moore c1484c3dcc fix: restore workflow input contracts after md migration 2026-02-08 16:33:34 +00:00
Dicky Moore d87d654af7 fix(document-project): gate resume completion on subworkflow success 2026-02-08 16:14:37 +00:00
Dicky Moore e0cfff50da fix: tighten workflow routing and validation consistency 2026-02-08 15:52:47 +00:00
Dicky Moore 80328a6d2a fix: restore help grounding and align installer defaults 2026-02-08 15:44:56 +00:00
Dicky Moore 3a7d8933b5 fix(kiro): migrate yaml workflow template runner to workflow.md 2026-02-08 15:35:54 +00:00
Dicky Moore bff2808986
Merge branch 'main' into phase1-md-workflows-clean 2026-02-08 15:32:11 +00:00
Michael Pursifull 24cf444366
feat: extend Layer 1 file-ref validator to scan CSV workflow-file references (#1573)
* feat: extend validate-file-refs.js to scan CSV workflow-file references

Add CSV file reference extraction to the Layer 1 validation pipeline,
preventing broken _bmad/ workflow-file paths in module-help.csv files.
Closes the gap identified after PR #1529 where CSV references were
unvalidated despite being a source of repeat community issues.

Refs: #1519

* fix: include test:refs in aggregate test script

Add CSV file-ref extraction tests to the aggregate `npm test` pipeline,
matching the existing pattern for test:schemas and test:install.

Thanks to CodeRabbit for catching the omission.

* fix: address review feedback on CSV validator extension

- Surface CSV parse errors visibly instead of silently swallowing
  (no Layer 2c schema validator exists yet to catch these)
- Add explanatory comments for the !VERBOSE logging pattern
  (non-verbose prints file headers only when issues found)
- Add verbose-mode diagnostics for extensionless path handling
  ([SKIP] when nothing exists, [OK-DIR] for valid directories)

* refactor: collect-then-print to eliminate confusing !VERBOSE pattern

Replace the split header-printing logic (print early in verbose mode,
print late in non-verbose mode with a !VERBOSE guard) with a simpler
collect-then-print approach. Refs are now classified into ok[] and
broken[] arrays first, then printed in a single location with one
straightforward if/else if decision.

Addresses alexeyv's review feedback about the counterintuitive
"if not verbose, log" pattern.

* feat: promote extensionless unresolved paths from silent skip to [UNRESOLVED]

Paths without file extensions that don't exist as files or directories
are now flagged as [UNRESOLVED] — a distinct tag from [BROKEN] (which
means a file with a known extension wasn't found). Both count toward
the broken reference total and appear in CI annotations.

This catches real bugs like wrong directory names in installed_path
metadata and dead invoke-workflow references to removed workflows.
Extensionless paths that DO exist as directories are still [OK-DIR].

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-08 09:19:53 -06:00
Alex Verkhovsky fc5ef57a5a
feat: add Kiro IDE support via config-driven installer (#1589)
Replace broken kiro-cli.js custom installer with config-driven approach
using platform-codes.yaml. Creates Kiro-specific templates with
inclusion: manual frontmatter and #[[file:...]] reference syntax.
2026-02-08 09:18:28 -06:00
Dicky Moore 45a9f3bf4e test: remove redundant validate-workflow exclusion in guard scan 2026-02-08 15:07:46 +00:00
Dicky Moore a1c054006a refine workflow contracts for review findings, halt protocol, and sprint tracking 2026-02-08 15:01:58 +00:00
Dicky Moore e7d7bbc3ea docs(correct-course): clarify installed vs source workflow paths 2026-02-08 14:46:45 +00:00
Dicky Moore 25354fc131 Merge remote-tracking branch 'origin/phase1-md-workflows-clean' into phase1-md-workflows-clean 2026-02-08 14:25:57 +00:00
Dicky Moore f74f6047f2 fix: hide internal workflow task from codex exports 2026-02-08 14:23:22 +00:00
Dicky Moore 5caf92cfdb fix: restore help routing and external module install tolerance 2026-02-08 14:23:22 +00:00
Dicky Moore 9604f6d00c fix: align workflow path guidance with installed runtime 2026-02-08 14:23:22 +00:00
Dicky Moore 98831695d0 fix: define installed workflow paths in qa and create-story 2026-02-08 14:23:21 +00:00
Dicky Moore e86fa2ee9e fix: restore runtime workflow paths and standalone parsing 2026-02-08 14:23:21 +00:00
Dicky Moore 3feb0d378f fix: resolve workflow guardrails and installer regressions 2026-02-08 14:23:21 +00:00
Dicky Moore 2a9b447e04 fix: add workflow loader fallback guidance and guards 2026-02-08 14:23:21 +00:00
Dicky Moore cfdb2db0f5 fix: correct workflow command defaults and bmm document config paths 2026-02-08 14:23:21 +00:00
Dicky Moore 454ae910f9 fix: harden install XML guard and remove no-op placeholder replacement 2026-02-08 14:23:06 +00:00
Dicky Moore 87c4292021 Finish step-flow migration for dev workflows and fix installer regressions 2026-02-08 14:23:06 +00:00
Dicky Moore 7fc8318e08 Migrate remaining workflows to workflow.md and fix CLI/test regressions 2026-02-08 14:22:30 +00:00
Dicky Moore c636042dba Migrate QA automate workflow to workflow.md 2026-02-08 14:22:30 +00:00
Dicky Moore 3aba7f089d Update validate-workflow references 2026-02-08 14:22:30 +00:00
Dicky Moore 21efe68512 Remove reintroduced TEA/excalidraw artifacts 2026-02-08 14:22:30 +00:00
Dicky Moore 052cc839fe Fix remaining workflow.yaml/xml references 2026-02-08 14:22:30 +00:00
Dicky Moore 0c34f528da Drop YAML workflow support from CLI tooling 2026-02-08 14:22:30 +00:00
Dicky Moore 2212d92260 Remove workflow.xml runner and update CLI wording 2026-02-08 14:21:37 +00:00
Dicky Moore 9054719d93 Migrate workflow runner references to workflow.md 2026-02-08 14:21:37 +00:00
Dicky Moore a1bc1a37f4 Convert Phase 2/3 workflows to MD 2026-02-08 14:11:58 +00:00
Dicky Moore 730ba6bdb0 Add advanced-elicitation MD workflow and guard 2026-02-08 14:11:58 +00:00
Dicky Moore ba91d9c03f Convert remaining Phase 1 workflows to MD 2026-02-08 14:11:58 +00:00
Dicky Moore 5042a895de Make workflow references platform-agnostic 2026-02-08 14:11:58 +00:00
Dicky Moore 129f2d4ac9 fix: hide internal workflow task from codex exports 2026-02-08 14:06:43 +00:00
Dicky Moore 40787c5035 fix: restore help routing and external module install tolerance 2026-02-08 14:06:43 +00:00
Dicky Moore 00a2334969 fix: align workflow path guidance with installed runtime 2026-02-08 13:07:55 +00:00
Davor Racic b1bfce9aa7
refactor: Complete @clack/prompts Migration & Installer Output Consolidation (#1586)
* feat(cli): complete @clack/prompts migration

Full migration of BMAD CLI installer from legacy terminal libraries
(chalk, ora, boxen, figlet, wrap-ansi, cli-table3, readline) to unified
@clack/prompts v1.0.0 visual system.

Foundation (prompts.js + cli-utils.js):
  - Extended prompts.js wrapper with box, spinner, progress, taskLog,
    path, autocomplete, selectKey, stream, color re-export
  - Refactored cli-utils.js: displayLogo uses box(), sections use note(),
    steps use log.step(), removed boxen/figlet/wrap-ansi/cli-table3

UI orchestration (ui.js):
  - Replaced ~100 console.log+chalk calls with log.*, note(), box()
  - Replaced ora spinner with @clack spinner
  - Module selection: autocompleteMultiselect with locked core module,
    bulleted post-selection display, maxItems for no-scroll

Spinner migration (installer.js):
  - Replaced 40+ ora spinner calls with @clack spinner
  - All spinner.stop() calls include meaningful messages
  - Failure paths use spinner.error() (red cross) instead of stop()

Readline migration (agent/installer.js + config-collector.js):
  - Migrated readline prompts to @clack text/confirm/select
  - Fixed chalk.dim bug (chalk was never imported)
  - Removed chalk from config-collector.js

IDE handlers + modules (7 files):
  - Replaced chalk+ora across all IDE handlers and module manager
  - Fixed options.installer undefined bug in manager.js update()

Cleanup:
  - Removed ora, boxen, figlet, wrap-ansi, cli-table3 from dependencies
  - chalk stays (used outside tools/cli/ scope)
  - Replaced hand-drawn Unicode update box in bmad-cli.js with box()
  - Added process.stdin.setMaxListeners(25) for sequential prompts

Spinner wrapper adds isSpinning state tracking (not native to @clack).
Removed dead groupMultiselect and sortKey sort calls.

Ref: tech-spec-installer-clack-migration-ui-enhancement.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(cli): consolidate installer output to single spinner + summary

Replace ~40 lines of output from 15+ spinner start/stop cycles with a
single animated spinner during installation and a final note() summary
block showing checkmarks per step.

Key changes:
- Add results collector pattern in install() method
- Replace spinner.stop/start pairs with addResult + spinner.message
- Add renderInstallSummary() using prompts.note() with colored output
- Propagate silent flag through IDE handlers and module manager
- Add spinner race condition guards (start while spinning, stop while stopped)
- Add no-op spinner pattern for silent external module cloning
- Fix stdin listener limit to be defensive with Math.max
- Add GIT_TERMINAL_PROMPT=0 for non-interactive git operations
- Merge locked values into initialValue for autocomplete prompts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(cli): resolve code review findings from @clack/prompts migration

Address 31 issues across 14 CLI files found during PR #1586 review
(Augment Code + CodeRabbit):

- Fix bmadDir ReferenceError by hoisting declaration before try block
- Wrap console.log monkey-patch in try/finally for safe restoration
- Fix transformWorkflowPath dead code and undefined return path
- Fix broken symlink crash in _config-driven.js and codex.js cleanup
- Pass installer instance through update() for agent recompilation
- Fix @clack/prompts API: defaultValue→default, initialValue→default
- Use nullish coalescing (??) instead of logical OR for falsy values
- Forward options in recursive promptToolSelection calls
- Remove no-op replaceAll('_bmad','_bmad') in manager and generator
- Remove unused confirm prompt in config-collector hasNoConfig branch
- Guard spinner.message() when spinner is not running
- Add missing methods to silent spinner stub (cancel, clear, isSpinning)
- Wrap install.js error handler with inner try/catch + console fallback
- Gate codex per-entry error log with silent flag
- Add return statements to all stream wrapper methods
- Remove dead variables (availableNames, hasCustomContentItems)
- Filter core module from update flow selection
- Replace borderColor ternary chain with object map
- Fix Kilo "agents" label to "modes" in IDE manager
- Normalize error return shape for unsupported IDEs
- Fix spinner message timing before dependency resolution
- Guard undefined moduleDir in dependency-resolver
- Fix workflowsInstalled counter inflation in custom handler
- Migrate console.warn calls to prompts.log.warn
- Replace console.log() with prompts.log.message('')
- Fix legacyBmadPath hardcoded to .bmad instead of entry.name
- Fix focusedValue never assigned breaking SPACE toggle and hints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 00:40:13 -06:00
Dicky Moore d7a55394c5 fix: define installed workflow paths in qa and create-story 2026-02-08 01:18:31 +00:00
Dicky Moore bd20d75998 fix: restore runtime workflow paths and standalone parsing 2026-02-08 01:13:23 +00:00
Dicky Moore cc141b93ac fix: resolve workflow guardrails and installer regressions 2026-02-08 00:37:42 +00:00
Dicky Moore d8e9caac1e fix: add workflow loader fallback guidance and guards 2026-02-07 22:51:38 +00:00
Dicky Moore 9b98cc1272 fix: correct workflow command defaults and bmm document config paths 2026-02-07 20:02:33 +00:00
Dicky Moore 0b3023cdf5 fix: harden install XML guard and remove no-op placeholder replacement 2026-02-07 17:37:51 +00:00
Dicky Moore 76df097957
Merge branch 'main' into phase1-md-workflows-clean 2026-02-07 17:27:21 +00:00
Alex Verkhovsky ecf7fbcb2c
docs: add description front matter to documentation pages (#1566) 2026-02-07 10:43:16 -06:00
Alex Verkhovsky cb73c05cf6
fix: use pull_request_target for CodeRabbit review trigger (#1583)
The workflow was failing with 403 "Resource not accessible by integration"
on fork PRs because pull_request events get read-only GITHUB_TOKEN
permissions for cross-repository PRs. Switching to pull_request_target
runs the workflow in the base repo context, granting write permissions
needed to post the @coderabbitai review comment.

This is safe because the workflow only posts a comment and does not
check out or execute any code from the PR branch.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 10:27:57 -06:00
Alex Verkhovsky 045b1fe148
chore: sync package-lock.json after archiver removal (#1580)
Removes leftover archiver dependencies from the lock file
following #1577.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 10:18:16 -06:00
Alex Verkhovsky 4c36c94c2d
chore: configure dual-mode AI code review (#1511)
Add Augment Code Review (audit mode) and CodeRabbit (adversarial mode):

Augment (.augment/code_review_guidelines.yaml):
- Workflow structure and step validation rules
- Agent definition validation
- Path placeholder enforcement
- JIT loading and HALT requirements

CodeRabbit (.coderabbit.yaml):
- Raven-style adversarial reviewer persona
- Finds logical contradictions and missing implementations
- No rule anchoring - reasons freely

Supporting changes:
- .gitignore: exclude .augment/ from ignore
- eslint.config.mjs: ignore .augment/ directory

fix: clarify .augment gitignore pattern and eslint comment

Add documentation comment to .gitignore explaining the .augment/*
exception pattern, and replace misleading eslint comment about
"underscores per their spec" with accurate description of vendor
config directory exclusion.

Addresses CodeRabbit findings F10 and F11 from PR #1511 review.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

fix: remove redundant eslint ignore patterns

The broader glob patterns (dir/**) already match all files recursively,
making the more specific sub-patterns (dir/**/*.js, dir/**/*.md, etc.)
completely redundant. Similarly, _bmad*/** already covers _bmad/**.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

fix: synchronize ignore baselines across CodeRabbit and Augment configs

Expand path exclusions in both PR review tools to a shared baseline:
- Mutual config exclusions (each tool ignores its own and others configs)
- Build output, vendored/generated files, package metadata, binary/media
- Test fixtures, non-project dirs, AI assistant dirs, build temp
- Generated reports

CodeRabbit goes from 1 exclusion to 32; Augment from 12 to 32.
ESLint already had comprehensive ignores and is unchanged.

Addresses CodeRabbit findings F2 and F4 from PR #1511 review.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

fix: correct project name in Augment review guidelines

fix: remove instruction that explicitly encourages false positives
2026-02-07 09:17:41 -06:00