ma-agents 3.17.1 → 3.18.0-beta.2
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/README.md +214 -1
- package/bin/cli.js +4409 -279
- package/docs/architecture.md +11 -0
- package/docs/technical-notes/enforcement-hooks-research.md +10 -1
- package/lib/agents.js +81 -3
- package/lib/bmad-extension/skills/add-sprint/SKILL.md +112 -0
- package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +112 -0
- package/lib/bmad-extension/skills/bmad-dev-epic/SKILL.md +112 -0
- package/lib/bmad-extension/skills/bmad-dev-story/workflow.md +112 -0
- package/lib/bmad-extension/skills/bmad-knowledge/SKILL.md +112 -0
- package/lib/bmad-extension/skills/bmad-sprint-planning/workflow.md +161 -0
- package/lib/bmad-extension/skills/bmad-sprint-status/workflow.md +112 -0
- package/lib/bmad-extension/skills/cleanup-done/SKILL.md +112 -0
- package/lib/bmad-extension/skills/close-sprint/SKILL.md +112 -0
- package/lib/bmad-extension/skills/generate-backlog/SKILL.md +163 -1
- package/lib/bmad-extension/skills/ma-agent-cyber/SKILL.md +2 -2
- package/lib/bmad-extension/skills/ma-agent-devops/SKILL.md +2 -2
- package/lib/bmad-extension/skills/ma-agent-sqa/SKILL.md +2 -2
- package/lib/bmad-extension/skills/ma-agent-sre/SKILL.md +2 -2
- package/lib/bmad-extension/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension/skills/mil498-srs/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension/skills/mil498-sss/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension/skills/mil498-std/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension/skills/modify-sprint/SKILL.md +112 -0
- package/lib/bmad-extension/skills/prioritize-backlog/SKILL.md +163 -1
- package/lib/bmad-extension/skills/remove-from-sprint/SKILL.md +112 -0
- package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +112 -0
- package/lib/bmad-extension/skills/sqa-audit/SKILL.md +6 -2
- package/lib/bmad-extension/skills/sqa-ieee12207/SKILL.md +2 -2
- package/lib/bmad-extension/skills/sqa-requirements-quality/SKILL.md +1 -1
- package/lib/bmad-extension/workflows/add-sprint/workflow.md +112 -0
- package/lib/bmad-extension/workflows/add-to-sprint/workflow.md +112 -0
- package/lib/bmad-extension/workflows/modify-sprint/workflow.md +112 -0
- package/lib/bmad-extension/workflows/remove-from-sprint/workflow.md +112 -0
- package/lib/bmad-extension/workflows/sprint-status-view/workflow.md +112 -0
- package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +1 -1
- package/lib/bmad-extension-plugin/skills/add-sprint/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/add-to-sprint/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/bmad-dev-epic/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/bmad-dev-story/workflow.md +112 -0
- package/lib/bmad-extension-plugin/skills/bmad-knowledge/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-planning/workflow.md +161 -0
- package/lib/bmad-extension-plugin/skills/bmad-sprint-status/workflow.md +112 -0
- package/lib/bmad-extension-plugin/skills/cleanup-done/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/close-sprint/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/generate-backlog/SKILL.md +163 -1
- package/lib/bmad-extension-plugin/skills/ma-agent-cyber/SKILL.md +2 -2
- package/lib/bmad-extension-plugin/skills/ma-agent-devops/SKILL.md +2 -2
- package/lib/bmad-extension-plugin/skills/ma-agent-sqa/SKILL.md +2 -2
- package/lib/bmad-extension-plugin/skills/ma-agent-sre/SKILL.md +2 -2
- package/lib/bmad-extension-plugin/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension-plugin/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension-plugin/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension-plugin/skills/mil498-srs/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension-plugin/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension-plugin/skills/mil498-sss/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension-plugin/skills/mil498-std/prompts/01-discover-project-artifacts.md +2 -2
- package/lib/bmad-extension-plugin/skills/modify-sprint/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/prioritize-backlog/SKILL.md +163 -1
- package/lib/bmad-extension-plugin/skills/remove-from-sprint/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/sprint-status-view/SKILL.md +112 -0
- package/lib/bmad-extension-plugin/skills/sqa-audit/SKILL.md +6 -2
- package/lib/bmad-extension-plugin/skills/sqa-ieee12207/SKILL.md +2 -2
- package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/SKILL.md +1 -1
- package/lib/bmad.js +283 -15
- package/lib/bound-projects.js +265 -0
- package/lib/confluence-page-tree.js +925 -0
- package/lib/confluence-publish-hook.js +1781 -0
- package/lib/custom-marketplace.js +28 -18
- package/lib/installer.js +489 -20
- package/lib/store-backends.js +64 -0
- package/lib/templates/instruction-block-git.template.md +25 -25
- package/lib/templates/instruction-block-onprem.template.md +86 -86
- package/lib/templates/instruction-block-universal.template.md +29 -29
- package/package.json +2 -2
- package/skills/add-sprint/SKILL.md +112 -0
- package/skills/add-to-sprint/SKILL.md +112 -0
- package/skills/bmad-knowledge/SKILL.md +112 -0
- package/skills/bmad-sprint-planning/SKILL.md +176 -3
- package/skills/bmad-sprint-status/SKILL.md +112 -0
- package/skills/cleanup-done/SKILL.md +112 -0
- package/skills/close-sprint/SKILL.md +112 -0
- package/skills/generate-backlog/SKILL.md +164 -2
- package/skills/modify-sprint/SKILL.md +112 -0
- package/skills/prioritize-backlog/SKILL.md +163 -1
- package/skills/remove-from-sprint/SKILL.md +112 -0
- package/skills/sprint-status-view/SKILL.md +112 -0
- 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,186 @@ 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
|
+
- **Versions 3.7.0 through 3.17.1 could silently delete hand-authored skills.**
|
|
281
|
+
When a tool's skills directory moved between versions, the installer removed
|
|
282
|
+
the old directory recursively once the new one had content, destroying any
|
|
283
|
+
skill you had written there yourself and reporting it as a successful
|
|
284
|
+
cleanup. This affected `.github/copilot/skills`, `.github/skills`,
|
|
285
|
+
`.roo/skills` and `.kilocode/skills`. **It is fixed in this version** — the
|
|
286
|
+
sweep now removes only what ma-agents installed and preserves the directory
|
|
287
|
+
if anything else remains — but deletions already made are not recoverable
|
|
288
|
+
from ma-agents: no backup was written and nothing but the directory name was
|
|
289
|
+
recorded. Check your version control if you kept such skills.
|
|
290
|
+
- **A file placed inside a skill directory ma-agents installed is still removed
|
|
291
|
+
with it.** The sweep's unit is the skill directory, not the file. If you have
|
|
292
|
+
edited a shipped skill in place, that edit is lost when the directory is
|
|
293
|
+
swept. Keep your own skills in their own directories, which are preserved.
|
|
294
|
+
|
|
295
|
+
- **Every claim in this release about behaviour with a Confluence MCP *present*
|
|
296
|
+
is mock-verified, not live.** No authorised Confluence MCP was available to
|
|
297
|
+
the implementation or to any review, so the MCP-present branches were
|
|
298
|
+
exercised against a stubbed tool context. The MCP-*absent* branch — the
|
|
299
|
+
fail-loud path described above — is the default state and was exercised for
|
|
300
|
+
real.
|
|
301
|
+
- **The publish trigger reaches the authoring skills through a file three
|
|
302
|
+
parties can write.** `_bmad/custom/<skill>.toml` is written by ma-agents, by a
|
|
303
|
+
human, and by the upstream `bmad-customize` skill. TOML forbids duplicate
|
|
304
|
+
keys, and the upstream resolver treats a parse error in that layer as a
|
|
305
|
+
*warning* — it returns an empty layer and **exits 0** — so a second writer
|
|
306
|
+
adding its own `on_complete` silently discards the publish hook and every
|
|
307
|
+
other override in the file. ma-agents refuses to write over a collision it can
|
|
308
|
+
detect and `ma-agents status` names it, but **that check is a partial scanner,
|
|
309
|
+
not a full TOML parser**: it can miss a malformation and stay silent. The
|
|
310
|
+
durable fix belongs upstream in `resolve_customization.py`, which is replaced
|
|
311
|
+
on every install, so it cannot be patched from here.
|
|
312
|
+
- **A bare non-ASCII-whitespace line authored by a user is not detected.** A
|
|
313
|
+
line containing only U+00A0, U+2007 or U+3000 makes the file invalid to the
|
|
314
|
+
real parser while ma-agents' reader accepts it; the customization layer is
|
|
315
|
+
then dead at exit 0 with nothing reported. Such a file is already invalid
|
|
316
|
+
before ma-agents touches it — this is a detection gap, not corruption. A
|
|
317
|
+
byte-order mark in the same position *is* caught.
|
|
318
|
+
- **This release was verified on Windows only.** Linux and CI were never run, so
|
|
319
|
+
every cross-platform claim is inference rather than a result.
|
|
320
|
+
- **`_bmad-output/project-layout.yaml` carries a `generated:` date**, so two
|
|
321
|
+
runs of the same answers are byte-identical only within the same calendar day.
|
|
322
|
+
`ma-agents bind` declines to rewrite the file on a no-edit re-run precisely so
|
|
323
|
+
that this cannot present as a spurious change.
|
|
324
|
+
- **`bmad-knowledge` (the Knowledge Atlas) does not honour a Confluence-backed
|
|
325
|
+
store.** It renders that store's section from whatever local files it finds,
|
|
326
|
+
without saying so. It is a separate consumer from the routing-gated skills
|
|
327
|
+
above and is tracked as a known defect.
|
|
328
|
+
- **A Confluence-backed *system* requirements store has no ma-agents-owned
|
|
329
|
+
fail-loud gate.** The routing block ships in the skills that resolve
|
|
330
|
+
*software* requirements; a system requirements store's consumers are upstream
|
|
331
|
+
BMM workflows this package does not ship.
|
|
332
|
+
- **The repository's own test suite is not green on Windows**, and one failure
|
|
333
|
+
is this release's: a conflict between the staleness-guard block embedded in
|
|
334
|
+
the sprint workflow skills and an older lossless-conversion invariant. It is
|
|
335
|
+
recorded and awaiting adjudication rather than patched. The suite was never
|
|
336
|
+
run on Linux.
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
132
340
|
## Project Context
|
|
133
341
|
|
|
134
342
|
When you run `npx ma-agents install` at the project level, ma-agents automatically generates
|
|
@@ -323,7 +531,12 @@ npx ma-agents install # Interactive install wizard
|
|
|
323
531
|
npx ma-agents install --yes # Non-interactive, use defaults (CI/CD)
|
|
324
532
|
npx ma-agents install --yes --agent <id> # Non-interactive, target one agent
|
|
325
533
|
npx ma-agents install --log # Log all output to install_<datetime>.log
|
|
326
|
-
npx ma-agents
|
|
534
|
+
npx ma-agents install --global # Install to user-level paths; no project-scoped work
|
|
535
|
+
npx ma-agents bind # Bind this project to its knowledge stores (installs nothing)
|
|
536
|
+
npx ma-agents bind --yes # Non-interactive bind
|
|
537
|
+
npx ma-agents status # Show installed skills, paths and the active install scope
|
|
538
|
+
npx ma-agents confluence-plan # Print the page tree a Confluence publish would produce
|
|
539
|
+
npx ma-agents confluence-record-root-page # Record the id Confluence assigned to a created root page
|
|
327
540
|
npx ma-agents list # List all available skills
|
|
328
541
|
npx ma-agents agents # List supported agents
|
|
329
542
|
npx ma-agents uninstall <skill> <agents> # Direct uninstall
|