ma-agents 3.17.1 → 3.18.0-beta.1

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.
Files changed (81) hide show
  1. package/README.md +199 -1
  2. package/bin/cli.js +4258 -181
  3. package/docs/architecture.md +11 -0
  4. package/lib/bmad-extension/skills/add-sprint/SKILL.md +112 -0
  5. package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +112 -0
  6. package/lib/bmad-extension/skills/bmad-dev-epic/SKILL.md +112 -0
  7. package/lib/bmad-extension/skills/bmad-dev-story/workflow.md +112 -0
  8. package/lib/bmad-extension/skills/bmad-knowledge/SKILL.md +112 -0
  9. package/lib/bmad-extension/skills/bmad-sprint-planning/workflow.md +161 -0
  10. package/lib/bmad-extension/skills/bmad-sprint-status/workflow.md +112 -0
  11. package/lib/bmad-extension/skills/cleanup-done/SKILL.md +112 -0
  12. package/lib/bmad-extension/skills/close-sprint/SKILL.md +112 -0
  13. package/lib/bmad-extension/skills/generate-backlog/SKILL.md +163 -1
  14. package/lib/bmad-extension/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +2 -2
  15. package/lib/bmad-extension/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +2 -2
  16. package/lib/bmad-extension/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +2 -2
  17. package/lib/bmad-extension/skills/mil498-srs/prompts/01-discover-project-artifacts.md +2 -2
  18. package/lib/bmad-extension/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +2 -2
  19. package/lib/bmad-extension/skills/mil498-sss/prompts/01-discover-project-artifacts.md +2 -2
  20. package/lib/bmad-extension/skills/mil498-std/prompts/01-discover-project-artifacts.md +2 -2
  21. package/lib/bmad-extension/skills/modify-sprint/SKILL.md +112 -0
  22. package/lib/bmad-extension/skills/prioritize-backlog/SKILL.md +163 -1
  23. package/lib/bmad-extension/skills/remove-from-sprint/SKILL.md +112 -0
  24. package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +112 -0
  25. package/lib/bmad-extension/skills/sqa-audit/SKILL.md +6 -2
  26. package/lib/bmad-extension/skills/sqa-ieee12207/SKILL.md +2 -2
  27. package/lib/bmad-extension/skills/sqa-requirements-quality/SKILL.md +1 -1
  28. package/lib/bmad-extension/workflows/add-sprint/workflow.md +112 -0
  29. package/lib/bmad-extension/workflows/add-to-sprint/workflow.md +112 -0
  30. package/lib/bmad-extension/workflows/modify-sprint/workflow.md +112 -0
  31. package/lib/bmad-extension/workflows/remove-from-sprint/workflow.md +112 -0
  32. package/lib/bmad-extension/workflows/sprint-status-view/workflow.md +112 -0
  33. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +1 -1
  34. package/lib/bmad-extension-plugin/skills/add-sprint/SKILL.md +112 -0
  35. package/lib/bmad-extension-plugin/skills/add-to-sprint/SKILL.md +112 -0
  36. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/SKILL.md +112 -0
  37. package/lib/bmad-extension-plugin/skills/bmad-dev-story/workflow.md +112 -0
  38. package/lib/bmad-extension-plugin/skills/bmad-knowledge/SKILL.md +112 -0
  39. package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/workflow.md +161 -0
  40. package/lib/bmad-extension-plugin/skills/bmad-sprint-status/workflow.md +112 -0
  41. package/lib/bmad-extension-plugin/skills/cleanup-done/SKILL.md +112 -0
  42. package/lib/bmad-extension-plugin/skills/close-sprint/SKILL.md +112 -0
  43. package/lib/bmad-extension-plugin/skills/generate-backlog/SKILL.md +163 -1
  44. package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +2 -2
  45. package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +2 -2
  46. package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +2 -2
  47. package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/01-discover-project-artifacts.md +2 -2
  48. package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +2 -2
  49. package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/01-discover-project-artifacts.md +2 -2
  50. package/lib/bmad-extension-plugin/skills/mil498-std/prompts/01-discover-project-artifacts.md +2 -2
  51. package/lib/bmad-extension-plugin/skills/modify-sprint/SKILL.md +112 -0
  52. package/lib/bmad-extension-plugin/skills/prioritize-backlog/SKILL.md +163 -1
  53. package/lib/bmad-extension-plugin/skills/remove-from-sprint/SKILL.md +112 -0
  54. package/lib/bmad-extension-plugin/skills/sprint-status-view/SKILL.md +112 -0
  55. package/lib/bmad-extension-plugin/skills/sqa-audit/SKILL.md +6 -2
  56. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/SKILL.md +2 -2
  57. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/SKILL.md +1 -1
  58. package/lib/bmad.js +20 -0
  59. package/lib/bound-projects.js +265 -0
  60. package/lib/confluence-page-tree.js +925 -0
  61. package/lib/confluence-publish-hook.js +1781 -0
  62. package/lib/custom-marketplace.js +28 -18
  63. package/lib/installer.js +357 -10
  64. package/lib/store-backends.js +64 -0
  65. package/lib/templates/instruction-block-git.template.md +25 -25
  66. package/lib/templates/instruction-block-onprem.template.md +86 -86
  67. package/lib/templates/instruction-block-universal.template.md +29 -29
  68. package/package.json +2 -2
  69. package/skills/add-sprint/SKILL.md +112 -0
  70. package/skills/add-to-sprint/SKILL.md +112 -0
  71. package/skills/bmad-knowledge/SKILL.md +112 -0
  72. package/skills/bmad-sprint-planning/SKILL.md +176 -3
  73. package/skills/bmad-sprint-status/SKILL.md +112 -0
  74. package/skills/cleanup-done/SKILL.md +112 -0
  75. package/skills/close-sprint/SKILL.md +112 -0
  76. package/skills/generate-backlog/SKILL.md +164 -2
  77. package/skills/modify-sprint/SKILL.md +112 -0
  78. package/skills/prioritize-backlog/SKILL.md +163 -1
  79. package/skills/remove-from-sprint/SKILL.md +112 -0
  80. package/skills/sprint-status-view/SKILL.md +112 -0
  81. package/skills/story-status-lookup/SKILL.md +112 -0
