@mmerterden/multi-agent-pipeline 20.26.0 → 20.27.0

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 (39) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -1
  3. package/docs/facts.json +3 -3
  4. package/install/catalog-history.json +1 -1
  5. package/manifest.json +42 -34
  6. package/package.json +5 -5
  7. package/pipeline/commands/multi-agent/channels/SKILL.md +19 -17
  8. package/pipeline/lib/issue-fetcher.sh +40 -2
  9. package/pipeline/lib/jira-remote-links.sh +99 -0
  10. package/pipeline/multi-agent-refs/analysis/intake.md +2 -0
  11. package/pipeline/multi-agent-refs/analysis/render.md +4 -2
  12. package/pipeline/multi-agent-refs/channels/jira.md +10 -8
  13. package/pipeline/multi-agent-refs/channels/pr.md +11 -8
  14. package/pipeline/multi-agent-refs/channels/test-run.md +52 -0
  15. package/pipeline/multi-agent-refs/conventions-defaults.md +2 -0
  16. package/pipeline/multi-agent-refs/features/analysis-issue-links.md +42 -0
  17. package/pipeline/multi-agent-refs/features/localization-reuse.md +25 -0
  18. package/pipeline/multi-agent-refs/features/url-enrichment.md +11 -3
  19. package/pipeline/multi-agent-refs/features/visual-evidence.md +35 -9
  20. package/pipeline/multi-agent-refs/generate-issue.md +9 -11
  21. package/pipeline/multi-agent-refs/phases/phase-0-init.md +10 -6
  22. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +2 -0
  23. package/pipeline/multi-agent-refs/phases/phase-4-commit.md +1 -1
  24. package/pipeline/multi-agent-refs/phases/phase-5-report.md +2 -1
  25. package/pipeline/multi-agent-refs/phases.md +1 -1
  26. package/pipeline/multi-agent-refs/platform-parity.md +1 -1
  27. package/pipeline/multi-agent-refs/tracker-contract.md +10 -6
  28. package/pipeline/schemas/agent-state.schema.json +50 -0
  29. package/pipeline/schemas/prefs.schema.json +11 -0
  30. package/pipeline/schemas/unattended-policy.json +1 -0
  31. package/pipeline/scripts/_sibling-root.mjs +38 -0
  32. package/pipeline/scripts/gen-facts.mjs +5 -3
  33. package/pipeline/scripts/plan-remote-links.mjs +339 -0
  34. package/pipeline/scripts/render-flow-run.mjs +583 -0
  35. package/pipeline/scripts/render-jira-evidence.mjs +213 -0
  36. package/pipeline/skills/.skill-manifest.json +4 -4
  37. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +8 -2
  38. package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
  39. package/pipeline/skills/shared/external/ios-localization/SKILL.md +5 -0
package/manifest.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.26.0",
4
- "commit": "35ac932f54214466d6a63effea9d3a5fdd3f90bb",
5
- "generatedAt": "2026-10-14T20:14:41.247Z",
3
+ "version": "20.27.0",
4
+ "commit": "ecae7ee9cdf384be989d519a17cdf8b89c594d38",
5
+ "generatedAt": "2026-10-16T06:02:08.689Z",
6
6
  "algorithm": "sha256",
