BMAD-METHOD/.github
pbean b41c3b0a04 feat(bmad-module): reach installer parity on source parsing, channels, and clone cache
Close the remaining capability gaps where the skill's custom-module install was
narrower than the canonical installer (tools/installer/modules/custom-module-manager.js
+ channel-resolver.js). The new-spec install path was already shared code and the
legacy resolver a faithful port, so this targets only the independently-implemented
source/channel/cache plumbing.

- source.mjs parseSource: accept `owner/repo@ref`, and browser-style deep-path
  git URLs (tree/blob, GitLab `-/tree`, Gitea `src/branch`, `?path=`), extracting
  the embedded ref + repo subdirectory — so a module in a monorepo subfolder
  installs directly. URL-based parsing handles Azure DevOps `_git`, nested
  groups, and dotted repo names.
- lib/cache.mjs: shared clone cache at ~/.bmad/cache/custom-modules/<host>/<owner>/<repo>/
  with .bmad-source.json/.bmad-channel.json metadata, matching the installer
  (reuse on matching ref, fetch/refresh otherwise, keep stale copy on fetch
  failure). materializeSource copies the module root out of the cache into a
  throwaway temp tree so the cache is never mutated.
- lib/channel-resolver.mjs: node:-only port of resolveChannel (stable/next/pinned);
  `stable` resolves the latest non-prerelease GitHub tag, falling back to next.
  semver-lite gains prerelease/compare/rcompare so it stays registry-free.
- install.mjs/update.mjs: resolve channel+ref before clone; update re-resolves the
  channel the module was installed with.

Tests + CI:
- test/test-bmad-module-source.mjs: unit coverage for parseSource, semver-lite, and
  channel-resolver, at parity with the installer's test-parse-source-urls.js /
  test-installer-channels.js.
- Wire the skill's unit test (test:skill-source) and its end-to-end integration
  test (test:skill) into npm test, npm run quality, and the quality.yaml CI job —
  the integration test was previously committed but only ever run by hand.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 15:06:48 -07:00
..
ISSUE_TEMPLATE fix: correct docs domain to docs.bmad-method.org (#1777) 2026-02-27 13:03:16 -06:00
scripts chore(discord): suppress link embeds and handle truncated URLs (#1126) 2025-12-15 07:19:44 +08:00
workflows feat(bmad-module): reach installer parity on source parsing, channels, and clone cache 2026-06-06 15:06:48 -07:00
CODE_OF_CONDUCT.md moved code of conduct to github folder, readme links to it 2025-12-07 14:55:44 -06:00
FUNDING.yaml feat: v6.0.0-alpha.0 - the future is now 2025-09-28 23:17:07 -05:00
PULL_REQUEST_TEMPLATE.md docs: add pull request template (#1554) 2026-02-06 07:29:19 -06:00