package/README.md CHANGED
@@ -2,6 +2,34 @@
2
2
 
3
3
  A universal NPX tool to install AI coding agent skills. Write skills once, install them across Claude Code, Gemini, Copilot, Cline, Cursor, Kilocode, and Roo Code.
4
4
 
5
+ ## What's New in v3.18.0
6
+
7
+ - **Two knowledge stores instead of one.** The install wizard now asks
8
+ separately where your **system requirements** (product brief, PRD) and your
9
+ **software requirements** (architecture, UX, epics) live. Each store answers
10
+ independently and each picks its own backend. Sprint management is still a
11
+ third, separate question, and story files still follow it — they belong to
12
+ neither store.
13
+ - **A `confluence` backend for either store.** A store can live in a Confluence
14
+ space instead of on the file system. It requires a Confluence-capable MCP
15
+ server in your agent; with none, the affected skill **halts and says so**
16
+ rather than quietly reading stale local files. No credentials are ever
17
+ written to disk.
18
+ - **`_bmad-output/project-layout.yaml` is now the authoritative binding**, written
19
+ on every install and committed with the project, so a whole team resolves the
20
+ same store locations. `_bmad/bmm/config.yaml` is **generated from it** and
21
+ carries a stamp of the binding it came from; a skill that finds the two
22
+ disagreeing stops instead of resolving paths to where the stores used to be.
23
+ - **`ma-agents bind`** — a new command that binds an already-installed project to
24
+ its knowledge stores without installing anything. Idempotent, and it never
25
+ overwrites an existing `project-context.md`.
26
+ - **A global install now does no project-scoped work**, and `ma-agents status`
27
+ reports the install scope. BMAD-METHOD remains per-project (bmad-method
28
+ v6.10.0 has no user-level install); the installer says so and tells you the
29
+ command that installs it into a project.
30
+ - **Nothing changes for an existing project that configures no second store** —
31
+ same prompts, same resolved artifact paths, plus one new committed file.
32
+
5
33
  ## What's New in v3.17.1
