wicked-garden 12.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 (640) hide show
  1. package/.claude-plugin/archetypes.json +166 -0
  2. package/.claude-plugin/components.json +75 -0
  3. package/.claude-plugin/marketplace.json +15 -0
  4. package/.claude-plugin/plugin.json +174 -0
  5. package/.claude-plugin/specialist.json +48 -0
  6. package/.claude-plugin/stack-registry.json +96 -0
  7. package/AGENTS.md +13 -0
  8. package/CHANGELOG.md +712 -0
  9. package/CONTRIBUTING.md +99 -0
  10. package/ETHOS.md +83 -0
  11. package/LICENSE +21 -0
  12. package/README.md +115 -0
  13. package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
  14. package/agents/agentic/architect.md +449 -0
  15. package/agents/agentic/performance-analyst.md +702 -0
  16. package/agents/agentic/safety-reviewer.md +662 -0
  17. package/agents/crew/implementer.md +163 -0
  18. package/agents/crew/researcher.md +94 -0
  19. package/agents/crew/reviewer.md +184 -0
  20. package/agents/data/data-engineer.md +227 -0
  21. package/agents/engineering/api-documentarian.md +440 -0
  22. package/agents/engineering/migration-engineer.md +301 -0
  23. package/agents/engineering/solution-architect.md +208 -0
  24. package/agents/jam/brainstorm-facilitator.md +297 -0
  25. package/agents/jam/council.md +322 -0
  26. package/agents/jam/quick-facilitator.md +85 -0
  27. package/agents/persona/persona-agent.md +121 -0
  28. package/agents/platform/compliance-officer.md +266 -0
  29. package/agents/platform/privacy-expert.md +496 -0
  30. package/agents/platform/security-engineer.md +287 -0
  31. package/agents/product/a11y-expert.md +323 -0
  32. package/agents/product/requirements-analyst.md +238 -0
  33. package/agents/product/ui-reviewer.md +180 -0
  34. package/agents/product/ux-designer.md +199 -0
  35. package/agents/product/value-strategist.md +269 -0
  36. package/agents/qe/semantic-reviewer.md +78 -0
  37. package/commands/agentic/audit.md +24 -0
  38. package/commands/agentic/design.md +24 -0
  39. package/commands/agentic/frameworks.md +25 -0
  40. package/commands/agentic/review.md +27 -0
  41. package/commands/archetype/build.md +12 -0
  42. package/commands/archetype/decide.md +12 -0
  43. package/commands/archetype/explore.md +12 -0
  44. package/commands/archetype/incident.md +12 -0
  45. package/commands/archetype/migrate.md +12 -0
  46. package/commands/archetype/modernize.md +12 -0
  47. package/commands/archetype/review.md +14 -0
  48. package/commands/archetype/ship.md +12 -0
  49. package/commands/archetype/specify.md +12 -0
  50. package/commands/archetype/triage.md +12 -0
  51. package/commands/compile.md +37 -0
  52. package/commands/data/analyze.md +18 -0
  53. package/commands/data/data.md +21 -0
  54. package/commands/data/ml.md +18 -0
  55. package/commands/data/ontology.md +22 -0
  56. package/commands/data/pipeline.md +17 -0
  57. package/commands/deliberate.md +181 -0
  58. package/commands/engineering/add-field.md +77 -0
  59. package/commands/engineering/apply.md +58 -0
  60. package/commands/engineering/arch.md +26 -0
  61. package/commands/engineering/debug.md +27 -0
  62. package/commands/engineering/docs.md +27 -0
  63. package/commands/engineering/new-generator.md +257 -0
  64. package/commands/engineering/patch-plan.md +59 -0
  65. package/commands/engineering/plan.md +29 -0
  66. package/commands/engineering/remove.md +48 -0
  67. package/commands/engineering/rename.md +44 -0
  68. package/commands/engineering/review.md +32 -0
  69. package/commands/help.md +128 -0
  70. package/commands/install.md +118 -0
  71. package/commands/intent.md +54 -0
  72. package/commands/jam/brainstorm.md +37 -0
  73. package/commands/jam/council.md +49 -0
  74. package/commands/jam/quick.md +21 -0
  75. package/commands/jam/revisit.md +79 -0
  76. package/commands/persona/as.md +136 -0
  77. package/commands/persona/define.md +24 -0
  78. package/commands/persona/list.md +118 -0
  79. package/commands/platform/actions.md +20 -0
  80. package/commands/platform/assert.md +18 -0
  81. package/commands/platform/audit.md +23 -0
  82. package/commands/platform/compliance.md +20 -0
  83. package/commands/platform/gh.md +22 -0
  84. package/commands/platform/health.md +22 -0
  85. package/commands/platform/incident.md +23 -0
  86. package/commands/platform/infra.md +24 -0
  87. package/commands/platform/peer-health.md +103 -0
  88. package/commands/platform/plugin-health.md +58 -0
  89. package/commands/platform/security.md +38 -0
  90. package/commands/platform/toolchain.md +96 -0
  91. package/commands/platform/traces.md +20 -0
  92. package/commands/product/a11y.md +19 -0
  93. package/commands/product/acceptance.md +19 -0
  94. package/commands/product/align.md +20 -0
  95. package/commands/product/analyze.md +23 -0
  96. package/commands/product/elicit.md +19 -0
  97. package/commands/product/listen.md +24 -0
  98. package/commands/product/mockup.md +20 -0
  99. package/commands/product/screenshot.md +19 -0
  100. package/commands/product/strategy.md +40 -0
  101. package/commands/product/synthesize.md +23 -0
  102. package/commands/product/ux-review.md +42 -0
  103. package/commands/product/ux.md +20 -0
  104. package/commands/product/visual-direction.md +34 -0
  105. package/commands/prove.md +47 -0
  106. package/commands/report-issue.md +243 -0
  107. package/commands/reset.md +144 -0
  108. package/commands/search/blast-radius.md +58 -0
  109. package/commands/search/hotspots.md +55 -0
  110. package/commands/search/index.md +38 -0
  111. package/commands/search/lineage.md +47 -0
  112. package/commands/search/service-map.md +79 -0
  113. package/commands/setup.md +363 -0
  114. package/commands/smaht/briefing.md +200 -0
  115. package/commands/smaht/events-import.md +95 -0
  116. package/commands/smaht/state.md +19 -0
  117. package/commands/where-am-i.md +58 -0
  118. package/docs/README.md +32 -0
  119. package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
  120. package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
  121. package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
  122. package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
  123. package/docs/brain-chunk-format.md +135 -0
  124. package/docs/compiler.md +95 -0
  125. package/docs/daemon-api.md +70 -0
  126. package/docs/domains.md +197 -0
  127. package/docs/getting-started.md +208 -0
  128. package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
  129. package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
  130. package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
  131. package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
  132. package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
  133. package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
  134. package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
  135. package/docs/required-peers.md +60 -0
  136. package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
  137. package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
  138. package/docs/v11/archetypes.md +231 -0
  139. package/hooks/hooks.json +275 -0
  140. package/hooks/scripts/bootstrap.py +1797 -0
  141. package/hooks/scripts/invoke.py +62 -0
  142. package/hooks/scripts/notification.py +166 -0
  143. package/hooks/scripts/permission_request.py +223 -0
  144. package/hooks/scripts/post_tool.py +1374 -0
  145. package/hooks/scripts/pre_compact.py +272 -0
  146. package/hooks/scripts/pre_tool.py +1278 -0
  147. package/hooks/scripts/prompt_submit.py +1109 -0
  148. package/hooks/scripts/session_end.py +95 -0
  149. package/hooks/scripts/stop.py +624 -0
  150. package/hooks/scripts/subagent_lifecycle.py +464 -0
  151. package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
  152. package/hooks/scripts/task_completed.py +322 -0
  153. package/hooks/scripts/worktree_guard.py +148 -0
  154. package/hooks/subscriptions/on_gate_decided.json +9 -0
  155. package/install.mjs +128 -0
  156. package/package.json +41 -0
  157. package/pyproject.toml +59 -0
  158. package/schemas/README.md +32 -0
  159. package/schemas/assert_contracts.json +37 -0
  160. package/schemas/health_probe.json +46 -0
  161. package/schemas/plugin_status.json +37 -0
  162. package/scripts/_adapters/__init__.py +166 -0
  163. package/scripts/_adapters/jira_adapter.py +18 -0
  164. package/scripts/_adapters/linear_adapter.py +18 -0
  165. package/scripts/_adapters/miro_adapter.py +18 -0
  166. package/scripts/_adapters/notion_adapter.py +18 -0
  167. package/scripts/_agents.py +357 -0
  168. package/scripts/_brain_ingest/__init__.py +2 -0
  169. package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
  170. package/scripts/_brain_port.py +163 -0
  171. package/scripts/_bus.py +1081 -0
  172. package/scripts/_bus_catalog_gen.py +93 -0
  173. package/scripts/_bus_consumers.json +46 -0
  174. package/scripts/_bus_emit.py +43 -0
  175. package/scripts/_capability_registry.py +334 -0
  176. package/scripts/_capability_resolver.py +322 -0
  177. package/scripts/_domain_store.py +559 -0
  178. package/scripts/_event_log_reader.py +154 -0
  179. package/scripts/_event_schema.py +305 -0
  180. package/scripts/_event_store.py +397 -0
  181. package/scripts/_heavy_cadence.py +324 -0
  182. package/scripts/_integration_resolver.py +321 -0
  183. package/scripts/_logger.py +151 -0
  184. package/scripts/_loom.py +482 -0
  185. package/scripts/_paths.py +133 -0
  186. package/scripts/_python.sh +22 -0
  187. package/scripts/_run.py +137 -0
  188. package/scripts/_session.py +502 -0
  189. package/scripts/_validate_registry.py +1042 -0
  190. package/scripts/_wicked_testing_probe.py +277 -0
  191. package/scripts/agentic/analyze_agents.py +391 -0
  192. package/scripts/agentic/detect_framework.py +420 -0
  193. package/scripts/agentic/issue_taxonomy.py +357 -0
  194. package/scripts/agentic/pattern_scorer.py +434 -0
  195. package/scripts/classify/persist.py +169 -0
  196. package/scripts/compiler/compile.py +552 -0
  197. package/scripts/compiler/phase0/VERDICT.md +60 -0
  198. package/scripts/compiler/phase0/detect.py +292 -0
  199. package/scripts/compiler/phase0/emit.py +228 -0
  200. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
  201. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
  202. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
  203. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
  204. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
  205. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
  206. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
  207. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
  208. package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
  209. package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
  210. package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
  211. package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
  212. package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
  213. package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
  214. package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
  215. package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
  216. package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
  217. package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
  218. package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
  219. package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
  220. package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
  221. package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
  222. package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
  223. package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
  224. package/scripts/compiler/phase0/evidence/verdict.json +104 -0
  225. package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
  226. package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
  227. package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
  228. package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
  229. package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
  230. package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
  231. package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
  232. package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
  233. package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
  234. package/scripts/compiler/phase0/run_probe.py +234 -0
  235. package/scripts/compiler/phase0/wire_vault.py +310 -0
  236. package/scripts/crew/__init__.py +0 -0
  237. package/scripts/crew/_task_audit_writer.py +243 -0
  238. package/scripts/crew/_task_reader.py +389 -0
  239. package/scripts/crew/archetypes_v11.py +348 -0
  240. package/scripts/crew/detectors/__init__.py +12 -0
  241. package/scripts/crew/flow_compiler.py +121 -0
  242. package/scripts/crew/phase_manager.py +703 -0
  243. package/scripts/crew/scope_delta.py +264 -0
  244. package/scripts/crew/specialist_resolver.py +218 -0
  245. package/scripts/crew/stack_registry.py +189 -0
  246. package/scripts/data/data_profiler.py +271 -0
  247. package/scripts/data/ontology_recommender.py +231 -0
  248. package/scripts/data/schema_validator.py +267 -0
  249. package/scripts/delivery/drift.py +739 -0
  250. package/scripts/delivery/telemetry.py +614 -0
  251. package/scripts/engineering/patch/codegraph_db.py +125 -0
  252. package/scripts/engineering/patch/generators/__init__.py +56 -0
  253. package/scripts/engineering/patch/generators/base.py +373 -0
  254. package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
  255. package/scripts/engineering/patch/generators/go_generator.py +430 -0
  256. package/scripts/engineering/patch/generators/java_generator.py +928 -0
  257. package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
  258. package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
  259. package/scripts/engineering/patch/generators/perl_generator.py +510 -0
  260. package/scripts/engineering/patch/generators/php_generator.py +644 -0
  261. package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
  262. package/scripts/engineering/patch/generators/python_generator.py +487 -0
  263. package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
  264. package/scripts/engineering/patch/generators/rust_generator.py +400 -0
  265. package/scripts/engineering/patch/generators/sql_generator.py +594 -0
  266. package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
  267. package/scripts/engineering/patch/patch.py +800 -0
  268. package/scripts/engineering/patch/safety.py +429 -0
  269. package/scripts/jam/__init__.py +0 -0
  270. package/scripts/jam/_bus_consumers.py +271 -0
  271. package/scripts/jam/agentic_cli_registry.py +703 -0
  272. package/scripts/jam/consensus.py +737 -0
  273. package/scripts/jam/detect_clis.py +409 -0
  274. package/scripts/jam/jam.py +283 -0
  275. package/scripts/jam/save_transcript.py +171 -0
  276. package/scripts/loom/__init__.py +22 -0
  277. package/scripts/loom/cli.py +170 -0
  278. package/scripts/loom/compose.py +180 -0
  279. package/scripts/loom/gate.py +120 -0
  280. package/scripts/loom/manifest.py +140 -0
  281. package/scripts/loom/resolve.py +59 -0
  282. package/scripts/persona/__init__.py +0 -0
  283. package/scripts/persona/registry.py +688 -0
  284. package/scripts/platform/guard_pipeline.py +1214 -0
  285. package/scripts/platform/guard_profiles.py +216 -0
  286. package/scripts/platform/observability/assert_contracts.py +434 -0
  287. package/scripts/platform/observability/health_probe.py +915 -0
  288. package/scripts/platform/observability/ops_log_viewer.py +209 -0
  289. package/scripts/platform/prereq_doctor.py +567 -0
  290. package/scripts/qe/conditions_manifest.py +260 -0
  291. package/scripts/qe/content_sanitizer.py +160 -0
  292. package/scripts/qe/coverage_tracker.py +535 -0
  293. package/scripts/qe/discover_scenarios.py +243 -0
  294. package/scripts/qe/evidence_tracker.py +232 -0
  295. package/scripts/qe/prove.py +196 -0
  296. package/scripts/qe/registry_lookup.py +80 -0
  297. package/scripts/qe/registry_store.py +176 -0
  298. package/scripts/qe/semantic_review.py +1005 -0
  299. package/scripts/qe/vault_gate.py +382 -0
  300. package/scripts/qe/verdict_audit.py +175 -0
  301. package/scripts/qe/verdict_schema.py +335 -0
  302. package/scripts/reset.py +220 -0
  303. package/scripts/resolve_path.py +22 -0
  304. package/scripts/sentinel/invariants.py +402 -0
  305. package/scripts/sentinel/pre_push.py +73 -0
  306. package/scripts/setup/__init__.py +1 -0
  307. package/scripts/setup/detect_state.py +114 -0
  308. package/scripts/setup/migrate_legacy.py +67 -0
  309. package/scripts/setup/migrate_v6_projects.py +232 -0
  310. package/scripts/setup/onboarding.py +114 -0
  311. package/scripts/smaht/_bus_consumers.py +98 -0
  312. package/scripts/smaht/adapters/__init__.py +83 -0
  313. package/scripts/smaht/adapters/brain_adapter.py +254 -0
  314. package/scripts/smaht/adapters/context7_adapter.py +438 -0
  315. package/scripts/smaht/adapters/delegation_adapter.py +104 -0
  316. package/scripts/smaht/adapters/domain_adapter.py +206 -0
  317. package/scripts/smaht/adapters/events_adapter.py +231 -0
  318. package/scripts/smaht/adapters/tools_adapter.py +49 -0
  319. package/scripts/smaht/cheatsheet_store.py +236 -0
  320. package/scripts/smaht/context_package.py +386 -0
  321. package/scripts/smaht/knowledge_graph.py +395 -0
  322. package/scripts/smaht/propose_skills.py +856 -0
  323. package/scripts/smaht/test_cheatsheet_store.py +428 -0
  324. package/scripts/statusline.py +151 -0
  325. package/scripts/where_am_i.py +236 -0
  326. package/skills/agentic/agentic-patterns/SKILL.md +91 -0
  327. package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
  328. package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
  329. package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
  330. package/skills/agentic/context-engineering/SKILL.md +142 -0
  331. package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
  332. package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
  333. package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
  334. package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
  335. package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
  336. package/skills/agentic/frameworks/SKILL.md +191 -0
  337. package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
  338. package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
  339. package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
  340. package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
  341. package/skills/agentic/refs/audit.md +134 -0
  342. package/skills/agentic/refs/design.md +137 -0
  343. package/skills/agentic/refs/frameworks.md +102 -0
  344. package/skills/agentic/refs/review.md +160 -0
  345. package/skills/agentic/review-methodology/SKILL.md +186 -0
  346. package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
  347. package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
  348. package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
  349. package/skills/agentic/trust-and-safety/SKILL.md +177 -0
  350. package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
  351. package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
  352. package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
  353. package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
  354. package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
  355. package/skills/archetype/SKILL.md +104 -0
  356. package/skills/archetype/refs/build.md +142 -0
  357. package/skills/archetype/refs/decide.md +117 -0
  358. package/skills/archetype/refs/explore.md +66 -0
  359. package/skills/archetype/refs/incident.md +149 -0
  360. package/skills/archetype/refs/migrate.md +170 -0
  361. package/skills/archetype/refs/modernize.md +187 -0
  362. package/skills/archetype/refs/review.md +145 -0
  363. package/skills/archetype/refs/ship.md +117 -0
  364. package/skills/archetype/refs/specify.md +108 -0
  365. package/skills/archetype/refs/triage.md +62 -0
  366. package/skills/classify/SKILL.md +157 -0
  367. package/skills/data/analysis/SKILL.md +125 -0
  368. package/skills/data/analysis/refs/templates.md +170 -0
  369. package/skills/data/data/SKILL.md +118 -0
  370. package/skills/data/data/refs/examples.md +235 -0
  371. package/skills/data/ml/SKILL.md +125 -0
  372. package/skills/data/ml/refs/templates.md +172 -0
  373. package/skills/data/pipeline/SKILL.md +136 -0
  374. package/skills/data/pipeline/refs/templates.md +175 -0
  375. package/skills/data/refs/analyze.md +123 -0
  376. package/skills/data/refs/data.md +95 -0
  377. package/skills/data/refs/ml.md +118 -0
  378. package/skills/data/refs/pipeline.md +92 -0
  379. package/skills/deliberate/SKILL.md +125 -0
  380. package/skills/deliberate/refs/architecture-lens.md +37 -0
  381. package/skills/deliberate/refs/assumptions-lens.md +43 -0
  382. package/skills/deliberate/refs/code-lens.md +38 -0
  383. package/skills/deliberate/refs/content-lens.md +37 -0
  384. package/skills/deliberate/refs/data-lens.md +43 -0
  385. package/skills/deliberate/refs/design-lens.md +37 -0
  386. package/skills/deliberate/refs/opportunity-patterns.md +107 -0
  387. package/skills/deliberate/refs/ops-lens.md +43 -0
  388. package/skills/deliberate/refs/product-lens.md +46 -0
  389. package/skills/deliberate/refs/rethink-framework.md +77 -0
  390. package/skills/deliberate/refs/security-lens.md +47 -0
  391. package/skills/deliberate/refs/testing-lens.md +45 -0
  392. package/skills/deliberate/refs/timing-lens.md +42 -0
  393. package/skills/engineering/architecture/SKILL.md +177 -0
  394. package/skills/engineering/architecture/refs/adr-template.md +268 -0
  395. package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
  396. package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
  397. package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
  398. package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
  399. package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
  400. package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
  401. package/skills/engineering/backend/SKILL.md +102 -0
  402. package/skills/engineering/backend/refs/checklists.md +146 -0
  403. package/skills/engineering/backend/refs/patterns.md +181 -0
  404. package/skills/engineering/debugging/SKILL.md +99 -0
  405. package/skills/engineering/debugging/refs/patterns.md +248 -0
  406. package/skills/engineering/debugging/refs/process.md +203 -0
  407. package/skills/engineering/docs/SKILL.md +97 -0
  408. package/skills/engineering/engineering/SKILL.md +88 -0
  409. package/skills/engineering/engineering/refs/checklists.md +91 -0
  410. package/skills/engineering/engineering/refs/templates.md +71 -0
  411. package/skills/engineering/frontend/SKILL.md +92 -0
  412. package/skills/engineering/frontend/refs/checklists.md +96 -0
  413. package/skills/engineering/frontend/refs/patterns.md +167 -0
  414. package/skills/engineering/integration/SKILL.md +183 -0
  415. package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
  416. package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
  417. package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
  418. package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
  419. package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
  420. package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
  421. package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
  422. package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
  423. package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
  424. package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
  425. package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
  426. package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
  427. package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
  428. package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
  429. package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
  430. package/skills/engineering/integration/refs/grpc-testing.md +49 -0
  431. package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
  432. package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
  433. package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
  434. package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
  435. package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
  436. package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
  437. package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
  438. package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
  439. package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
  440. package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
  441. package/skills/engineering/large-scale-migration/SKILL.md +65 -0
  442. package/skills/engineering/patch/SKILL.md +184 -0
  443. package/skills/engineering/refs/arch.md +126 -0
  444. package/skills/engineering/refs/debug.md +142 -0
  445. package/skills/engineering/refs/docs.md +190 -0
  446. package/skills/engineering/refs/plan.md +109 -0
  447. package/skills/engineering/refs/review.md +138 -0
  448. package/skills/engineering/system-design/SKILL.md +154 -0
  449. package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
  450. package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
  451. package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
  452. package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
  453. package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
  454. package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
  455. package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
  456. package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
  457. package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
  458. package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
  459. package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
  460. package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
  461. package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
  462. package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
  463. package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
  464. package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
  465. package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
  466. package/skills/engineering/unit-test-quality/SKILL.md +194 -0
  467. package/skills/ground/SKILL.md +130 -0
  468. package/skills/integration-discovery/SKILL.md +168 -0
  469. package/skills/integration-discovery/refs/capabilities.md +282 -0
  470. package/skills/integration-discovery/refs/cli-detection.md +295 -0
  471. package/skills/integration-discovery/refs/discovery-sources.md +233 -0
  472. package/skills/integration-discovery/refs/task-patterns.md +206 -0
  473. package/skills/jam/SKILL.md +45 -0
  474. package/skills/jam/refs/facilitation-patterns.md +125 -0
  475. package/skills/jam/refs/quick.md +64 -0
  476. package/skills/jam/refs/synthesis-patterns.md +114 -0
  477. package/skills/multi-model/SKILL.md +168 -0
  478. package/skills/multi-model/refs/aichat.md +119 -0
  479. package/skills/multi-model/refs/aider.md +100 -0
  480. package/skills/multi-model/refs/auditability.md +238 -0
  481. package/skills/multi-model/refs/codex.md +169 -0
  482. package/skills/multi-model/refs/context.md +306 -0
  483. package/skills/multi-model/refs/copilot.md +161 -0
  484. package/skills/multi-model/refs/examples.md +224 -0
  485. package/skills/multi-model/refs/gemini.md +185 -0
  486. package/skills/multi-model/refs/goose.md +112 -0
  487. package/skills/multi-model/refs/llm.md +124 -0
  488. package/skills/multi-model/refs/opencode.md +196 -0
  489. package/skills/multi-model/refs/orchestration.md +188 -0
  490. package/skills/multi-model/refs/pi.md +208 -0
  491. package/skills/persona/SKILL.md +144 -0
  492. package/skills/persona/refs/define.md +133 -0
  493. package/skills/platform/actions/refs/actions.md +114 -0
  494. package/skills/platform/audit/SKILL.md +174 -0
  495. package/skills/platform/audit/refs/audit.md +145 -0
  496. package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
  497. package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
  498. package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
  499. package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
  500. package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
  501. package/skills/platform/compliance/SKILL.md +169 -0
  502. package/skills/platform/compliance/refs/checklists.md +303 -0
  503. package/skills/platform/compliance/refs/compliance.md +117 -0
  504. package/skills/platform/compliance/refs/frameworks.md +282 -0
  505. package/skills/platform/errors/SKILL.md +183 -0
  506. package/skills/platform/errors/refs/patterns.md +271 -0
  507. package/skills/platform/errors/refs/severity.md +264 -0
  508. package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
  509. package/skills/platform/gh/refs/gh.md +105 -0
  510. package/skills/platform/gh-cli/SKILL.md +120 -0
  511. package/skills/platform/gh-cli/refs/automation.md +63 -0
  512. package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
  513. package/skills/platform/gh-cli/refs/patterns.md +132 -0
  514. package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
  515. package/skills/platform/github-actions/SKILL.md +159 -0
  516. package/skills/platform/github-actions/refs/security.md +150 -0
  517. package/skills/platform/github-actions/refs/templates.md +230 -0
  518. package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
  519. package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
  520. package/skills/platform/gitlab-ci/SKILL.md +140 -0
  521. package/skills/platform/gitlab-ci/refs/templates.md +223 -0
  522. package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
  523. package/skills/platform/glab-cli/SKILL.md +133 -0
  524. package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
  525. package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
  526. package/skills/platform/glab-cli/refs/patterns.md +131 -0
  527. package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
  528. package/skills/platform/health/SKILL.md +177 -0
  529. package/skills/platform/health/refs/health.md +72 -0
  530. package/skills/platform/health/refs/sources.md +302 -0
  531. package/skills/platform/incident/refs/incident.md +136 -0
  532. package/skills/platform/infra/refs/infra.md +104 -0
  533. package/skills/platform/observability/SKILL.md +128 -0
  534. package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
  535. package/skills/platform/prereq-doctor/SKILL.md +57 -0
  536. package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
  537. package/skills/platform/traces/refs/traces.md +101 -0
  538. package/skills/product/acceptance-criteria/SKILL.md +193 -0
  539. package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
  540. package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
  541. package/skills/product/accessibility/SKILL.md +197 -0
  542. package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
  543. package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
  544. package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
  545. package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
  546. package/skills/product/accessibility/refs/audit-report-results.md +276 -0
  547. package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
  548. package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
  549. package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
  550. package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
  551. package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
  552. package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
  553. package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
  554. package/skills/product/analyze/SKILL.md +164 -0
  555. package/skills/product/analyze/refs/algorithms.md +238 -0
  556. package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
  557. package/skills/product/imagery/SKILL.md +97 -0
  558. package/skills/product/imagery/alter/SKILL.md +105 -0
  559. package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
  560. package/skills/product/imagery/create/SKILL.md +109 -0
  561. package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
  562. package/skills/product/imagery/create/refs/provider-reference.md +219 -0
  563. package/skills/product/imagery/review/SKILL.md +101 -0
  564. package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
  565. package/skills/product/imagery/review/refs/quality-gates.md +153 -0
  566. package/skills/product/imagery/scripts/analyze.sh +23 -0
  567. package/skills/product/imagery/scripts/edit.sh +14 -0
  568. package/skills/product/imagery/scripts/generate.sh +13 -0
  569. package/skills/product/imagery/scripts/provider.py +787 -0
  570. package/skills/product/listen/SKILL.md +175 -0
  571. package/skills/product/listen/refs/channels.md +220 -0
  572. package/skills/product/mockup/SKILL.md +106 -0
  573. package/skills/product/mockup/refs/templates.md +95 -0
  574. package/skills/product/refs/a11y.md +109 -0
  575. package/skills/product/refs/acceptance.md +79 -0
  576. package/skills/product/refs/align.md +67 -0
  577. package/skills/product/refs/analyze.md +77 -0
  578. package/skills/product/refs/elicit.md +67 -0
  579. package/skills/product/refs/listen.md +58 -0
  580. package/skills/product/refs/mockup.md +77 -0
  581. package/skills/product/refs/screenshot.md +59 -0
  582. package/skills/product/refs/strategy.md +77 -0
  583. package/skills/product/refs/synthesize.md +54 -0
  584. package/skills/product/refs/ux-review.md +68 -0
  585. package/skills/product/refs/ux.md +101 -0
  586. package/skills/product/requirements-analysis/SKILL.md +136 -0
  587. package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
  588. package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
  589. package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
  590. package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
  591. package/skills/product/requirements-graph/SKILL.md +155 -0
  592. package/skills/product/requirements-graph/refs/examples.md +223 -0
  593. package/skills/product/requirements-graph/refs/schema.md +162 -0
  594. package/skills/product/requirements-migrate/SKILL.md +90 -0
  595. package/skills/product/requirements-navigate/SKILL.md +141 -0
  596. package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
  597. package/skills/product/screenshot/SKILL.md +147 -0
  598. package/skills/product/strategy/SKILL.md +198 -0
  599. package/skills/product/strategy/refs/frameworks.md +295 -0
  600. package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
  601. package/skills/product/strategy/refs/templates-roi-value.md +207 -0
  602. package/skills/product/synthesize/SKILL.md +116 -0
  603. package/skills/product/synthesize/refs/journey-mapping.md +212 -0
  604. package/skills/product/synthesize/refs/prioritization.md +193 -0
  605. package/skills/product/ux-review/SKILL.md +164 -0
  606. package/skills/product/visual-direction/SKILL.md +137 -0
  607. package/skills/product/visual-review/SKILL.md +131 -0
  608. package/skills/runtime-exec/SKILL.md +138 -0
  609. package/skills/search/codebase-narrator/SKILL.md +131 -0
  610. package/skills/search/codebase-narrator/refs/output-template.md +100 -0
  611. package/skills/smaht/SKILL.md +72 -0
  612. package/skills/smaht/discovery/SKILL.md +65 -0
  613. package/skills/smaht/intent/SKILL.md +89 -0
  614. package/skills/smaht/propose-skills/SKILL.md +142 -0
  615. package/skills/smaht/refs/state.md +76 -0
  616. package/skills/swarm/SKILL.md +132 -0
  617. package/skills/swarm/refs/fan-out.md +104 -0
  618. package/skills/swarm/refs/independent-verification.md +86 -0
  619. package/skills/swarm/refs/receipts-and-evidence.md +69 -0
  620. package/skills/swarm/refs/recon-synthesis.md +87 -0
  621. package/skills/swarm/refs/ship-discipline.md +90 -0
  622. package/skills/wickedizer/SKILL.md +147 -0
  623. package/skills/wickedizer/refs/artifact-types.md +238 -0
  624. package/skills/wickedizer/refs/complexity.md +278 -0
  625. package/skills/wickedizer/refs/de-ai-pass.md +140 -0
  626. package/skills/wickedizer/refs/failure-modes.md +249 -0
  627. package/skills/wickedizer/refs/patterns.md +282 -0
  628. package/skills/wickedizer/refs/review.md +221 -0
  629. package/skills/wickedizer/refs/structure.md +282 -0
  630. package/skills/wickedizer/refs/voice-profile.md +125 -0
  631. package/skills/workflow/SKILL.md +132 -0
  632. package/skills/workflow/refs/archetype-adjustments.md +205 -0
  633. package/skills/workflow/refs/evidence.md +58 -0
  634. package/skills/workflow/refs/integration.md +130 -0
  635. package/skills/workflow/refs/risk-dimension-signals.md +260 -0
  636. package/skills/workflow/refs/scoring-rubric.md +49 -0
  637. package/skills/workflow/refs/signal-keywords.md +176 -0
  638. package/skills/workflow/refs/specialist-routing-rules.md +159 -0
  639. package/skills/worktrees/SKILL.md +87 -0
  640. package/skills/worktrees/refs/recipes.md +96 -0