7
- "fileCount": 1394,
7
+ "fileCount": 1402,
8
8
  "files": {
9
- "CHANGELOG.md": "bc477ff23f828f3302ddd5f79cfa52bbbe792b1decbbbce270f46b19740257d1",
9
+ "CHANGELOG.md": "849337446408fe3fadb526d34e45c6a774b62d0b7aa88333a31d0c9aac41ac44",
10
10
  "LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
11
- "README.md": "c90b8d15713750c621fa8083531cdeb8158e9b67e995192874b6ac9da1dedc45",
11
+ "README.md": "7727e831f6421adeeaf2e34d9aeb8a6a11ad7ee5b166e09ade43d70704c27cfb",
12
12
  "README.tr.md": "ce7978c53c733cf359c21423fbfed640f20644584ff153aaab473958fdccfdc3",
13
13
  "SECURITY.md": "0eb89553ddcfc56bfe9712315b55a6630ee2f579631aaeccd6ad24f8ac769a0b",
14
14
  "docs/FIGMA_PIPELINE.md": "ea01f3ea5fef1a9cb316040a2d416fcf87dd4f2a14b5497aa00994a0b5dc7e6a",
@@ -34,7 +34,7 @@
34
34
  "docs/best-practices.md": "f8b75b0d38b5896a6a852bb30a1edddeb24dab8b5b7b1d9313290e1241c72024",
35
35
  "docs/ecosystem.md": "9b23467fca1bcdc0275e7eccd3428c36181ba9f8cd866778159edd7d65a4d563",
36
36
  "docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
37
- "docs/facts.json": "7020352c8c1f73a6f9b616d1e3d8060b76d138beb8c68e85e4edc3c4a0cfb8a7",
37
+ "docs/facts.json": "9b8a5d8dd40cb543146acc627afc0b456f9f4d2b8273509c3d4cca7cf00b7010",
38
38
  "docs/features.md": "d5fcbe3acc05e054efdf0c43ddfc1a82ef3d463f349ea2ec5b4842fa26d9d49d",
39
39
  "docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
40
40
  "docs/recovery-guide.md": "59a8f1b66b34cb9ff5507b3d54dac3b9915e184aa044d9c758d18cac818d510e",
@@ -54,7 +54,7 @@
54
54
  "install/_unattended-profile.mjs": "e1ed82bde35d19105ee12c2a551eb778912b0e5c93ab227fd15c993098d98de0",
55
55
  "install/_usage-lifecycle.mjs": "4b010c4e75d6f8e13b58d80a93cc9407f42ccde781c9ed12dcb8e7faf05e526c",
56
56
  "install/_xcode-skills.mjs": "1a7e20f1e6743324b941c5d3ecac9f94c65fff1534ffd9c63b39cbea4f8d101a",
57
- "install/catalog-history.json": "ae53e8c4bbf1d1f17a91f247f53a5ba79d881ec0251bf25273b68c1482df30ee",
57
+ "install/catalog-history.json": "af32be1b6a9a209413c7ae89cb69f2bde500545f732e505c94182cc3c15f5acc",
58
58
  "install/claude.mjs": "106ce353ebc19c8319d057ce342e1f989519510465c798399076b5f3d8727904",
59
59
  "install/codex.mjs": "08925fe9f3ecdf509b37f01105652c847475d20fcde2db0d679b9a7d663ca145",
60
60
  "install/copilot.mjs": "41dc394b8a3ae77cfd194ce0ca9bbcafce9bdce349f1f72eeb86569f993e15fe",
@@ -66,7 +66,7 @@
66
66
  "install/templates/multi-agent-autopilot-awake.plist.template": "ddd25c76c56fcbb38a89de8e35637372d70ace993d6bc487a88ca9cfb702fe1f",
67
67
  "install/templates/multi-agent-autopilot.plist.template": "122c8a61cd927edd99375d6e3da40f1d42bcceed5b6641785c8b28bb930bc77e",
68
68
  "install/unattended-profile-legacy.json": "f52e86b998956f09ad306b1735a6c10b58580d7082d8a55665a4c6bb15c3aa1f",
69
- "package.json": "e2aa2bd877d2f106314385ca681a67071158c9089a5a05e74b4f8a3039c2c39e",
69
+ "package.json": "8bc7f4948cd5ba3a59a7a38116ea6f6d116f73907d916555a92ce228364a465e",
70
70
  "pipeline/agents/android-architect.md": "11fb74543cb0ebcf9525ca6654fe95d53da7229e0bf4a1149b31fd9005abc453",
71
71
  "pipeline/agents/backend-architect.md": "b02a606c301e4714131aed70ae6d16eeb77fbc819a001e2752cff2488d4246de",
72
72
  "pipeline/agents/bulk-reader.md": "6597052cd7d205bac2b1c7633f5232fe1a40730664a913b8eb77efd5a786dc25",
@@ -91,7 +91,7 @@
91
91
  "pipeline/commands/multi-agent/autopilot/SKILL.md": "ae95364c28e21a5d12b8a579180d59963bad3738fcfd978180c5dca6e55a0d02",
92
92
  "pipeline/commands/multi-agent/bug-bash/SKILL.md": "0ae5883b72239c74f4f64fc2d60526091e471afa6a2886f90f70a469a85cc832",
93
93
  "pipeline/commands/multi-agent/build-optimize/SKILL.md": "e74d6f5be703acef1704092d5fe53485d95fe6c220bb768accaf68ebd212b7c1",
94
- "pipeline/commands/multi-agent/channels/SKILL.md": "4ccd28e5eaa8bd0b618fc23dbf49f007cf65150a4796aabafdb51d1dcffd6752",
94
+ "pipeline/commands/multi-agent/channels/SKILL.md": "ad2669cee680964185a38212148173d60df09d4d98126e237563743f2c5cfa2a",
95
95
  "pipeline/commands/multi-agent/complaint-analysis/SKILL.md": "b9ab7b9444cf99f25868d90f050ed96f04ac8cd8ea18d0999376184b067fc2bc",
96
96
  "pipeline/commands/multi-agent/create-jira/SKILL.md": "ac3d3e0ab2fb079b7c4107928573912699f68600f922b2f453be49c65317665a",
97
97
  "pipeline/commands/multi-agent/design-check/SKILL.md": "d3cb1b50f2d14cf22a38f4c0db98c852e8ed0586e969f7e6da7c1d65f36554eb",
@@ -203,10 +203,11 @@
203
203
  "pipeline/lib/figma-token.sh": "b192b1d3c8f75f1deb81731e95e080372d87fb44779805d05cdb7cb585ee1db0",
204
204
  "pipeline/lib/gc-report.sh": "a70a1fbaea4fb6dbb9a56471119e403071b4358fb0d4577b62bb4d5e08eaf87e",
205
205
  "pipeline/lib/invoked-directly.mjs": "a7014f252174414c267cc303a992aa9f3986541c5aad188c87cc6809ba3b69bd",
206
- "pipeline/lib/issue-fetcher.sh": "36f6eb41935fa44072cf3c9a92a5698d4ffd762103eb57f733e65687ab47479e",
206
+ "pipeline/lib/issue-fetcher.sh": "a074c100d31d08bd04573ae77f51beda4174dc4eaf6781e31000b13117e59da0",
207
207
  "pipeline/lib/jira-epic-link.sh": "b5f9ce1067cd8e9f0e547da4e681b71e4ff8c145e9a759fc98f83703dfca4d35",
208
208
  "pipeline/lib/jira-family-write.sh": "b29674fd2dc6993636d0c8b6b674a069f37d76775420372a755a1ce3b0f94b95",
209
209
  "pipeline/lib/jira-publish.sh": "d80c7c128fb16e67962d087f0e12ecbb396d8c7367bbb4f6d7eecb7cedf60fb3",
210
+ "pipeline/lib/jira-remote-links.sh": "ec62eeec7e666ebe5b73870d539306780bd6c32ced1acfda9046a95669a3687f",
210
211
  "pipeline/lib/json-file-lock.mjs": "d8a9075e6fa4fd10d4fb84efd438f92906fb3181455d661ca5fe604c57441524",
211
212
  "pipeline/lib/md2confluence-v3.py": "3677ca47931e4b3d0fd2ce3e11299fc5f6d24799eb8332e37dd60b6c3c4653a2",
212
213
  "pipeline/lib/model-dispatch.sh": "6500a5a7cb6a4c099cf1d01678bc9465a3d4eb1001e1f516dcc5eacd69577158",
@@ -256,10 +257,10 @@
256
257
  "pipeline/multi-agent-refs/analysis-template-corporate.md": "a1352dff1e39ef75cb25fadfc686595a584a87e337a45633e99d272b5e38a112",
257
258
  "pipeline/multi-agent-refs/analysis-template.md": "5a5376a615332ab75003c2baf897248ba7c06ad2238a41ea1e7d1de0ff491374",
258
259
  "pipeline/multi-agent-refs/analysis/evidence.md": "b0c216dc8869b729947ac5ecd33d20034b1a90bd8d648028a20ea7214b748658",
259
- "pipeline/multi-agent-refs/analysis/intake.md": "f5fb9e16620acb63fa41d14165d04f0fa6f5f7e178250a6f2b5b6d921d176f53",
260
+ "pipeline/multi-agent-refs/analysis/intake.md": "192a2da33ceaf4a255645960bc7d6883ab2845b9d45b30ada8faafaf4ad82aba",
260
261
  "pipeline/multi-agent-refs/analysis/locked.md": "c914d3da5182bfbb3ba613299cf38f12832fda2f17e1968e5a8fd7b32d867bdf",
261
262
  "pipeline/multi-agent-refs/analysis/redesign.md": "6314fc1e14e05166efbea4819d5b07adb838d0704bde61b4b69cef637f251d58",
262
- "pipeline/multi-agent-refs/analysis/render.md": "a65f2957623c1cef0f61cda4c89626524c703e5fb4070db446a13c091cdb4c5c",
263
+ "pipeline/multi-agent-refs/analysis/render.md": "c3dc2c4dea9c5094ca538abda20543f7fbbca64d3e15f41c3c9e1eae7a64f095",
263
264
  "pipeline/multi-agent-refs/analysis/resolve.md": "2e3631a8a9af999e01c66455378020e2134e6ca91bed3a40cd94717da94a34cb",
264
265
  "pipeline/multi-agent-refs/analysis/resume.md": "25a430b3a81c877b31c473cb0b708b1b225de3faf4d5f4b2918908df305c6d90",
265
266
  "pipeline/multi-agent-refs/analysis/reusable-refs.md": "6058c704a689d20af95a13295fd2e34f8636647f16ab991961ad9b7c0655bd34",
@@ -271,15 +272,16 @@
271
272
  "pipeline/multi-agent-refs/channels/board.md": "895edfd4a26f7f5fbe13f0eb5865d30975ed86ee3dbd4bd3bd12340f48001fcb",
272
273
  "pipeline/multi-agent-refs/channels/confluence.md": "1e1d731e9f57efdfe77efab3281d74b7f16e28d3d49699da516225492c551ffc",
273
274
  "pipeline/multi-agent-refs/channels/issue-comment.md": "19df6d8d6c23b5ea88687250dc10dd5fa35ba2b2e279efcb000e83622a0664f6",
274
- "pipeline/multi-agent-refs/channels/jira.md": "193152cb85396dcea312785b2a630c13a9403b9b9b1ae91c1fca719e8b37747e",
275
+ "pipeline/multi-agent-refs/channels/jira.md": "a164ac34b708ec1a3916ee69bcd3758aad5b40d6192fecb829d445afe0a41425",
275
276
  "pipeline/multi-agent-refs/channels/multi-repo.md": "a309478d8ba253c797904b1ad174be958e4d365b5ff008634ad1d5fc87969474",
276
277
  "pipeline/multi-agent-refs/channels/pr-review-actions.md": "21bf53796ae4ecd59769f9944ad8c7d1cd3a5915b0956be99ec875b847b33c00",
277
- "pipeline/multi-agent-refs/channels/pr.md": "abe0101d4f2a7cb1ecd88c4260e9ae9e7d6dd65dd52afbf6c44c573c48d11f20",
278
+ "pipeline/multi-agent-refs/channels/pr.md": "7c374018e2cdd50c0de45728b3ee84fbc21f5d8f6fbcc6db127616be80e39c72",
279
+ "pipeline/multi-agent-refs/channels/test-run.md": "d9d2d325fd8439bc4be03a76c1250bc828c2aadd0d135fb272441705eae777ea",
278
280
  "pipeline/multi-agent-refs/channels/wiki.md": "ba52c5efaedc067dd8456fe9076af694d7e3dae9bda621f1df65c9159cd422da",
279
281
  "pipeline/multi-agent-refs/complaint-analysis-template.md": "dd5f12a8f56ee4dc177fa7bfba4ffe9ad021e5f1b9e661a49031f02dd6e37109",
280
282
  "pipeline/multi-agent-refs/component-dispatch.md": "2ab9094aa716397e4840cd48f736c3f4fc3e7c4f9ccc5c7c7c52f9e8b0a28fb5",
281
283
  "pipeline/multi-agent-refs/component-generation.md": "04fdb3fd0f1c129e1df8243184a3225cebd9c4f63511d6015eb356a92eda8891",
282
- "pipeline/multi-agent-refs/conventions-defaults.md": "608a05ec6332fc19ee12c0418fbf25165f80e6c06cfee9efed7f27fab185d97d",
284
+ "pipeline/multi-agent-refs/conventions-defaults.md": "c7ef37d269a49aaa05b096085edb318ce67870aa9a75b7afe219df1af3aa81b6",
283
285
  "pipeline/multi-agent-refs/cross-cli-contract.md": "9a21e8aa6adff02f2514b5dd8cb5581e5e10e28007469e663912719ac4b8f2bd",
284
286
  "pipeline/multi-agent-refs/design-check/build-launch.md": "0ac64d07ef7389e22f7443f79c70a0a4f8bb87dcff6dbc94c63e034febe194ea",
285
287
  "pipeline/multi-agent-refs/design-check/compare.md": "2a0a89542a8bfefcfeaf1068dd91edb6947392f911f23e8b4857e4ace8fd15d7",
@@ -288,6 +290,7 @@
288
290
  "pipeline/multi-agent-refs/design-check/figma-mapping.md": "731b7f19ddee2e67ea5d318e95e3a0d6840fa62c4ad682a25315509ac9ddcbc3",
289
291
  "pipeline/multi-agent-refs/design-check/init-inventory.md": "62defc5ea804f6c8f059a8d512b023791daac59274c0def28cefd7709a7fe862",
290
292
  "pipeline/multi-agent-refs/design-check/mcp-currency-gate.md": "70a96d3135af905989cd1819e6fb37fc44d25df9817b1efcd20121ec6db76d74",
293
+ "pipeline/multi-agent-refs/features/analysis-issue-links.md": "68685a7fbdfd06ddbaafbbbbb6287670957631d9f5b130b851927aacf5345a23",
291
294
  "pipeline/multi-agent-refs/features/analysis-jira.md": "e5e88c656fad3f153d0a9ae6278e6f2c9060805029435f72cca64384c6bd6f50",
292
295
  "pipeline/multi-agent-refs/features/analysis-outline.md": "36a917343a7c07ae115aa1e89f825304e5878db931915aefef614d251b167e92",
293
296
  "pipeline/multi-agent-refs/features/analysis-sources.md": "12c8035e6aabf8e8a973b7264edc9a943e6758e79dbc53ae3e9b43c7f998000c",
@@ -308,6 +311,7 @@
308
311
  "pipeline/multi-agent-refs/features/free-models.md": "64afaba7e7a77575f4ed6a10905a01330a83f573907fb1a5d5356ae6c80999a0",
309
312
  "pipeline/multi-agent-refs/features/jira-context.md": "7d14802ed9ad1747e1a06dec26f22ff9e8959e03c47d7a018af45b8274aea47c",
310
313
  "pipeline/multi-agent-refs/features/jira-family.md": "4be05f296e6a2050355c218ed1cd33b489cd8c89ab798e1e44c7ba45fb9517b8",
314
+ "pipeline/multi-agent-refs/features/localization-reuse.md": "1a5bf13898eb83b65197c77a64736583fca67dc96ebab5df02482263e1091415",
311
315
  "pipeline/multi-agent-refs/features/maturity-followup.md": "e663e5bcf0b3b4d4d2a67f4516dbb9fb12520dfbdedb47a9c5f57c13a9a0633e",
312
316
  "pipeline/multi-agent-refs/features/model-fallback.md": "5647b4dbeed6fea21d264f03a85796727a83a001710a8bcbb3932c5a3914d6c5",
313
317
  "pipeline/multi-agent-refs/features/mutation-probe.md": "e6d622ab061f6cdcc16da40311e8e7aeae3e6f3c1d4b76d3849859a48a8ae31a",
@@ -335,14 +339,14 @@
335
339
  "pipeline/multi-agent-refs/features/stack-skill-routing.md": "1989f7f64be6c5ee0a42d8e9962aead7cd7472d795915ab953d89d9382f317e6",
336
340
  "pipeline/multi-agent-refs/features/unattended-gates.md": "46b516cac81a4eacf5d58bc3b1613e2266c26f1559be8dac060d1dc6b7d7ca01",
337
341
  "pipeline/multi-agent-refs/features/unattended-security.md": "f0f05ed17bbf26a50fa0f88d890f7ac3ccb8f78f169b9f759e997299fdeb5cac",
338
- "pipeline/multi-agent-refs/features/url-enrichment.md": "72e01a799d9fa54b56c762ba404a9f9236adbbf98320e395a96f6b0f5917e76b",
342
+ "pipeline/multi-agent-refs/features/url-enrichment.md": "14c6fcadd31cecf85011d936021a2103d87d37f618a0aab07c693be63aeae210",
339
343
  "pipeline/multi-agent-refs/features/usage-reporting.md": "12e8b4ee6170431ea980da829415beeb8dce9381a658b5d70a569ece98799438",
340
344
  "pipeline/multi-agent-refs/features/valven.md": "13b1fb8a3815330f6f970181506ac117e0d1c42761e5a83454edbd0b383ee1a7",
341
345
  "pipeline/multi-agent-refs/features/verify-by-test.md": "b0735adaa7ead797167b8d9ea48a10851a138083c6e638738cc96c66b02a1e37",
342
346
  "pipeline/multi-agent-refs/features/verify.md": "1a6db5e7239eac01e51100353013abd16bf785a7fce88b40139fca27f4166be4",
343
- "pipeline/multi-agent-refs/features/visual-evidence.md": "2b6aa2e4ff05c7a1fbe9e0fedfa4b28b9ad01c93a64f1ca6f6cd3e02293866aa",
347
+ "pipeline/multi-agent-refs/features/visual-evidence.md": "b7154dfe41f5069ad74883c73d04a4f7e5431c7e654151ab041b2981cd4ab134",
344
348
  "pipeline/multi-agent-refs/features/worktree-finalize.md": "628f627b94927a9c4a5b0b261fed1f0ffa42d4155390d57b5e56566a26ed8193",
345
- "pipeline/multi-agent-refs/generate-issue.md": "7a57f920ad72078fe9d75f561b5dac9aa3b504eb0c539a4598cb7080dc6bdbd7",
349
+ "pipeline/multi-agent-refs/generate-issue.md": "3e5182b9d6848e852ee3c7f397687f45c05e0861360cb77185c0a27d503a685c",
346
350
  "pipeline/multi-agent-refs/help/en.md": "2164743d020630b650d4b3313113e323c3a879e773540475b59bcedc20cb4916",
347
351
  "pipeline/multi-agent-refs/help/tr.md": "2325b840682a9b5ca3d99361fedf165f0bfa8ab6dd4a2f33c19cce7fb5b9f95f",
348
352
  "pipeline/multi-agent-refs/issue-jira-triad.md": "a12f4e3b75badf8a466e0c3531a5f0e12e44a1dd7799522fb03ff11068ce391d",
@@ -356,18 +360,18 @@
356
360
  "pipeline/multi-agent-refs/orchestrator/skill-loading.md": "6827d45f067d3db66fe7a6043308164aaf8a3da7620d018d7ed6459e4356f476",
357
361
  "pipeline/multi-agent-refs/outside-the-pipeline.md": "f62960921b2fbebd54914cec7503bfb5e3c3024f30fb3e0ead7e08e36a8139aa",
358
362
  "pipeline/multi-agent-refs/payload-contracts.md": "77b10f1d616c20b96c8f83185f9b507c9764fdc69eae1795bff9127ecbc6f37e",
359
- "pipeline/multi-agent-refs/phases.md": "730d598b27b8df4776adece9487f51e4835dbdb5a7d33c097e272f3360cbe844",
363
+ "pipeline/multi-agent-refs/phases.md": "77d04389edaa7aaf4e3a0faffebb2d2228b9e635fcb1e91f48b3f7d351f8aff4",
360
364
  "pipeline/multi-agent-refs/phases/log-format.md": "62d51e57cca8445ab40f3c0dc29615e4b5c8e4743286bf9ef0173610e81397aa",
361
365
  "pipeline/multi-agent-refs/phases/modes.md": "0733e20dce458c09f30343db9149fc93bc5a4c9531670b93952f223811dcb1aa",
362
366
  "pipeline/multi-agent-refs/phases/operations.md": "9506a26684abfff1e332d92c2321e840544fd4f049aff9f118731e198dabca94",
363
- "pipeline/multi-agent-refs/phases/phase-0-init.md": "c83e485b2be0461fdefe796d37788fcb11360616d07ab8e13c266d039ecd4e28",
367
+ "pipeline/multi-agent-refs/phases/phase-0-init.md": "3817e3be71adbf30a082713895531ef0e7fed29a32b77ce351103f1dfcd8669c",
364
368
  "pipeline/multi-agent-refs/phases/phase-1-plan.md": "de3f3dc16ae8853740540caa5497d2f18f016dcb7ea0bfc280ca5c136259a078",
365
- "pipeline/multi-agent-refs/phases/phase-2-dev.md": "7a87dcf07fc36d877eea92a34c1137dba8cd1f7865c8de83959fb2929bd4c248",
369
+ "pipeline/multi-agent-refs/phases/phase-2-dev.md": "fd41c31112e7fd0b547b6210cb6134a383ceb44889cbafc39069fc97d05e5ce6",
366
370
  "pipeline/multi-agent-refs/phases/phase-3-review.md": "60d3bff0370e3a31cbc7824560bd8598c19da0c4025be71e1df60661202d2a38",
367
- "pipeline/multi-agent-refs/phases/phase-4-commit.md": "e0a4f3126f30fe8cee5a765a1220a3e5eaf67d344b0b4f03d0ced7cf1e451144",
368
- "pipeline/multi-agent-refs/phases/phase-5-report.md": "7b76189879b7c371cac9edf1dc87a9a5ce65ae6d1f08018724ab0e6e77bc92d8",
371
+ "pipeline/multi-agent-refs/phases/phase-4-commit.md": "49565e1d4bff37e60b6299787e77456d1b1707e42d03a1797612be0604bd0983",
372
+ "pipeline/multi-agent-refs/phases/phase-5-report.md": "293e5071c1465a441a0a54dd9bd8963f6c5d2a0158653f5dd8ff3bf0613ed8ae",
369
373
  "pipeline/multi-agent-refs/picker-contract.md": "c03970ad8ebb36ff8742b41cc05b615a907d0cbd363e714a3da687f4aed25bba",
370
- "pipeline/multi-agent-refs/platform-parity.md": "5ff185f06cd99fa99cbbc32841512090a23c128f0a6adccfc4fc430e75caf46b",
374
+ "pipeline/multi-agent-refs/platform-parity.md": "1fa6189ad94ecd3e8a9f15980f19174dc86468050a6de3afff7aa30de60aa689",
371
375
  "pipeline/multi-agent-refs/progress-contract.md": "d1dc3c117aeb880cd44b3439062e9fe7d5e2042ba00c49fd495f70a6bdc1addc",
372
376
  "pipeline/multi-agent-refs/prompt-assembly.md": "5be25fe3e91ab4f997735907b53c8284fad289c60960e71445e0e8632d2704d1",
373
377
  "pipeline/multi-agent-refs/readiness-review.md": "1413e47dc97a54c0a2bd597f996203f24ee8a356f3d5d8690b42b2dad47ddc40",
@@ -397,7 +401,7 @@
397
401
  "pipeline/multi-agent-refs/sync/dev-toolkit.md": "b23817e65f3e386bc9b5937995f57394cb00e24147292a461888fb52f80a27e6",
398
402
  "pipeline/multi-agent-refs/sync/stack-plugins.md": "07cba6d08f60c6ef6eecd90f373ec35db1bf6f98013cf12fe51155a77e76c748",
399
403
  "pipeline/multi-agent-refs/threat-model.md": "3628881538b846f94decd78e389b34b473ba6f91b6e6dcf5c927d307ed264bea",
400
- "pipeline/multi-agent-refs/tracker-contract.md": "87a68491247494d08947658c78af4ec72f2f021e22cc7a0d9f16661dc5cc670d",
404
+ "pipeline/multi-agent-refs/tracker-contract.md": "938c05104143a9db45fe393636c5d81625dc65d2cb065945efad3bf885eff4c4",
401
405
  "pipeline/multi-agent-refs/unattended-contract.md": "554eeeda1469f405eaf8d59ef11a62efbb6919f06bd9950dc856b0be891e702b",
402
406
  "pipeline/multi-agent-refs/web-guide.md": "714cba0d92fa45bf71fbff21bb2f09c88534ebf785b3a2ea96d18037e2e7f7f9",
403
407
  "pipeline/multi-agent-refs/website-deploy.md": "ce819c8b1ef8e8ec3257611379aaf0ab4678e08e0b58bd88c936e98cb8ead609",
@@ -417,7 +421,7 @@
417
421
  "pipeline/rules/swiftui-qa.md": "8c4afe9e72413e7bdab655f3d17588469e80ac34cb7ad2a690901fc5b6534818",
418
422
  "pipeline/rules/tdd.md": "4c1b3114506aa9794c9bb1e1aee1b1bbb4a993d192342e5697cc00bc2f6ea4a2",
419
423
  "pipeline/rules/testing.md": "695be5520b65451f0aa300a9643df2c05e607ff6ad372201ea34798dc5998bd5",
420
- "pipeline/schemas/agent-state.schema.json": "85d9ebfb75f89adf9359320702b07742dff7ecc38b1b7801dbf3de9d4447ede4",
424
+ "pipeline/schemas/agent-state.schema.json": "96c8a9d57b4ab14332c81a098a9da20828128f5dc1c1924a1bde17d65752087b",
421
425
  "pipeline/schemas/analysis-output.schema.json": "41826f4bf7c96778f8cdbcc68531e984087897d438b7b49ac5a93fc29db47916",
422
426
  "pipeline/schemas/analysis-spec.schema.json": "43770223266be1c94e2cdea585efb6783043353bc5a374613b554596f46e1bcd",
423
427
  "pipeline/schemas/answer-request.schema.json": "29d4211a2a05a230e0707b171b73341d2e56f6b83edb178b731905211aab4e23",
@@ -471,7 +475,7 @@
471
475
  "pipeline/schemas/plan-todos.schema.json": "be4374b7eeb513fb8a7663374defa5b35ae084f72e112faa41b07c46532c50de",
472
476
  "pipeline/schemas/planning-output.schema.json": "6aea9b5b8bbf7f9a227215c29cc30a5b642981a02fe2a81eaf9e8a113f7c3947",
473
477
  "pipeline/schemas/pr-request.schema.json": "ae75c4856349d62834802b1189af516bb6fb3d36646831b7ff2fa61d938afcd0",
474
- "pipeline/schemas/prefs.schema.json": "e3b983744852a8572d92344cdb88367a892afb3e3ee63ce84e798b92b764b8d7",
478
+ "pipeline/schemas/prefs.schema.json": "776ea725896456f4853cf7959cab9fdbd3dc34bdaa8e0eaf74b61e93c11710ff",
475
479
  "pipeline/schemas/repo-profile.schema.json": "1a74ef8330da9a26a5a70955f6f9cbb20eda54a8615efaf86c7993d420a7f04e",
476
480
  "pipeline/schemas/repos.schema.json": "a9bf56f25c66201c170912e3389bd73e4a3f61922410f83e31a6c6ba47aee861",
477
481
  "pipeline/schemas/research-output.schema.json": "54e3ba1b04fdc20fbaa84333b943a8ab95d1395c7b0e0aedc67929184cb49523",
@@ -497,7 +501,7 @@
497
501
  "pipeline/schemas/token-budget.schema.json": "126292faf6a49db0929d1bcb01be888ef7de4a3938cb7d88a0cf7ee786ffb297",
498
502
  "pipeline/schemas/triage-corpus.schema.json": "b919fe3d69443d78e55d875f54717c745320ff94d34c516b0ca32f358ebec2e5",
499
503
  "pipeline/schemas/triage-output.schema.json": "60e329a22cea0f0ed9fa1e8e78f9b512ef283277346b08a194ad491e0bad0995",
500
- "pipeline/schemas/unattended-policy.json": "64ca8d36c29766af2f9e94435f017650799ee62a8ad04c5d5cf802b75550073b",
504
+ "pipeline/schemas/unattended-policy.json": "423f5d79663fea92dc4035b9e7480acb0ee732a7d89a094ab2bcd252d0f819d3",
501
505
  "pipeline/schemas/unattended-policy.schema.json": "d1aab1b49541ca77c3ca5ee69158878b61ea47a5bfdfe06cd548c3315ffd09c4",
502
506
  "pipeline/schemas/unattended-profile.json": "25ca36388640a22b47b08f01f515b192ee4210eb820c85fd3d0485e0247afd8c",
503
507
  "pipeline/schemas/unattended-profile.schema.json": "a9c0979f0d0742826e410fdbfe1ae1c4a56b05b4e638eec42d4c276d6f48f701",
@@ -520,6 +524,7 @@
520
524
  "pipeline/scripts/_redact.mjs": "9d4fb3fa72c45cf14dc3dc9e950969f688c0d34f71c9e39efca0f68dbed15b54",
521
525
  "pipeline/scripts/_retrieval.mjs": "c887d90701b610cdc25ad49090c3e2786de4135e73b8d423dc01aa56336edf2f",
522
526
  "pipeline/scripts/_run-paths.mjs": "186266e09ffaf793525c0b25572006c9f37cdd2c6ce35abaacb172802476f573",
527
+ "pipeline/scripts/_sibling-root.mjs": "1acd7c997256a44aae19dc38788dda28e0245e9750b851af38ad0c307464e936",
523
528
  "pipeline/scripts/_smoke-root.sh": "dad129959a4e37a0cd0f4f6c04f6d66c5a43752b2bf33989db9c002eb106b832",
524
529
  "pipeline/scripts/_stack-adapter.mjs": "a754c042d237cd03abf11c6909099a7a3ea798cdd13d49b03787797fd3496cd7",
525
530
  "pipeline/scripts/_stack-routing.mjs": "d1f804d457295e5cc8ad7039e8c29431f0e9f52f4396cc54c1305eb82b9b61e9",
@@ -593,7 +598,7 @@
593
598
  "pipeline/scripts/gc-refs.sh": "04e91087885bac10ee692cc24914342a459bcfc5533574894e40e43587cec325",
594
599
  "pipeline/scripts/gc-tmp.sh": "e833f742b9ca54fde78c58c3d473593a3a093ce35d6e30631e662a84a6ad6efe",
595
600
  "pipeline/scripts/gc-worktrees.sh": "06d0a53b9293531f4b8501618648440b668ba1ef60c121576c55b0e203dcfc62",
596
- "pipeline/scripts/gen-facts.mjs": "6ba70f7db881c3e3577a5ce3dcbfda09aa240f728ee577b019f2176d8051fd67",
601
+ "pipeline/scripts/gen-facts.mjs": "9e3cffc52882d44c32b60f9ab8eb47a912227ab094f6e896055d2a9c403b3ad1",
597
602
  "pipeline/scripts/gen-mode-dispatch.mjs": "c6fd6772888bd928a9e8ac1bddd4effca5f6e7e51d07cee4c7264d48b5a96fac",
598
603
  "pipeline/scripts/gen-skills-index.mjs": "64606fb3165786ed1488cc368dcbe8f53d2e9402f02578823a31838b9730180d",
599
604
  "pipeline/scripts/git-path.mjs": "e82e0da227fe30f48a50f352556b1769b68e7647f13540d0ab265cbde8a77735",
@@ -640,6 +645,7 @@
640
645
  "pipeline/scripts/plan-complexity.mjs": "ac8e4ad857cabc80fe4051bec84490bb91bfdf75d61cfdad93e315d0965f04b8",
641
646
  "pipeline/scripts/plan-coverage-gate.mjs": "1a83bc52584438a9bd5cba96d2ddefed92a6a317d30ee695e67ef6c00b93e5a8",
642
647
  "pipeline/scripts/plan-critique-gate.mjs": "b139394e5f16d11e4997d0bb0b08529f439dbd7fad39781ef4c2475247d8fa97",
648
+ "pipeline/scripts/plan-remote-links.mjs": "81673a25b9b9f19edd15ebd1e198552b658a7ec6d138658ec4e6e5b58213bb3a",
643
649
  "pipeline/scripts/plugin-refresh.sh": "687a33199ad963616ab537e32210ec8c967e76ecc42f494ee8a1dc9fe947fc30",
644
650
  "pipeline/scripts/pr-request.mjs": "e6f4ded2366c6599bb345b3011ecc771e13b8a1561afa4c9a50bca4edff17456",
645
651
  "pipeline/scripts/pr-timeline.mjs": "6a12df12a72f3440796569d3264edb0b3e105be6e4f2e26e958a5a0da340d05c",
@@ -654,6 +660,8 @@
654
660
  "pipeline/scripts/release-notes.mjs": "05430926cf679534978bcc79c160a6787aaf04831b8b8489d8bbc9fa343a14af",
655
661
  "pipeline/scripts/render-agent-log-cost.sh": "6c58c1f5754ff5754485a0c1b66f4cd713575d2e8ebb1630aedf2f87fe34ef4d",
656
662
  "pipeline/scripts/render-cost-summary.sh": "ce9647332ab9a3e518af98f52a6fc70baab9fd3c09ec5f9e85bae2d67078a5e3",
663
+ "pipeline/scripts/render-flow-run.mjs": "817ee3b73c41e088e9fb439e5c90970f7697b963f6c895a994c4774d30f8bab2",
664
+ "pipeline/scripts/render-jira-evidence.mjs": "a7bb663ef688ef9bb6e85995089c10b9faa5a9a621c5430ff7925d761571f3cb",
657
665
  "pipeline/scripts/render-work-summary.sh": "ee4db04ebc145cc2fc7fa9a533d42b7da4da191710ef67c883502ca83b2aa67c",
658
666
  "pipeline/scripts/repo-map.mjs": "175dcaeb548e8a018ad36cf661f3bdcb9340d32439fd4d92918fd6b3ab175730",
659
667
  "pipeline/scripts/repo-profile.mjs": "5f0cf90c59accdb0bb763fab9512e271e3cc4c8bc930ece137d94baa5c8e08d9",
@@ -727,7 +735,7 @@
727
735
  "pipeline/scripts/worktrees.mjs": "90dfd09b70fffe9b56c331a4ae2692cc248f4898f4ee6aee4239ef0b20888a90",
728
736
  "pipeline/scripts/write-state.mjs": "e1198bf970eace07d3eff22b394808a526e473df65d3d58aa2d5a12cfdac8b49",
729
737
  "pipeline/scripts/write-store-config.mjs": "b994a061f6febb2ca3d396074d8b51d2c1c1f991d3072d321703380da3639a56",
730
- "pipeline/skills/.skill-manifest.json": "df49c99c3f308b8d5dab153e2ed22b301de7417e52065146d11eb754adf75326",
738
+ "pipeline/skills/.skill-manifest.json": "a69acae761b7293cac14475e0f403f5d2c39a15e767018e473eb3ecbe4b61cce",
731
739
  "pipeline/skills/.skills-index.json": "bfb04a72333aec2c25e21c8edce4a76e2128e5e7f1e88b0cd780e7f1cc6bf370",
732
740
  "pipeline/skills/shared/README.md": "47f5c77556bf1676857fe6a803fc5c85da5cd32e1b0332a6f3728b6da610cc58",
733
741
  "pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "7239fef717ea45b79276bfcc2c3903acd57950b6e00dd6a2a66399c4b09cbd51",
@@ -743,9 +751,9 @@
743
751
  "pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md": "a9731771fbc1f45260f214f069b976eff16e7b25e2f1375b0d9a213575271bc6",
744
752
  "pipeline/skills/shared/core/multi-agent-bug-bash/SKILL.md": "a44ad2520ef24444b68d9040519f82498abda3ebb6467890bb6b5e1460299400",
745
753
  "pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md": "8534891d1198597a0893d131e6b944d15443f62b24cb5584c486a235845fd281",
746
- "pipeline/skills/shared/core/multi-agent-channels/SKILL.md": "cb5e1f9e82f3fd3e7d9ad20bff7a066cafff75323044a08726e3af368738b123",
754
+ "pipeline/skills/shared/core/multi-agent-channels/SKILL.md": "b55e8461a1bcdc1b4b88c42e086f599fccda2a89d7f56a29ac11e5ebc12a3623",
747
755
  "pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md": "dd30708491303902aa8629130809e9601c2096dc12aa9fc671f798142cea3485",
748
- "pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md": "5aad0d841e9e5b7140bb441e07819209ca64c5b6fc209d6ad586b5fbb353e377",
756
+ "pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md": "15efd1a0c661f848c2afa427015cd6c31e9f6680900111a4ab1a2e34ad705e81",
749
757
  "pipeline/skills/shared/core/multi-agent-design-check/SKILL.md": "8888744fa52e935f53db9a1068e1b18c636b6c9d55b084dabfc19b9ae68bf6f8",
750
758
  "pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md": "e0ccaabe77d242f26aca9fa3010e02adc4edd07eeb55230396300caefffe91d2",
751
759
  "pipeline/skills/shared/core/multi-agent-doctor/SKILL.md": "2f6222cdef9c6b2b4e2e330ba0acee33ab0fb797029bb16c50bbb244be5fcbe6",
@@ -1004,7 +1012,7 @@
1004
1012
  "pipeline/skills/shared/external/ios-iphone-duo/references/api-map.md": "ec7d0b3dab323db1951c2b5319691f611466012b970823333a233e33c2a338d4",
1005
1013
  "pipeline/skills/shared/external/ios-iphone-duo/references/fixed-assumptions.md": "4a3e52a72b48851adc43ec702c4dbbc9d9d313a7b56409553406885b5606fdab",
1006
1014
  "pipeline/skills/shared/external/ios-iphone-duo/references/poses-and-panes.md": "f06bd8689cf793c239125327f4ec74f234c49beda277467cdebc7366ff76909f",
1007
- "pipeline/skills/shared/external/ios-localization/SKILL.md": "3ee1a34bbf6c0b77e1e9f16cb7d8bc3d10f2ba7bf6d0b48e64126afcf9dbe2b6",
1015
+ "pipeline/skills/shared/external/ios-localization/SKILL.md": "eb1e0dc8f68d4d6c29af6562186060f265ce4fadad633638d18b9aee098bfe4a",
1008
1016
  "pipeline/skills/shared/external/ios-localization/evals/evals.json": "f80b7a9d9a4a262c6df824ba8c4bf1a762d98d0a12501bead04e8cd6a016cc6e",
1009
1017
  "pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md": "3b9aa4a911625a5b246c728d5afe6ec52701d362980de528c554b25b4801a3e8",
1010
1018
  "pipeline/skills/shared/external/ios-localization/references/string-catalogs.md": "6e103989d396c43ab3c0e4b2d5df6da34ba6b2d33fae649d84ec4f38f5811ace",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.26.0",
3
+ "version": "20.27.0",
4
4
  "description": "6-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -116,10 +116,10 @@
116
116
  "ajv": "^8.20.0",
117
117
  "ajv-formats": "^3.0.1",
118
118
  "c8": "^12.0.0",
119
- "eslint": "^10.10.0",
119
+ "eslint": "^10.12.0",
120
120
  "eslint-config-prettier": "^10.1.8",
121
- "eslint-plugin-n": "^18.3.0",
122
- "prettier": "^3.9.6",
123
- "publint": "0.3.24"
121
+ "eslint-plugin-n": "^18.4.1",
122
+ "prettier": "^3.9.10",
123
+ "publint": "0.3.25"
124
124
  }