6
34
 
7
35
  - **ma-agents now show up in the Copilot agent picker** — the DevOps (Amit),
@@ -129,6 +157,171 @@ The `ma-agents` installer automatically removes `_bmad-output/` from `.gitignore
129
157
 
130
158
  ---
131
159
 
160
+ ## Knowledge Stores and the Project Binding
161
+
162
+ A project's knowledge lives in **two independent stores** plus a sprint-management
163
+ location. Where each one lives is recorded in
164
+ `_bmad-output/project-layout.yaml` — a committed file, so the whole team resolves
165
+ the same locations.
166
+
167
+ | Store | Holds | Config fields it generates |
168
+ |---|---|---|
169
+ | **System requirements** | product brief, PRD (index and all shards) | `system_requirements_path`, `system_requirements_backend`, `system_requirements_space_key` |
170
+ | **Software requirements** | architecture, UX designs, epics | `software_requirements_path`, `software_requirements_backend`, `software_requirements_space_key`, and the legacy `knowledgebase_path` / `planning_artifacts` |
171
+ | **Sprint management** | `sprint-status.yaml`, story files, bugs, retrospectives | `sprint_management_path`, `sprint_backend`, `implementation_artifacts` |
172
+
173
+ Story files and everything else under `implementation_artifacts` belong to
174
+ **neither** knowledge store — a story is sprint execution state, not a
175
+ requirement — so moving your knowledge stores does not move your stories.
176
+
177
+ ### The install questions
178
+
179
+ The wizard asks three location questions, in this order:
180
+
181
+ 1. **Where do the system requirements live?** — backend (`file-system` or
182
+ `confluence`), then, for `file-system`, the same choices as before: current
183
+ repository (default), a local path, or a remote git repository.
184
+ 2. **Where do the software requirements live?** — the same question, answered
185
+ independently. Answering one does not constrain the other.
186
+ 3. **Where is sprint management?** — unchanged, including the Jira option.
187
+
188
+ `--yes` selects the single-repository, `file-system` default for both stores, so
189
+ CI and non-interactive installs are unaffected.
190
+
191
+ Separately, the wizard's existing **Installation Scope** question — *Project
192
+ level (current directory)* / *Global (user-level settings)* / *Custom path* —
193
+ is unchanged, and `--global` is still its non-interactive equivalent. What
194
+ changed is what a **global** answer does: it now performs **no project-scoped
195
+ work at all**. No `project-layout.yaml`, no `project-context.md`, and no
196
+ knowledge-store questions, because no project is in scope at that moment. Those
197
+ are deferred to `ma-agents bind`.
198
+
199
+ ### The Confluence backend
200
+
201
+ Either store can select a `confluence` backend instead of `file-system`. The
202
+ wizard then asks for the **space** and for a **root page** under which that
203
+ store's artifacts live; leave the root page blank and ma-agents generates one
204
+ named for the project and tells you the name it used.
205
+
206
+ **A Confluence-backed store requires a Confluence-capable MCP server** in your
207
+ agent — an MCP server, plugin or native integration connected to the Confluence
208
+ instance hosting that space. This is the same MCP-conditional pattern the Jira
209
+ sprint backend already uses, not a second mechanism.
210
+
211
+ **ma-agents stores no Confluence credentials anywhere on disk.** Authentication
212
+ is entirely the MCP server's responsibility. `project-layout.yaml` records only
213
+ the space key and the root page's title and id — which is what makes the file
214
+ safe to commit.
215
+
216
+ **There is no local mirror and no cache.** A Confluence-backed store is read and
217
+ written through the MCP, and nothing is copied down. There is consequently
218
+ nothing to synchronise and nothing to fall out of date.
219
+
220
+ `ma-agents confluence-plan` prints the page tree a publish would produce for
221
+ this project — one page per markdown artifact, nested to mirror the source
222
+ folders — together with the operations a publish performs, in order. It
223
+ enumerates the plan and performs none of it. After a root page is created,
224
+ `ma-agents confluence-record-root-page` records the id Confluence assigned, so
225
+ later runs address the page directly.
226
+
227
+ ### `ma-agents bind`
228
+
229
+ ```bash
230
+ ma-agents bind # bind this project to its knowledge stores
231
+ ma-agents bind --yes # non-interactive, accept the existing/default answers
232
+ ```
233
+
234
+ `bind` collects only the project-scoped answers — the two store bindings and
235
+ sprint management — and writes `_bmad-output/project-layout.yaml` plus
236
+ `project-context.md`. It **installs nothing**: no skills, no BMAD modules. It is
237
+ idempotent: re-running it against an already-bound project reports the existing
238
+ bindings and changes nothing unless you explicitly edit an answer, and it never
239
+ overwrites an existing `project-context.md`.
240
+
241
+ Use it when ma-agents was installed globally and you now want to use it in a
242
+ particular project, or when a project's binding is missing or needs to change.
243
+
244
+ ### When things are wrong, skills stop rather than guess
245
+
246
+ Two failure modes are deliberately loud:
247
+
248
+ - **A Confluence-backed store with no Confluence MCP available.** The skill
249
+ halts and names the affected store, its configured space, the fact that no
250
+ Confluence MCP was detected, and how to configure one (or how to re-bind the
251
+ store to the file system). It does **not** fall back to local files, does not
252
+ continue with an empty result, and does not change your configured backend.
253
+ - **A stale generated config.** `_bmad/bmm/config.yaml` records which binding it
254
+ was generated from. If the committed binding has moved since — usually after a
255
+ `git pull` — the skill halts, names every store that moved and both of its
256
+ locations, and tells you to run `ma-agents bind` to regenerate the config. The
257
+ comparison is on **content, never timestamps**, so a fresh clone does not
258
+ report false drift and a `git checkout` cannot hide real drift.
259
+
260
+ Both messages end by stating that nothing was read or written on your behalf.
261
+
262
+ ### Deliberately not implemented
263
+
264
+ - **A local mirror of every Confluence-backed store (FR266) was RETIRED before
265
+ implementation** and has no code, no cache, no sync direction, no sync trigger
266
+ and no conflict-resolution path. It had been justified on air-gap grounds, but
267
+ this product's air-gap requirement means *no internet* — no npm, git or CDN
268
+ access — not *no network*: an enterprise Confluence inside the perimeter is
269
+ reachable on an air-gapped network. With Confluence unreachability
270
+ reclassified as a misconfiguration rather than a working mode, the fail-loud
271
+ behaviour above removes the need for a mirror entirely. The release gate
272
+ asserts the absence as a closed set rather than as a denylist. If you find no
273
+ mirror here, that is the design — please do not helpfully add one. (P5-9.6)
274
+
275
+ ### Known limitations of v3.18.0
276
+
277
+ These are stated here, in the shipped documentation, rather than only in the
278
+ repository's changelog — which is **not** part of the npm package.
279
+
280
+ - **Every claim in this release about behaviour with a Confluence MCP *present*
281
+ is mock-verified, not live.** No authorised Confluence MCP was available to
282
+ the implementation or to any review, so the MCP-present branches were
283
+ exercised against a stubbed tool context. The MCP-*absent* branch — the
284
+ fail-loud path described above — is the default state and was exercised for
285
+ real.
286
+ - **The publish trigger reaches the authoring skills through a file three
287
+ parties can write.** `_bmad/custom/<skill>.toml` is written by ma-agents, by a
288
+ human, and by the upstream `bmad-customize` skill. TOML forbids duplicate
289
+ keys, and the upstream resolver treats a parse error in that layer as a
290
+ *warning* — it returns an empty layer and **exits 0** — so a second writer
291
+ adding its own `on_complete` silently discards the publish hook and every
292
+ other override in the file. ma-agents refuses to write over a collision it can
293
+ detect and `ma-agents status` names it, but **that check is a partial scanner,
294
+ not a full TOML parser**: it can miss a malformation and stay silent. The
295
+ durable fix belongs upstream in `resolve_customization.py`, which is replaced
296
+ on every install, so it cannot be patched from here.
297
+ - **A bare non-ASCII-whitespace line authored by a user is not detected.** A
298
+ line containing only U+00A0, U+2007 or U+3000 makes the file invalid to the
299
+ real parser while ma-agents' reader accepts it; the customization layer is
300
+ then dead at exit 0 with nothing reported. Such a file is already invalid
301
+ before ma-agents touches it — this is a detection gap, not corruption. A
302
+ byte-order mark in the same position *is* caught.
303
+ - **This release was verified on Windows only.** Linux and CI were never run, so
304
+ every cross-platform claim is inference rather than a result.
305
+ - **`_bmad-output/project-layout.yaml` carries a `generated:` date**, so two
306
+ runs of the same answers are byte-identical only within the same calendar day.
307
+ `ma-agents bind` declines to rewrite the file on a no-edit re-run precisely so
308
+ that this cannot present as a spurious change.
309
+ - **`bmad-knowledge` (the Knowledge Atlas) does not honour a Confluence-backed
310
+ store.** It renders that store's section from whatever local files it finds,
311
+ without saying so. It is a separate consumer from the routing-gated skills
312
+ above and is tracked as a known defect.
313
+ - **A Confluence-backed *system* requirements store has no ma-agents-owned
314
+ fail-loud gate.** The routing block ships in the skills that resolve
315
+ *software* requirements; a system requirements store's consumers are upstream
316
+ BMM workflows this package does not ship.
317
+ - **The repository's own test suite is not green on Windows**, and one failure
318
+ is this release's: a conflict between the staleness-guard block embedded in
319
+ the sprint workflow skills and an older lossless-conversion invariant. It is
320
+ recorded and awaiting adjudication rather than patched. The suite was never
321
+ run on Linux.
322
+
323
+ ---
324
+
132
325
  ## Project Context
133
326
 
134
327
  When you run `npx ma-agents install` at the project level, ma-agents automatically generates
@@ -323,7 +516,12 @@ npx ma-agents install # Interactive install wizard
323
516
  npx ma-agents install --yes # Non-interactive, use defaults (CI/CD)
324
517
  npx ma-agents install --yes --agent <id> # Non-interactive, target one agent
325
518
  npx ma-agents install --log # Log all output to install_<datetime>.log
326
- npx ma-agents status # Show installed skills and paths
519
+ npx ma-agents install --global # Install to user-level paths; no project-scoped work
520
+ npx ma-agents bind # Bind this project to its knowledge stores (installs nothing)
521
+ npx ma-agents bind --yes # Non-interactive bind
522
+ npx ma-agents status # Show installed skills, paths and the active install scope
523
+ npx ma-agents confluence-plan # Print the page tree a Confluence publish would produce
524
+ npx ma-agents confluence-record-root-page # Record the id Confluence assigned to a created root page
327
525
  npx ma-agents list # List all available skills
328
526
  npx ma-agents agents # List supported agents
329
527
  npx ma-agents uninstall <skill> <agents> # Direct uninstall