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,246 @@
1
+ ---
2
+ phase_relevance: ["design", "review"]
3
+ archetype_relevance: ["*"]
4
+ ---
5
+ # Guardrail Implementation - Actions and Approvals
6
+
7
+ Action whitelisting, pre-flight validation, sandboxed execution, and approval workflows.
8
+
9
+ ## Action Guardrails
10
+
11
+ ### Pattern 7: Action Whitelisting Framework
12
+
13
+ Comprehensive whitelisting:
14
+
15
+ ```python
16
+ class ActionWhitelist:
17
+ def __init__(self):
18
+ self.allowed_actions = {}
19
+
20
+ def register_action(self, name, allowed_params, constraints):
21
+ """Register an allowed action with parameter constraints."""
22
+ self.allowed_actions[name] = {
23
+ 'params': allowed_params,
24
+ 'constraints': constraints
25
+ }
26
+
27
+ async def validate_action(self, action_name, params):
28
+ if action_name not in self.allowed_actions:
29
+ raise ForbiddenActionError(f"Action '{action_name}' not whitelisted")
30
+
31
+ action_spec = self.allowed_actions[action_name]
32
+
33
+ # Validate parameters
34
+ for param, value in params.items():
35
+ if param not in action_spec['params']:
36
+ raise ForbiddenParameterError(f"Parameter '{param}' not allowed")
37
+
38
+ # Check parameter constraints
39
+ param_constraints = action_spec['params'][param]
40
+ if not self._validate_constraint(value, param_constraints):
41
+ raise ConstraintViolationError(
42
+ f"Parameter '{param}' violates constraints"
43
+ )
44
+
45
+ # Check action-level constraints
46
+ for constraint in action_spec['constraints']:
47
+ if not await constraint.check(action_name, params):
48
+ raise ConstraintViolationError(constraint.reason)
49
+
50
+ return True
51
+
52
+ # Example: Register safe actions
53
+ whitelist = ActionWhitelist()
54
+ whitelist.register_action(
55
+ name='read_file',
56
+ allowed_params={
57
+ 'path': {'type': str, 'pattern': r'^/safe/path/.*'},
58
+ 'max_size': {'type': int, 'max': 1000000}
59
+ },
60
+ constraints=[
61
+ NoProductionAccessConstraint(),
62
+ RateLimitConstraint(max_per_hour=100)
63
+ ]
64
+ )
65
+ ```
66
+
67
+ ### Pattern 8: Pre-Flight Action Validation
68
+
69
+ Validate before executing:
70
+
71
+ ```python
72
+ class PreFlightValidator:
73
+ async def validate(self, action):
74
+ validations = [
75
+ self.check_authorization(action),
76
+ self.check_resource_limits(action),
77
+ self.check_blast_radius(action),
78
+ self.check_reversibility(action)
79
+ ]
80
+
81
+ results = await asyncio.gather(*validations)
82
+
83
+ for result in results:
84
+ if not result.passed:
85
+ raise PreFlightFailure(
86
+ check=result.check_name,
87
+ reason=result.reason
88
+ )
89
+
90
+ async def check_blast_radius(self, action):
91
+ """Check potential impact of action."""
92
+ if action.type == 'delete':
93
+ affected_count = await self.estimate_affected_records(action)
94
+ if affected_count > 1000:
95
+ return ValidationResult(
96
+ passed=False,
97
+ check_name='blast_radius',
98
+ reason=f'Would affect {affected_count} records (limit: 1000)'
99
+ )
100
+
101
+ return ValidationResult(passed=True)
102
+
103
+ async def check_reversibility(self, action):
104
+ """Ensure action can be reversed."""
105
+ if action.is_irreversible() and not action.has_approval():
106
+ return ValidationResult(
107
+ passed=False,
108
+ check_name='reversibility',
109
+ reason='Irreversible action requires approval'
110
+ )
111
+
112
+ return ValidationResult(passed=True)
113
+ ```
114
+
115
+ ### Pattern 9: Sandboxed Execution
116
+
117
+ Execute actions in isolated environment:
118
+
119
+ ```python
120
+ class SandboxedExecutor:
121
+ def __init__(self):
122
+ self.sandbox = Sandbox(
123
+ network_access=False,
124
+ file_system_access='/tmp/sandbox',
125
+ max_memory_mb=512,
126
+ max_cpu_percent=50,
127
+ timeout_seconds=30
128
+ )
129
+
130
+ async def execute(self, action):
131
+ # Prepare sandbox
132
+ await self.sandbox.reset()
133
+
134
+ # Copy necessary files/data into sandbox
135
+ await self.sandbox.copy_in(action.required_files)
136
+
137
+ try:
138
+ # Execute in sandbox
139
+ result = await self.sandbox.run(
140
+ action.command,
141
+ timeout=action.timeout or 30
142
+ )
143
+
144
+ # Copy results out
145
+ output_files = await self.sandbox.copy_out('/tmp/sandbox/output')
146
+
147
+ return ExecutionResult(
148
+ success=True,
149
+ output=result.stdout,
150
+ files=output_files
151
+ )
152
+
153
+ except TimeoutError:
154
+ raise ExecutionTimeoutError()
155
+
156
+ except MemoryError:
157
+ raise MemoryLimitExceeded()
158
+
159
+ finally:
160
+ # Always clean up
161
+ await self.sandbox.cleanup()
162
+ ```
163
+
164
+ ## Approval Guardrails
165
+
166
+ ### Pattern 10: Risk-Based Approval Routing
167
+
168
+ Route to appropriate approver based on risk:
169
+
170
+ ```python
171
+ class ApprovalRouter:
172
+ def __init__(self):
173
+ self.risk_assessor = RiskAssessor()
174
+
175
+ async def route_for_approval(self, action):
176
+ risk_score = await self.risk_assessor.assess(action)
177
+
178
+ if risk_score >= 0.8:
179
+ # High risk - requires senior approval
180
+ approvers = ['senior-engineer@company.com', 'security@company.com']
181
+ timeout = timedelta(hours=4)
182
+
183
+ elif risk_score >= 0.5:
184
+ # Medium risk - requires team lead approval
185
+ approvers = ['team-lead@company.com']
186
+ timeout = timedelta(hours=1)
187
+
188
+ elif risk_score >= 0.3:
189
+ # Low risk - any team member can approve
190
+ approvers = self.get_on_call_approvers()
191
+ timeout = timedelta(minutes=30)
192
+
193
+ else:
194
+ # Very low risk - auto-approve
195
+ return ApprovalResult(approved=True, auto_approved=True)
196
+
197
+ return await self.request_approval(
198
+ action=action,
199
+ approvers=approvers,
200
+ timeout=timeout,
201
+ risk_score=risk_score
202
+ )
203
+
204
+ class RiskAssessor:
205
+ async def assess(self, action):
206
+ factors = {
207
+ 'is_production': 0.4 if action.env == 'production' else 0.0,
208
+ 'is_destructive': 0.3 if action.is_destructive else 0.0,
209
+ 'is_irreversible': 0.2 if action.is_irreversible else 0.0,
210
+ 'data_volume': min(action.affected_records / 10000, 0.1),
211
+ }
212
+
213
+ return sum(factors.values())
214
+ ```
215
+
216
+ ### Pattern 11: Approval With Context
217
+
218
+ Provide full context to approver:
219
+
220
+ ```python
221
+ class ContextualApproval:
222
+ async def request_approval(self, action):
223
+ # Gather context
224
+ context = {
225
+ 'action': {
226
+ 'type': action.type,
227
+ 'description': action.description,
228
+ 'parameters': action.params
229
+ },
230
+ 'risk_analysis': await self.analyze_risk(action),
231
+ 'impact_assessment': await self.assess_impact(action),
232
+ 'alternatives': await self.suggest_alternatives(action),
233
+ 'rollback_plan': await self.create_rollback_plan(action),
234
+ 'similar_past_actions': await self.find_similar_actions(action)
235
+ }
236
+
237
+ # Send to approver with full context
238
+ approval_request = ApprovalRequest(
239
+ action=action,
240
+ context=context,
241
+ requested_by=action.agent_id,
242
+ requested_at=datetime.now()
243
+ )
244
+
245
+ return await self.approval_service.submit(approval_request)
246
+ ```
@@ -0,0 +1,238 @@
1
+ ---
2
+ phase_relevance: ["design", "review"]
3
+ archetype_relevance: ["*"]
4
+ ---
5
+ # Guardrail Implementation - Input and Output Patterns
6
+
7
+ Input validation, sanitization, prompt injection detection, and output filtering patterns.
8
+
9
+ ## Input Guardrails
10
+
11
+ ### Pattern 1: Layered Input Validation
12
+
13
+ Validate at multiple levels for defense in depth.
14
+
15
+ ```python
16
+ class InputGuardrails:
17
+ def __init__(self):
18
+ self.validators = [
19
+ SizeValidator(max_size=10000),
20
+ EncodingValidator(),
21
+ PromptInjectionDetector(),
22
+ PIIDetector(),
23
+ ContentFilter()
24
+ ]
25
+
26
+ async def validate(self, user_input):
27
+ results = []
28
+
29
+ for validator in self.validators:
30
+ result = await validator.validate(user_input)
31
+ results.append(result)
32
+
33
+ if not result.is_valid:
34
+ raise ValidationError(
35
+ validator=validator.name,
36
+ reason=result.reason,
37
+ severity=result.severity
38
+ )
39
+
40
+ return ValidationResult(valid=True, checks=results)
41
+
42
+ # Usage
43
+ guardrails = InputGuardrails()
44
+ await guardrails.validate(user_input)
45
+ ```
46
+
47
+ ### Pattern 2: Sanitization Pipeline
48
+
49
+ Clean inputs progressively:
50
+
51
+ ```python
52
+ class SanitizationPipeline:
53
+ @staticmethod
54
+ async def sanitize(input_text):
55
+ # Step 1: Normalize
56
+ text = unicodedata.normalize('NFKC', input_text)
57
+
58
+ # Step 2: Remove null bytes
59
+ text = text.replace('\x00', '')
60
+
61
+ # Step 3: Strip control characters (except common whitespace)
62
+ text = ''.join(char for char in text
63
+ if unicodedata.category(char)[0] != 'C'
64
+ or char in '\n\r\t')
65
+
66
+ # Step 4: Limit line length
67
+ lines = text.split('\n')
68
+ text = '\n'.join(line[:1000] for line in lines)
69
+
70
+ # Step 5: Remove injection patterns
71
+ text = await PromptInjectionFilter.filter(text)
72
+
73
+ return text
74
+ ```
75
+
76
+ ### Pattern 3: Prompt Injection Detection
77
+
78
+ Detect common injection patterns:
79
+
80
+ ```python
81
+ class PromptInjectionDetector:
82
+ SUSPICIOUS_PATTERNS = [
83
+ r'ignore\s+(previous|above|all)\s+instructions?',
84
+ r'disregard\s+(previous|above|all)',
85
+ r'forget\s+(previous|above|all)',
86
+ r'new\s+instructions?:',
87
+ r'system:',
88
+ r'<\s*system\s*>',
89
+ r'you\s+are\s+now',
90
+ r'act\s+as\s+if',
91
+ r'pretend\s+you\s+are',
92
+ ]
93
+
94
+ async def validate(self, text):
95
+ text_lower = text.lower()
96
+
97
+ for pattern in self.SUSPICIOUS_PATTERNS:
98
+ if re.search(pattern, text_lower):
99
+ return ValidationResult(
100
+ is_valid=False,
101
+ reason=f"Suspicious pattern detected: {pattern}",
102
+ severity="high"
103
+ )
104
+
105
+ # Check for delimiter confusion
106
+ if '```' in text and 'system' in text_lower:
107
+ return ValidationResult(
108
+ is_valid=False,
109
+ reason="Potential delimiter confusion attack",
110
+ severity="medium"
111
+ )
112
+
113
+ return ValidationResult(is_valid=True)
114
+ ```
115
+
116
+ ## Output Guardrails
117
+
118
+ ### Pattern 4: Schema-Based Output Validation
119
+
120
+ Enforce structured outputs:
121
+
122
+ ```python
123
+ from pydantic import BaseModel, Field, validator
124
+
125
+ class SafeOutput(BaseModel):
126
+ """Base class for all agent outputs with built-in safety."""
127
+
128
+ content: str = Field(..., max_length=10000)
129
+ confidence: float = Field(..., ge=0.0, le=1.0)
130
+ sources: List[str] = Field(default_factory=list)
131
+ contains_pii: bool = False
132
+
133
+ @validator('content')
134
+ def no_sensitive_data(cls, v):
135
+ # Check for common PII patterns
136
+ pii_patterns = {
137
+ 'email': r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b',
138
+ 'ssn': r'\b\d{3}-\d{2}-\d{4}\b',
139
+ 'credit_card': r'\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b',
140
+ }
141
+
142
+ for pii_type, pattern in pii_patterns.items():
143
+ if re.search(pattern, v):
144
+ raise ValueError(f'Output contains {pii_type}')
145
+
146
+ return v
147
+
148
+ @validator('confidence')
149
+ def sufficient_confidence(cls, v):
150
+ if v < 0.3:
151
+ raise ValueError('Confidence too low for production use')
152
+ return v
153
+
154
+ # Force agent to use structured output
155
+ class SafeAgent:
156
+ async def generate(self, prompt):
157
+ raw_output = await self.llm.generate(prompt)
158
+ # Parse into validated structure
159
+ return SafeOutput.parse_obj(raw_output)
160
+ ```
161
+
162
+ ### Pattern 5: Multi-Stage Output Filtering
163
+
164
+ Filter outputs progressively:
165
+
166
+ ```python
167
+ class OutputGuardrails:
168
+ def __init__(self):
169
+ self.filters = [
170
+ PIIRedactor(),
171
+ ContentSafetyFilter(),
172
+ FactualityChecker(),
173
+ BiasDetector()
174
+ ]
175
+
176
+ async def filter(self, output):
177
+ filtered_output = output
178
+
179
+ for filter in self.filters:
180
+ result = await filter.process(filtered_output)
181
+
182
+ if result.should_block:
183
+ raise UnsafeOutputError(
184
+ filter=filter.name,
185
+ reason=result.reason
186
+ )
187
+
188
+ filtered_output = result.filtered_content
189
+
190
+ return filtered_output
191
+
192
+ # Example: PII Redactor
193
+ class PIIRedactor:
194
+ async def process(self, text):
195
+ findings = detect_pii(text)
196
+
197
+ if findings:
198
+ # Redact PII
199
+ redacted = redact_pii(text)
200
+ return FilterResult(
201
+ should_block=False, # Allow but redact
202
+ filtered_content=redacted,
203
+ warnings=[f"Redacted {len(findings)} PII instances"]
204
+ )
205
+
206
+ return FilterResult(
207
+ should_block=False,
208
+ filtered_content=text
209
+ )
210
+ ```
211
+
212
+ ### Pattern 6: Confidence-Based Output Handling
213
+
214
+ Different handling based on confidence:
215
+
216
+ ```python
217
+ class ConfidenceBasedOutputHandler:
218
+ async def handle(self, output):
219
+ confidence = output.confidence
220
+
221
+ if confidence >= 0.9:
222
+ # High confidence - auto-approve
223
+ return await self.auto_approve(output)
224
+
225
+ elif confidence >= 0.7:
226
+ # Medium confidence - human review optional
227
+ return await self.queue_for_review(output, priority="low")
228
+
229
+ elif confidence >= 0.5:
230
+ # Low confidence - require human review
231
+ return await self.require_human_review(output)
232
+
233
+ else:
234
+ # Very low confidence - reject
235
+ raise LowConfidenceError(
236
+ f"Confidence {confidence} below threshold"
237
+ )
238
+ ```
@@ -0,0 +1,209 @@
1
+ ---
2
+ phase_relevance: ["design", "review"]
3
+ archetype_relevance: ["*"]
4
+ ---
5
+ # Guardrail Implementation - Resources and Monitoring
6
+
7
+ Resource limiting, adaptive rate limiting, anomaly detection, and complete guardrail system architecture.
8
+
9
+ ## Resource Guardrails
10
+
11
+ ### Pattern 12: Multi-Dimensional Resource Limiting
12
+
13
+ Track multiple resource types:
14
+
15
+ ```python
16
+ class ResourceGovernor:
17
+ def __init__(self, limits):
18
+ self.limits = limits
19
+ self.usage = {
20
+ 'tokens': 0,
21
+ 'api_calls': 0,
22
+ 'execution_time': 0,
23
+ 'memory_mb': 0,
24
+ 'cost_usd': 0.0
25
+ }
26
+
27
+ async def check_and_track(self, resource_type, amount):
28
+ # Check limit
29
+ if self.usage[resource_type] + amount > self.limits[resource_type]:
30
+ raise ResourceLimitExceeded(
31
+ resource=resource_type,
32
+ used=self.usage[resource_type],
33
+ requested=amount,
34
+ limit=self.limits[resource_type]
35
+ )
36
+
37
+ # Track usage
38
+ self.usage[resource_type] += amount
39
+
40
+ def get_remaining(self, resource_type):
41
+ return self.limits[resource_type] - self.usage[resource_type]
42
+
43
+ # Usage
44
+ governor = ResourceGovernor(limits={
45
+ 'tokens': 100000,
46
+ 'api_calls': 1000,
47
+ 'execution_time': 300, # seconds
48
+ 'memory_mb': 1024,
49
+ 'cost_usd': 10.0
50
+ })
51
+
52
+ # Before each operation
53
+ await governor.check_and_track('tokens', estimated_tokens)
54
+ await governor.check_and_track('api_calls', 1)
55
+ ```
56
+
57
+ ### Pattern 13: Adaptive Rate Limiting
58
+
59
+ Adjust limits based on behavior:
60
+
61
+ ```python
62
+ class AdaptiveRateLimiter:
63
+ def __init__(self):
64
+ self.base_limit = 100 # requests per hour
65
+ self.user_limits = {}
66
+
67
+ async def check_limit(self, user_id):
68
+ limit = self.get_user_limit(user_id)
69
+ usage = await self.get_usage(user_id)
70
+
71
+ if usage >= limit:
72
+ raise RateLimitExceeded()
73
+
74
+ await self.record_request(user_id)
75
+
76
+ def get_user_limit(self, user_id):
77
+ if user_id not in self.user_limits:
78
+ self.user_limits[user_id] = {
79
+ 'limit': self.base_limit,
80
+ 'trust_score': 0.5
81
+ }
82
+
83
+ # Adjust limit based on trust score
84
+ trust_score = self.user_limits[user_id]['trust_score']
85
+ return int(self.base_limit * (0.5 + trust_score))
86
+
87
+ async def update_trust_score(self, user_id, behavior):
88
+ """Adjust trust based on behavior."""
89
+ if behavior == 'good':
90
+ # Increase trust, raise limit
91
+ self.user_limits[user_id]['trust_score'] = min(
92
+ 1.0,
93
+ self.user_limits[user_id]['trust_score'] + 0.1
94
+ )
95
+ elif behavior == 'bad':
96
+ # Decrease trust, lower limit
97
+ self.user_limits[user_id]['trust_score'] = max(
98
+ 0.0,
99
+ self.user_limits[user_id]['trust_score'] - 0.2
100
+ )
101
+ ```
102
+
103
+ ## Monitoring Guardrails
104
+
105
+ ### Pattern 14: Anomaly Detection
106
+
107
+ Detect unusual patterns:
108
+
109
+ ```python
110
+ class AnomalyDetector:
111
+ def __init__(self):
112
+ self.baseline = self.load_baseline()
113
+
114
+ async def check_for_anomalies(self, agent_id, action):
115
+ features = self.extract_features(action)
116
+
117
+ # Compare to baseline
118
+ deviation = self.calculate_deviation(features, self.baseline[agent_id])
119
+
120
+ if deviation > 2.0: # 2 standard deviations
121
+ await self.alert_anomaly(
122
+ agent_id=agent_id,
123
+ action=action,
124
+ deviation=deviation,
125
+ features=features
126
+ )
127
+
128
+ # Optionally block anomalous action
129
+ if deviation > 3.0:
130
+ raise AnomalousActionBlocked()
131
+
132
+ def extract_features(self, action):
133
+ return {
134
+ 'time_of_day': datetime.now().hour,
135
+ 'action_type': action.type,
136
+ 'parameter_count': len(action.params),
137
+ 'affected_records': action.affected_records
138
+ }
139
+ ```
140
+
141
+ ## Complete Guardrail System
142
+
143
+ ### Pattern 15: Layered Guardrail Architecture
144
+
145
+ Combine all patterns:
146
+
147
+ ```python
148
+ class ComprehensiveGuardrails:
149
+ def __init__(self):
150
+ # Input layer
151
+ self.input_validators = InputGuardrails()
152
+
153
+ # Output layer
154
+ self.output_filters = OutputGuardrails()
155
+
156
+ # Action layer
157
+ self.action_whitelist = ActionWhitelist()
158
+ self.preflight = PreFlightValidator()
159
+ self.approval_router = ApprovalRouter()
160
+
161
+ # Resource layer
162
+ self.resource_governor = ResourceGovernor(...)
163
+
164
+ # Monitoring layer
165
+ self.anomaly_detector = AnomalyDetector()
166
+ self.audit_logger = AuditLogger()
167
+
168
+ async def execute_safely(self, user_input, agent):
169
+ # 1. Input guardrails
170
+ validated_input = await self.input_validators.validate(user_input)
171
+
172
+ # 2. Process through agent
173
+ raw_output = await agent.process(validated_input)
174
+
175
+ # 3. Output guardrails
176
+ safe_output = await self.output_filters.filter(raw_output)
177
+
178
+ # If output includes actions...
179
+ if safe_output.proposed_actions:
180
+ for action in safe_output.proposed_actions:
181
+ # 4. Action guardrails
182
+ await self.action_whitelist.validate_action(
183
+ action.name,
184
+ action.params
185
+ )
186
+ await self.preflight.validate(action)
187
+
188
+ # 5. Approval if needed
189
+ if action.requires_approval():
190
+ approval = await self.approval_router.route_for_approval(action)
191
+ if not approval.approved:
192
+ continue
193
+
194
+ # 6. Resource check
195
+ await self.resource_governor.check_and_track(
196
+ 'api_calls', 1
197
+ )
198
+
199
+ # 7. Anomaly detection
200
+ await self.anomaly_detector.check_for_anomalies(
201
+ agent.id,
202
+ action
203
+ )
204
+
205
+ # 8. Execute with audit
206
+ result = await self.execute_with_audit(action)
207
+
208
+ return safe_output
209
+ ```