@mmerterden/multi-agent-pipeline 20.19.0 → 20.21.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 (46) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +25 -14
  3. package/README.tr.md +22 -11
  4. package/docs/ecosystem.md +14 -8
  5. package/docs/facts.json +7 -6
  6. package/docs/features.md +2 -1
  7. package/install/catalog-history.json +1 -1
  8. package/manifest.json +49 -46
  9. package/package.json +1 -1
  10. package/pipeline/commands/multi-agent/SKILL.md +1 -1
  11. package/pipeline/commands/multi-agent/route-on/SKILL.md +32 -8
  12. package/pipeline/commands/multi-agent/route-status/SKILL.md +12 -2
  13. package/pipeline/commands/multi-agent/setup/SKILL.md +2 -1
  14. package/pipeline/lib/model-dispatch.sh +72 -24
  15. package/pipeline/lib/outbound-gate.mjs +2 -0
  16. package/pipeline/lib/route-state.sh +118 -10
  17. package/pipeline/lib/toolkit-llm.sh +30 -0
  18. package/pipeline/lib/unattended-profile-check.mjs +23 -2
  19. package/pipeline/multi-agent-refs/analysis/evidence.md +3 -1
  20. package/pipeline/multi-agent-refs/cross-cli-contract.md +12 -3
  21. package/pipeline/multi-agent-refs/features/doctor.md +11 -0
  22. package/pipeline/multi-agent-refs/features/exploratory-testing.md +7 -0
  23. package/pipeline/multi-agent-refs/features/external-context-injection.md +1 -1
  24. package/pipeline/multi-agent-refs/features/free-models.md +111 -0
  25. package/pipeline/multi-agent-refs/features/model-fallback.md +21 -15
  26. package/pipeline/multi-agent-refs/features/unattended-security.md +7 -4
  27. package/pipeline/multi-agent-refs/refactor/toolkit-research.md +3 -1
  28. package/pipeline/multi-agent-refs/setup/free-models.md +22 -0
  29. package/pipeline/preferences-template.json +1 -0
  30. package/pipeline/schemas/prefs.schema.json +10 -1
  31. package/pipeline/schemas/route-config.schema.json +33 -8
  32. package/pipeline/schemas/secret-patterns.json +14 -0
  33. package/pipeline/schemas/unattended-profile.json +1 -1
  34. package/pipeline/scripts/bulk-read.sh +98 -12
  35. package/pipeline/scripts/cost-table.json +9 -1
  36. package/pipeline/scripts/doctor.mjs +100 -0
  37. package/pipeline/scripts/pre-commit-check.sh +1 -1
  38. package/pipeline/scripts/unattended_policy.py +28 -0
  39. package/pipeline/skills/.skill-manifest.json +8 -8
  40. package/pipeline/skills/shared/core/multi-agent/SKILL.md +2 -0
  41. package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +31 -7
  42. package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +12 -2
  43. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -0
  44. package/pipeline/skills/shared/external/e2e-testing/SKILL.md +39 -7
  45. package/pipeline/skills/shared/external/signal-community/SKILL.md +7 -1
  46. package/pipeline/skills/shared/external/web-testing/SKILL.md +57 -0
package/manifest.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.19.0",
4
- "commit": "6db35d97282cfe57fab9bb66a0da8bc6696aca99",
5
- "generatedAt": "2026-10-09T11:19:00.589Z",
3
+ "version": "20.21.0",
4
+ "commit": "e2d004d1ef1ce70ca42cd6083052d67ebff6c0c5",
5
+ "generatedAt": "2026-10-12T02:43:40.290Z",
6
6
  "algorithm": "sha256",