@@ -0,0 +1,703 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ agentic_cli_registry.py — machine-readable registry of agentic / chat / local
4
+ LLM CLIs that wicked-garden's council can convene.
5
+
6
+ This is the single source of truth for "which command-line LLM tools exist,
7
+ how do you invoke them headlessly, and what auth/trust do they need". It
8
+ mirrors the dataclass + stdlib-only pattern of ``scripts/_capability_registry.py``:
9
+ no third-party imports, ``from __future__ import annotations``, ``@dataclass``,
10
+ detection via ``shutil.which``.
11
+
12
+ The council orchestration (``agents/jam/council.md``) is driven by this
13
+ registry: it detects installed CLIs, probes their headless usability, and
14
+ renders the per-CLI invocation from these records rather than hardcoding a
15
+ drifting bash block per tool.
16
+
17
+ Headless invocation templates use a ``{PROMPT}`` placeholder (and ``{MODEL}``
18
+ for local runners). ``trust_flags`` are appended for non-interactive runs so a
19
+ CLI does not block on a permission / trust / git-repo prompt. Records flagged
20
+ ``confidence="confirm-on-probe"`` have an UNCERTAIN headless flag — the probe
21
+ in ``detect_clis.py`` must verify them before the council relies on them.
22
+
23
+ Usage:
24
+ from agentic_cli_registry import (
25
+ AGENTIC_CLI_REGISTRY, AgenticCLI, COUNCIL_CLIS, detect,
26
+ )
27
+ """
28
+
29
+ from __future__ import annotations
30
+
31
+ import shutil
32
+ from dataclasses import dataclass, field
33
+
34
+ # ---------------------------------------------------------------------------
35
+ # Record type
36
+ # ---------------------------------------------------------------------------
37
+
38
+
39
+ @dataclass
40
+ class AgenticCLI:
41
+ """One command-line LLM tool the council can talk to.
42
+
43
+ Fields capture everything the orchestrator needs to detect the binary,
44
+ invoke it headlessly with the SAME prompt every other CLI gets, classify
45
+ its usability, and disambiguate binary collisions by version string.
46
+ """
47
+
48
+ key: str # stable registry id (kebab-case)
49
+ display_name: str # human-facing name for synthesis attribution
50
+ binary: str # primary binary name for shutil.which()
51
+ vendor: str # who ships it
52
+ category: str # "agentic-coder" | "chat" | "local-runner"
53
+ headless_invocation: str # argv-ish template using {PROMPT} (and {MODEL})
54
+ input_mode: str # "prompt-arg" | "stdin" | "at-file" | "message-file" | "model-arg"
55
+ model_flag_style: str # "-m" | "--model" | "provider-model" | "config-only" | "model-arg" | "none"
56
+ version_probe: list[str] # argv to print version (collision disambiguation)
57
+ auth_hint: str # what auth / config / daemon it needs
58
+ install: dict[str, str] = field(default_factory=dict) # {darwin,linux,generic}
59
+ trust_flags: list[str] = field(default_factory=list) # appended for headless runs
60
+ alt_binaries: list[str] = field(default_factory=list) # other names the tool may install as
61
+ confidence: str = "verified" # "verified" | "confirm-on-probe"
62
+ collision_note: str = "" # binary-name collision / rename caveat
63
+ enabled_for_council: bool = True # False = excluded from default convening
64
+
65
+ def binaries(self) -> list[str]:
66
+ """Primary binary first, then any alternates."""
67
+ return [self.binary, *self.alt_binaries]
68
+
69
+ def render(self, prompt: str, model: str = "") -> str:
70
+ """Fill the headless template. {PROMPT} and {MODEL} are substituted;
71
+ trust flags are NOT injected here (the probe / orchestrator appends
72
+ them) so this stays a faithful echo of the registry template."""
73
+ return self.headless_invocation.replace("{PROMPT}", prompt).replace(
74
+ "{MODEL}", model
75
+ )
76
+
77
+
78
+ # ---------------------------------------------------------------------------
79
+ # Registry — one record per CLI
80
+ # ---------------------------------------------------------------------------
81
+ # VERIFIED entries hard-code a confirmed headless form. CONFIRM-ON-PROBE
82
+ # entries have an uncertain headless flag and MUST be verified by the probe
83
+ # before the council relies on them.
84
+
85
+ AGENTIC_CLI_REGISTRY: dict[str, AgenticCLI] = {
86
+ # ----- VERIFIED: agentic coders -----
87
+ "claude": AgenticCLI(
88
+ key="claude",
89
+ display_name="Claude",
90
+ binary="claude",
91
+ vendor="Anthropic",
92
+ category="agentic-coder",
93
+ headless_invocation='claude -p "{PROMPT}"',
94
+ input_mode="prompt-arg",
95
+ model_flag_style="none",
96
+ version_probe=["claude", "--version"],
97
+ trust_flags=["--dangerously-skip-permissions"],
98
+ auth_hint="Anthropic OAuth or ANTHROPIC_API_KEY",
99
+ install={"generic": "bundled with Claude Code"},
100
+ confidence="verified",
101
+ collision_note="Council host. Claude participates in-process, not as an external CLI seat.",
102
+ ),
103
+ "codex": AgenticCLI(
104
+ key="codex",
105
+ display_name="Codex",
106
+ binary="codex",
107
+ vendor="OpenAI",
108
+ category="agentic-coder",
109
+ headless_invocation='codex exec "{PROMPT}"',
110
+ input_mode="prompt-arg", # also accepts stdin
111
+ model_flag_style="-m",
112
+ version_probe=["codex", "--version"],
113
+ trust_flags=["--skip-git-repo-check"],
114
+ auth_hint="`codex login` or OPENAI_API_KEY",
115
+ install={"darwin": "brew install codex", "generic": "npm i -g @openai/codex"},
116
+ confidence="verified",
117
+ ),
118
+ "gemini": AgenticCLI(
119
+ key="gemini",
120
+ display_name="Gemini",
121
+ binary="gemini",
122
+ vendor="Google",
123
+ category="agentic-coder",
124
+ headless_invocation='gemini -p "{PROMPT}"',
125
+ input_mode="prompt-arg",
126
+ model_flag_style="-m",
127
+ version_probe=["gemini", "--version"],
128
+ trust_flags=["--skip-trust"], # or env GEMINI_CLI_TRUST_WORKSPACE=true
129
+ auth_hint="Google login or GEMINI_API_KEY",
130
+ install={"generic": "npm i -g @google/gemini-cli"},
131
+ confidence="verified",
132
+ ),
133
+ "agy": AgenticCLI(
134
+ key="agy",
135
+ display_name="Antigravity",
136
+ binary="agy",
137
+ vendor="Google Antigravity",
138
+ category="agentic-coder",
139
+ headless_invocation='agy -p "{PROMPT}"',
140
+ input_mode="prompt-arg",
141
+ model_flag_style="none", # `agy models` to list
142
+ version_probe=["agy", "--version"],
143
+ trust_flags=["--dangerously-skip-permissions"],
144
+ auth_hint="Antigravity login",
145
+ install={"generic": "agy install"},
146
+ confidence="verified",
147
+ ),
148
+ "pi": AgenticCLI(
149
+ key="pi",
150
+ display_name="Pi",
151
+ binary="pi",
152
+ vendor="earendil-works",
153
+ category="agentic-coder",
154
+ headless_invocation='pi -p "{PROMPT}"',
155
+ input_mode="prompt-arg", # also supports @file attach
156
+ model_flag_style="provider-model", # --provider X --model Y
157
+ version_probe=["pi", "--version"],
158
+ auth_hint="provider API key (Google default; OpenAI/Anthropic/etc.)",
159
+ install={"generic": "npm i -g @mariozechner/pi-coding-agent"},
160
+ confidence="verified",
161
+ ),
162
+ "opencode": AgenticCLI(
163
+ key="opencode",
164
+ display_name="OpenCode",
165
+ binary="opencode",
166
+ vendor="opencode",
167
+ category="agentic-coder",
168
+ headless_invocation='opencode run "{PROMPT}"',
169
+ input_mode="prompt-arg", # also supports -f file
170
+ model_flag_style="-m", # provider/model
171
+ version_probe=["opencode", "--version"],
172
+ auth_hint="`opencode auth` provider login",
173
+ install={"darwin": "brew install opencode", "generic": "https://github.com/sst/opencode"},
174
+ confidence="verified",
175
+ ),
176
+ "aider": AgenticCLI(
177
+ key="aider",
178
+ display_name="Aider",
179
+ binary="aider",
180
+ vendor="Aider",
181
+ category="agentic-coder",
182
+ headless_invocation=(
183
+ 'aider --message "{PROMPT}" --yes-always --no-git '
184
+ "--no-auto-commits --no-stream --no-analytics"
185
+ ),
186
+ input_mode="message-file", # --message-file FILE preferred for scaffolds; -m to pick model
187
+ model_flag_style="--model",
188
+ version_probe=["aider", "--version"],
189
+ trust_flags=[], # trust handled inline by the flags in the invocation
190
+ auth_hint="model provider key (ANTHROPIC_API_KEY / OPENAI_API_KEY / …)",
191
+ install={"darwin": "brew install aider", "generic": "pip install aider-install"},
192
+ confidence="verified",
193
+ collision_note="Expects a writable cwd (.aider.* cache); run from a scratch tempdir.",
194
+ ),
195
+ "copilot": AgenticCLI(
196
+ key="copilot",
197
+ display_name="Copilot",
198
+ binary="copilot",
199
+ vendor="GitHub",
200
+ category="agentic-coder",
201
+ headless_invocation='copilot -p "{PROMPT}" --allow-all-tools',
202
+ input_mode="prompt-arg",
203
+ model_flag_style="--model",
204
+ version_probe=["copilot", "--version"],
205
+ trust_flags=["--allow-all-tools"], # REQUIRED for headless (else blocks on tool approval)
206
+ auth_hint="GitHub auth (Copilot subscription)",
207
+ install={"generic": "npm i -g @github/copilot"},
208
+ confidence="verified",
209
+ ),
210
+ "goose": AgenticCLI(
211
+ key="goose",
212
+ display_name="Goose",
213
+ binary="goose",
214
+ vendor="Block",
215
+ category="agentic-coder",
216
+ headless_invocation='goose run -t "{PROMPT}"',
217
+ input_mode="prompt-arg",
218
+ model_flag_style="config-only",
219
+ version_probe=["goose", "--version"],
220
+ auth_hint="`goose configure` provider setup",
221
+ install={"darwin": "brew install block-goose-cli"},
222
+ confidence="verified",
223
+ ),
224
+ "cursor-agent": AgenticCLI(
225
+ key="cursor-agent",
226
+ display_name="Cursor Agent",
227
+ binary="cursor-agent",
228
+ vendor="Cursor",
229
+ category="agentic-coder",
230
+ headless_invocation='cursor-agent -p "{PROMPT}"',
231
+ input_mode="prompt-arg",
232
+ model_flag_style="none",
233
+ version_probe=["cursor-agent", "--version"],
234
+ alt_binaries=["agent"],
235
+ auth_hint="`cursor-agent login`",
236
+ install={"generic": "cursor install"},
237
+ confidence="verified",
238
+ collision_note=(
239
+ "Alt binary 'agent' collides with other tools. QUIRK: `-p` may hang — "
240
+ "rely on the per-CLI timeout to bound it."
241
+ ),
242
+ ),
243
+ "amp": AgenticCLI(
244
+ key="amp",
245
+ display_name="Amp",
246
+ binary="amp",
247
+ vendor="Sourcegraph",
248
+ category="agentic-coder",
249
+ headless_invocation='amp -x "{PROMPT}"',
250
+ input_mode="prompt-arg", # also accepts stdin
251
+ model_flag_style="none",
252
+ version_probe=["amp", "--version"],
253
+ trust_flags=["--dangerously-allow-all"],
254
+ auth_hint="Amp API key (consumes credits)",
255
+ install={"generic": "npm i -g @sourcegraph/amp"},
256
+ confidence="verified",
257
+ ),
258
+ "droid": AgenticCLI(
259
+ key="droid",
260
+ display_name="Droid",
261
+ binary="droid",
262
+ vendor="Factory",
263
+ category="agentic-coder",
264
+ headless_invocation='droid exec "{PROMPT}"',
265
+ input_mode="prompt-arg", # also accepts stdin
266
+ model_flag_style="none",
267
+ version_probe=["droid", "--version"],
268
+ trust_flags=["--auto", "medium"],
269
+ auth_hint="~/.factory/config.json",
270
+ install={"generic": "factory install"},
271
+ confidence="verified",
272
+ ),
273
+ "qwen": AgenticCLI(
274
+ key="qwen",
275
+ display_name="Qwen Code",
276
+ binary="qwen",
277
+ vendor="Alibaba",
278
+ category="agentic-coder",
279
+ headless_invocation='qwen -p "{PROMPT}"',
280
+ input_mode="prompt-arg",
281
+ model_flag_style="none",
282
+ version_probe=["qwen", "--version"],
283
+ auth_hint="OAuth or provider key",
284
+ install={"generic": "npm i -g @qwen-code/qwen-code"},
285
+ confidence="verified",
286
+ ),
287
+ "openhands": AgenticCLI(
288
+ key="openhands",
289
+ display_name="OpenHands",
290
+ binary="openhands",
291
+ vendor="OpenHands",
292
+ category="agentic-coder",
293
+ headless_invocation='openhands --headless -t "{PROMPT}"',
294
+ input_mode="prompt-arg",
295
+ model_flag_style="none",
296
+ version_probe=["openhands", "--version"],
297
+ auth_hint="LLM config (provider key)",
298
+ install={"generic": "pip install openhands-ai"},
299
+ confidence="verified",
300
+ ),
301
+ "interpreter": AgenticCLI(
302
+ key="interpreter",
303
+ display_name="Open Interpreter",
304
+ binary="interpreter",
305
+ vendor="Open Interpreter",
306
+ category="agentic-coder",
307
+ headless_invocation='interpreter -y "{PROMPT}"',
308
+ input_mode="prompt-arg",
309
+ model_flag_style="none",
310
+ version_probe=["interpreter", "--version"],
311
+ trust_flags=["-y"],
312
+ auth_hint="model provider key",
313
+ install={"generic": "pip install open-interpreter"},
314
+ confidence="verified",
315
+ collision_note="Executes code locally by design — treat output as untrusted.",
316
+ ),
317
+ "gptme": AgenticCLI(
318
+ key="gptme",
319
+ display_name="gptme",
320
+ binary="gptme",
321
+ vendor="gptme",
322
+ category="agentic-coder",
323
+ headless_invocation='gptme "{PROMPT}" --non-interactive',
324
+ input_mode="prompt-arg",
325
+ model_flag_style="none",
326
+ version_probe=["gptme", "--version"],
327
+ auth_hint="provider API key",
328
+ install={"generic": "pip install gptme"},
329
+ confidence="verified",
330
+ ),
331
+ "crush": AgenticCLI(
332
+ key="crush",
333
+ display_name="Crush",
334
+ binary="crush",
335
+ vendor="Charm",
336
+ category="agentic-coder",
337
+ headless_invocation='crush run "{PROMPT}" --quiet',
338
+ input_mode="prompt-arg", # also accepts stdin
339
+ model_flag_style="config-only",
340
+ version_probe=["crush", "--version"],
341
+ auth_hint="provider API key",
342
+ install={"darwin": "brew install charmbracelet/tap/crush"},
343
+ confidence="verified",
344
+ ),
345
+ # ----- VERIFIED: chat clients -----
346
+ "llm": AgenticCLI(
347
+ key="llm",
348
+ display_name="llm",
349
+ binary="llm",
350
+ vendor="Simon Willison",
351
+ category="chat",
352
+ headless_invocation='llm "{PROMPT}"',
353
+ input_mode="prompt-arg", # also pipe-native (stdin)
354
+ model_flag_style="-m",
355
+ version_probe=["llm", "--version"],
356
+ auth_hint="`llm keys set <provider>`",
357
+ install={"darwin": "brew install llm", "generic": "pip install llm"},
358
+ confidence="verified",
359
+ ),
360
+ "aichat": AgenticCLI(
361
+ key="aichat",
362
+ display_name="aichat",
363
+ binary="aichat",
364
+ vendor="sigoden",
365
+ category="chat",
366
+ headless_invocation='aichat -S "{PROMPT}"',
367
+ input_mode="prompt-arg", # also accepts stdin
368
+ model_flag_style="-m", # client:model
369
+ version_probe=["aichat", "--version"],
370
+ auth_hint="config provider key",
371
+ install={"darwin": "brew install aichat"},
372
+ confidence="verified",
373
+ collision_note="-S disables streaming so output captures cleanly.",
374
+ ),
375
+ "mods": AgenticCLI(
376
+ key="mods",
377
+ display_name="mods",
378
+ binary="mods",
379
+ vendor="Charm",
380
+ category="chat",
381
+ headless_invocation='mods "{PROMPT}"', # also: echo "{PROMPT}" | mods
382
+ input_mode="stdin", # stdin-native; prompt-arg also works
383
+ model_flag_style="config-only",
384
+ version_probe=["mods", "--version"],
385
+ auth_hint="provider API key",
386
+ install={"darwin": "brew install charmbracelet/tap/mods"},
387
+ confidence="verified",
388
+ ),
389
+ "sgpt": AgenticCLI(
390
+ key="sgpt",
391
+ display_name="ShellGPT",
392
+ binary="sgpt",
393
+ vendor="shell-gpt",
394
+ category="chat",
395
+ headless_invocation='sgpt "{PROMPT}"',
396
+ input_mode="prompt-arg", # also accepts stdin
397
+ model_flag_style="config-only",
398
+ version_probe=["sgpt", "--version"],
399
+ trust_flags=[], # NB: --execute runs shell commands — NEVER enable for council
400
+ auth_hint="OPENAI_API_KEY",
401
+ install={"generic": "pip install shell-gpt"},
402
+ confidence="verified",
403
+ collision_note="`--execute`/`-s` runs shell commands; council must never pass it.",
404
+ ),
405
+ "q": AgenticCLI(
406
+ key="q",
407
+ display_name="Amazon Q",
408
+ binary="q",
409
+ vendor="Amazon",
410
+ category="chat",
411
+ headless_invocation='q chat --no-interactive --trust-all-tools "{PROMPT}"',
412
+ input_mode="prompt-arg",
413
+ model_flag_style="none",
414
+ version_probe=["q", "--version"],
415
+ alt_binaries=["kiro-cli"],
416
+ trust_flags=["--trust-all-tools"],
417
+ auth_hint="AWS Builder ID",
418
+ install={"generic": "AWS CLI install"},
419
+ confidence="verified",
420
+ collision_note=(
421
+ "'q' is a very common binary name (collision risk). QUIRK: renamed to "
422
+ "`kiro-cli` (Nov 2025) — verify version string before trusting."
423
+ ),
424
+ ),
425
+ # ----- VERIFIED: local runner -----
426
+ "ollama": AgenticCLI(
427
+ key="ollama",
428
+ display_name="Ollama",
429
+ binary="ollama",
430
+ vendor="Ollama",
431
+ category="local-runner",
432
+ headless_invocation='ollama run {MODEL} "{PROMPT}"',
433
+ input_mode="model-arg", # model name then prompt
434
+ model_flag_style="model-arg",
435
+ version_probe=["ollama", "--version"],
436
+ auth_hint="no auth, but REQUIRES the daemon (`ollama serve`) + a pulled model",
437
+ install={"darwin": "brew install ollama", "generic": "https://ollama.com/download"},
438
+ confidence="verified",
439
+ collision_note="Needs a running daemon AND a pulled model; bare `ollama run` with no model fails.",
440
+ ),
441
+ # ----- CONFIRM-ON-PROBE: headless flag uncertain, verify before relying -----
442
+ "grok": AgenticCLI(
443
+ key="grok",
444
+ display_name="Grok (xAI)",
445
+ binary="grok",
446
+ vendor="xAI Grok Build",
447
+ category="agentic-coder",
448
+ headless_invocation='grok -p "{PROMPT}"',
449
+ input_mode="prompt-arg",
450
+ model_flag_style="none",
451
+ version_probe=["grok", "--version"],
452
+ auth_hint="xAI API key",
453
+ install={"generic": "see xAI Grok Build docs"},
454
+ confidence="confirm-on-probe",
455
+ collision_note="Binary 'grok' collides with community grok-cli — disambiguate by version.",
456
+ ),
457
+ "grok-cli": AgenticCLI(
458
+ key="grok-cli",
459
+ display_name="Grok CLI (community)",
460
+ binary="grok",
461
+ vendor="community",
462
+ category="agentic-coder",
463
+ headless_invocation='grok -p "{PROMPT}"',
464
+ input_mode="prompt-arg",
465
+ model_flag_style="none",
466
+ version_probe=["grok", "--version"],
467
+ auth_hint="xAI / provider key",
468
+ install={"generic": "npm i -g grok-cli (community)"},
469
+ confidence="confirm-on-probe",
470
+ collision_note="Shares the 'grok' binary with xAI's official build — version string disambiguates.",
471
+ ),
472
+ "forge": AgenticCLI(
473
+ key="forge",
474
+ display_name="Forge",
475
+ binary="forge",
476
+ vendor="forgecode",
477
+ category="agentic-coder",
478
+ headless_invocation='forge -p "{PROMPT}"',
479
+ input_mode="prompt-arg",
480
+ model_flag_style="none",
481
+ version_probe=["forge", "--version"],
482
+ auth_hint="provider API key",
483
+ install={"generic": "see forgecode docs"},
484
+ confidence="confirm-on-probe",
485
+ collision_note="Binary 'forge' collides with Foundry's forge (Solidity) — disambiguate by version.",
486
+ ),
487
+ "continue": AgenticCLI(
488
+ key="continue",
489
+ display_name="Continue",
490
+ binary="cn",
491
+ vendor="Continue",
492
+ category="agentic-coder",
493
+ headless_invocation='cn -p "{PROMPT}"',
494
+ input_mode="prompt-arg",
495
+ model_flag_style="none",
496
+ version_probe=["cn", "--version"],
497
+ auth_hint="provider config",
498
+ install={"generic": "see continue.dev docs"},
499
+ confidence="confirm-on-probe",
500
+ ),
501
+ "cline": AgenticCLI(
502
+ key="cline",
503
+ display_name="Cline",
504
+ binary="cline",
505
+ vendor="Cline",
506
+ category="agentic-coder",
507
+ headless_invocation='cline "{PROMPT}"',
508
+ input_mode="prompt-arg",
509
+ model_flag_style="none",
510
+ version_probe=["cline", "--version"],
511
+ auth_hint="provider config",
512
+ install={"generic": "see cline docs"},
513
+ confidence="confirm-on-probe",
514
+ ),
515
+ "cody": AgenticCLI(
516
+ key="cody",
517
+ display_name="Cody (deprecated)",
518
+ binary="cody",
519
+ vendor="Sourcegraph",
520
+ category="agentic-coder",
521
+ headless_invocation='cody chat -m "{PROMPT}"',
522
+ input_mode="prompt-arg",
523
+ model_flag_style="-m",
524
+ version_probe=["cody", "--version"],
525
+ auth_hint="Sourcegraph enterprise token",
526
+ install={"generic": "DEPRECATED — enterprise-only"},
527
+ confidence="confirm-on-probe",
528
+ collision_note="DEPRECATED / enterprise-only.",
529
+ enabled_for_council=False,
530
+ ),
531
+ "plandex": AgenticCLI(
532
+ key="plandex",
533
+ display_name="Plandex (winding down)",
534
+ binary="plandex",
535
+ vendor="Plandex",
536
+ category="agentic-coder",
537
+ headless_invocation='plandex tell "{PROMPT}"',
538
+ input_mode="prompt-arg",
539
+ model_flag_style="none",
540
+ version_probe=["plandex", "--version"],
541
+ auth_hint="provider key",
542
+ install={"generic": "see plandex docs"},
543
+ confidence="confirm-on-probe",
544
+ collision_note="Project winding down.",
545
+ enabled_for_council=False,
546
+ ),
547
+ "mistral-vibe": AgenticCLI(
548
+ key="mistral-vibe",
549
+ display_name="Mistral Vibe",
550
+ binary="vibe",
551
+ vendor="Mistral",
552
+ category="agentic-coder",
553
+ headless_invocation='vibe -p "{PROMPT}"',
554
+ input_mode="prompt-arg",
555
+ model_flag_style="none",
556
+ version_probe=["vibe", "--version"],
557
+ auth_hint="Mistral API key (paid)",
558
+ install={"generic": "see Mistral docs (paid)"},
559
+ confidence="confirm-on-probe",
560
+ ),
561
+ "mentat": AgenticCLI(
562
+ key="mentat",
563
+ display_name="Mentat",
564
+ binary="mentat",
565
+ vendor="AbanteAI",
566
+ category="agentic-coder",
567
+ headless_invocation='mentat "{PROMPT}"',
568
+ input_mode="prompt-arg",
569
+ model_flag_style="none",
570
+ version_probe=["mentat", "--version"],
571
+ auth_hint="OPENAI_API_KEY",
572
+ install={"generic": "pip install mentat"},
573
+ confidence="confirm-on-probe",
574
+ collision_note="Primarily interactive — headless behaviour uncertain.",
575
+ ),
576
+ }
577
+
578
+
579
+ # ---------------------------------------------------------------------------
580
+ # Council ordering — preferred convening order for external CLIs.
581
+ # Claude is the in-process host (not an external seat) so it is NOT listed here.
582
+ # Order roughly tracks confidence + diversity of vendor/provider.
583
+ # ---------------------------------------------------------------------------
584
+
585
+ COUNCIL_CLIS: list[str] = [
586
+ "codex",
587
+ "gemini",
588
+ "copilot",
589
+ "opencode",
590
+ "pi",
591
+ "agy",
592
+ "aider",
593
+ "goose",
594
+ "amp",
595
+ "droid",
596
+ "cursor-agent",
597
+ "qwen",
598
+ "crush",
599
+ "openhands",
600
+ "gptme",
601
+ "interpreter",
602
+ "llm",
603
+ "aichat",
604
+ "mods",
605
+ "sgpt",
606
+ "q",
607
+ "ollama",
608
+ ]
609
+
610
+
611
+ def council_clis(include_disabled: bool = False) -> list[AgenticCLI]:
612
+ """Return council-eligible CLI records in convening order.
613
+
614
+ Skips Claude (in-process host) and, unless ``include_disabled``, any record
615
+ with ``enabled_for_council=False`` (deprecated / winding-down tools).
616
+ Confirm-on-probe records ARE included — the probe gates their actual use.
617
+ """
618
+ out: list[AgenticCLI] = []
619
+ seen: set[str] = set()
620
+ for key in COUNCIL_CLIS:
621
+ cli = AGENTIC_CLI_REGISTRY.get(key)
622
+ if cli is None or key in seen:
623
+ continue
624
+ if not include_disabled and not cli.enabled_for_council:
625
+ continue
626
+ out.append(cli)
627
+ seen.add(key)
628
+ # Append any council-eligible records not explicitly ordered above.
629
+ for key, cli in AGENTIC_CLI_REGISTRY.items():
630
+ if key in seen or key == "claude":
631
+ continue
632
+ if not include_disabled and not cli.enabled_for_council:
633
+ continue
634
+ out.append(cli)
635
+ seen.add(key)
636
+ return out
637
+
638
+
639
+ def detect(probe: bool = False) -> dict:
640
+ """Detect which registry CLIs are installed via ``shutil.which``.
641
+
642
+ With ``probe=False`` (default) this is a pure PATH scan — no subprocesses,
643
+ safe to call anywhere. The ``probe=True`` path (actually running each CLI's
644
+ headless form to classify usable vs unusable) lives in ``detect_clis.py`` so
645
+ this module stays import-light and side-effect-free; calling ``detect(probe=True)``
646
+ here raises to make that boundary explicit.
647
+
648
+ Returns:
649
+ {
650
+ "detected": [ {key, display_name, binary, resolved_path, category,
651
+ confidence, enabled_for_council}, ... ],
652
+ "collisions": [ {binary, keys:[...]}, ... ],
653
+ }
654
+ """
655
+ if probe:
656
+ raise NotImplementedError(
657
+ "Usability probing lives in detect_clis.py (subprocess-based). "
658
+ "Call agentic_cli_registry.detect() for a pure PATH scan, or run "
659
+ "detect_clis.py --probe for the full probe."
660
+ )
661
+
662
+ detected: list[dict] = []
663
+ binary_to_keys: dict[str, list[str]] = {}
664
+
665
+ for key, cli in AGENTIC_CLI_REGISTRY.items():
666
+ # Track every binary this record could claim, for collision reporting.
667
+ for b in cli.binaries():
668
+ binary_to_keys.setdefault(b, []).append(key)
669
+ # Resolve the first of (primary, *alts) that exists on PATH.
670
+ resolved = None
671
+ used_binary = cli.binary
672
+ for b in cli.binaries():
673
+ found = shutil.which(b)
674
+ if found:
675
+ resolved = found
676
+ used_binary = b
677
+ break
678
+ if resolved:
679
+ detected.append(
680
+ {
681
+ "key": key,
682
+ "display_name": cli.display_name,
683
+ "binary": used_binary,
684
+ "resolved_path": resolved,
685
+ "category": cli.category,
686
+ "confidence": cli.confidence,
687
+ "enabled_for_council": cli.enabled_for_council,
688
+ }
689
+ )
690
+
691
+ collisions = [
692
+ {"binary": b, "keys": keys}
693
+ for b, keys in sorted(binary_to_keys.items())
694
+ if len(keys) > 1
695
+ ]
696
+
697
+ return {"detected": detected, "collisions": collisions}
698
+
699
+
700
+ if __name__ == "__main__": # pragma: no cover — manual inspection
701
+ import json
702
+
703
+ print(json.dumps(detect(probe=False), indent=2))