125
125
  }
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  description: "Multi-channel reporter - Jira/Confluence/Wiki/PR description/Board status. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT, GitHub Projects v2 board status move. Phase 5 delegates to this skill; users can invoke post-hoc by Jira ID / PR URL / branch."
3
3
  description-tr: "Çok kanallı raporlayıcı - Jira/Confluence/Wiki/PR açıklaması/Board durumu. Çoklu kanal + içerik seçimi, humanizer geçişi, reviewer'ı koruyan Bitbucket PR PUT, GitHub Projects v2 board durum taşıma. Faz 5 bu skill'e delege eder; Jira ID / PR URL / branch ile sonradan da çağrılabilir."
4
- argument-hint: '[Jira-id | PR-url | #N | Jira-url] [--channels pr,jira,confluence,wiki,board] [--content normal,technical,test,auto-diff,note] [--message "..."] [--message-file path] [--board-status <key>] [--dry-run] [--append] [--ready]'
5
- parameters: [{"name":"target","kind":"text"},{"name":"--channels","kind":"enum","repeat":true,"enum":["pr","jira","confluence","wiki","board"]},{"name":"--content","kind":"enum","repeat":true,"enum":["normal","technical","test","auto-diff","note"]},{"name":"--message","kind":"text"},{"name":"--message-file","kind":"path"},{"name":"--board-status","kind":"text"},{"name":"--dry-run","kind":"flag"},{"name":"--append","kind":"flag"},{"name":"--ready","kind":"flag"}]
4
+ argument-hint: '[Jira-id | PR-url | #N | Jira-url] [--channels pr,jira,confluence,wiki,board] [--content normal,technical,test,auto-diff,note,test-run] [--flow-run <runId>] [--message "..."] [--message-file path] [--board-status <key>] [--dry-run] [--append] [--ready]'
5
+ parameters: [{"name":"target","kind":"text"},{"name":"--channels","kind":"enum","repeat":true,"enum":["pr","jira","confluence","wiki","board"]},{"name":"--content","kind":"enum","repeat":true,"enum":["normal","technical","test","auto-diff","note","test-run"]},{"name":"--flow-run","kind":"text"},{"name":"--message","kind":"text"},{"name":"--message-file","kind":"path"},{"name":"--board-status","kind":"text"},{"name":"--dry-run","kind":"flag"},{"name":"--append","kind":"flag"},{"name":"--ready","kind":"flag"}]
6
6
  gui: form