7
- "fileCount": 1357,
7
+ "fileCount": 1360,
8
8
  "files": {
9
- "CHANGELOG.md": "273977981d9581cd702e05f063930ef2cff624a76b687472cf0fef545e7adad3",
9
+ "CHANGELOG.md": "2c2cac1fda619f849e9002de180cc0f02fbe0ad9ec15f7392cebd434b80ea56f",
10
10
  "LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
11
- "README.md": "1336cf131fdc0dbab1dd8b90fcd5614bd19d27b92b4f91ab99c3108d61cb51e1",
12
- "README.tr.md": "7979b32e6c72aedc3a6affe85f33b2840e72f056a836e8546566d259b236ff29",
11
+ "README.md": "4cb9fee0aed62bd1467bdc09954e011612b0de6e7895d663f297bc8778e00b2e",
12
+ "README.tr.md": "f30edbc26e51e311077fbb5b64234e70285db92340e6dadc259cfd673f104326",
13
13
  "SECURITY.md": "0eb89553ddcfc56bfe9712315b55a6630ee2f579631aaeccd6ad24f8ac769a0b",
14
14
  "docs/FIGMA_PIPELINE.md": "ea01f3ea5fef1a9cb316040a2d416fcf87dd4f2a14b5497aa00994a0b5dc7e6a",
15
15
  "docs/adr/0001-three-model-triage.md": "79a6f1025469f607a5859add21854052d7433bc213f4aceee2e159b613eeb6a1",
@@ -31,10 +31,10 @@
31
31
  "docs/adr/README.md": "6ff58bc97dde4f1d94df60e4e221396a46906682b429ef275fd813cd288956e1",
32
32
  "docs/architecture.md": "04fe9630d51646962bc5b660b4c82a8a8199984dc14d993aaf5c147c4c8f6968",
33
33
  "docs/best-practices.md": "f8b75b0d38b5896a6a852bb30a1edddeb24dab8b5b7b1d9313290e1241c72024",
34
- "docs/ecosystem.md": "d504124f421748744599f6974ec71d52664affc47740665651cca5ddc17d0c71",
34
+ "docs/ecosystem.md": "44f7d2af1c3a655958bfc590d9d3ab10fcb2c9fe2f1558450f996dce0b45393a",
35
35
  "docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
36
- "docs/facts.json": "80256de517e282de9b5a6e135a270d45a0590ab77ef579fafd171d644ce917b0",
37
- "docs/features.md": "87ae163280fe05b36ff9f664b1bf9d98b697cc498731d47298751b439fa7a35c",
36
+ "docs/facts.json": "8f1a90b5ece44ac36d2a8a58777e63038cddac208a044b092eefd709882524a4",
37
+ "docs/features.md": "17e9971ba14b940a562c99df727150fadc8688d793a8dda4b8204482d51c30a4",
38
38
  "docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
39
39
  "docs/recovery-guide.md": "59a8f1b66b34cb9ff5507b3d54dac3b9915e184aa044d9c758d18cac818d510e",
40
40
  "docs/server-readiness.md": "ea21eee6a08c6fc0f2d1da8058acd5a50c556cea486d3acfe48fc0b23f4581fc",
@@ -52,7 +52,7 @@
52
52
  "install/_telemetry.mjs": "5433d753f909beed2c8789272bba05e245482c472f83d3444f58000c4c9a634b",
53
53
  "install/_unattended-profile.mjs": "e1ed82bde35d19105ee12c2a551eb778912b0e5c93ab227fd15c993098d98de0",
54
54
  "install/_xcode-skills.mjs": "1a7e20f1e6743324b941c5d3ecac9f94c65fff1534ffd9c63b39cbea4f8d101a",
55
- "install/catalog-history.json": "0d6a9cb4eb8d228e4bb5133910fa7b7a0a3d223195dfb6643a42f7d75afcd201",
55
+ "install/catalog-history.json": "39c2b310f9b7bd243141442aac55ab09d804ff085be794e0f4a43cce4ebb553c",
56
56
  "install/claude.mjs": "106ce353ebc19c8319d057ce342e1f989519510465c798399076b5f3d8727904",
57
57
  "install/codex.mjs": "08925fe9f3ecdf509b37f01105652c847475d20fcde2db0d679b9a7d663ca145",
58
58
  "install/copilot.mjs": "41dc394b8a3ae77cfd194ce0ca9bbcafce9bdce349f1f72eeb86569f993e15fe",
@@ -63,7 +63,7 @@
63
63
  "install/templates/multi-agent-autopilot-awake.plist.template": "ddd25c76c56fcbb38a89de8e35637372d70ace993d6bc487a88ca9cfb702fe1f",
64
64
  "install/templates/multi-agent-autopilot.plist.template": "122c8a61cd927edd99375d6e3da40f1d42bcceed5b6641785c8b28bb930bc77e",
65
65
  "install/unattended-profile-legacy.json": "f52e86b998956f09ad306b1735a6c10b58580d7082d8a55665a4c6bb15c3aa1f",
66
- "package.json": "c45fc8e778927b72b074d2692f8fd895186b1adc1c752cfa2e18ff41c6822d49",
66
+ "package.json": "72825278361b88c1b2742622d7ff2337a0f8c254467949052c6833793e3b1e89",
67
67
  "pipeline/agents/android-architect.md": "11fb74543cb0ebcf9525ca6654fe95d53da7229e0bf4a1149b31fd9005abc453",
68
68
  "pipeline/agents/backend-architect.md": "b02a606c301e4714131aed70ae6d16eeb77fbc819a001e2752cff2488d4246de",
69
69
  "pipeline/agents/bulk-reader.md": "6597052cd7d205bac2b1c7633f5232fe1a40730664a913b8eb77efd5a786dc25",
@@ -78,7 +78,7 @@
78
78
  "pipeline/commands/archive-guard.md": "16c5d3feaa91950402d62e66adc7fcf519a25d028a9303cb1e9c08af2765c04b",
79
79
  "pipeline/commands/deploy.md": "d20f95f3b1d2357c8c92f3047e8fe11eadf539ff13cab9b54f072f0ad697242a",
80
80
  "pipeline/commands/figma-to-swiftui.md": "cb198d279d36c6c34648ab9834433d00f81c9d427934cc1641c0e09f1878b0a6",
81
- "pipeline/commands/multi-agent/SKILL.md": "accb6db9000040e519071f8414810063b8193ce9f3c310d1e935246685f58ab6",
81
+ "pipeline/commands/multi-agent/SKILL.md": "20e3d9af469af2e347700d1ff4a600e44a69a18f15f374ba107c011e52a1c31a",
82
82
  "pipeline/commands/multi-agent/analysis-jira/SKILL.md": "c08647b18a56f86690b7db7223e73194b6511f403796252ae8c17cb4265184cd",
83
83
  "pipeline/commands/multi-agent/analysis-resolve/SKILL.md": "48b72f59775ebfaab916afaeb2609e5694c0f7a3ce2bf2689cf25623d9755682",
84
84
  "pipeline/commands/multi-agent/analysis/SKILL.md": "8b92d8832f72e195408d6e8e137956df3a4920074ccc0a4a130f36995aa0f6d9",
@@ -119,8 +119,8 @@
119
119
  "pipeline/commands/multi-agent/review-jira/SKILL.md": "db8ecc7ec8c7040aac9c71dcf40dae194a76f146ab227833b909b45580b5347a",
120
120
  "pipeline/commands/multi-agent/review/SKILL.md": "dcbf4370351ed8b52e4cc9bc1167a1c385ef2cbb2a3a634e94b8c23d0e6e1f8d",
121
121
  "pipeline/commands/multi-agent/route-off/SKILL.md": "aa8b677898b0efde1bd19c50383497da43a83b3b811e36f60695675d845c2de8",
122
- "pipeline/commands/multi-agent/route-on/SKILL.md": "3324430a81609719264a5118d6b4613a6af10e4a04c13a809ee367f1251e58f9",
123
- "pipeline/commands/multi-agent/route-status/SKILL.md": "00b1759c523b672c053bfb5f3c6af67ef0bd9b7ab473576017da22c6a73148ec",
122
+ "pipeline/commands/multi-agent/route-on/SKILL.md": "009668650f618daafe78db728f82ebac5b3af7fe34600283e18480b01ece572c",
123
+ "pipeline/commands/multi-agent/route-status/SKILL.md": "feeb453a21f56699df148ae944a6fa6c75dcb1a57061fef736e5c6a7273daf3c",
124
124
  "pipeline/commands/multi-agent/routines/SKILL.md": "570aa4c2349b0b4960d4a92ad94e1e63590a5e026032c2bb80155a89812a6cd3",
125
125
  "pipeline/commands/multi-agent/save/SKILL.md": "90c18995e4acd04564ee5041f72703426cee43aa940442e77d5e5d645ab1ad82",
126
126
  "pipeline/commands/multi-agent/scaffold/SKILL.md": "046d17dbf91719354fb7ba226996139b3a44a545fb9c956871b67ddfa795620a",
@@ -129,7 +129,7 @@
129
129
  "pipeline/commands/multi-agent/search/SKILL.md": "231f0dd266907423cc45feeadc4170852dc6fd45239e0bee3ee4e08d4d0f5958",
130
130
  "pipeline/commands/multi-agent/security-review/SKILL.md": "dfc2fad484c81169912062391f7ad97500ef113d95741902e5e18e7dd60b6da1",
131
131
  "pipeline/commands/multi-agent/serve/SKILL.md": "e931219d8be258a155a692d23c2b275c2e7e0a761b3f0354c943e26d2ce7b035",
132
- "pipeline/commands/multi-agent/setup/SKILL.md": "b6b4af9eac2ec9454dda08d960ab9ed559421e167f6726915b451e86fbb3f058",
132
+ "pipeline/commands/multi-agent/setup/SKILL.md": "2f55f1ab3d3c2052584e4d189bb3cbaf11f7096da0f55d618b5c7c28df08a71a",
133
133
  "pipeline/commands/multi-agent/stack/SKILL.md": "26ecb48b28b61250330edb26fdfd014e401992e4f1329c572766ba4e2dc6e35d",
134
134
  "pipeline/commands/multi-agent/status/SKILL.md": "b08338841a5282f8ae2494751001aa31cbf4829146a58ed2c395b1c062b48443",
135
135
  "pipeline/commands/multi-agent/steer/SKILL.md": "07e738c228ba328f717f86e97e7af207df090b16433e28e613d430c3ff0aee3e",
@@ -203,11 +203,11 @@
203
203
  "pipeline/lib/jira-publish.sh": "a32e6a682ae730ddd9c6df64b9ece1fb73c797111c63f5c247d7e733668da6b7",
204
204
  "pipeline/lib/json-file-lock.mjs": "6ff8d8d7b890fc549e07287eca1e8261b69f930ec523d08fb73786677aa0a45a",
205
205
  "pipeline/lib/md2confluence-v3.py": "3677ca47931e4b3d0fd2ce3e11299fc5f6d24799eb8332e37dd60b6c3c4653a2",
206
- "pipeline/lib/model-dispatch.sh": "7edd5c92d41ee3bf74972e0827ccbb671853d5410e7fb0af0b7cb020f95e05c5",
206
+ "pipeline/lib/model-dispatch.sh": "6500a5a7cb6a4c099cf1d01678bc9465a3d4eb1001e1f516dcc5eacd69577158",
207
207
  "pipeline/lib/model-rung.sh": "8cecb4d390f306270713bd162e311dee879995e393970405c9a8f9af11da1727",
208
208
  "pipeline/lib/multi-repo-pipeline.sh": "5cca6bcc4fb857448ddadb31add343952be89423a328267e56496c7b7cdc7710",
209
209
  "pipeline/lib/normalize-text.mjs": "c2eeed65ab85cdc27a12ecaadc45dfa00b49a7611250c9ad881b9e93882a51c1",
210
- "pipeline/lib/outbound-gate.mjs": "1ebc840e975f19b0da4699b3a37361ecc8a2be1a7a558d2b2fb39b8b64244011",
210
+ "pipeline/lib/outbound-gate.mjs": "669194caf8f3c2b469e836866bcb5aa979cde870924f5f783be62ee8d11f615d",
211
211
  "pipeline/lib/owned-path-gate.mjs": "28e75cf021ee43bf8c6369f72d27f426c79e8f4a4ab5ef99a009ac6399669319",
212
212
  "pipeline/lib/parse-complaints.sh": "d787ce870f141cf7f881da80fab4320814044554065e82e94632f061675b4d12",
213
213
  "pipeline/lib/phase-schema.mjs": "8fc0c909f129341295cd8ef2ea9e93cecd0ac493c3a8d83e25879f7ff522f1ab",
@@ -223,12 +223,13 @@
223
223
  "pipeline/lib/repo-profile.mjs": "4da219c9f72f3d74cfe42d9ff8685d4f53a8426c347cef85f0c2a737ac275133",
224
224
  "pipeline/lib/require-jq.sh": "a137b4df202515c2b89d5b93c3e28b04c73c8bc2f7c42be9ca9a22926e042918",
225
225
  "pipeline/lib/review-watch.sh": "89a53f79aab902a39ab8301cabe6eb54c8dc854af4d97c024c6b3b1f3ab38a75",
226
- "pipeline/lib/route-state.sh": "8d7555a79be96d824b533382214431436bb95f6d3d21c4f811800f4ab4963f86",
226
+ "pipeline/lib/route-state.sh": "be023c5d77dbbb46834475af3c772094cbfd73b9b2203c3ce7430b353a632c8a",
227
227
  "pipeline/lib/run-paths.sh": "2063a1d2f07d6caa391089c1e581fd870a4e9c3caa3b0c25a03f0b4fe4f6d070",
228
228
  "pipeline/lib/shadow-git.sh": "8a36d3942153c27c34762369f7c2716aadca489851e630d4a2a3f324af1e0b93",
229
229
  "pipeline/lib/stack-detect.sh": "53242b46482547f861625b9cbf44b65790849bce7e42be3bbd56abac67bc3489",
230
230
  "pipeline/lib/submodule-detector.sh": "e2c1a762876c5ae4756818e91f0f0fdd5897cac60decb979651124086e9cab97",
231
- "pipeline/lib/unattended-profile-check.mjs": "80a9005a43ed66d7fded8335e73a22c24483854ea532a6d503480512386d0c6d",
231
+ "pipeline/lib/toolkit-llm.sh": "81b89279f42e2795472d4f1ea5fb89baa8bc9d330d4eedaf56f2c6ea0e5a98f7",
232
+ "pipeline/lib/unattended-profile-check.mjs": "942d5dba815e90a5b6b961b330c6b2f58e012cf9441e593767d7236bdb594d09",
232
233
  "pipeline/lib/unattended-settings-location.mjs": "8db0d143ae79a4c81318994f5201cb805547938208f75dad70357eeb1e2d8745",
233
234
  "pipeline/lib/unattended.mjs": "391231047478c60765a9ce05ed7134bad14f6caf79a91930c24276eb15dcd8bf",
234
235
  "pipeline/lib/unattended.sh": "6160d784bb36b9eaa71fcd097d5b34c093534ced02442bdf16778d66a794dac2",
@@ -246,7 +247,7 @@
246
247
  "pipeline/multi-agent-refs/_repo-picker.md": "c325e86d00fa5e26893eeafcfae8c809f62e34e2ec643b4b364ac4c6f9caca45",
247
248
  "pipeline/multi-agent-refs/analysis-template-corporate.md": "ffccd6ba4b8db4e1492c5b569dbd14f1953dd8da6a3aa5825e7563506b820779",
248
249
  "pipeline/multi-agent-refs/analysis-template.md": "7062312f153aa9219a1ced9f0b60ac3583b4a2034d9d205cf7144ac9bf70ef17",
249
- "pipeline/multi-agent-refs/analysis/evidence.md": "1385d8c794018feec254831b2e325d11ba4fa697a7a987890047e735b34cce26",
250
+ "pipeline/multi-agent-refs/analysis/evidence.md": "cac132b0d11b7ebd754fa154678fe7d127ab0faf08decc5829086b8d3e538e4d",
250
251
  "pipeline/multi-agent-refs/analysis/intake.md": "f5fb9e16620acb63fa41d14165d04f0fa6f5f7e178250a6f2b5b6d921d176f53",
251
252
  "pipeline/multi-agent-refs/analysis/locked.md": "68c010154e57191075778dbaf81200e1085181acacefef160c76023e665bbe09",
252
253
  "pipeline/multi-agent-refs/analysis/redesign.md": "6314fc1e14e05166efbea4819d5b07adb838d0704bde61b4b69cef637f251d58",
@@ -271,7 +272,7 @@
271
272
  "pipeline/multi-agent-refs/component-dispatch.md": "2ab9094aa716397e4840cd48f736c3f4fc3e7c4f9ccc5c7c7c52f9e8b0a28fb5",
272
273
  "pipeline/multi-agent-refs/component-generation.md": "04fdb3fd0f1c129e1df8243184a3225cebd9c4f63511d6015eb356a92eda8891",
273
274
  "pipeline/multi-agent-refs/conventions-defaults.md": "608a05ec6332fc19ee12c0418fbf25165f80e6c06cfee9efed7f27fab185d97d",
274
- "pipeline/multi-agent-refs/cross-cli-contract.md": "401599612e561c4dedbeec4535e8b6aaa675e3d3c4f8b8c99c48e5f5f26381e6",
275
+ "pipeline/multi-agent-refs/cross-cli-contract.md": "431d0a6e4f0021937af3cc8a7f994cc04f86136d37c473f12cf919e886e2852b",
275
276
  "pipeline/multi-agent-refs/design-check/build-launch.md": "0ac64d07ef7389e22f7443f79c70a0a4f8bb87dcff6dbc94c63e034febe194ea",
276
277
  "pipeline/multi-agent-refs/design-check/compare.md": "2a0a89542a8bfefcfeaf1068dd91edb6947392f911f23e8b4857e4ace8fd15d7",
277
278
  "pipeline/multi-agent-refs/design-check/drive-capture.md": "dee4cd6230a401bc9e9dc82fc08109803dd2630c872c5b77a43cf17db062b05f",
@@ -292,12 +293,13 @@
292
293
  "pipeline/multi-agent-refs/features/cost-analysis.md": "42f1b90b41ef454f29ccfd3f93c959920f0e74cbca65e140695e9a30d6d90b87",
293
294
  "pipeline/multi-agent-refs/features/design-conformance.md": "a88ca595827cafa0c87c2facfcf9190dac69485e0596e5c198c6fc1613880452",
294
295
  "pipeline/multi-agent-refs/features/dev-critic.md": "08e01edef04b5ac216f8f43332126966d33da7b95625e47a8a6cd8ac105b263f",
295
- "pipeline/multi-agent-refs/features/doctor.md": "62ff75a085095b11818ffabb97bd76e62e58de6affd24f4eaf3d9f89f2fe1d66",
296
- "pipeline/multi-agent-refs/features/exploratory-testing.md": "3ee81dc5d42068b09b6e31c7649ee57ff73e30480237c8c4a0571c78d996928d",
297
- "pipeline/multi-agent-refs/features/external-context-injection.md": "fe0373f27c3e9aae660a55a3ba9a8163df329b4d95c727d6023b6b3afaf71d66",
296
+ "pipeline/multi-agent-refs/features/doctor.md": "f5faeb062470e1e3b5777c1f9eb586b7b11cd923be149c0bdca12001aeae77a7",
297
+ "pipeline/multi-agent-refs/features/exploratory-testing.md": "ac534fdb9e056b1a3782f9b9e38f0b8823f85e03cb85924513079179e318c45d",
298
+ "pipeline/multi-agent-refs/features/external-context-injection.md": "be9a0e904efd52535fa18a254567c9d0c3fc2ed12fcbc7a116f7879048303df6",
299
+ "pipeline/multi-agent-refs/features/free-models.md": "64afaba7e7a77575f4ed6a10905a01330a83f573907fb1a5d5356ae6c80999a0",
298
300
  "pipeline/multi-agent-refs/features/jira-context.md": "7d14802ed9ad1747e1a06dec26f22ff9e8959e03c47d7a018af45b8274aea47c",
299
301
  "pipeline/multi-agent-refs/features/maturity-followup.md": "e663e5bcf0b3b4d4d2a67f4516dbb9fb12520dfbdedb47a9c5f57c13a9a0633e",
300
- "pipeline/multi-agent-refs/features/model-fallback.md": "e6b9635124f3557013dfbfa71d414a9d9abe9ddc89f2228a5496086c8e3b0c72",
302
+ "pipeline/multi-agent-refs/features/model-fallback.md": "ba1eff2c9abc2b1fddbcac3c77bcdd6f5c2887ae5da4dfb862427256c107742a",
301
303
  "pipeline/multi-agent-refs/features/package-manager.md": "b9e52f798f5dcba43abff1fe5cad8d5d5374058c9a6847c993975c665acab05a",
302
304
  "pipeline/multi-agent-refs/features/phone-api.md": "817eeaffd3772b0a80811b0cd17dee3498f08f6eccf8fd7e56deb0bc24c1c434",
303
305
  "pipeline/multi-agent-refs/features/plan-critic.md": "d218c8599d893211480a412d46efdbba4aa48e3b18e8bb0ebfd66782f3b8ebc5",
@@ -318,7 +320,7 @@
318
320
  "pipeline/multi-agent-refs/features/stack-adapters.md": "71e23385da872ceed35263f4838f154800aa2da55bb6688ccca74726b70a3ef5",
319
321
  "pipeline/multi-agent-refs/features/stack-skill-routing.md": "1989f7f64be6c5ee0a42d8e9962aead7cd7472d795915ab953d89d9382f317e6",
320
322
  "pipeline/multi-agent-refs/features/unattended-gates.md": "46b516cac81a4eacf5d58bc3b1613e2266c26f1559be8dac060d1dc6b7d7ca01",
321
- "pipeline/multi-agent-refs/features/unattended-security.md": "18da3d51c175a42ab6312051a50b9d0339524dad2cc34e0350de62fbf0cece91",
323
+ "pipeline/multi-agent-refs/features/unattended-security.md": "f0f05ed17bbf26a50fa0f88d890f7ac3ccb8f78f169b9f759e997299fdeb5cac",
322
324
  "pipeline/multi-agent-refs/features/url-enrichment.md": "72e01a799d9fa54b56c762ba404a9f9236adbbf98320e395a96f6b0f5917e76b",
323
325
  "pipeline/multi-agent-refs/features/usage-reporting.md": "bd8643e804a70d86679e431368e2fff7a8fbe7b121837340e745b1dd221a428d",
324
326
  "pipeline/multi-agent-refs/features/valven.md": "13b1fb8a3815330f6f970181506ac117e0d1c42761e5a83454edbd0b383ee1a7",
@@ -358,13 +360,14 @@
358
360
  "pipeline/multi-agent-refs/refactor/drift.md": "4fd4144785c60fef18e0532035c33343eb01da884e36f89ef42bf89ed69171d3",
359
361
  "pipeline/multi-agent-refs/refactor/observations.md": "7a63a7043bf1c42a78296ab082b1cace67fbcdf0078fec736fffd9af3147b6ce",
360
362
  "pipeline/multi-agent-refs/refactor/run-errors.md": "4afc33fb591fabb2ec2bcbb74f0e5bae3645c6d507d756cf552ea45a4332bcd3",
361
- "pipeline/multi-agent-refs/refactor/toolkit-research.md": "1ef7f36345c5a7d2f6bb8529ef39e9e00865c6ca851aec942891bc2f8a57ea2b",
363
+ "pipeline/multi-agent-refs/refactor/toolkit-research.md": "94e52343111fd113b0464a3d390861aa7f44d45879e06bdd9e83591d9dfe0d12",
362
364
  "pipeline/multi-agent-refs/research/engine.md": "6e812c2637f563a6fa53ade6690dcc69fa819450a74405eb138883dd19cef0b2",
363
365
  "pipeline/multi-agent-refs/rules.md": "0b272d9ee2ba4a2fde28313f3084b8caa3d26f10e78d6099547a800e6c33534a",
364
366
  "pipeline/multi-agent-refs/setup/app-store-connect.md": "6230406b14615f7a412f95542c3c10ea8f4d2681d9a39f7910c9f5f8592184bd",
365
367
  "pipeline/multi-agent-refs/setup/discovery.md": "ebf6365102b336beba9904f0d01a6fadc0e734b2988919860ea9313908116a19",
366
368
  "pipeline/multi-agent-refs/setup/figma.md": "95405e7303c34c9f640fdea7e4aa84388ad57dd31ed5d0d19b0b1cb4f1a3572d",
367
369
  "pipeline/multi-agent-refs/setup/firebase.md": "a82031c67993762303a7ecd222e2574fbbf8d65dcc6b17e051a8dd53a9e31474",
370
+ "pipeline/multi-agent-refs/setup/free-models.md": "57b374a9732a98eea443103ac8de53ec614050c9bfb055aba1f02c32ade34b4a",
368
371
  "pipeline/multi-agent-refs/setup/google-play.md": "c60117fb8b13c709da93d379064aa0d56869bfde88fc5d5737996b7c1fc02ff7",
369
372
  "pipeline/multi-agent-refs/setup/identity-routing.md": "299870880a1d4f27986d09ce912288472d35cc333382301536ea25bc13289c70",
370
373
  "pipeline/multi-agent-refs/setup/repo-discovery.md": "06944e7b7677d998b6d169fbf5bebcac08c0f5eab808f9f1f3e5b6b2dc6a1f55",
@@ -384,7 +387,7 @@
384
387
  "pipeline/multi-agent-refs/web-guide.md": "714cba0d92fa45bf71fbff21bb2f09c88534ebf785b3a2ea96d18037e2e7f7f9",
385
388
  "pipeline/multi-agent-refs/website-deploy.md": "ce819c8b1ef8e8ec3257611379aaf0ab4678e08e0b58bd88c936e98cb8ead609",
386
389
  "pipeline/multi-agent-refs/wiki-capture.md": "bfd33cf097b966e61f80c9235d98c8139e4c9ede2e47c14b920a5b910cdc76d8",
387
- "pipeline/preferences-template.json": "8c74c0fa9f182a6c474aa7d4d2cfe6d67635ec0917c847f19ddae3095e6af944",
390
+ "pipeline/preferences-template.json": "f7e57c9fd4d776168a192d270f7ef68a71d0351df311b15d389dcffa4a98ca47",
388
391
  "pipeline/rules/app-store-guidelines.md": "cdfa4f8a2e0e642460bb72517f9f430638d6f09eb4a37898747cb8d55df03405",
389
392
  "pipeline/rules/code-review.md": "b18eec5cec31710fe76cdae6f03b53e7403d4f0406274691ab38a4771505a1c5",
390
393
  "pipeline/rules/code-style.md": "cd7d8fa872d1d640d143a573a0bdeeb7a9095f62a4d69741a11b4f0cee9d5a48",
@@ -452,7 +455,7 @@
452
455
  "pipeline/schemas/plan-todos.schema.json": "f1dcf8df338b29bbc1d874addd3408c0841a5f869c0b6075efd9242e3e8552d6",
453
456
  "pipeline/schemas/planning-output.schema.json": "bc6eda32ecd435cf84d846078f9d38347f8f741f8a427cff15913dd6c380d4b8",
454
457
  "pipeline/schemas/pr-request.schema.json": "ae75c4856349d62834802b1189af516bb6fb3d36646831b7ff2fa61d938afcd0",
455
- "pipeline/schemas/prefs.schema.json": "d603707539234845e4390cb33e4bfe9a116d7c6485dfcd3207caf786db36ccdc",
458
+ "pipeline/schemas/prefs.schema.json": "6beee7dbb67168528cb3d677cf4215c34c48fd97b5354017ef6f23de8662c482",
456
459
  "pipeline/schemas/repo-profile.schema.json": "1a74ef8330da9a26a5a70955f6f9cbb20eda54a8615efaf86c7993d420a7f04e",
457
460
  "pipeline/schemas/repos.schema.json": "a9bf56f25c66201c170912e3389bd73e4a3f61922410f83e31a6c6ba47aee861",
458
461
  "pipeline/schemas/research-output.schema.json": "54e3ba1b04fdc20fbaa84333b943a8ab95d1395c7b0e0aedc67929184cb49523",
@@ -460,14 +463,14 @@
460
463
  "pipeline/schemas/review-file-exclusions.json": "2e8c44b45d21d2c82fc95aa2bf76ad3fbf2d5c68180c7b2ebf89c4a926688d77",
461
464
  "pipeline/schemas/review-file-exclusions.schema.json": "d7310b4328ae14673f0971c9f823a697d3cafe054062a680ef0f020be1867ea3",
462
465
  "pipeline/schemas/reviewer-output.schema.json": "57512ef7ebeee39575937bfff266651685568ee17b326bbb8e1d9113296b4e46",
463
- "pipeline/schemas/route-config.schema.json": "6f606926c257b7ad3d2972e53d0b772714774140c473b9cb8c7cd9e52731020f",
466
+ "pipeline/schemas/route-config.schema.json": "cb6bd03a38956ad2fa1a7245d633918756f2b3d9be10abf0bdd929cd2328517f",
464
467
  "pipeline/schemas/run-log.schema.json": "3ac10faf0aafb05a8ae89e027b7923aee604cb4bf8daebdbbf4da8c31bc97a1d",
465
468
  "pipeline/schemas/run-questions.json": "7928448ac408b8e90df2e24070c7d433691fe861315adb80ea754c7d21db7688",
466
469
  "pipeline/schemas/run-questions.schema.json": "d4b5b4c3e297164182dac7e86ba05e350f41085a7f024c6c7adefb0be42c4a8e",
467
470
  "pipeline/schemas/runs-index.schema.json": "ad7d598f39a599031f89339a955fc939624fc127a635c70f5cc4667b9395124f",
468
471
  "pipeline/schemas/scaffold-manifest.schema.json": "4ee8dfacf646a96c62438234bedab9d286d80d1a6d3d4984361d91a7411ce171",
469
472
  "pipeline/schemas/scope-check.schema.json": "f96973c59372b36b7d68b9ac4b03490e7da8d54acf29a35947f5f610e82b98ea",
470
- "pipeline/schemas/secret-patterns.json": "d9a7bec7b2ba704b73f2302c3498874c6298cde69bde0f181932c282d3fe0b0e",
473
+ "pipeline/schemas/secret-patterns.json": "4ae313b7f2529252b71be8b1cbee9bfd954cad6a9d0f30248a2593d1212a4c08",
471
474
  "pipeline/schemas/secret-patterns.schema.json": "faf32274ca4999217bb725d7b16f455143f1775fa72768a02ba87783fbec3d27",
472
475
  "pipeline/schemas/security-finding.schema.json": "623d965edf2de8ab0f2a49c33fa5be507d479d5bc3067ccd72cdf90a480b498a",
473
476
  "pipeline/schemas/skill-observation.schema.json": "05f16c6e5055ef99a102b12b578ba841251267d41dd7343f8ab66cd8070180ff",
@@ -480,7 +483,7 @@
480
483
  "pipeline/schemas/triage-output.schema.json": "60e329a22cea0f0ed9fa1e8e78f9b512ef283277346b08a194ad491e0bad0995",
481
484
  "pipeline/schemas/unattended-policy.json": "64ca8d36c29766af2f9e94435f017650799ee62a8ad04c5d5cf802b75550073b",
482
485
  "pipeline/schemas/unattended-policy.schema.json": "d1aab1b49541ca77c3ca5ee69158878b61ea47a5bfdfe06cd548c3315ffd09c4",
483
- "pipeline/schemas/unattended-profile.json": "05bc095b6328ff77b7bee8b008becf9aa20f1dabeab3b0fc174b97cad421e23b",
486
+ "pipeline/schemas/unattended-profile.json": "25ca36388640a22b47b08f01f515b192ee4210eb820c85fd3d0485e0247afd8c",
484
487
  "pipeline/schemas/unattended-profile.schema.json": "a9c0979f0d0742826e410fdbfe1ae1c4a56b05b4e638eec42d4c276d6f48f701",
485
488
  "pipeline/schemas/worktrees.schema.json": "4e15c413c00811814eee734d86734ad9e1d34a37737f7df641b389ce5d8d134b",
486
489
  "pipeline/scripts/README.md": "4cdf7054cddbe5cdcb08460f68782f2347a26c8c343d8ef8418714464672b36c",
@@ -527,7 +530,7 @@
527
530
  "pipeline/scripts/build-references.mjs": "724fe25d9d1bd9d2a0f53abd7c0e13e9bced22126cb5562d0d285f63ff5eeecb",
528
531
  "pipeline/scripts/build-skills-index.mjs": "35b7ae8299db6a554064096ea34b476cb231b5f15bbf0dd86dd3b128399e9390",
529
532
  "pipeline/scripts/build-stack-plugins.mjs": "bd7b7f9a3983d4daaf5e4468abc79c0f195877a02a390dcccfb529d79e8c39c7",
530
- "pipeline/scripts/bulk-read.sh": "f5f55e229b00b849a84e6b6015e3bba1f0cb59dba5fb011857d1ceaafe7ad614",
533
+ "pipeline/scripts/bulk-read.sh": "eb13ef378768e98a7624dc14c83e0cdc83ac01476567bcca16e390368f5706d0",
531
534
  "pipeline/scripts/capture-evidence.sh": "2f7657786e07c17c302b76d4ea6bafe391b65be3dd891901b78019af3a7e38e1",
532
535
  "pipeline/scripts/capture-flush.sh": "291da92a3a708bf2e8e0884d1d6e0a676da83650ee723f7a499a6549e6cd2adc",
533
536
  "pipeline/scripts/capture-resume.sh": "4934ff7961e2b8eabcd154ca06dd53c1d4aab03986a39dff287b8c16f5cea7ee",
@@ -547,12 +550,12 @@
547
550
  "pipeline/scripts/cost-analyze.mjs": "ba6f402bd7b08359b8eb502b6502d3c86a70dcf50b4a8f5829bd771cade5cd43",
548
551
  "pipeline/scripts/cost-budget-check.mjs": "0edc96feccc3fe07f36eefe3b52b611e43ef94178fd257f0f4537a024e2754cd",
549
552
  "pipeline/scripts/cost-lib.sh": "64eeb1d4515b802cc9136ef520f93b7a81aa9cc1c1065e81fe522fccf7fd2cb5",
550
- "pipeline/scripts/cost-table.json": "cc9f762cf9d1e7ddf1f233c9346bacf2e3b72475b6567d7ef4217a69efdd24f9",
553
+ "pipeline/scripts/cost-table.json": "934fcf2682f5998587f6d5337219be1c836aa68bd51fc5fda95e4306465ddfe8",
551
554
  "pipeline/scripts/council-view.mjs": "f904aa3a71fe31f7b02a00c603186e251f66a652950d285e934b591571db56cc",
552
555
  "pipeline/scripts/crush-json.mjs": "303382670f8f170c8c6710202853a2de2915625813cd157185f9be4e2b27258e",
553
556
  "pipeline/scripts/diff-explain.mjs": "194d0635639607cb1af3de064453162e01c0d59dc0c2e187d21d45bae3bc559c",
554
557
  "pipeline/scripts/diff-risk-score.mjs": "b3e8da42fea1258162e40f4eb7809074831339b7563874527f7e825f7aa795ca",
555
- "pipeline/scripts/doctor.mjs": "a86a39b3eab13158166f44133c1fdc1fda3d4cc7ad0122f3dc47e3cfae2f5ad1",
558
+ "pipeline/scripts/doctor.mjs": "4905cedb5a71e9890f6b9994d6097d840fccc4afcff2b4fbdc69aefb8017a2cb",
556
559
  "pipeline/scripts/estimate.mjs": "9847e412dd74ac19a5c3b84bed343f79d25f256022b2df98e3eb1296db45ed3a",
557
560
  "pipeline/scripts/evidence-gate.mjs": "347a8d3fa1d17d996de345585c216bd7071f4c1d687999daf6e48881720ea5df",
558
561
  "pipeline/scripts/explore-findings.mjs": "997cca3ef42a170ff51ee2c382263eff8653affd6bb675877b94b8bba782e717",
@@ -610,7 +613,7 @@
610
613
  "pipeline/scripts/plugin-refresh.sh": "687a33199ad963616ab537e32210ec8c967e76ecc42f494ee8a1dc9fe947fc30",
611
614
  "pipeline/scripts/pr-request.mjs": "e6f4ded2366c6599bb345b3011ecc771e13b8a1561afa4c9a50bca4edff17456",
612
615
  "pipeline/scripts/pr-timeline.mjs": "6a12df12a72f3440796569d3264edb0b3e105be6e4f2e26e958a5a0da340d05c",
613
- "pipeline/scripts/pre-commit-check.sh": "08f72728c6ca5266aac1c91f12af1dccf898ae315549511611657e7b034efc96",
616
+ "pipeline/scripts/pre-commit-check.sh": "46081c47891c46e4aa96d7df58222d06d95087bce98bb2f543fb15a63322a52a",
614
617
  "pipeline/scripts/pre-push-check.sh": "4a1554a625df4745a829c0df294db7ce450fbe44fe624e562008e9912be78925",
615
618
  "pipeline/scripts/probe-evidence-capability.sh": "ac74252eed6b773fdbc7ec475a63606925f1ba7b5e7c6f911329f46fd920eae7",
616
619
  "pipeline/scripts/probe-store-key.mjs": "b46dfcf444c95d0bb61de36823314945dacaaacb8f35841d153dcfcde8e4df1a",
@@ -662,7 +665,7 @@
662
665
  "pipeline/scripts/token-budget-report.mjs": "508bbc659df478c535c0ecdd3f8611372af8fef0b0932c7b19a247af2b2b9265",
663
666
  "pipeline/scripts/triage-memory.mjs": "2d8541145f1749593ae5728fb4c9eb3001484edb5e4d37be473aeec34d1dbe7c",
664
667
  "pipeline/scripts/ui-tree-dumper.swift": "a09e42ef069eafa08c05afd8333e05b754ef6a7d8b9687712039b0f2c9801273",
665
- "pipeline/scripts/unattended_policy.py": "f1df6470c798bd7d4bc9f8338eaabf98bdcfab00198d98b7e2e654aab84b709c",
668
+ "pipeline/scripts/unattended_policy.py": "851f3982bf8a5d12415caf724146184c50801f9ee2e3654ba2ded593351f71af",
666
669
  "pipeline/scripts/uninstall.mjs": "ba11803733cf3bfcc966f0d4aa2cc5fbed000cb37a251005f067ce0289306233",
667
670
  "pipeline/scripts/update-check.sh": "9c00647e7ca4249414b2e5af08f61705ab5bd2106b6f66ae8ebce8aa143dc957",
668
671
  "pipeline/scripts/update-issue-progress.sh": "ccfef87743e91272e009e396ac07461d2784b2fa84a06c802a582526eeeb9ed9",
@@ -691,7 +694,7 @@
691
694
  "pipeline/scripts/worktrees.mjs": "90dfd09b70fffe9b56c331a4ae2692cc248f4898f4ee6aee4239ef0b20888a90",
692
695
  "pipeline/scripts/write-state.mjs": "e1198bf970eace07d3eff22b394808a526e473df65d3d58aa2d5a12cfdac8b49",
693
696
  "pipeline/scripts/write-store-config.mjs": "b994a061f6febb2ca3d396074d8b51d2c1c1f991d3072d321703380da3639a56",
694
- "pipeline/skills/.skill-manifest.json": "48f84aac9947e30a91e65ca97ff41b327b43af8b3643883f2a19e0169bfc89b9",
697
+ "pipeline/skills/.skill-manifest.json": "7bc20de35075819d6c43d5bf84376ccfe2b0db1dd06a9efe1d307780ebef01ba",
695
698
  "pipeline/skills/.skills-index.json": "b2917fa44e273b939549f1c3ab3dd81c26ba8168772bc7644c9fa076116d8a4c",
696
699
  "pipeline/skills/shared/README.md": "928fe4292be729c3b7d7d0898cade8be0dfa868f208e0c6d1fe7b2c6bd6223c5",
697
700
  "pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "7239fef717ea45b79276bfcc2c3903acd57950b6e00dd6a2a66399c4b09cbd51",
@@ -738,8 +741,8 @@
738
741
  "pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md": "a17a1f11fcf6c75640452e53ddddaaf906ff9e3ebfeda73e333f44db02515352",
739
742
  "pipeline/skills/shared/core/multi-agent-review/SKILL.md": "2b6934d6086a467bdf145b326061ab4b83d5479bfb1a2fb36420ff8012a02e5d",
740
743
  "pipeline/skills/shared/core/multi-agent-route-off/SKILL.md": "a30c0b9b73d5101c70c147599273019cf357969c37bc799017a9f6de4b8686a8",
741
- "pipeline/skills/shared/core/multi-agent-route-on/SKILL.md": "a807767460b09455087d48a7dd45036be788f67997475360acab29f2422f425b",
742
- "pipeline/skills/shared/core/multi-agent-route-status/SKILL.md": "b473b670b3f8535b295752eb5aed8b01cba8d1ed6763ae4d80d9cc2dbb1f7794",
744
+ "pipeline/skills/shared/core/multi-agent-route-on/SKILL.md": "97c76d711454e6bc9edfd47344bbeab7f73cf72c116cca92cffacdcda7fe96b1",
745
+ "pipeline/skills/shared/core/multi-agent-route-status/SKILL.md": "869689dbf84edece67168a892a61b51459ff6c15cbf7dafe40c2b774f875b9f0",
743
746
  "pipeline/skills/shared/core/multi-agent-routines/SKILL.md": "564f06a2754e8ad2ddab9996133680c1a91bf7ecba5bd860ee5afcdde12ca0a5",
744
747
  "pipeline/skills/shared/core/multi-agent-save/SKILL.md": "6da2cb991c3a15e538f2d618383a23389183756be402a995d58f813667a2f986",
745
748
  "pipeline/skills/shared/core/multi-agent-scaffold/SKILL.md": "892415937ed2094d470f297f742e35e2684ad58ef262028873d8535210065dc0",
@@ -748,7 +751,7 @@
748
751
  "pipeline/skills/shared/core/multi-agent-search/SKILL.md": "5f5177cd28cbb13583441fb98402cfa251c78e69de693540584e9a1dcc7692cb",
749
752
  "pipeline/skills/shared/core/multi-agent-security-review/SKILL.md": "3c483d5942f2c2b81c0537d4db0b36804c13cabd66fd7fae2972d07a8f239f69",
750
753
  "pipeline/skills/shared/core/multi-agent-serve/SKILL.md": "90e4dd7225e10e670118ed05d0c8a9e346112c4bbbdb24a7fe7c5c334a83e848",
751
- "pipeline/skills/shared/core/multi-agent-setup/SKILL.md": "427df811e5130da1ab6e23ff78202eb9134fb76bcd601924fba5668cbd630158",
754
+ "pipeline/skills/shared/core/multi-agent-setup/SKILL.md": "e3523960d5d178125302e5ceeb865902d7b12ea5d615670cddeb4d542fa48035",
752
755
  "pipeline/skills/shared/core/multi-agent-stack/SKILL.md": "ac964cd00dd6ed06512530489d867efbc51d7d7614265f9aa022679325d5defe",
753
756
  "pipeline/skills/shared/core/multi-agent-status/SKILL.md": "444c3773b52e6786e40bc67c8833ea6aecadbcd4459b01127b4aff152157040a",
754
757
  "pipeline/skills/shared/core/multi-agent-steer/SKILL.md": "20f332bd2fe2745da5341f8d8187211fc47c06b4b5f5031e217affee0282ddb5",
@@ -762,7 +765,7 @@
762
765
  "pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md": "6bfd1569117bfbacb485d831c0b7f262ebb3a2f9471f6177a646f5ce32c06a25",
763
766
  "pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md": "9dccf78ffc2fb014d83f67d683d395f56f4fad8b5a36b9aa84e6cbd075b58818",
764
767
  "pipeline/skills/shared/core/multi-agent-update/SKILL.md": "013317432263490a01d081b657928b977012afb78f75a64d278d94d2daa8e894",
765
- "pipeline/skills/shared/core/multi-agent/SKILL.md": "3dd44ccc00e41c09e59ad223900a391f80158bd3f69e45d67c684285bc42418d",
768
+ "pipeline/skills/shared/core/multi-agent/SKILL.md": "a39f712426638e7955db9171c950be720f11c861621884e628c81a0b6a49de5d",
766
769
  "pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md": "400842e4653f038fad22509fe3f3d152151120758f5f9b170e6dba59afaf4a48",
767
770
  "pipeline/skills/shared/external/NOTICE-dimillian-skills.md": "f9c3d783fd3563418c18291b90899251e890fd3fa8ee353c8c1fbbe61078526e",
768
771
  "pipeline/skills/shared/external/NOTICE-paul-hudson-skills.md": "bca5fe8779df70fb0f234483d65ff3562c67521e719b69b22aac260803b75244",
@@ -884,7 +887,7 @@
884
887
  "pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md": "84b0d44b6a11daaae8383c7662e71dd2cd56d92bf52bde7537385beb66eb418c",
885
888
  "pipeline/skills/shared/external/docker-expert/SKILL.md": "b3db936caa89a2c249ae64896cfb4c0a72ac45064cc081d6f99c78efe6a1f9e9",
886
889
  "pipeline/skills/shared/external/docker-expert/references/patterns.md": "1d2052123d6c1c0379f4ebf5d153d649ca22807b7c9c70b88b0dba9c249eecc6",
887
- "pipeline/skills/shared/external/e2e-testing/SKILL.md": "e76dac61b973a5c509a9902a15a7c18ed226d838406fd0f8b513f24b45ea4025",
890
+ "pipeline/skills/shared/external/e2e-testing/SKILL.md": "6d5fa81328d8b4c8ccc8e273487b7f27e6100f7192b2b3bdd2387b333a119659",
888
891
  "pipeline/skills/shared/external/e2e-testing/references/document-fixtures.md": "0a6939374affdf5f0ed40ed91ea28c66f23bac027a4431ac956baeb9de850c89",
889
892
  "pipeline/skills/shared/external/energykit/SKILL.md": "a557acc6e324f4b841f411cfb0d9040094c8d2934aefe5cb4eecd5a2a6b0e402",
890
893
  "pipeline/skills/shared/external/energykit/evals/evals.json": "e2adae145af422785b57c96dc5a0789d5d99fdba9b767d2a79397d67334ccefc",
@@ -1094,7 +1097,7 @@
1094
1097
  "pipeline/skills/shared/external/shareplay-activities/SKILL.md": "63205693c5fbc9ec3b06e04a823deaa34c69e4fa01c0a1eb3419c2d1388c3e29",
1095
1098
  "pipeline/skills/shared/external/shareplay-activities/evals/evals.json": "3305323af4c7b60ece654487aeb568772d9e7a7b3372ed145da4d65eb561d59a",
1096
1099
  "pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md": "8f0ead5b253d0e79ad543718a56b15749848b6949684334f22203e3afbfb7ff3",
1097
- "pipeline/skills/shared/external/signal-community/SKILL.md": "0660107c2bf0e65847e72708a196b672ae7b9469bd98ec70793c988351024298",
1100
+ "pipeline/skills/shared/external/signal-community/SKILL.md": "66b584551428d9078c88ef5d1164c77a1985accaebdc373eb4bfcdd5e65ed0f1",
1098
1101
  "pipeline/skills/shared/external/skill-creator/SKILL.md": "f80c5f74dc285240d0213a4e6e0c178a9f38142f0eb7d6956d7c89c061009b71",
1099
1102
  "pipeline/skills/shared/external/skill-creator/audit.md": "65499fe230f872deff1611a1d54fd0ecc4a57dcb59a04fb59cce729155afd167",
1100
1103
  "pipeline/skills/shared/external/skill-creator/checklist.md": "de558dc9b08ab8480e19a7eb1c3b3f880dcf08ba727ed20d782ea443f8fd403e",
@@ -1331,7 +1334,7 @@
1331
1334
  "pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md": "81a54949c6abde31019100f85876c69488e5bf80deb77ddbc8504955a87a82a3",
1332
1335
  "pipeline/skills/shared/external/web-accessibility/SKILL.md": "a1cd782292982a3c37fd8d1eedaae85f860886f492b2666b73735c6261025594",
1333
1336
  "pipeline/skills/shared/external/web-performance/SKILL.md": "b9983bb39f9a65daad5aca4fb97c88ecbd7c0639b39023dc5c7c6784c4c1c868",
1334
- "pipeline/skills/shared/external/web-testing/SKILL.md": "3120db537a687adfbf396e500f4e146880e4b1a00ab339f85ab526853c947447",
1337
+ "pipeline/skills/shared/external/web-testing/SKILL.md": "28a088947d4c9ab216ae92131c42a700966d8b531047fa5a0af5bfa870376e11",
1335
1338
  "pipeline/skills/shared/external/widgetkit/SKILL.md": "d4bce1c362e57616b252304414cfd01354586c7ed0be6c22f61efcc0980e26b0",
1336
1339
  "pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md": "b04ca376ecc86ab17a9a6e86c081b6c7720cb6c614c091ec0ef1d41ba2d30a16",
1337
1340
  "pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md": "3554d7b310fadfb1afd48793d01f08d91e47a596af0001bd575b61e21e29c19f",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "20.19.0",
3
+ "version": "20.21.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",
@@ -157,7 +157,7 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
157
157
  - `$HOME/.claude/agents/backend-architect.md` - Backend/API architecture review (`preferredModel: fable`)
158
158
  - `$HOME/.claude/agents/security-auditor.md` - Security audit (`preferredModel: opus`)
159
159
 
160
- **Per-persona model routing:** Before each Agent dispatch, the orchestrator reads `preferredModel` from the persona file and exports `CLAUDE_CODE_SUBAGENT_MODEL` (Claude Code) / passes `--model` (Copilot CLI). Precedence: per-dispatch `PHASE_MODEL_OVERRIDE` > a matching `prefs.global.modelRouting` rule (v19.0.0+, consulted only when the phase named no model, and only inside the Anthropic ladder because subagent dispatch belongs to the host) > persona `preferredModel` > `fable` (falls back per `$HOME/.claude/multi-agent-refs/features/model-fallback.md`). Full contract: `skills/shared/core/multi-agent/SKILL.md#agent-dispatch--per-persona-model-routing-v610`.
160
+ **Per-persona model routing:** Before each Agent dispatch, the orchestrator reads `preferredModel` from the persona file and exports `CLAUDE_CODE_SUBAGENT_MODEL` (Claude Code) / passes `--model` (Copilot CLI). Precedence: per-dispatch `PHASE_MODEL_OVERRIDE` > a matching `prefs.global.modelRouting` rule (v19.0.0+, consulted only when the phase named no model, and only inside the Anthropic ladder because subagent dispatch belongs to the host) > persona `preferredModel` > `fable` (falls back per `$HOME/.claude/multi-agent-refs/features/model-fallback.md`). Full contract: `skills/shared/core/multi-agent/SKILL.md#agent-dispatch--per-persona-model-routing-v610`. Simple text tasks (summaries, extraction, labels, drafts) ask `model-dispatch.sh delegate --default host` first and use `llm_delegate` on `free`: `$HOME/.claude/multi-agent-refs/features/free-models.md`.
161
161
 
162
162
  ---
163
163
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  description: "Enable policy-driven model routing: pick a strategy, a scope, and the rules that say which rung a call lands on. Use when asked to turn model routing on."
3
3
  description-tr: "Politika güdümlü model yönlendirmesini açar: strateji, kapsam ve hangi çağrının hangi basamağa düşeceğini söyleyen kuralları sorar."
4
- argument-hint: "[--strategy=manual|task-fit|cost-ceiling] [--scope=subagent,bulk-read,research]"
5
- parameters: [{"name":"--strategy","kind":"enum","enum":["manual","task-fit","cost-ceiling"]},{"name":"--scope","kind":"enum","repeat":true,"enum":["subagent","bulk-read","research"]}]
4
+ argument-hint: "[--free [--allow-training] | --no-free] [--strategy=manual|task-fit|cost-ceiling] [--scope=subagent,bulk-read,delegate,research]"
5
+ parameters: [{"name":"--free","kind":"flag"},{"name":"--allow-training","kind":"flag"},{"name":"--no-free","kind":"flag"},{"name":"--strategy","kind":"enum","enum":["manual","task-fit","cost-ceiling"]},{"name":"--scope","kind":"enum","repeat":true,"enum":["subagent","bulk-read","delegate","research"]}]
6
6
  gui: form
7
7
  destructive: false
8
8
  confirm: none
@@ -25,7 +25,8 @@ Routing ships **off**. This is the command that turns it on, and it writes to
25
25
  ```
26
26
 
27
27
  Ordered, first match wins. `when` matches on `persona`, `phase` (0..5) or
28
- `taskKind`; `prefer` lists rungs in descending preference.
28
+ `taskKind`; `prefer` lists rungs in descending preference. `free` is a rung too,
29
+ honoured only at `bulk-read` and `delegate` and only while `--free` is on.
29
30
 
30
31
  **Rung names are the contract; model ids are not.** `opus` is a rung here and a
31
32
  model id in `cost-table.json`, and the second can change without anyone editing
@@ -38,18 +39,41 @@ Set rules with:
38
39
  bash "$HOME/.claude/lib/route-state.sh" set-rules path/to/rules.json
39
40
  ```
40
41
 
42
+ ## Free models: `--free`
43
+
44
+ ```bash
45
+ bash "$HOME/.claude/lib/route-state.sh" on --free
46
+ ```
47
+
48
+ Layer 2. Simple text work the pipeline does itself - a large-file read, a log or
49
+ document summary, field extraction, a label, a translation or commit-body draft -
50
+ goes to the multi-agent-toolkit's verified free-model chain first. Every answer
51
+ is checked against its source before it is used; when none passes, Claude does
52
+ the task as before. Decisions, plans, code, reviews and triage never leave Claude.
53
+
54
+ `--free` turns on `modelRouting.free`, adds `bulk-read` and `delegate` to the
55
+ scope, and lists which providers are usable. With none, it says exactly which key
56
+ to add: one free Groq key is enough. `--allow-training` also admits free tiers
57
+ that may train on prompts; leave it off for corporate code and tickets.
58
+ `--no-free` turns only the free chain off. Full contract, the task list for
59
+ development and analysis, and unattended behaviour:
60
+ `$HOME/.claude/multi-agent-refs/features/free-models.md`.
61
+
41
62
  ## Strategies
42
63
 
43
64
  | Strategy | What it does |
44
65
  |---|---|
45
66
  | `manual` | only the explicit rules apply, nothing is inferred. The default, because a router that guesses is a router nobody can predict |
46
- | `task-fit` | a rule may match on `taskKind`, and the cheapest rung clearing it is chosen |
47
- | `cost-ceiling` | rungs downgrade as the run approaches `budgetCeilingUsd` |
67
+ | `task-fit` | the matched rule's rungs are tried cheapest first (cost-table prices, `free` first) |
68
+ | `cost-ceiling` | the rule's order holds until the run reaches the warn threshold of `budgetCeilingUsd`, then the cheapest rung is tried first |
69
+
70
+ `set-rules` checks every rule against the schema and the cost table and writes
71
+ nothing if one fails: an unknown rung, a phase outside 0-5, an unknown key.
48
72
 
49
73
  ## Scope, and the value that is not in it
50
74
 
51
75
  `scope` names the call sites routing may act on: `subagent`, `bulk-read`,
52
- `research`. Every one of them is a call **this pipeline makes itself**.
76
+ `delegate`, `research`. Every one of them is a call **this pipeline makes itself**.
53
77
 
54
78
  There is no `host-session` value, and that absence is enforced by that schema
55
79
  rather than written as advice. Routing a host session means rewriting the CLI's
@@ -62,8 +86,8 @@ Passing `--scope=host-session` is refused with that reason, not ignored.
62
86
 
63
87
  On Claude Code a subagent cannot be dispatched to a non-Anthropic model: subagent
64
88
  dispatch belongs to the host, not to us. So Phase 1, 2 and 3 personas stay inside
65
- the Anthropic ladder no matter what the rules say, and external providers apply
66
- only at `bulk-read` and `research`, where the pipeline makes the HTTP call.
89
+ the Anthropic ladder no matter what the rules say, and the `free` rung applies
90
+ only at `bulk-read` and `delegate`, where the pipeline makes the call itself.
67
91
 
68
92
  This is printed by `route-status` on every invocation instead of living in a doc,
69
93
  because the question it answers - "routing is on, why is the reviewer still on
@@ -28,13 +28,23 @@ A disabled router with rules is deliberately not reported as "off" alone: that
28
28
  reads as "unconfigured" and sends the user through `route-on`'s questions a
29
29
  second time.
30
30
 
31
+ ## Free models and what they saved
32
+
33
+ With `route-on --free`, status also prints `free: true` with its data policy,
34
+ where the free chain answers first (`bulk-read`, `delegate`), and the last seven
35
+ days from the toolkit's usage log: tasks answered free and verified, answers
36
+ served from cache, tasks handed back to Claude, and the input and output tokens
37
+ kept off Claude with an estimated saving at haiku rates. The estimate is labelled
38
+ as one: it prices the tokens at the rung the task would otherwise have used.
39
+
31
40
  ## The limit, printed every time
32
41
 
33
42
  On Claude Code a subagent cannot be sent to a non-Anthropic model. Subagent
34
43
  dispatch belongs to the host; the pipeline asks for a persona and the host
35
44
  decides what answers. So Phase 1, 2 and 3 personas stay inside the Anthropic
36
- ladder whatever the rules say, and an external provider is only reachable where
37
- the pipeline makes the HTTP call itself - `bulk-read.sh` and `research_ask`.
45
+ ladder whatever the rules say, and a free model answers only where the pipeline
46
+ makes the call itself - `bulk-read.sh` and the `delegate` call site - and only
47
+ after the toolkit verified its answer against the source.
38
48
 
39
49
  This paragraph is output, not documentation, because the alternative is the
40
50
  question arriving later as "routing is on but the reviewer is still on Opus, is
@@ -209,6 +209,7 @@ The Step 2 discovery summary is never the end of setup. Immediately after showin
209
209
  10. `jenkins`
210
210
  11. App Store Connect block (Step 3b; only when the target repo is iOS)
211
211
  12. Google Play block (Step 3d; only when the target repo is Android)
212
+ 13. Free-model keys `llm-<id>` (only after `route-on --free`): `$HOME/.claude/multi-agent-refs/setup/free-models.md`
212
213
 
213
214
  Loop rules:
214
215
 
@@ -377,7 +378,7 @@ Standard key names are a convention for NEW tokens; discovery may find existing
377
378
 
378
379
  ### Inline Token Save Pattern
379
380
 
380
- All tokens go through `~/.claude/lib/credential-store.sh`, which auto-delegates to the deterministic Python helper (`~/.claude/scripts/keychain.py`). The Python path writes both `-l` (label) and `-s` (service) attributes so existing manually-added entries with either convention remain findable.
381
+ All tokens go through `~/.claude/lib/credential-store.sh` (Python helper and label/service attributes: see "Setup" above).
381
382
 
382
383
  ```bash
383
384
  # PAT / API Key / JSON contents (from clipboard)