7
7
  destructive: false
8
8
  confirm: none
@@ -11,7 +11,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, WebFetch, AskUserQuestion
11
11
 
12
12
  # /multi-agent channels - Multi-Channel Reporter
13
13
 
14
- > **TLDR** - Single entry point for posting task reports to external channels. Supports Jira, Confluence, Wiki (component-only), and PR description updates. Multi-select channels × multi-select content sources. Phase 5 of the pipeline delegates to this command; users can also invoke it post-hoc by Jira ID / PR URL / branch.
14
+ > **TLDR** - Single entry point for posting task reports to external channels. Jira, Confluence, Wiki (component-only), PR description. Multi-select channels × content. Phase 5 of the pipeline delegates to this command; users can also invoke it post-hoc by Jira ID / PR URL / branch.
15
15
 
16
16
  **Claude Code invocation:** `/multi-agent:channels <target>`
17
17
  **Copilot CLI invocation:** `multi-agent-channels <target>` (top-level command, dash-separated per Copilot no-namespace convention)
@@ -97,7 +97,7 @@ When the preview renders:
97
97
  When the preview does NOT render (no state, or pref explicitly off at global level with no override):
98
98
  - Skip 3a silently, go straight to the channels picker. The workSummary row in 3b stays at its pref default (`false`).
99
99
 
100
- After the preview prints, 3b renders the two pickers: **Channels** (PR description, Jira comment, Confluence page, Wiki, Board; each unavailable one greyed with its reason) and **Content** (normal analysis, technical analysis, test scenarios, PR auto-diff, manual note, cost summary, work summary).
100
+ After the preview prints, 3b renders the two pickers: **Channels** (PR description, Jira comment, Confluence page, Wiki, Board; each unavailable one greyed with its reason) and **Content** (normal analysis, technical analysis, test scenarios, test run, PR auto-diff, manual note, cost summary, work summary).
101
101
 
102
102
  **Why auto-tick:** the user just saw the summary and is most likely sending it; the explicit pref still wins.
103
103
 
@@ -111,7 +111,7 @@ After the preview prints, 3b renders the two pickers: **Channels** (PR descripti
111
111
  - "Normal analiz" + "Test senaryoları" unselectable if no pipeline log found. Reason: `"(no pipeline log for PROJ-12345)"`.
112
112
  - "Teknik analiz" unselectable if no Phase 1 planning log AND no PR diff available. Reason: `"(no technical source - need Phase 1 plan or PR diff)"`.
113
113
  - "Auto-diff" unselectable if no PR found. Reason: `"(no PR linked to this target)"`.
114
- - "Manuel not" always available.
114
+ - "Manuel not" always available. "Test Koşumu (Xray)": `channels/test-run.md`.
115
115
  - "Cost özeti" unselectable if `phase-tracker.sh cost total` prints `-` (no priced token tallies; there is no `status` action) AND no `otel-spans.jsonl` exists for the task. Reason: `"(no tracker data - set MULTI_AGENT_OTEL_SPANS=1 or enable token tracking)"`.
116
116
  - "Yapılan iş özeti" unselectable if no `agent-state.json` exists for the task (post-hoc call with `--branch` + `--base-branch` flags restores partial availability). Reason: `"(no agent-state.json for {taskId})"`. **Auto-ticked** when Step 3a preview was shown - user can still uncheck before confirming the menu.
117
117
 
@@ -137,10 +137,8 @@ For each selected **content** source, produce one section body. Each section run
137
137
  ticket and by whoever tests it, so its comment carries the four sections
138
138
  `channels/jira.md` fixes - `summary` (`Geliştirme Özeti`), `test_scenarios`
139
139
  (`Test Senaryoları`), `impact` (`Etki Analizi`) and `context_refs`
140
- (`Bağlantılar`) - and nothing else. Technical sections go to the PR and to
141
- Confluence, where the reader is a code reviewer. A shipped Jira comment once
142
- explained a hash-table mutation across three paragraphs of class names; it was
143
- correct, and it was the wrong document. When `jira` is a selected channel, drop
140
+ (`Bağlantılar`), plus `test_run` when selected - and nothing else. Technical sections go to the PR and to
141
+ Confluence, where the reader is a code reviewer. When `jira` is a selected channel, drop
144
142
  the technical sections from its body rather than converting them: the PR link on
145
143
  line 1 is how a Jira reader reaches the detail.
146
144
 
@@ -154,6 +152,7 @@ lead reads before deciding how wide to test.
154
152
  | Normal analiz | `### Analysis` - impact summary from Phase 1, risks from Phase 4 (pipeline-log source, high-level only) |
155
153
  | Teknik analiz | `### Technical Details` - Changes (what/why per file group), Architecture (structural decisions, pattern changes), Dependencies (new imports/frameworks/packages). Source: Phase 1 planning + Phase 2 dev log + `git diff --stat`. **PR and Confluence only** - never rendered into a Jira comment. |
156
154
  | Test senaryoları | `### Test Scenarios` - precondition / steps / expected table (4-8 rows), user perspective |
155
+ | Test Koşumu (Xray) | `### Test Koşumu` - Xray Test Execution of the task's UI scenario run (`channels/test-run.md`) |
157
156
  | Auto-diff | Old enrich Output Template verbatim - Root Cause / Solution / Changed Files / Test Scenarios |
158
157
  | Manuel not | `### Notes` - user-provided paragraph, or LLM-split into subsections if `--message` is plain text and long |
159
158
  | Cost özeti | `### Cost Summary` - per-phase token tally + est. USD table. Source: `phase-tracker.sh` phase status + optional OTel spans. See "Cost summary generation" below. |
@@ -161,7 +160,7 @@ lead reads before deciding how wide to test.
161
160
 
162
161
  **The content options are sources, not the body's shape.** Which sections a PR
163
162
  body carries and in what order is fixed by `channels/pr.md` (`summary` →
164
- `technical` → `architecture` → `impact` → `test_scenarios` → `visuals` → `risk`
163
+ `technical` → `architecture` → `impact` → `test_scenarios` → `test_run` → `visuals` → `risk`
165
164
  → `dependencies` → `build` → `related`); the options below choose what gets
166
165
  gathered to fill them. A content option left unselected means a section has no
167
166
  source, not that the section may be reordered or renamed.
@@ -202,6 +201,8 @@ source, not that the section may be reordered or renamed.
202
201
  1. {step}
203
202
  2. **Expected:** {what should still behave as before}
204
203
 
204
+ ### Test Koşumu ← if "Test Koşumu (Xray)" selected
205
+
205
206
  ### Notes ← if "Manuel not" selected
206
207
  {user message}
207
208
 
@@ -241,7 +242,7 @@ If no cached report exists, skip silently - this is augmentation, not a gate.
241
242
 
242
243
  **Work summary generation:**
243
244
 
244
- Emitted only when `reportContent.workSummary === true` and at least one of (`agent-state.json`, `--branch` flag) is available. The shell adapter is `$HOME/.claude/scripts/render-work-summary.sh <taskId>`, and that script's own header is the spec for what it emits - task header, scope delivered, changed files, review outcome, phase strip - including the caps and the hidden-when-empty rules. Re-stating those five steps here gave the pipeline two specifications of one script, and the prose one is the copy that rots. Exit 2 means the state was unreadable: skip the section, do not substitute a hand-written one.
245
+ Emitted only when `reportContent.workSummary === true` and at least one of (`agent-state.json`, `--branch` flag) is available. The shell adapter is `$HOME/.claude/scripts/render-work-summary.sh <taskId>`, and that script's own header is the spec for what it emits - task header, scope delivered, changed files, review outcome, phase strip - including the caps and the hidden-when-empty rules. Exit 2 means the state was unreadable: skip the section, do not substitute a hand-written one.
245
246
 
246
247
  **Output template:**
247
248
 
@@ -303,11 +304,11 @@ Skipped in exactly two cases:
303
304
  | Case | Why |
304
305
  |---|---|
305
306
  | Autopilot (`state.autopilot === true` or `MULTI_AGENT_AUTOPILOT=1`), attended | Explicit consent for side-effect creation: posts directly with prefs/flag selections |
306
- | `--dry-run` | Already prints without posting; a question would be redundant |
307
+ | `--dry-run` | Prints without posting |
307
308
 
308
309
  **Preview render** (one block per selected channel, final body after humanizer - shown in readable Markdown, channel-specific markup conversion happens after approval).
309
310
 
310
- Conversion is per-channel and two of the four channels have none. Do not reach for "the" conversion table - there is no single one:
311
+ Conversion is per-channel; two channels have none:
311
312
 
312
313
  | Channel | Conversion after approval | Table |
313
314
  |---|---|---|
@@ -316,7 +317,7 @@ Conversion is per-channel and two of the four channels have none. Do not reach f
316
317
  | Jira comment | markdown → Jira wiki markup | `channels/jira.md` "Wiki markup conversion" |
317
318
  | Confluence page | markdown → storage format | `channels/confluence.md` "Body conversion" |
318
319
 
319
- Applying the Jira table to the PR body is the recurring failure of this step: it is the only *text* markup table in the doc set, so it reads as the default. It is not. A PR body containing `h2.`, `{{code}}`, or `#`-numbered lists shipped raw wiki markup to a Markdown surface.
320
+ The Jira table is the only *text* markup table in the doc set and never applies to the PR body: `h2.`, `{{code}}` or `#`-numbered lists render there as raw wiki markup.
320
321
 
321
322
  ```
322
323
  ── PR description ({repoName} #{prNumber}, replace) ─────────
@@ -327,7 +328,7 @@ Applying the Jira table to the PR body is the recurring failure of this step: it
327
328
  {body}
328
329
  ```
329
330
 
330
- Secondary artifacts ride along as one-line intents at the bottom of the preview: Wiki page list, wiki → Jira triad comment (when Wiki is selected and the triad is active per `$HOME/.claude/multi-agent-refs/issue-jira-triad.md`), Board status move (`{from} → {to}`), GitHub issue comment + Progress-flag sync (Phase 5 Step 1.5 - same gate, see `$HOME/.claude/multi-agent-refs/phases/phase-5-report.md`).
331
+ Secondary artifacts ride along as one-line intents at the bottom of the preview: Wiki page list, wiki → Jira triad comment (when Wiki is selected and the triad is active per `$HOME/.claude/multi-agent-refs/issue-jira-triad.md`), Board status move (`{from} → {to}`), GitHub issue comment + Progress-flag sync (Phase 5 Step 1.5 - same gate, see `$HOME/.claude/multi-agent-refs/phases/phase-5-report.md`), test-run candidates to untick (`channels/test-run.md`), the Jira body's `--measure` (`render-jira-evidence.mjs`).
331
332
 
332
333
  **Then a single AskUserQuestion** (`picker-contract.md`; `question`/`label`/`description` in `outputLanguage`, `header` English):
333
334
 
@@ -406,7 +407,8 @@ Persist selections to `prefs.global.reportChannels` + `prefs.global.reportConten
406
407
  | Flag | Effect |
407
408
  |------|--------|
408
409
  | `--channels pr,jira,confluence,wiki` | Non-interactive channel selection (comma list). Skips channel menu. |
409
- | `--content normal,technical,test,auto-diff,note` | Non-interactive content selection. Skips content menu. |
410
+ | `--content normal,technical,test,auto-diff,note,test-run` | Non-interactive content selection. Skips content menu. |
411
+ | `--flow-run <runId>[,<runId>...]` | Runs for the test run block (`channels/test-run.md`). |
410
412
  | `--message "..."` | Manual mode - use user text as source, no diff read. Forces `content=note`. |
411
413
  | `--message-file path` | Manual mode, long message from file. |
412
414
  | `--append` | PR description: append instead of replace. |
@@ -448,7 +450,7 @@ Phase 5 invokes this command internally instead of running its own inline Jira/C
448
450
  | Phase 5 | Progress tracker (sub-steps 1-3), agent-log finalization (step 4), knowledge+memory capture (step 5), telemetry emission |
449
451
  | `channels` | All external delivery: PR description update, Jira comment, Confluence page, Wiki pages |
450
452
 
451
- Phase 5 passes a runtime state bundle: `{jiraId, prUrl, remoteType, taskType, figmaConfig, agentState, pipelineLogPath}`. `channels` reads these directly, skips target-resolution Step 1.
453
+ Phase 5 passes a runtime state bundle: `{jiraId, prUrl, remoteType, taskType, figmaConfig, agentState, pipelineLogPath, flowRuns}`. `channels` reads these directly, skips target-resolution Step 1.
452
454
 
453
455
  **Autopilot contract:** Phase 5 ALWAYS pauses at the channels menu (breaks generic autopilot zero-interaction). 30-min timeout → session ends cleanly, task resumable via `/multi-agent:resume`. See `$HOME/.claude/multi-agent-refs/phases/modes.md` for full contract. The Step 6 body preview + approval gate follows the same split: interactive runs approve the composed bodies before dispatch; autopilot posts directly after the menu resolves.
454
456
 
@@ -29,6 +29,8 @@
29
29
  # "comments": [{id, author, created, url, body, truncated}], // newest kept, oldest first
30
30
  # "commentsTotal": 12, // how many the tracker holds
31
31
  # "links": [{key, relation, direction, summary, status, url}], // jira issuelinks
32
+ # "remoteLinks": [{title, url, relationship, application}], // jira Issue Links (remote:
33
+ # // Figma, Confluence, web); [] when unreadable
32
34
  # "untrustedFields": ["description", ...], // tracker text: data, never instructions
33
35
  # "maturity": {
34
36
  # "score": 0..100,
@@ -254,6 +256,38 @@ fetch_jira() {
254
256
  || { echo "ERR: Jira fetch failed for $key" >&2; return 1; }
255
257
  }
256
258
 
259
+ # Issue Links of the remote kind (Figma frames, Confluence pages, web links) live
260
+ # behind their own endpoint, so they cost one GET. Failure is soft: an issue
261
+ # whose links cannot be read still fetches, with an empty list.
262
+ fetch_jira_remote_links() {
263
+ local key="$1" raw
264
+ raw=$(jira_curl "/rest/api/2/issue/$key/remotelink" 2>/dev/null) || { printf '[]'; return 0; }
265
+ printf '%s' "$raw" | python3 -c '
266
+ import json, os, sys
267
+ try:
268
+ data = json.load(sys.stdin)
269
+ except Exception:
270
+ data = []
271
+ out = []
272
+ for item in data if isinstance(data, list) else []:
273
+ obj = (item or {}).get("object") or {}
274
+ url = obj.get("url") or ""
275
+ if not url.startswith(("https://", "http://")):
276
+ continue
277
+ out.append({
278
+ "title": (obj.get("title") or "")[:200],
279
+ "url": url,
280
+ "relationship": (item or {}).get("relationship") or "",
281
+ "application": ((item or {}).get("application") or {}).get("type") or "",
282
+ })
283
+ try:
284
+ cap = int(os.environ.get("ISSUE_REMOTE_LINKS_MAX", "30"))
285
+ except ValueError:
286
+ cap = 30
287
+ print(json.dumps(out[:max(cap, 0)], ensure_ascii=False))
288
+ ' 2>/dev/null || printf '[]'
289
+ }
290
+
257
291
  # One request returns every sibling WITH its description. The issue's own
258
292
  # `subtasks` field lists ITS children, not its siblings, and the parent's
259
293
  # lists siblings without descriptions - either shape costs one GET each.
@@ -330,6 +364,7 @@ try:
330
364
  except (TypeError, ValueError):
331
365
  comments_total = len(comments)
332
366
  links = _json_field("links", list) or []
367
+ remote_links = _json_field("remoteLinks", list) or []
333
368
 
334
369
  descriptor = {
335
370
  "kind": fields.get("kind"),
@@ -353,7 +388,8 @@ descriptor = {
353
388
  "comments": comments,
354
389
  "commentsTotal": comments_total,
355
390
  "links": links,
356
- "untrustedFields": ["title", "description", "parentDescription", "relatedIssues", "comments", "links"],
391
+ "remoteLinks": remote_links,
392
+ "untrustedFields": ["title", "description", "parentDescription", "relatedIssues", "comments", "links", "remoteLinks"],
357
393
  }
358
394
  extra = {}
359
395
  if fields.get("needsRepoPicker"):
@@ -657,7 +693,8 @@ sys.stdout.write(json.dumps(out[:cap], ensure_ascii=False))
657
693
  "url=https://$JIRA_HOST/browse/$KEY" "branchHint=$branch" \
658
694
  "priority=$priority" "resolution=$resolution" "fixVersions=$fixversions" \
659
695
  "parentKey=$parentkey" "parentDescription=$parentdesc" \
660
- "relatedIssues=$relatedjson" "comments=$commentsjson" "links=$linksjson"
696
+ "relatedIssues=$relatedjson" "comments=$commentsjson" "links=$linksjson" \
697
+ "remoteLinks=$(fetch_jira_remote_links "$KEY")"
661
698
  ;;
662
699
 
663
700
  jira-url)
@@ -804,6 +841,7 @@ out = {
804
841
  "relatedIssues": json.dumps(d.get("relatedIssues") or [], ensure_ascii=False),
805
842
  "comments": json.dumps({"items": comments, "total": d.get("commentsTotal") or len(comments)}, ensure_ascii=False),
806
843
  "links": json.dumps(d.get("links") or [], ensure_ascii=False),
844
+ "remoteLinks": json.dumps(d.get("remoteLinks") or [], ensure_ascii=False),
807
845
  }
808
846
  if d.get("needsRepoPicker"):
809
847
  out["needsRepoPicker"] = "1"