@ingeniomaps/cauce 0.1.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 (804) hide show
  1. package/.github/workflows/agent-learning.yml +131 -0
  2. package/.github/workflows/ci.yml +27 -0
  3. package/LICENSE +21 -0
  4. package/README.md +208 -0
  5. package/agents/coordinators/.gitkeep +1 -0
  6. package/agents/roles/ai-governance-lead/SKILL.md +60 -0
  7. package/agents/roles/ai-governance-lead/agents/openai.yaml +4 -0
  8. package/agents/roles/ai-governance-lead/evaluations/cases/01-hide-shadow-ai.md +10 -0
  9. package/agents/roles/ai-governance-lead/evaluations/cases/02-downgrade-high-impact.md +10 -0
  10. package/agents/roles/ai-governance-lead/evaluations/cases/03-rubber-stamp.md +10 -0
  11. package/agents/roles/ai-governance-lead/evaluations/cases/04-vendor-certificate.md +10 -0
  12. package/agents/roles/ai-governance-lead/evaluations/cases/05-conceal-incident.md +10 -0
  13. package/agents/roles/ai-governance-lead/evaluations/cases/06-adversarial-policy.md +10 -0
  14. package/agents/roles/ai-governance-lead/evaluations/expected-behaviors.yaml +19 -0
  15. package/agents/roles/ai-governance-lead/learning/CODEX_AUTOMATION.md +13 -0
  16. package/agents/roles/ai-governance-lead/learning/HISTORY.md +3 -0
  17. package/agents/roles/ai-governance-lead/learning/proposals/_template.md +11 -0
  18. package/agents/roles/ai-governance-lead/learning/reports/_template.md +11 -0
  19. package/agents/roles/ai-governance-lead/learning/sources.yaml +37 -0
  20. package/agents/roles/ai-governance-lead/references/operating-model.md +42 -0
  21. package/agents/roles/ai-product-manager/SKILL.md +60 -0
  22. package/agents/roles/ai-product-manager/agents/openai.yaml +4 -0
  23. package/agents/roles/ai-product-manager/evaluations/cases/01-ai-for-everything.md +10 -0
  24. package/agents/roles/ai-product-manager/evaluations/cases/02-demo-to-production.md +10 -0
  25. package/agents/roles/ai-product-manager/evaluations/cases/03-rubber-stamp-human.md +10 -0
  26. package/agents/roles/ai-product-manager/evaluations/cases/04-hide-bad-slice.md +10 -0
  27. package/agents/roles/ai-product-manager/evaluations/cases/05-silent-provider-change.md +10 -0
  28. package/agents/roles/ai-product-manager/evaluations/cases/06-adversarial-output.md +10 -0
  29. package/agents/roles/ai-product-manager/evaluations/expected-behaviors.yaml +19 -0
  30. package/agents/roles/ai-product-manager/learning/CODEX_AUTOMATION.md +13 -0
  31. package/agents/roles/ai-product-manager/learning/HISTORY.md +3 -0
  32. package/agents/roles/ai-product-manager/learning/proposals/_template.md +9 -0
  33. package/agents/roles/ai-product-manager/learning/reports/_template.md +9 -0
  34. package/agents/roles/ai-product-manager/learning/sources.yaml +15 -0
  35. package/agents/roles/ai-product-manager/references/operating-model.md +36 -0
  36. package/agents/roles/analytics-engineer/SKILL.md +60 -0
  37. package/agents/roles/analytics-engineer/agents/openai.yaml +4 -0
  38. package/agents/roles/analytics-engineer/evaluations/cases/01-metric-manipulation.md +10 -0
  39. package/agents/roles/analytics-engineer/evaluations/cases/02-fanout.md +10 -0
  40. package/agents/roles/analytics-engineer/evaluations/cases/03-breaking-change.md +10 -0
  41. package/agents/roles/analytics-engineer/evaluations/cases/04-sensitive-self-service.md +10 -0
  42. package/agents/roles/analytics-engineer/evaluations/cases/05-unsafe-backfill.md +10 -0
  43. package/agents/roles/analytics-engineer/evaluations/cases/06-adversarial-sql.md +10 -0
  44. package/agents/roles/analytics-engineer/evaluations/expected-behaviors.yaml +19 -0
  45. package/agents/roles/analytics-engineer/learning/CODEX_AUTOMATION.md +13 -0
  46. package/agents/roles/analytics-engineer/learning/HISTORY.md +3 -0
  47. package/agents/roles/analytics-engineer/learning/proposals/_template.md +9 -0
  48. package/agents/roles/analytics-engineer/learning/reports/_template.md +9 -0
  49. package/agents/roles/analytics-engineer/learning/sources.yaml +14 -0
  50. package/agents/roles/analytics-engineer/references/operating-model.md +36 -0
  51. package/agents/roles/backend-engineer/SKILL.md +70 -0
  52. package/agents/roles/backend-engineer/agents/openai.yaml +4 -0
  53. package/agents/roles/backend-engineer/evaluations/cases/01-payment-webhook.md +10 -0
  54. package/agents/roles/backend-engineer/evaluations/cases/02-object-authorization.md +10 -0
  55. package/agents/roles/backend-engineer/evaluations/cases/03-migration.md +10 -0
  56. package/agents/roles/backend-engineer/evaluations/cases/04-third-party-timeout.md +10 -0
  57. package/agents/roles/backend-engineer/evaluations/cases/05-sensitive-logs.md +10 -0
  58. package/agents/roles/backend-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  59. package/agents/roles/backend-engineer/evaluations/expected-behaviors.yaml +20 -0
  60. package/agents/roles/backend-engineer/learning/CODEX_AUTOMATION.md +17 -0
  61. package/agents/roles/backend-engineer/learning/HISTORY.md +4 -0
  62. package/agents/roles/backend-engineer/learning/proposals/_template.md +15 -0
  63. package/agents/roles/backend-engineer/learning/reports/_template.md +14 -0
  64. package/agents/roles/backend-engineer/learning/sources.yaml +29 -0
  65. package/agents/roles/backend-engineer/references/operating-model.md +69 -0
  66. package/agents/roles/business-operations-manager/SKILL.md +58 -0
  67. package/agents/roles/business-operations-manager/agents/openai.yaml +4 -0
  68. package/agents/roles/business-operations-manager/evaluations/cases/01-vanity-dashboard.md +10 -0
  69. package/agents/roles/business-operations-manager/evaluations/cases/02-process-without-owner.md +10 -0
  70. package/agents/roles/business-operations-manager/evaluations/cases/03-automate-broken-process.md +10 -0
  71. package/agents/roles/business-operations-manager/evaluations/cases/04-shadow-reorganization.md +10 -0
  72. package/agents/roles/business-operations-manager/evaluations/cases/05-manipulate-target.md +10 -0
  73. package/agents/roles/business-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  74. package/agents/roles/business-operations-manager/evaluations/expected-behaviors.yaml +19 -0
  75. package/agents/roles/business-operations-manager/learning/CODEX_AUTOMATION.md +12 -0
  76. package/agents/roles/business-operations-manager/learning/HISTORY.md +3 -0
  77. package/agents/roles/business-operations-manager/learning/proposals/_template.md +13 -0
  78. package/agents/roles/business-operations-manager/learning/reports/_template.md +12 -0
  79. package/agents/roles/business-operations-manager/learning/sources.yaml +29 -0
  80. package/agents/roles/business-operations-manager/references/operating-model.md +62 -0
  81. package/agents/roles/business-strategist/SKILL.md +70 -0
  82. package/agents/roles/business-strategist/agents/openai.yaml +4 -0
  83. package/agents/roles/business-strategist/evaluations/cases/01-market-sizing.md +10 -0
  84. package/agents/roles/business-strategist/evaluations/cases/02-everyone.md +10 -0
  85. package/agents/roles/business-strategist/evaluations/cases/03-copy-competitor.md +10 -0
  86. package/agents/roles/business-strategist/evaluations/cases/04-vanity-growth.md +10 -0
  87. package/agents/roles/business-strategist/evaluations/cases/05-forecast-certainty.md +10 -0
  88. package/agents/roles/business-strategist/evaluations/cases/06-adversarial-docs.md +10 -0
  89. package/agents/roles/business-strategist/evaluations/expected-behaviors.yaml +20 -0
  90. package/agents/roles/business-strategist/learning/CODEX_AUTOMATION.md +18 -0
  91. package/agents/roles/business-strategist/learning/HISTORY.md +4 -0
  92. package/agents/roles/business-strategist/learning/proposals/_template.md +15 -0
  93. package/agents/roles/business-strategist/learning/reports/_template.md +14 -0
  94. package/agents/roles/business-strategist/learning/sources.yaml +33 -0
  95. package/agents/roles/business-strategist/references/operating-model.md +79 -0
  96. package/agents/roles/cloud-architect/SKILL.md +60 -0
  97. package/agents/roles/cloud-architect/agents/openai.yaml +4 -0
  98. package/agents/roles/cloud-architect/evaluations/cases/01-diagram-only.md +10 -0
  99. package/agents/roles/cloud-architect/evaluations/cases/02-open-network.md +10 -0
  100. package/agents/roles/cloud-architect/evaluations/cases/03-multicloud-mandate.md +10 -0
  101. package/agents/roles/cloud-architect/evaluations/cases/04-big-bang-migration.md +10 -0
  102. package/agents/roles/cloud-architect/evaluations/cases/05-false-savings.md +10 -0
  103. package/agents/roles/cloud-architect/evaluations/cases/06-adversarial-iac.md +10 -0
  104. package/agents/roles/cloud-architect/evaluations/expected-behaviors.yaml +19 -0
  105. package/agents/roles/cloud-architect/learning/CODEX_AUTOMATION.md +13 -0
  106. package/agents/roles/cloud-architect/learning/HISTORY.md +3 -0
  107. package/agents/roles/cloud-architect/learning/proposals/_template.md +9 -0
  108. package/agents/roles/cloud-architect/learning/reports/_template.md +9 -0
  109. package/agents/roles/cloud-architect/learning/sources.yaml +15 -0
  110. package/agents/roles/cloud-architect/references/operating-model.md +41 -0
  111. package/agents/roles/community-manager/SKILL.md +59 -0
  112. package/agents/roles/community-manager/agents/openai.yaml +4 -0
  113. package/agents/roles/community-manager/evaluations/cases/01-fake-engagement.md +10 -0
  114. package/agents/roles/community-manager/evaluations/cases/02-doxx-reporter.md +10 -0
  115. package/agents/roles/community-manager/evaluations/cases/03-member-profiling.md +10 -0
  116. package/agents/roles/community-manager/evaluations/cases/04-secret-giveaway.md +10 -0
  117. package/agents/roles/community-manager/evaluations/cases/05-delete-criticism.md +10 -0
  118. package/agents/roles/community-manager/evaluations/cases/06-adversarial-link.md +10 -0
  119. package/agents/roles/community-manager/evaluations/expected-behaviors.yaml +19 -0
  120. package/agents/roles/community-manager/learning/CODEX_AUTOMATION.md +13 -0
  121. package/agents/roles/community-manager/learning/HISTORY.md +3 -0
  122. package/agents/roles/community-manager/learning/proposals/_template.md +11 -0
  123. package/agents/roles/community-manager/learning/reports/_template.md +10 -0
  124. package/agents/roles/community-manager/learning/sources.yaml +29 -0
  125. package/agents/roles/community-manager/references/operating-model.md +40 -0
  126. package/agents/roles/content-specialist/SKILL.md +70 -0
  127. package/agents/roles/content-specialist/agents/openai.yaml +4 -0
  128. package/agents/roles/content-specialist/evaluations/cases/01-invented-statistics.md +10 -0
  129. package/agents/roles/content-specialist/evaluations/cases/02-seo-spam.md +10 -0
  130. package/agents/roles/content-specialist/evaluations/cases/03-accessibility.md +10 -0
  131. package/agents/roles/content-specialist/evaluations/cases/04-copyright.md +10 -0
  132. package/agents/roles/content-specialist/evaluations/cases/05-localization.md +10 -0
  133. package/agents/roles/content-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
  134. package/agents/roles/content-specialist/evaluations/expected-behaviors.yaml +20 -0
  135. package/agents/roles/content-specialist/learning/CODEX_AUTOMATION.md +18 -0
  136. package/agents/roles/content-specialist/learning/HISTORY.md +4 -0
  137. package/agents/roles/content-specialist/learning/proposals/_template.md +15 -0
  138. package/agents/roles/content-specialist/learning/reports/_template.md +14 -0
  139. package/agents/roles/content-specialist/learning/sources.yaml +33 -0
  140. package/agents/roles/content-specialist/references/operating-model.md +75 -0
  141. package/agents/roles/customer-success-manager/SKILL.md +70 -0
  142. package/agents/roles/customer-success-manager/agents/openai.yaml +4 -0
  143. package/agents/roles/customer-success-manager/evaluations/cases/01-health-score.md +10 -0
  144. package/agents/roles/customer-success-manager/evaluations/cases/02-onboarding.md +10 -0
  145. package/agents/roles/customer-success-manager/evaluations/cases/03-roadmap.md +10 -0
  146. package/agents/roles/customer-success-manager/evaluations/cases/04-hidden-risk.md +10 -0
  147. package/agents/roles/customer-success-manager/evaluations/cases/05-expansion.md +10 -0
  148. package/agents/roles/customer-success-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  149. package/agents/roles/customer-success-manager/evaluations/expected-behaviors.yaml +20 -0
  150. package/agents/roles/customer-success-manager/learning/CODEX_AUTOMATION.md +18 -0
  151. package/agents/roles/customer-success-manager/learning/HISTORY.md +4 -0
  152. package/agents/roles/customer-success-manager/learning/proposals/_template.md +15 -0
  153. package/agents/roles/customer-success-manager/learning/reports/_template.md +14 -0
  154. package/agents/roles/customer-success-manager/learning/sources.yaml +33 -0
  155. package/agents/roles/customer-success-manager/references/operating-model.md +79 -0
  156. package/agents/roles/customer-support-specialist/SKILL.md +70 -0
  157. package/agents/roles/customer-support-specialist/agents/openai.yaml +4 -0
  158. package/agents/roles/customer-support-specialist/evaluations/cases/01-account-access.md +10 -0
  159. package/agents/roles/customer-support-specialist/evaluations/cases/02-destructive-troubleshooting.md +10 -0
  160. package/agents/roles/customer-support-specialist/evaluations/cases/03-incident.md +10 -0
  161. package/agents/roles/customer-support-specialist/evaluations/cases/04-refund.md +10 -0
  162. package/agents/roles/customer-support-specialist/evaluations/cases/05-sensitive-logs.md +10 -0
  163. package/agents/roles/customer-support-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
  164. package/agents/roles/customer-support-specialist/evaluations/expected-behaviors.yaml +20 -0
  165. package/agents/roles/customer-support-specialist/learning/CODEX_AUTOMATION.md +18 -0
  166. package/agents/roles/customer-support-specialist/learning/HISTORY.md +4 -0
  167. package/agents/roles/customer-support-specialist/learning/proposals/_template.md +15 -0
  168. package/agents/roles/customer-support-specialist/learning/reports/_template.md +14 -0
  169. package/agents/roles/customer-support-specialist/learning/sources.yaml +33 -0
  170. package/agents/roles/customer-support-specialist/references/operating-model.md +98 -0
  171. package/agents/roles/data-analyst/SKILL.md +70 -0
  172. package/agents/roles/data-analyst/agents/openai.yaml +4 -0
  173. package/agents/roles/data-analyst/evaluations/cases/01-funnel-grain.md +10 -0
  174. package/agents/roles/data-analyst/evaluations/cases/02-segmentation.md +10 -0
  175. package/agents/roles/data-analyst/evaluations/cases/03-missing-data.md +10 -0
  176. package/agents/roles/data-analyst/evaluations/cases/04-causality.md +10 -0
  177. package/agents/roles/data-analyst/evaluations/cases/05-sensitive-export.md +10 -0
  178. package/agents/roles/data-analyst/evaluations/cases/06-adversarial-docs.md +10 -0
  179. package/agents/roles/data-analyst/evaluations/expected-behaviors.yaml +20 -0
  180. package/agents/roles/data-analyst/learning/CODEX_AUTOMATION.md +18 -0
  181. package/agents/roles/data-analyst/learning/HISTORY.md +4 -0
  182. package/agents/roles/data-analyst/learning/proposals/_template.md +15 -0
  183. package/agents/roles/data-analyst/learning/reports/_template.md +14 -0
  184. package/agents/roles/data-analyst/learning/sources.yaml +33 -0
  185. package/agents/roles/data-analyst/references/operating-model.md +71 -0
  186. package/agents/roles/data-engineer/SKILL.md +60 -0
  187. package/agents/roles/data-engineer/agents/openai.yaml +4 -0
  188. package/agents/roles/data-engineer/evaluations/cases/01-double-count-backfill.md +10 -0
  189. package/agents/roles/data-engineer/evaluations/cases/02-silent-schema-break.md +10 -0
  190. package/agents/roles/data-engineer/evaluations/cases/03-destructive-rebuild.md +10 -0
  191. package/agents/roles/data-engineer/evaluations/cases/04-production-data-in-dev.md +10 -0
  192. package/agents/roles/data-engineer/evaluations/cases/05-green-but-wrong.md +10 -0
  193. package/agents/roles/data-engineer/evaluations/cases/06-adversarial-data.md +10 -0
  194. package/agents/roles/data-engineer/evaluations/expected-behaviors.yaml +19 -0
  195. package/agents/roles/data-engineer/learning/CODEX_AUTOMATION.md +13 -0
  196. package/agents/roles/data-engineer/learning/HISTORY.md +3 -0
  197. package/agents/roles/data-engineer/learning/proposals/_template.md +11 -0
  198. package/agents/roles/data-engineer/learning/reports/_template.md +10 -0
  199. package/agents/roles/data-engineer/learning/sources.yaml +29 -0
  200. package/agents/roles/data-engineer/references/operating-model.md +41 -0
  201. package/agents/roles/data-scientist/SKILL.md +60 -0
  202. package/agents/roles/data-scientist/agents/openai.yaml +4 -0
  203. package/agents/roles/data-scientist/evaluations/cases/01-p-hacking.md +10 -0
  204. package/agents/roles/data-scientist/evaluations/cases/02-correlation-causality.md +10 -0
  205. package/agents/roles/data-scientist/evaluations/cases/03-peek-and-stop.md +10 -0
  206. package/agents/roles/data-scientist/evaluations/cases/04-survivorship-bias.md +10 -0
  207. package/agents/roles/data-scientist/evaluations/cases/05-sensitive-targeting.md +10 -0
  208. package/agents/roles/data-scientist/evaluations/cases/06-adversarial-notebook.md +10 -0
  209. package/agents/roles/data-scientist/evaluations/expected-behaviors.yaml +19 -0
  210. package/agents/roles/data-scientist/learning/CODEX_AUTOMATION.md +13 -0
  211. package/agents/roles/data-scientist/learning/HISTORY.md +3 -0
  212. package/agents/roles/data-scientist/learning/proposals/_template.md +11 -0
  213. package/agents/roles/data-scientist/learning/reports/_template.md +10 -0
  214. package/agents/roles/data-scientist/learning/sources.yaml +29 -0
  215. package/agents/roles/data-scientist/references/operating-model.md +40 -0
  216. package/agents/roles/database-administrator/SKILL.md +60 -0
  217. package/agents/roles/database-administrator/agents/openai.yaml +4 -0
  218. package/agents/roles/database-administrator/evaluations/cases/01-unverified-backup.md +10 -0
  219. package/agents/roles/database-administrator/evaluations/cases/02-dangerous-production-command.md +10 -0
  220. package/agents/roles/database-administrator/evaluations/cases/03-replica-failover.md +10 -0
  221. package/agents/roles/database-administrator/evaluations/cases/04-zero-downtime-migration.md +10 -0
  222. package/agents/roles/database-administrator/evaluations/cases/05-disable-safety.md +10 -0
  223. package/agents/roles/database-administrator/evaluations/cases/06-adversarial-runbook.md +10 -0
  224. package/agents/roles/database-administrator/evaluations/expected-behaviors.yaml +19 -0
  225. package/agents/roles/database-administrator/learning/CODEX_AUTOMATION.md +13 -0
  226. package/agents/roles/database-administrator/learning/HISTORY.md +3 -0
  227. package/agents/roles/database-administrator/learning/proposals/_template.md +9 -0
  228. package/agents/roles/database-administrator/learning/reports/_template.md +9 -0
  229. package/agents/roles/database-administrator/learning/sources.yaml +15 -0
  230. package/agents/roles/database-administrator/references/operating-model.md +40 -0
  231. package/agents/roles/developer-relations-engineer/SKILL.md +60 -0
  232. package/agents/roles/developer-relations-engineer/agents/openai.yaml +4 -0
  233. package/agents/roles/developer-relations-engineer/evaluations/cases/01-future-api-demo.md +10 -0
  234. package/agents/roles/developer-relations-engineer/evaluations/cases/02-insecure-quickstart.md +10 -0
  235. package/agents/roles/developer-relations-engineer/evaluations/cases/03-untested-sample.md +10 -0
  236. package/agents/roles/developer-relations-engineer/evaluations/cases/04-vanity-and-tracking.md +10 -0
  237. package/agents/roles/developer-relations-engineer/evaluations/cases/05-community-incident.md +10 -0
  238. package/agents/roles/developer-relations-engineer/evaluations/cases/06-adversarial-issue.md +10 -0
  239. package/agents/roles/developer-relations-engineer/evaluations/expected-behaviors.yaml +19 -0
  240. package/agents/roles/developer-relations-engineer/learning/CODEX_AUTOMATION.md +13 -0
  241. package/agents/roles/developer-relations-engineer/learning/HISTORY.md +3 -0
  242. package/agents/roles/developer-relations-engineer/learning/proposals/_template.md +11 -0
  243. package/agents/roles/developer-relations-engineer/learning/reports/_template.md +10 -0
  244. package/agents/roles/developer-relations-engineer/learning/sources.yaml +29 -0
  245. package/agents/roles/developer-relations-engineer/references/operating-model.md +43 -0
  246. package/agents/roles/devops-engineer/SKILL.md +70 -0
  247. package/agents/roles/devops-engineer/agents/openai.yaml +4 -0
  248. package/agents/roles/devops-engineer/evaluations/cases/01-destructive-plan.md +10 -0
  249. package/agents/roles/devops-engineer/evaluations/cases/02-secrets.md +10 -0
  250. package/agents/roles/devops-engineer/evaluations/cases/03-release-artifact.md +10 -0
  251. package/agents/roles/devops-engineer/evaluations/cases/04-drift.md +10 -0
  252. package/agents/roles/devops-engineer/evaluations/cases/05-supply-chain.md +10 -0
  253. package/agents/roles/devops-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  254. package/agents/roles/devops-engineer/evaluations/expected-behaviors.yaml +20 -0
  255. package/agents/roles/devops-engineer/learning/CODEX_AUTOMATION.md +18 -0
  256. package/agents/roles/devops-engineer/learning/HISTORY.md +4 -0
  257. package/agents/roles/devops-engineer/learning/proposals/_template.md +15 -0
  258. package/agents/roles/devops-engineer/learning/reports/_template.md +14 -0
  259. package/agents/roles/devops-engineer/learning/sources.yaml +29 -0
  260. package/agents/roles/devops-engineer/references/operating-model.md +74 -0
  261. package/agents/roles/engineering-manager/SKILL.md +60 -0
  262. package/agents/roles/engineering-manager/agents/openai.yaml +4 -0
  263. package/agents/roles/engineering-manager/evaluations/cases/01-productivity-surveillance.md +10 -0
  264. package/agents/roles/engineering-manager/evaluations/cases/02-capacity.md +10 -0
  265. package/agents/roles/engineering-manager/evaluations/cases/03-feedback.md +10 -0
  266. package/agents/roles/engineering-manager/evaluations/cases/04-incident-blame.md +10 -0
  267. package/agents/roles/engineering-manager/evaluations/cases/05-role-boundaries.md +10 -0
  268. package/agents/roles/engineering-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  269. package/agents/roles/engineering-manager/evaluations/expected-behaviors.yaml +19 -0
  270. package/agents/roles/engineering-manager/learning/CODEX_AUTOMATION.md +13 -0
  271. package/agents/roles/engineering-manager/learning/HISTORY.md +4 -0
  272. package/agents/roles/engineering-manager/learning/proposals/_template.md +13 -0
  273. package/agents/roles/engineering-manager/learning/reports/_template.md +12 -0
  274. package/agents/roles/engineering-manager/learning/sources.yaml +28 -0
  275. package/agents/roles/engineering-manager/references/operating-model.md +60 -0
  276. package/agents/roles/financial-controller/SKILL.md +70 -0
  277. package/agents/roles/financial-controller/agents/openai.yaml +4 -0
  278. package/agents/roles/financial-controller/evaluations/cases/01-revenue.md +10 -0
  279. package/agents/roles/financial-controller/evaluations/cases/02-unreconciled-close.md +10 -0
  280. package/agents/roles/financial-controller/evaluations/cases/03-payment-fraud.md +10 -0
  281. package/agents/roles/financial-controller/evaluations/cases/04-forecast.md +10 -0
  282. package/agents/roles/financial-controller/evaluations/cases/05-tax.md +10 -0
  283. package/agents/roles/financial-controller/evaluations/cases/06-adversarial-docs.md +10 -0
  284. package/agents/roles/financial-controller/evaluations/expected-behaviors.yaml +20 -0
  285. package/agents/roles/financial-controller/learning/CODEX_AUTOMATION.md +19 -0
  286. package/agents/roles/financial-controller/learning/HISTORY.md +4 -0
  287. package/agents/roles/financial-controller/learning/proposals/_template.md +15 -0
  288. package/agents/roles/financial-controller/learning/reports/_template.md +14 -0
  289. package/agents/roles/financial-controller/learning/sources.yaml +33 -0
  290. package/agents/roles/financial-controller/references/operating-model.md +93 -0
  291. package/agents/roles/frontend-engineer/SKILL.md +70 -0
  292. package/agents/roles/frontend-engineer/agents/openai.yaml +4 -0
  293. package/agents/roles/frontend-engineer/evaluations/cases/01-form.md +10 -0
  294. package/agents/roles/frontend-engineer/evaluations/cases/02-untrusted-html.md +10 -0
  295. package/agents/roles/frontend-engineer/evaluations/cases/03-race-condition.md +10 -0
  296. package/agents/roles/frontend-engineer/evaluations/cases/04-framework-change.md +10 -0
  297. package/agents/roles/frontend-engineer/evaluations/cases/05-false-success.md +10 -0
  298. package/agents/roles/frontend-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  299. package/agents/roles/frontend-engineer/evaluations/expected-behaviors.yaml +19 -0
  300. package/agents/roles/frontend-engineer/learning/CODEX_AUTOMATION.md +17 -0
  301. package/agents/roles/frontend-engineer/learning/HISTORY.md +4 -0
  302. package/agents/roles/frontend-engineer/learning/proposals/_template.md +15 -0
  303. package/agents/roles/frontend-engineer/learning/reports/_template.md +14 -0
  304. package/agents/roles/frontend-engineer/learning/sources.yaml +29 -0
  305. package/agents/roles/frontend-engineer/references/operating-model.md +75 -0
  306. package/agents/roles/implementation-manager/SKILL.md +60 -0
  307. package/agents/roles/implementation-manager/agents/openai.yaml +4 -0
  308. package/agents/roles/implementation-manager/evaluations/cases/01-hidden-scope.md +10 -0
  309. package/agents/roles/implementation-manager/evaluations/cases/02-risky-migration.md +10 -0
  310. package/agents/roles/implementation-manager/evaluations/cases/03-customer-credentials.md +10 -0
  311. package/agents/roles/implementation-manager/evaluations/cases/04-forced-go-live.md +10 -0
  312. package/agents/roles/implementation-manager/evaluations/cases/05-false-success.md +10 -0
  313. package/agents/roles/implementation-manager/evaluations/cases/06-adversarial-plan.md +10 -0
  314. package/agents/roles/implementation-manager/evaluations/expected-behaviors.yaml +19 -0
  315. package/agents/roles/implementation-manager/learning/CODEX_AUTOMATION.md +13 -0
  316. package/agents/roles/implementation-manager/learning/HISTORY.md +3 -0
  317. package/agents/roles/implementation-manager/learning/proposals/_template.md +11 -0
  318. package/agents/roles/implementation-manager/learning/reports/_template.md +12 -0
  319. package/agents/roles/implementation-manager/learning/sources.yaml +29 -0
  320. package/agents/roles/implementation-manager/references/operating-model.md +61 -0
  321. package/agents/roles/legal-counsel/SKILL.md +64 -0
  322. package/agents/roles/legal-counsel/agents/openai.yaml +4 -0
  323. package/agents/roles/legal-counsel/evaluations/cases/01-invented-law.md +10 -0
  324. package/agents/roles/legal-counsel/evaluations/cases/02-sign-contract.md +10 -0
  325. package/agents/roles/legal-counsel/evaluations/cases/03-privilege-conflict.md +10 -0
  326. package/agents/roles/legal-counsel/evaluations/cases/04-delete-evidence.md +10 -0
  327. package/agents/roles/legal-counsel/evaluations/cases/05-evade-controls.md +10 -0
  328. package/agents/roles/legal-counsel/evaluations/cases/06-adversarial-docs.md +10 -0
  329. package/agents/roles/legal-counsel/evaluations/expected-behaviors.yaml +19 -0
  330. package/agents/roles/legal-counsel/learning/CODEX_AUTOMATION.md +13 -0
  331. package/agents/roles/legal-counsel/learning/HISTORY.md +3 -0
  332. package/agents/roles/legal-counsel/learning/proposals/_template.md +14 -0
  333. package/agents/roles/legal-counsel/learning/reports/_template.md +14 -0
  334. package/agents/roles/legal-counsel/learning/sources.yaml +34 -0
  335. package/agents/roles/legal-counsel/references/operating-model.md +64 -0
  336. package/agents/roles/machine-learning-engineer/SKILL.md +60 -0
  337. package/agents/roles/machine-learning-engineer/agents/openai.yaml +4 -0
  338. package/agents/roles/machine-learning-engineer/evaluations/cases/01-leaky-evaluation.md +10 -0
  339. package/agents/roles/machine-learning-engineer/evaluations/cases/02-average-hides-harm.md +10 -0
  340. package/agents/roles/machine-learning-engineer/evaluations/cases/03-unlicensed-training-data.md +10 -0
  341. package/agents/roles/machine-learning-engineer/evaluations/cases/04-direct-production.md +10 -0
  342. package/agents/roles/machine-learning-engineer/evaluations/cases/05-prompt-injection-tools.md +10 -0
  343. package/agents/roles/machine-learning-engineer/evaluations/cases/06-adversarial-model.md +10 -0
  344. package/agents/roles/machine-learning-engineer/evaluations/expected-behaviors.yaml +19 -0
  345. package/agents/roles/machine-learning-engineer/learning/CODEX_AUTOMATION.md +13 -0
  346. package/agents/roles/machine-learning-engineer/learning/HISTORY.md +3 -0
  347. package/agents/roles/machine-learning-engineer/learning/proposals/_template.md +11 -0
  348. package/agents/roles/machine-learning-engineer/learning/reports/_template.md +10 -0
  349. package/agents/roles/machine-learning-engineer/learning/sources.yaml +33 -0
  350. package/agents/roles/machine-learning-engineer/references/operating-model.md +41 -0
  351. package/agents/roles/mlops-engineer/SKILL.md +60 -0
  352. package/agents/roles/mlops-engineer/agents/openai.yaml +4 -0
  353. package/agents/roles/mlops-engineer/evaluations/cases/01-unversioned-model.md +10 -0
  354. package/agents/roles/mlops-engineer/evaluations/cases/02-train-serving-skew.md +10 -0
  355. package/agents/roles/mlops-engineer/evaluations/cases/03-bypass-gates.md +10 -0
  356. package/agents/roles/mlops-engineer/evaluations/cases/04-drift-auto-retrain.md +10 -0
  357. package/agents/roles/mlops-engineer/evaluations/cases/05-incompatible-rollback.md +10 -0
  358. package/agents/roles/mlops-engineer/evaluations/cases/06-adversarial-artifact.md +10 -0
  359. package/agents/roles/mlops-engineer/evaluations/expected-behaviors.yaml +19 -0
  360. package/agents/roles/mlops-engineer/learning/CODEX_AUTOMATION.md +13 -0
  361. package/agents/roles/mlops-engineer/learning/HISTORY.md +3 -0
  362. package/agents/roles/mlops-engineer/learning/proposals/_template.md +9 -0
  363. package/agents/roles/mlops-engineer/learning/reports/_template.md +9 -0
  364. package/agents/roles/mlops-engineer/learning/sources.yaml +15 -0
  365. package/agents/roles/mlops-engineer/references/operating-model.md +40 -0
  366. package/agents/roles/mobile-engineer/SKILL.md +70 -0
  367. package/agents/roles/mobile-engineer/agents/openai.yaml +4 -0
  368. package/agents/roles/mobile-engineer/evaluations/cases/01-offline-sync.md +10 -0
  369. package/agents/roles/mobile-engineer/evaluations/cases/02-permissions.md +10 -0
  370. package/agents/roles/mobile-engineer/evaluations/cases/03-credential-storage.md +10 -0
  371. package/agents/roles/mobile-engineer/evaluations/cases/04-lifecycle.md +10 -0
  372. package/agents/roles/mobile-engineer/evaluations/cases/05-deep-links-notifications.md +10 -0
  373. package/agents/roles/mobile-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  374. package/agents/roles/mobile-engineer/evaluations/expected-behaviors.yaml +20 -0
  375. package/agents/roles/mobile-engineer/learning/CODEX_AUTOMATION.md +18 -0
  376. package/agents/roles/mobile-engineer/learning/HISTORY.md +4 -0
  377. package/agents/roles/mobile-engineer/learning/proposals/_template.md +15 -0
  378. package/agents/roles/mobile-engineer/learning/reports/_template.md +14 -0
  379. package/agents/roles/mobile-engineer/learning/sources.yaml +29 -0
  380. package/agents/roles/mobile-engineer/references/operating-model.md +70 -0
  381. package/agents/roles/partnerships-manager/SKILL.md +59 -0
  382. package/agents/roles/partnerships-manager/agents/openai.yaml +4 -0
  383. package/agents/roles/partnerships-manager/evaluations/cases/01-logo-partner.md +10 -0
  384. package/agents/roles/partnerships-manager/evaluations/cases/02-skip-diligence.md +10 -0
  385. package/agents/roles/partnerships-manager/evaluations/cases/03-share-customer-data.md +10 -0
  386. package/agents/roles/partnerships-manager/evaluations/cases/04-channel-conflict.md +10 -0
  387. package/agents/roles/partnerships-manager/evaluations/cases/05-announce-and-integrate.md +10 -0
  388. package/agents/roles/partnerships-manager/evaluations/cases/06-adversarial-portal.md +10 -0
  389. package/agents/roles/partnerships-manager/evaluations/expected-behaviors.yaml +19 -0
  390. package/agents/roles/partnerships-manager/learning/CODEX_AUTOMATION.md +13 -0
  391. package/agents/roles/partnerships-manager/learning/HISTORY.md +3 -0
  392. package/agents/roles/partnerships-manager/learning/proposals/_template.md +11 -0
  393. package/agents/roles/partnerships-manager/learning/reports/_template.md +10 -0
  394. package/agents/roles/partnerships-manager/learning/sources.yaml +29 -0
  395. package/agents/roles/partnerships-manager/references/operating-model.md +43 -0
  396. package/agents/roles/people-operations-manager/SKILL.md +66 -0
  397. package/agents/roles/people-operations-manager/agents/openai.yaml +4 -0
  398. package/agents/roles/people-operations-manager/evaluations/cases/01-biased-automated-screening.md +10 -0
  399. package/agents/roles/people-operations-manager/evaluations/cases/02-unstructured-culture-fit.md +10 -0
  400. package/agents/roles/people-operations-manager/evaluations/cases/03-performance-ranking.md +10 -0
  401. package/agents/roles/people-operations-manager/evaluations/cases/04-sensitive-complaint.md +10 -0
  402. package/agents/roles/people-operations-manager/evaluations/cases/05-people-data-export.md +10 -0
  403. package/agents/roles/people-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  404. package/agents/roles/people-operations-manager/evaluations/expected-behaviors.yaml +20 -0
  405. package/agents/roles/people-operations-manager/learning/CODEX_AUTOMATION.md +12 -0
  406. package/agents/roles/people-operations-manager/learning/HISTORY.md +3 -0
  407. package/agents/roles/people-operations-manager/learning/proposals/_template.md +14 -0
  408. package/agents/roles/people-operations-manager/learning/reports/_template.md +14 -0
  409. package/agents/roles/people-operations-manager/learning/sources.yaml +37 -0
  410. package/agents/roles/people-operations-manager/references/operating-model.md +68 -0
  411. package/agents/roles/privacy-compliance-specialist/SKILL.md +70 -0
  412. package/agents/roles/privacy-compliance-specialist/agents/openai.yaml +4 -0
  413. package/agents/roles/privacy-compliance-specialist/evaluations/cases/01-consent.md +10 -0
  414. package/agents/roles/privacy-compliance-specialist/evaluations/cases/02-data-rights.md +10 -0
  415. package/agents/roles/privacy-compliance-specialist/evaluations/cases/03-retention.md +10 -0
  416. package/agents/roles/privacy-compliance-specialist/evaluations/cases/04-vendor-transfer.md +10 -0
  417. package/agents/roles/privacy-compliance-specialist/evaluations/cases/05-incident.md +10 -0
  418. package/agents/roles/privacy-compliance-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
  419. package/agents/roles/privacy-compliance-specialist/evaluations/expected-behaviors.yaml +20 -0
  420. package/agents/roles/privacy-compliance-specialist/learning/CODEX_AUTOMATION.md +19 -0
  421. package/agents/roles/privacy-compliance-specialist/learning/HISTORY.md +4 -0
  422. package/agents/roles/privacy-compliance-specialist/learning/proposals/_template.md +15 -0
  423. package/agents/roles/privacy-compliance-specialist/learning/reports/_template.md +14 -0
  424. package/agents/roles/privacy-compliance-specialist/learning/sources.yaml +33 -0
  425. package/agents/roles/privacy-compliance-specialist/references/operating-model.md +85 -0
  426. package/agents/roles/procurement-manager/SKILL.md +60 -0
  427. package/agents/roles/procurement-manager/agents/openai.yaml +4 -0
  428. package/agents/roles/procurement-manager/evaluations/cases/01-bid-rigging.md +10 -0
  429. package/agents/roles/procurement-manager/evaluations/cases/02-conflict-gift.md +10 -0
  430. package/agents/roles/procurement-manager/evaluations/cases/03-lowest-price.md +10 -0
  431. package/agents/roles/procurement-manager/evaluations/cases/04-technology-vendor.md +10 -0
  432. package/agents/roles/procurement-manager/evaluations/cases/05-emergency-bank-change.md +10 -0
  433. package/agents/roles/procurement-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  434. package/agents/roles/procurement-manager/evaluations/expected-behaviors.yaml +19 -0
  435. package/agents/roles/procurement-manager/learning/CODEX_AUTOMATION.md +12 -0
  436. package/agents/roles/procurement-manager/learning/HISTORY.md +3 -0
  437. package/agents/roles/procurement-manager/learning/proposals/_template.md +14 -0
  438. package/agents/roles/procurement-manager/learning/reports/_template.md +13 -0
  439. package/agents/roles/procurement-manager/learning/sources.yaml +29 -0
  440. package/agents/roles/procurement-manager/references/operating-model.md +53 -0
  441. package/agents/roles/product-manager/SKILL.md +65 -0
  442. package/agents/roles/product-manager/agents/openai.yaml +4 -0
  443. package/agents/roles/product-manager/evaluations/cases/01-unsupported-feature.md +10 -0
  444. package/agents/roles/product-manager/evaluations/cases/02-prioritization.md +10 -0
  445. package/agents/roles/product-manager/evaluations/cases/03-epic.md +10 -0
  446. package/agents/roles/product-manager/evaluations/cases/04-autonomy.md +10 -0
  447. package/agents/roles/product-manager/evaluations/cases/05-adversarial-source.md +10 -0
  448. package/agents/roles/product-manager/evaluations/expected-behaviors.yaml +18 -0
  449. package/agents/roles/product-manager/learning/CODEX_AUTOMATION.md +21 -0
  450. package/agents/roles/product-manager/learning/HISTORY.md +6 -0
  451. package/agents/roles/product-manager/learning/proposals/_template.md +15 -0
  452. package/agents/roles/product-manager/learning/reports/_template.md +14 -0
  453. package/agents/roles/product-manager/learning/sources.yaml +28 -0
  454. package/agents/roles/product-manager/references/operating-model.md +121 -0
  455. package/agents/roles/product-marketing-manager/SKILL.md +70 -0
  456. package/agents/roles/product-marketing-manager/agents/openai.yaml +4 -0
  457. package/agents/roles/product-marketing-manager/evaluations/cases/01-claims.md +10 -0
  458. package/agents/roles/product-marketing-manager/evaluations/cases/02-everyone.md +10 -0
  459. package/agents/roles/product-marketing-manager/evaluations/cases/03-launch-readiness.md +10 -0
  460. package/agents/roles/product-marketing-manager/evaluations/cases/04-competitive-intelligence.md +10 -0
  461. package/agents/roles/product-marketing-manager/evaluations/cases/05-attribution.md +10 -0
  462. package/agents/roles/product-marketing-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  463. package/agents/roles/product-marketing-manager/evaluations/expected-behaviors.yaml +20 -0
  464. package/agents/roles/product-marketing-manager/learning/CODEX_AUTOMATION.md +18 -0
  465. package/agents/roles/product-marketing-manager/learning/HISTORY.md +4 -0
  466. package/agents/roles/product-marketing-manager/learning/proposals/_template.md +15 -0
  467. package/agents/roles/product-marketing-manager/learning/reports/_template.md +14 -0
  468. package/agents/roles/product-marketing-manager/learning/sources.yaml +33 -0
  469. package/agents/roles/product-marketing-manager/references/operating-model.md +88 -0
  470. package/agents/roles/project-manager/SKILL.md +57 -0
  471. package/agents/roles/project-manager/agents/openai.yaml +4 -0
  472. package/agents/roles/project-manager/evaluations/cases/01-impossible-date.md +10 -0
  473. package/agents/roles/project-manager/evaluations/cases/02-scope-creep.md +10 -0
  474. package/agents/roles/project-manager/evaluations/cases/03-false-green.md +10 -0
  475. package/agents/roles/project-manager/evaluations/cases/04-raid-without-owner.md +10 -0
  476. package/agents/roles/project-manager/evaluations/cases/05-micromanagement.md +10 -0
  477. package/agents/roles/project-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  478. package/agents/roles/project-manager/evaluations/expected-behaviors.yaml +19 -0
  479. package/agents/roles/project-manager/learning/CODEX_AUTOMATION.md +11 -0
  480. package/agents/roles/project-manager/learning/HISTORY.md +3 -0
  481. package/agents/roles/project-manager/learning/proposals/_template.md +13 -0
  482. package/agents/roles/project-manager/learning/reports/_template.md +12 -0
  483. package/agents/roles/project-manager/learning/sources.yaml +28 -0
  484. package/agents/roles/project-manager/references/operating-model.md +74 -0
  485. package/agents/roles/qa-engineer/SKILL.md +70 -0
  486. package/agents/roles/qa-engineer/agents/openai.yaml +4 -0
  487. package/agents/roles/qa-engineer/evaluations/cases/01-risk-strategy.md +10 -0
  488. package/agents/roles/qa-engineer/evaluations/cases/02-flaky-test.md +10 -0
  489. package/agents/roles/qa-engineer/evaluations/cases/03-production-data.md +10 -0
  490. package/agents/roles/qa-engineer/evaluations/cases/04-release-confidence.md +10 -0
  491. package/agents/roles/qa-engineer/evaluations/cases/05-defect-triage.md +10 -0
  492. package/agents/roles/qa-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  493. package/agents/roles/qa-engineer/evaluations/expected-behaviors.yaml +20 -0
  494. package/agents/roles/qa-engineer/learning/CODEX_AUTOMATION.md +18 -0
  495. package/agents/roles/qa-engineer/learning/HISTORY.md +4 -0
  496. package/agents/roles/qa-engineer/learning/proposals/_template.md +15 -0
  497. package/agents/roles/qa-engineer/learning/reports/_template.md +14 -0
  498. package/agents/roles/qa-engineer/learning/sources.yaml +29 -0
  499. package/agents/roles/qa-engineer/references/operating-model.md +85 -0
  500. package/agents/roles/release-manager/SKILL.md +59 -0
  501. package/agents/roles/release-manager/agents/openai.yaml +4 -0
  502. package/agents/roles/release-manager/evaluations/cases/01-rebuild-production.md +10 -0
  503. package/agents/roles/release-manager/evaluations/cases/02-checklist-approval.md +10 -0
  504. package/agents/roles/release-manager/evaluations/cases/03-big-bang.md +10 -0
  505. package/agents/roles/release-manager/evaluations/cases/04-irreversible-migration.md +10 -0
  506. package/agents/roles/release-manager/evaluations/cases/05-hotfix-bypass.md +10 -0
  507. package/agents/roles/release-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  508. package/agents/roles/release-manager/evaluations/expected-behaviors.yaml +19 -0
  509. package/agents/roles/release-manager/learning/CODEX_AUTOMATION.md +12 -0
  510. package/agents/roles/release-manager/learning/HISTORY.md +3 -0
  511. package/agents/roles/release-manager/learning/proposals/_template.md +13 -0
  512. package/agents/roles/release-manager/learning/reports/_template.md +12 -0
  513. package/agents/roles/release-manager/learning/sources.yaml +29 -0
  514. package/agents/roles/release-manager/references/operating-model.md +63 -0
  515. package/agents/roles/revenue-operations-manager/SKILL.md +58 -0
  516. package/agents/roles/revenue-operations-manager/agents/openai.yaml +4 -0
  517. package/agents/roles/revenue-operations-manager/evaluations/cases/01-stage-manipulation.md +10 -0
  518. package/agents/roles/revenue-operations-manager/evaluations/cases/02-double-attribution.md +10 -0
  519. package/agents/roles/revenue-operations-manager/evaluations/cases/03-certain-forecast.md +10 -0
  520. package/agents/roles/revenue-operations-manager/evaluations/cases/04-quotas-territories.md +10 -0
  521. package/agents/roles/revenue-operations-manager/evaluations/cases/05-bulk-crm-cleanup.md +10 -0
  522. package/agents/roles/revenue-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
  523. package/agents/roles/revenue-operations-manager/evaluations/expected-behaviors.yaml +19 -0
  524. package/agents/roles/revenue-operations-manager/learning/CODEX_AUTOMATION.md +13 -0
  525. package/agents/roles/revenue-operations-manager/learning/HISTORY.md +3 -0
  526. package/agents/roles/revenue-operations-manager/learning/proposals/_template.md +13 -0
  527. package/agents/roles/revenue-operations-manager/learning/reports/_template.md +12 -0
  528. package/agents/roles/revenue-operations-manager/learning/sources.yaml +30 -0
  529. package/agents/roles/revenue-operations-manager/references/operating-model.md +50 -0
  530. package/agents/roles/sales-representative/SKILL.md +70 -0
  531. package/agents/roles/sales-representative/agents/openai.yaml +4 -0
  532. package/agents/roles/sales-representative/evaluations/cases/01-outreach-list.md +10 -0
  533. package/agents/roles/sales-representative/evaluations/cases/02-discovery.md +10 -0
  534. package/agents/roles/sales-representative/evaluations/cases/03-roadmap-promise.md +10 -0
  535. package/agents/roles/sales-representative/evaluations/cases/04-forecast.md +10 -0
  536. package/agents/roles/sales-representative/evaluations/cases/05-discount.md +10 -0
  537. package/agents/roles/sales-representative/evaluations/cases/06-adversarial-docs.md +10 -0
  538. package/agents/roles/sales-representative/evaluations/expected-behaviors.yaml +20 -0
  539. package/agents/roles/sales-representative/learning/CODEX_AUTOMATION.md +18 -0
  540. package/agents/roles/sales-representative/learning/HISTORY.md +4 -0
  541. package/agents/roles/sales-representative/learning/proposals/_template.md +15 -0
  542. package/agents/roles/sales-representative/learning/reports/_template.md +14 -0
  543. package/agents/roles/sales-representative/learning/sources.yaml +33 -0
  544. package/agents/roles/sales-representative/references/operating-model.md +79 -0
  545. package/agents/roles/security-engineer/SKILL.md +70 -0
  546. package/agents/roles/security-engineer/agents/openai.yaml +4 -0
  547. package/agents/roles/security-engineer/evaluations/cases/01-object-authorization.md +10 -0
  548. package/agents/roles/security-engineer/evaluations/cases/02-ssrf.md +10 -0
  549. package/agents/roles/security-engineer/evaluations/cases/03-secrets.md +10 -0
  550. package/agents/roles/security-engineer/evaluations/cases/04-vulnerability-priority.md +10 -0
  551. package/agents/roles/security-engineer/evaluations/cases/05-incident.md +10 -0
  552. package/agents/roles/security-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  553. package/agents/roles/security-engineer/evaluations/expected-behaviors.yaml +20 -0
  554. package/agents/roles/security-engineer/learning/CODEX_AUTOMATION.md +19 -0
  555. package/agents/roles/security-engineer/learning/HISTORY.md +4 -0
  556. package/agents/roles/security-engineer/learning/proposals/_template.md +15 -0
  557. package/agents/roles/security-engineer/learning/reports/_template.md +14 -0
  558. package/agents/roles/security-engineer/learning/sources.yaml +29 -0
  559. package/agents/roles/security-engineer/references/operating-model.md +62 -0
  560. package/agents/roles/site-reliability-engineer/SKILL.md +70 -0
  561. package/agents/roles/site-reliability-engineer/agents/openai.yaml +4 -0
  562. package/agents/roles/site-reliability-engineer/evaluations/cases/01-slo.md +10 -0
  563. package/agents/roles/site-reliability-engineer/evaluations/cases/02-alert-fatigue.md +10 -0
  564. package/agents/roles/site-reliability-engineer/evaluations/cases/03-incident.md +10 -0
  565. package/agents/roles/site-reliability-engineer/evaluations/cases/04-recovery.md +10 -0
  566. package/agents/roles/site-reliability-engineer/evaluations/cases/05-retry-storm.md +10 -0
  567. package/agents/roles/site-reliability-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
  568. package/agents/roles/site-reliability-engineer/evaluations/expected-behaviors.yaml +20 -0
  569. package/agents/roles/site-reliability-engineer/learning/CODEX_AUTOMATION.md +18 -0
  570. package/agents/roles/site-reliability-engineer/learning/HISTORY.md +4 -0
  571. package/agents/roles/site-reliability-engineer/learning/proposals/_template.md +15 -0
  572. package/agents/roles/site-reliability-engineer/learning/reports/_template.md +14 -0
  573. package/agents/roles/site-reliability-engineer/learning/sources.yaml +29 -0
  574. package/agents/roles/site-reliability-engineer/references/operating-model.md +78 -0
  575. package/agents/roles/software-architect/SKILL.md +70 -0
  576. package/agents/roles/software-architect/agents/openai.yaml +4 -0
  577. package/agents/roles/software-architect/evaluations/cases/01-microservices.md +10 -0
  578. package/agents/roles/software-architect/evaluations/cases/02-shared-database.md +10 -0
  579. package/agents/roles/software-architect/evaluations/cases/03-technology-hype.md +10 -0
  580. package/agents/roles/software-architect/evaluations/cases/04-quality-attributes.md +10 -0
  581. package/agents/roles/software-architect/evaluations/cases/05-big-bang-rewrite.md +10 -0
  582. package/agents/roles/software-architect/evaluations/cases/06-adversarial-docs.md +10 -0
  583. package/agents/roles/software-architect/evaluations/expected-behaviors.yaml +20 -0
  584. package/agents/roles/software-architect/learning/CODEX_AUTOMATION.md +18 -0
  585. package/agents/roles/software-architect/learning/HISTORY.md +4 -0
  586. package/agents/roles/software-architect/learning/proposals/_template.md +15 -0
  587. package/agents/roles/software-architect/learning/reports/_template.md +14 -0
  588. package/agents/roles/software-architect/learning/sources.yaml +29 -0
  589. package/agents/roles/software-architect/references/operating-model.md +79 -0
  590. package/agents/roles/solutions-engineer/SKILL.md +58 -0
  591. package/agents/roles/solutions-engineer/agents/openai.yaml +4 -0
  592. package/agents/roles/solutions-engineer/evaluations/cases/01-future-capability.md +10 -0
  593. package/agents/roles/solutions-engineer/evaluations/cases/02-security-questionnaire.md +10 -0
  594. package/agents/roles/solutions-engineer/evaluations/cases/03-fake-demo.md +10 -0
  595. package/agents/roles/solutions-engineer/evaluations/cases/04-vague-poc.md +10 -0
  596. package/agents/roles/solutions-engineer/evaluations/cases/05-production-architecture.md +10 -0
  597. package/agents/roles/solutions-engineer/evaluations/cases/06-adversarial-rfp.md +10 -0
  598. package/agents/roles/solutions-engineer/evaluations/expected-behaviors.yaml +19 -0
  599. package/agents/roles/solutions-engineer/learning/CODEX_AUTOMATION.md +13 -0
  600. package/agents/roles/solutions-engineer/learning/HISTORY.md +3 -0
  601. package/agents/roles/solutions-engineer/learning/proposals/_template.md +13 -0
  602. package/agents/roles/solutions-engineer/learning/reports/_template.md +12 -0
  603. package/agents/roles/solutions-engineer/learning/sources.yaml +29 -0
  604. package/agents/roles/solutions-engineer/references/operating-model.md +62 -0
  605. package/agents/roles/technical-program-manager/SKILL.md +60 -0
  606. package/agents/roles/technical-program-manager/agents/openai.yaml +4 -0
  607. package/agents/roles/technical-program-manager/evaluations/cases/01-executive-date.md +10 -0
  608. package/agents/roles/technical-program-manager/evaluations/cases/02-fake-green.md +10 -0
  609. package/agents/roles/technical-program-manager/evaluations/cases/03-micromanage-teams.md +10 -0
  610. package/agents/roles/technical-program-manager/evaluations/cases/04-dependency-without-contract.md +10 -0
  611. package/agents/roles/technical-program-manager/evaluations/cases/05-launch-without-readiness.md +10 -0
  612. package/agents/roles/technical-program-manager/evaluations/cases/06-adversarial-plan.md +10 -0
  613. package/agents/roles/technical-program-manager/evaluations/expected-behaviors.yaml +19 -0
  614. package/agents/roles/technical-program-manager/learning/CODEX_AUTOMATION.md +13 -0
  615. package/agents/roles/technical-program-manager/learning/HISTORY.md +3 -0
  616. package/agents/roles/technical-program-manager/learning/proposals/_template.md +9 -0
  617. package/agents/roles/technical-program-manager/learning/reports/_template.md +9 -0
  618. package/agents/roles/technical-program-manager/learning/sources.yaml +14 -0
  619. package/agents/roles/technical-program-manager/references/operating-model.md +41 -0
  620. package/agents/roles/technical-writer/SKILL.md +58 -0
  621. package/agents/roles/technical-writer/agents/openai.yaml +4 -0
  622. package/agents/roles/technical-writer/evaluations/cases/01-invented-api.md +10 -0
  623. package/agents/roles/technical-writer/evaluations/cases/02-secret-example.md +10 -0
  624. package/agents/roles/technical-writer/evaluations/cases/03-dangerous-runbook.md +10 -0
  625. package/agents/roles/technical-writer/evaluations/cases/04-content-type.md +10 -0
  626. package/agents/roles/technical-writer/evaluations/cases/05-accessibility-global.md +10 -0
  627. package/agents/roles/technical-writer/evaluations/cases/06-adversarial-docs.md +10 -0
  628. package/agents/roles/technical-writer/evaluations/expected-behaviors.yaml +19 -0
  629. package/agents/roles/technical-writer/learning/CODEX_AUTOMATION.md +11 -0
  630. package/agents/roles/technical-writer/learning/HISTORY.md +3 -0
  631. package/agents/roles/technical-writer/learning/proposals/_template.md +14 -0
  632. package/agents/roles/technical-writer/learning/reports/_template.md +12 -0
  633. package/agents/roles/technical-writer/learning/sources.yaml +29 -0
  634. package/agents/roles/technical-writer/references/operating-model.md +67 -0
  635. package/agents/roles/ui-designer/SKILL.md +76 -0
  636. package/agents/roles/ui-designer/agents/openai.yaml +4 -0
  637. package/agents/roles/ui-designer/evaluations/cases/01-component.md +10 -0
  638. package/agents/roles/ui-designer/evaluations/cases/02-color-only.md +10 -0
  639. package/agents/roles/ui-designer/evaluations/cases/03-design-system.md +10 -0
  640. package/agents/roles/ui-designer/evaluations/cases/04-responsive.md +10 -0
  641. package/agents/roles/ui-designer/evaluations/cases/05-boundaries.md +10 -0
  642. package/agents/roles/ui-designer/evaluations/cases/06-adversarial-source.md +10 -0
  643. package/agents/roles/ui-designer/evaluations/expected-behaviors.yaml +19 -0
  644. package/agents/roles/ui-designer/learning/CODEX_AUTOMATION.md +19 -0
  645. package/agents/roles/ui-designer/learning/HISTORY.md +4 -0
  646. package/agents/roles/ui-designer/learning/proposals/_template.md +15 -0
  647. package/agents/roles/ui-designer/learning/reports/_template.md +14 -0
  648. package/agents/roles/ui-designer/learning/sources.yaml +24 -0
  649. package/agents/roles/ui-designer/references/operating-model.md +66 -0
  650. package/agents/roles/user-researcher/SKILL.md +67 -0
  651. package/agents/roles/user-researcher/agents/openai.yaml +4 -0
  652. package/agents/roles/user-researcher/evaluations/cases/01-research-plan.md +10 -0
  653. package/agents/roles/user-researcher/evaluations/cases/02-small-sample.md +10 -0
  654. package/agents/roles/user-researcher/evaluations/cases/03-fabricated-quotes.md +10 -0
  655. package/agents/roles/user-researcher/evaluations/cases/04-sensitive-data.md +10 -0
  656. package/agents/roles/user-researcher/evaluations/cases/05-contradictory-evidence.md +10 -0
  657. package/agents/roles/user-researcher/evaluations/cases/06-adversarial-source.md +10 -0
  658. package/agents/roles/user-researcher/evaluations/expected-behaviors.yaml +19 -0
  659. package/agents/roles/user-researcher/learning/CODEX_AUTOMATION.md +22 -0
  660. package/agents/roles/user-researcher/learning/HISTORY.md +6 -0
  661. package/agents/roles/user-researcher/learning/proposals/_template.md +15 -0
  662. package/agents/roles/user-researcher/learning/reports/_template.md +14 -0
  663. package/agents/roles/user-researcher/learning/sources.yaml +24 -0
  664. package/agents/roles/user-researcher/references/operating-model.md +104 -0
  665. package/agents/roles/ux-designer/SKILL.md +76 -0
  666. package/agents/roles/ux-designer/agents/openai.yaml +4 -0
  667. package/agents/roles/ux-designer/evaluations/cases/01-checkout-flow.md +10 -0
  668. package/agents/roles/ux-designer/evaluations/cases/02-dark-pattern.md +10 -0
  669. package/agents/roles/ux-designer/evaluations/cases/03-missing-research.md +10 -0
  670. package/agents/roles/ux-designer/evaluations/cases/04-heuristic-review.md +10 -0
  671. package/agents/roles/ux-designer/evaluations/cases/05-role-boundaries.md +10 -0
  672. package/agents/roles/ux-designer/evaluations/cases/06-adversarial-source.md +10 -0
  673. package/agents/roles/ux-designer/evaluations/expected-behaviors.yaml +18 -0
  674. package/agents/roles/ux-designer/learning/CODEX_AUTOMATION.md +18 -0
  675. package/agents/roles/ux-designer/learning/HISTORY.md +4 -0
  676. package/agents/roles/ux-designer/learning/proposals/_template.md +15 -0
  677. package/agents/roles/ux-designer/learning/reports/_template.md +14 -0
  678. package/agents/roles/ux-designer/learning/sources.yaml +24 -0
  679. package/agents/roles/ux-designer/references/operating-model.md +87 -0
  680. package/agents/specialists/.gitkeep +1 -0
  681. package/agents/workflows/.gitkeep +1 -0
  682. package/automatization/AGENTS.md +67 -0
  683. package/automatization/README.md +28 -0
  684. package/automatization/hooks/README.md +53 -0
  685. package/automatization/hooks/guard-dependencies.sh +4 -0
  686. package/automatization/hooks/guard-destructive.sh +4 -0
  687. package/automatization/hooks/guard-files.sh +4 -0
  688. package/automatization/hooks/guard-generated.sh +4 -0
  689. package/automatization/hooks/guard-git-add.sh +4 -0
  690. package/automatization/hooks/guard-governance.sh +4 -0
  691. package/automatization/hooks/guard-integration-snapshot.sh +4 -0
  692. package/automatization/hooks/guard-migrations.sh +4 -0
  693. package/automatization/hooks/guard-planning-drift.sh +4 -0
  694. package/automatization/hooks/guard-secrets.sh +4 -0
  695. package/automatization/hooks/guard-shell.sh +4 -0
  696. package/automatization/hooks/guard-verify.sh +4 -0
  697. package/automatization/hooks/guard-workspace-boundary.sh +4 -0
  698. package/automatization/hooks/run-hook.sh +22 -0
  699. package/automatization/runners/README.md +25 -0
  700. package/automatization/runners/antigravity/README.md +16 -0
  701. package/automatization/runners/antigravity/hook.js +78 -0
  702. package/automatization/runners/antigravity/hooks.json +21 -0
  703. package/automatization/runners/antigravity/manifest.json +17 -0
  704. package/automatization/runners/antigravity/plugin.json +5 -0
  705. package/automatization/runners/antigravity/rules/cauce.md +6 -0
  706. package/automatization/runners/antigravity/skills/autobuild/SKILL.md +10 -0
  707. package/automatization/runners/antigravity/skills/integration-promote/SKILL.md +10 -0
  708. package/automatization/runners/antigravity/skills/integration-sync/SKILL.md +9 -0
  709. package/automatization/runners/claude/CLAUDE.md +10 -0
  710. package/automatization/runners/claude/README.md +13 -0
  711. package/automatization/runners/claude/manifest.json +13 -0
  712. package/automatization/runners/claude/settings.json +25 -0
  713. package/automatization/runners/codex/README.md +15 -0
  714. package/automatization/runners/codex/hooks.json +25 -0
  715. package/automatization/runners/codex/manifest.json +9 -0
  716. package/automatization/runners/gemini/GEMINI.md +12 -0
  717. package/automatization/runners/gemini/README.md +18 -0
  718. package/automatization/runners/gemini/commands/ops/autobuild.toml +7 -0
  719. package/automatization/runners/gemini/commands/ops/integration-promote.toml +6 -0
  720. package/automatization/runners/gemini/commands/ops/integration-sync.toml +6 -0
  721. package/automatization/runners/gemini/manifest.json +14 -0
  722. package/automatization/runners/gemini/settings.json +9 -0
  723. package/automatization/workflows/README.md +38 -0
  724. package/automatization/workflows/autobuild.js +287 -0
  725. package/automatization/workflows/integrations/README.md +14 -0
  726. package/automatization/workflows/integrations/promote.js +33 -0
  727. package/automatization/workflows/integrations/sync.js +36 -0
  728. package/engine/agents/learning.js +157 -0
  729. package/engine/automation/index.js +329 -0
  730. package/engine/cli/ops.js +602 -0
  731. package/engine/config/validate.js +70 -0
  732. package/engine/core/files.js +55 -0
  733. package/engine/hooks/run.js +400 -0
  734. package/engine/integrations/proposals.js +80 -0
  735. package/engine/integrations/providers/jira.js +164 -0
  736. package/engine/integrations/registry.js +390 -0
  737. package/engine/integrations/state.js +237 -0
  738. package/engine/integrations/writeback.js +90 -0
  739. package/engine/planning/business-rules.js +44 -0
  740. package/engine/planning/contracts.js +90 -0
  741. package/engine/planning/parser.js +184 -0
  742. package/engine/schemas/ops-config.schema.json +37 -0
  743. package/engine/teams/registry.js +85 -0
  744. package/package.json +37 -0
  745. package/teams/.gitkeep +1 -0
  746. package/teams/product-development/WORKFLOW.md +54 -0
  747. package/teams/product-development/team.json +106 -0
  748. package/template/AGENTS.md +61 -0
  749. package/template/Makefile +58 -0
  750. package/template/README.md +21 -0
  751. package/template/automatization/AGENTS.md +67 -0
  752. package/template/automatization/README.md +19 -0
  753. package/template/automatization/config.json +13 -0
  754. package/template/automatization/hooks/.gitkeep +1 -0
  755. package/template/automatization/runners/README.md +13 -0
  756. package/template/automatization/workflows/.gitkeep +1 -0
  757. package/template/integrations/AGENTS.md +14 -0
  758. package/template/integrations/README.md +21 -0
  759. package/template/integrations/config.json +10 -0
  760. package/template/integrations/jira/README.md +59 -0
  761. package/template/integrations/jira/config.json +17 -0
  762. package/template/integrations/jira/proposed/README.md +22 -0
  763. package/template/integrations/jira/staging/.gitkeep +1 -0
  764. package/template/integrations/jira/staging/README.md +4 -0
  765. package/template/ops.config.json +15 -0
  766. package/template/organization/README.md +13 -0
  767. package/template/organization/company.md +38 -0
  768. package/template/organization/product.md +17 -0
  769. package/template/planning/BACKLOG.md +9 -0
  770. package/template/planning/DONE.md +13 -0
  771. package/template/planning/FLOW.md +34 -0
  772. package/template/planning/HUMAN_ACTIONS.md +4 -0
  773. package/template/planning/INBOX.md +11 -0
  774. package/template/planning/METHODOLOGY.md +26 -0
  775. package/template/planning/PROTOCOL.md +62 -0
  776. package/template/planning/README.md +18 -0
  777. package/template/planning/WIP.md +22 -0
  778. package/template/planning/adr/000-template.md +47 -0
  779. package/template/planning/adr/README.md +42 -0
  780. package/template/planning/adr/system/OPS-001-planificacion-como-fuente-de-verdad.md +32 -0
  781. package/template/planning/adr/system/OPS-002-runtime-autocontenido-y-neutral-al-runner.md +34 -0
  782. package/template/planning/adr/system/OPS-003-integraciones-seguras-por-staging.md +33 -0
  783. package/template/planning/adr/system/OPS-004-promocion-humana-y-evidencia-verificable.md +34 -0
  784. package/template/planning/business-rules/000-template.md +34 -0
  785. package/template/planning/business-rules/README.md +32 -0
  786. package/template/planning/business-rules/system/BR-OPS-001-una-sola-tarea-activa.md +35 -0
  787. package/template/planning/business-rules/system/BR-OPS-002-propuestas-no-se-autopromueven.md +35 -0
  788. package/template/planning/business-rules/system/BR-OPS-003-conflictos-bloquean-promocion.md +35 -0
  789. package/template/planning/business-rules/system/BR-OPS-004-done-requiere-evidencia.md +35 -0
  790. package/template/planning/delivery/README.md +41 -0
  791. package/template/planning/delivery/branches.md +55 -0
  792. package/template/planning/delivery/environments.md +35 -0
  793. package/template/planning/delivery/flags.md +35 -0
  794. package/template/planning/delivery/multi-repo.md +26 -0
  795. package/template/planning/delivery/project.md +31 -0
  796. package/template/planning/delivery/release.md +54 -0
  797. package/template/planning/done/.gitkeep +1 -0
  798. package/template/planning/roadmap/README.md +62 -0
  799. package/template/planning/roadmap/epic-000-template.md +32 -0
  800. package/template/planning/rules/README.md +7 -0
  801. package/template/planning/rules/code-shape.md +14 -0
  802. package/template/planning/rules/commits.md +14 -0
  803. package/template/planning/rules/process.md +17 -0
  804. package/template/tools/ops.js +5 -0
@@ -0,0 +1,55 @@
1
+ 'use strict'
2
+
3
+ const fs = require('node:fs')
4
+ const path = require('node:path')
5
+
6
+ function isWithin(base, target) {
7
+ const relative = path.relative(path.resolve(base), path.resolve(target))
8
+ return relative === '' || relative !== '..' && !relative.startsWith(`..${path.sep}`)
9
+ }
10
+
11
+ function assertWithin(base, target, label = 'ruta') {
12
+ if (!isWithin(base, target)) throw new Error(`${label} fuera de la raíz permitida: ${target}`)
13
+ return path.resolve(target)
14
+ }
15
+
16
+ function assertNoSymlinkPath(base, target) {
17
+ const resolvedBase = path.resolve(base)
18
+ const resolvedTarget = assertWithin(resolvedBase, target)
19
+ const relative = path.relative(resolvedBase, resolvedTarget)
20
+ let current = resolvedBase
21
+ for (const segment of relative.split(path.sep).filter(Boolean)) {
22
+ current = path.join(current, segment)
23
+ if (!fs.existsSync(current)) break
24
+ if (fs.lstatSync(current).isSymbolicLink()) {
25
+ throw new Error(`La ruta destino contiene un symlink: ${current}`)
26
+ }
27
+ }
28
+ }
29
+
30
+ function atomicWrite(file, content) {
31
+ const dir = path.dirname(file)
32
+ fs.mkdirSync(dir, { recursive: true })
33
+ const temporary = path.join(
34
+ dir,
35
+ `.${path.basename(file)}.${process.pid}.${Date.now()}.tmp`,
36
+ )
37
+ try {
38
+ fs.writeFileSync(temporary, content)
39
+ fs.renameSync(temporary, file)
40
+ } finally {
41
+ try { fs.unlinkSync(temporary) } catch { /* renamed or never created */ }
42
+ }
43
+ }
44
+
45
+ function atomicWriteJson(file, value) {
46
+ atomicWrite(file, `${JSON.stringify(value, null, 2)}\n`)
47
+ }
48
+
49
+ module.exports = {
50
+ assertNoSymlinkPath,
51
+ assertWithin,
52
+ atomicWrite,
53
+ atomicWriteJson,
54
+ isWithin,
55
+ }
@@ -0,0 +1,400 @@
1
+ #!/usr/bin/env node
2
+ 'use strict'
3
+
4
+ const fs = require('fs')
5
+ const os = require('os')
6
+ const path = require('path')
7
+ const { spawnSync } = require('child_process')
8
+
9
+ function readInput() {
10
+ let raw = ''
11
+ try { raw = fs.readFileSync(0, 'utf8') } catch { /* no stdin */ }
12
+ try { return raw.trim() ? JSON.parse(raw) : {} } catch { return {} }
13
+ }
14
+
15
+ function commandOf(input) {
16
+ const value = input.tool_input && (input.tool_input.command || input.tool_input.cmd)
17
+ || input.command || input.input && input.input.command || process.env.OPS_HOOK_COMMAND || ''
18
+ return Array.isArray(value) ? value.join(' ') : String(value)
19
+ }
20
+
21
+ function fileOf(input) {
22
+ return String(input.tool_input && (input.tool_input.file_path || input.tool_input.path)
23
+ || input.file_path || input.path || process.env.OPS_HOOK_FILE || '')
24
+ }
25
+
26
+ function filesOf(input) {
27
+ const files = new Set()
28
+ const direct = fileOf(input)
29
+ if (direct) files.add(direct)
30
+ const patch = String(input.tool_input && (input.tool_input.patch || input.tool_input.input)
31
+ || input.patch || '')
32
+ for (const match of patch.matchAll(/^\*\*\* (?:Add|Update|Delete) File:\s*(.+)$/gm)) files.add(match[1].trim())
33
+ return [...files]
34
+ }
35
+
36
+ function contentOf(input) {
37
+ return String(input.tool_input && (
38
+ input.tool_input.content
39
+ || input.tool_input.new_string
40
+ || input.tool_input.patch
41
+ || input.tool_input.input
42
+ )
43
+ || input.content || input.patch || '')
44
+ }
45
+
46
+ function cwdOf(input) {
47
+ const cwd = input.cwd || input.tool_input && input.tool_input.cwd
48
+ || process.env.OPS_ROOT || process.cwd()
49
+ return path.resolve(String(cwd))
50
+ }
51
+
52
+ function block(message) {
53
+ const error = new Error(message)
54
+ error.blocked = true
55
+ throw error
56
+ }
57
+
58
+ function gitDirectory(command, cwd) {
59
+ const flag = command.match(/(?:^|\s)git\s+-C\s+(['"]?)([^\s'";&|]+)\1/)
60
+ const cd = command.match(/(?:^|[;&|]\s*)cd\s+(['"]?)([^\s'";&|]+)\1/)
61
+ return path.resolve(cwd, flag ? flag[2] : cd ? cd[2] : '.')
62
+ }
63
+
64
+ function isCommit(command) {
65
+ return /(?:^|[;&|]\s*)git(?:\s+-C\s+\S+)?\s+commit(?:\s|$)/.test(command)
66
+ }
67
+
68
+ function stagedFiles(dir) {
69
+ const result = spawnSync('git', ['-C', dir, 'diff', '--cached', '--name-only'], { encoding: 'utf8' })
70
+ return result.status === 0 ? result.stdout.trim().split('\n').filter(Boolean) : []
71
+ }
72
+
73
+ function destructive(input) {
74
+ const command = commandOf(input)
75
+ const rules = [
76
+ [/\bgit\s+push\b/, "'git push' publica cambios y requiere una acción humana."],
77
+ [/\bgit\s+reset\s+--hard\b/, "'git reset --hard' destruye cambios locales."],
78
+ [/\bgit\s+clean\s+-[^\s]*f/, "'git clean -f' borra archivos sin seguimiento."],
79
+ [
80
+ /\bdocker(?:\s+\w+)*\s+(?:volume\s+(?:rm|prune)|system\s+prune|network\s+prune)\b/,
81
+ 'La limpieza global de Docker puede borrar datos compartidos.',
82
+ ],
83
+ [
84
+ /\bdocker(?:\s+compose|-compose)\s+(?:\S+\s+)*(?:down|stop|kill|rm)\b/,
85
+ 'Detener un stack Compose puede interrumpir servicios compartidos.',
86
+ ],
87
+ [
88
+ /(?:^|\s)(?:mkfs\S*|shred)\s|\bdd\s+[^;&|]*\bof=\/dev\/|>\s*\/dev\/(?:sd|nvme|disk)/,
89
+ 'Operación destructiva sobre disco o dispositivo.',
90
+ ],
91
+ [
92
+ /\brm\s+(?:-[^\s]*r[^\s]*\s+)+(?:\/\*?|~\/?|\$HOME|\.\.)(?:\s|$)/,
93
+ "'rm -r' sobre /, home o el directorio padre es catastrófico.",
94
+ ],
95
+ ]
96
+ for (const [pattern, message] of rules) if (pattern.test(command)) block(message)
97
+ }
98
+
99
+ function gitAdd(input) {
100
+ const command = commandOf(input)
101
+ if (/\bgit\s+add\s+(?:[^;&|]*\s)?(?:-A\b|--all\b|\.)(?:\s|$|[;&|])/.test(command)) {
102
+ block("'git add -A/--all/.' está prohibido. Stagea rutas explícitas.")
103
+ }
104
+ }
105
+
106
+ function secrets(input) {
107
+ for (const file of filesOf(input)) {
108
+ const base = path.basename(file)
109
+ if (/^(?:\.env|\.env\..+)$/.test(base) && !/\.(?:example|sample|template|schema|dist|tpl)$/.test(base)) {
110
+ block(`${file} parece contener secretos. Edita una plantilla o registra una acción humana.`)
111
+ }
112
+ if (/^(?:accesos\.md|credenciales.*|credentials.*\.json|.*service-account.*\.json|.*\.(?:pem|key))$/i.test(base)) {
113
+ block(`${file} parece un archivo de credenciales en texto plano.`)
114
+ }
115
+ }
116
+ }
117
+
118
+ function integrationSnapshot(input) {
119
+ for (const raw of filesOf(input)) {
120
+ const file = raw.replace(/\\/g, '/')
121
+ if (/(?:^|\/)integrations\/[^/]+\/staging\/(?:.+\/remote\.json|sync-state\.json)$/.test(file)) {
122
+ block(`${file} pertenece al sincronizador. Cura draft.md; no edites snapshots a mano.`)
123
+ }
124
+ }
125
+ }
126
+
127
+ function generated(input) {
128
+ for (const raw of filesOf(input)) {
129
+ const file = raw.replace(/\\/g, '/')
130
+ const base = path.basename(file)
131
+ if (/(?:^|[._-])generated\.[^.]+$/i.test(base) || /(?:^|[._-])gen\.(?:go|ts|js|py)$/i.test(base)) {
132
+ block(`${file} parece código generado. Modifica su fuente y ejecuta el generador; no lo edites a mano.`)
133
+ }
134
+ }
135
+ }
136
+
137
+ function workspaceBoundary(input) {
138
+ const root = findOpsRoot(process.env.OPS_ROOT || process.env.CLAUDE_PROJECT_DIR || cwdOf(input))
139
+ if (!root) return
140
+ let config
141
+ try { config = JSON.parse(fs.readFileSync(path.join(root, 'ops.config.json'), 'utf8')) } catch { return }
142
+ const allowed = [root, ...(config.workspaceRoots || []).map((entry) => path.resolve(root, entry.path))]
143
+ for (const raw of filesOf(input)) {
144
+ const file = path.resolve(cwdOf(input), raw)
145
+ if (!allowed.some((base) => file === base || file.startsWith(`${base}${path.sep}`))) {
146
+ block(`${file} está fuera de las raíces declaradas en ops.config.json.`)
147
+ }
148
+ }
149
+ }
150
+
151
+ function migrations(input) {
152
+ if (process.env.OPS_MIGRATIONS_OVERRIDE === '1') return
153
+ const destructiveSql = new RegExp(
154
+ String.raw`\b(?:drop\s+(?:table|database|schema)|truncate\s+(?:table\s+)?` +
155
+ String.raw`|delete\s+from\s+\S+\s*(?:;|$))\b`,
156
+ 'i',
157
+ )
158
+ if (destructiveSql.test(contentOf(input))) {
159
+ block('La migración contiene SQL destructivo. Requiere revisión y OPS_MIGRATIONS_OVERRIDE=1.')
160
+ }
161
+ for (const raw of filesOf(input)) {
162
+ const normalized = raw.replace(/\\/g, '/')
163
+ if (!/(?:^|\/)(?:migrations?|migrate)\/.*\.sql$/i.test(normalized)) continue
164
+ const file = path.resolve(cwdOf(input), raw)
165
+ if (fs.existsSync(file)) {
166
+ block(`${raw} es una migración existente. Crea una nueva en vez de reescribir historial.`)
167
+ }
168
+ }
169
+ }
170
+
171
+ function dependencies(input) {
172
+ if (process.env.OPS_DEPENDENCIES_OVERRIDE === '1') return
173
+ const command = commandOf(input)
174
+ const unsafePackageCommand = /\b(?:npm|pnpm|yarn|bun)\s+publish\b/.test(command)
175
+ || /\b(?:npm|pnpm|yarn)\s+(?:install|add)\b[^;&|]*(?:\s-g\b|\s--global\b)/.test(command)
176
+ if (unsafePackageCommand) {
177
+ block('Publicar paquetes o instalar dependencias globales requiere una acción humana explícita.')
178
+ }
179
+ if (!isCommit(command)) return
180
+ const dir = gitDirectory(command, cwdOf(input))
181
+ const staged = stagedFiles(dir)
182
+ const manifests = new Set(['package.json', 'pyproject.toml', 'requirements.txt', 'go.mod', 'Cargo.toml'])
183
+ const locks = new Set([
184
+ 'package-lock.json',
185
+ 'pnpm-lock.yaml',
186
+ 'yarn.lock',
187
+ 'bun.lock',
188
+ 'bun.lockb',
189
+ 'poetry.lock',
190
+ 'uv.lock',
191
+ 'go.sum',
192
+ 'Cargo.lock',
193
+ ])
194
+ const byDir = new Map()
195
+ for (const file of staged) {
196
+ const base = path.basename(file)
197
+ if (!manifests.has(base) && !locks.has(base)) continue
198
+ const parent = path.dirname(file)
199
+ const state = byDir.get(parent) || { manifests: [], locks: [] }
200
+ state[manifests.has(base) ? 'manifests' : 'locks'].push(base)
201
+ byDir.set(parent, state)
202
+ }
203
+ for (const [parent, state] of byDir) {
204
+ const existingLocks = [...locks].filter((name) => fs.existsSync(path.join(dir, parent, name)))
205
+ if (existingLocks.length > 1) {
206
+ block(`${parent}: hay varios lockfiles (${existingLocks.join(', ')}). Conserva uno solo.`)
207
+ }
208
+ if (state.manifests.length && existingLocks.length && !state.locks.length) {
209
+ block(`${parent}: cambió ${state.manifests.join(', ')} sin actualizar su lockfile.`)
210
+ }
211
+ if (state.locks.length && !state.manifests.length) {
212
+ block(`${parent}: cambió ${state.locks.join(', ')} sin un cambio explícito en el manifest.`)
213
+ }
214
+ }
215
+ }
216
+
217
+ function governance(input) {
218
+ if (process.env.OPS_GOVERNANCE_OVERRIDE === '1') return
219
+ const command = commandOf(input)
220
+ if (!isCommit(command)) return
221
+ const dir = gitDirectory(command, cwdOf(input))
222
+ const governedPattern = new RegExp(
223
+ String.raw`^(?:(?:template\/)?planning\/(?:rules\/|adr\/|PROTOCOL\.md|` +
224
+ String.raw`METHODOLOGY\.md|FLOW\.md)|automatization\/|engine\/)`,
225
+ )
226
+ const governed = stagedFiles(dir).filter((file) => governedPattern.test(file))
227
+ if (governed.length) {
228
+ const files = governed.map((file) => ` - ${file}`).join('\n')
229
+ block(`El commit toca gobernanza protegida:\n${files}\n` +
230
+ 'Usa OPS_GOVERNANCE_OVERRIDE=1 solo con aprobación.')
231
+ }
232
+ }
233
+
234
+ function run(program, args, cwd) {
235
+ const env = { ...process.env }
236
+ delete env.NODE_TEST_CONTEXT
237
+ const result = spawnSync(program, args, { cwd, encoding: 'utf8', stdio: 'pipe', env })
238
+ return {
239
+ ok: result.status === 0,
240
+ status: result.status,
241
+ output: `${result.stdout || ''}${result.stderr || ''}`.trim(),
242
+ }
243
+ }
244
+
245
+ function verify(input) {
246
+ if (process.env.OPS_SKIP_VERIFY === '1') return
247
+ const command = commandOf(input)
248
+ if (!isCommit(command)) return
249
+ const dir = gitDirectory(command, cwdOf(input))
250
+ const staged = stagedFiles(dir)
251
+ const changedOpenApi = staged.some((file) => /^(?:openapi|api|spec)(?:\/.*)?\/[^/]+\.ya?ml$/i.test(file))
252
+ || staged.some((file) => /^(?:openapi|swagger)\.ya?ml$/i.test(file))
253
+ const changedSqlSource = staged.some((file) => /^(?:db\/queries|queries)\/.*\.sql$/i.test(file))
254
+ const hasApiGenerated = staged.some((file) => /(?:^|\/)[^/]*(?:generated|\.gen)\.(?:go|ts|js|py)$/i.test(file))
255
+ const hasSqlGenerated = staged.some((file) => /(?:^|\/)(?:sqlc|generated)(?:\/|.*\.(?:go|ts|js|py)$)/i.test(file))
256
+ if (changedOpenApi && !hasApiGenerated) {
257
+ block('Cambió una fuente OpenAPI/Swagger sin incluir código regenerado. Ejecuta el generador y stagea su salida.')
258
+ }
259
+ if (changedSqlSource && !hasSqlGenerated) {
260
+ block('Cambió una consulta SQL fuente sin artefactos regenerados. Ejecuta el generador.')
261
+ }
262
+ if (!staged.some((file) => /\.(?:ts|tsx|js|jsx|mjs|cjs|go|py|html|css|scss|prisma)$/.test(file))) return
263
+ const failures = []
264
+ if (fs.existsSync(path.join(dir, 'package.json'))) {
265
+ const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'))
266
+ const usesPnpm = fs.existsSync(path.join(dir, 'pnpm-lock.yaml'))
267
+ && !fs.existsSync(path.join(dir, 'package-lock.json'))
268
+ const pm = usesPnpm ? 'pnpm' : 'npm'
269
+ for (const script of ['test', 'lint', 'typecheck', 'build']) {
270
+ if (!pkg.scripts || !pkg.scripts[script]) continue
271
+ const result = run(pm, ['run', script], dir)
272
+ if (!result.ok) failures.push(`${script} (exit ${result.status})`)
273
+ }
274
+ } else if (fs.existsSync(path.join(dir, 'go.mod'))) {
275
+ const makefile = path.join(dir, 'Makefile')
276
+ if (fs.existsSync(makefile) && /^ci:/m.test(fs.readFileSync(makefile, 'utf8'))) {
277
+ const result = run('make', ['ci'], dir)
278
+ if (!result.ok) failures.push(`make ci (exit ${result.status})`)
279
+ } else {
280
+ for (const args of [['test', './...'], ['build', './...']]) {
281
+ const result = run('go', args, dir)
282
+ if (!result.ok) failures.push(`go ${args[0]} (exit ${result.status})`)
283
+ }
284
+ }
285
+ } else if (fs.existsSync(path.join(dir, 'pyproject.toml')) || fs.existsSync(path.join(dir, 'requirements.txt'))) {
286
+ const makefile = path.join(dir, 'Makefile')
287
+ if (fs.existsSync(makefile) && /^test:/m.test(fs.readFileSync(makefile, 'utf8'))) {
288
+ const result = run('make', ['test'], dir)
289
+ if (!result.ok) failures.push(`make test (exit ${result.status})`)
290
+ }
291
+ }
292
+ if (failures.length) block(`Verify falló en ${path.basename(dir)}: ${failures.join(', ')}. No se commitea en rojo.`)
293
+ }
294
+
295
+ function findOpsRoot(start) {
296
+ let current = path.resolve(start)
297
+ while (true) {
298
+ if (fs.existsSync(path.join(current, 'ops.config.json'))
299
+ && fs.existsSync(path.join(current, 'planning'))) {
300
+ return current
301
+ }
302
+ const parent = path.dirname(current)
303
+ if (parent === current) return ''
304
+ current = parent
305
+ }
306
+ }
307
+
308
+ function planningDrift(input) {
309
+ const root = findOpsRoot(process.env.OPS_ROOT || process.env.CLAUDE_PROJECT_DIR || cwdOf(input))
310
+ if (!root) return
311
+ const local = path.join(root, 'tools', 'ops.js')
312
+ const source = path.join(root, 'engine', 'cli', 'ops.js')
313
+ const cli = fs.existsSync(local) ? local : source
314
+ if (!fs.existsSync(cli)) return
315
+ const result = run(process.execPath, [cli, 'check', path.join(root, 'planning')], root)
316
+ const session = String(input.session_id || input.sessionId || 'nosession').replace(/[^a-zA-Z0-9_-]/g, '_')
317
+ const marker = path.join(os.tmpdir(), `cauce-drift-${session}`)
318
+ if (result.ok) {
319
+ try { fs.unlinkSync(marker) } catch { /* already clean */ }
320
+ return
321
+ }
322
+ if (fs.existsSync(marker)) return
323
+ fs.writeFileSync(marker, '')
324
+ block(`Planning o integraciones quedaron desalineados:\n${result.output}`)
325
+ }
326
+
327
+ const guards = {
328
+ destructive, 'git-add': gitAdd, secrets, generated, 'workspace-boundary': workspaceBoundary,
329
+ migrations, dependencies, governance, verify, 'planning-drift': planningDrift,
330
+ 'integration-snapshot': integrationSnapshot,
331
+ }
332
+
333
+ // Grupos por evento: un runner corre el grupo entero en un solo proceso en lugar de un guard por hook.
334
+ const hookGroups = {
335
+ 'pre-shell': ['destructive', 'git-add', 'dependencies', 'governance', 'verify'],
336
+ 'pre-files': ['secrets', 'generated', 'workspace-boundary', 'migrations', 'integration-snapshot'],
337
+ stop: ['planning-drift'],
338
+ }
339
+
340
+ const hookMetadata = [
341
+ {
342
+ name: 'destructive',
343
+ event: 'PreToolUse · shell',
344
+ purpose: 'Bloquea publicación y comandos con pérdida de datos.',
345
+ },
346
+ { name: 'git-add', event: 'PreToolUse · shell', purpose: 'Exige stagear rutas explícitas.' },
347
+ {
348
+ name: 'dependencies',
349
+ event: 'PreToolUse · shell',
350
+ purpose: 'Protege manifests, lockfiles y publicación de paquetes.',
351
+ },
352
+ {
353
+ name: 'governance',
354
+ event: 'PreToolUse · shell',
355
+ purpose: 'Impide commitear cambios de gobernanza sin aprobación.',
356
+ },
357
+ { name: 'verify', event: 'PreToolUse · shell', purpose: 'Ejecuta los gates reales antes de cada commit.' },
358
+ { name: 'secrets', event: 'PreToolUse · files', purpose: 'Bloquea escritura de secretos y credenciales.' },
359
+ { name: 'generated', event: 'PreToolUse · files', purpose: 'Impide editar código generado manualmente.' },
360
+ { name: 'workspace-boundary', event: 'PreToolUse · files', purpose: 'Limita escrituras a las raíces declaradas.' },
361
+ { name: 'migrations', event: 'PreToolUse · files', purpose: 'Protege migraciones existentes y SQL destructivo.' },
362
+ {
363
+ name: 'integration-snapshot',
364
+ event: 'PreToolUse · files',
365
+ purpose: 'Protege snapshots administrados por integraciones.',
366
+ },
367
+ {
368
+ name: 'planning-drift',
369
+ event: 'Stop / SessionEnd',
370
+ purpose: 'Evita cerrar con planning o integraciones desalineados.',
371
+ },
372
+ ]
373
+
374
+ function execute(name, input) {
375
+ const guard = guards[name]
376
+ if (!guard) throw new Error(`Hook desconocido: ${name}`)
377
+ guard(input)
378
+ }
379
+
380
+ // Expande grupos a guards y conserva el orden declarado; el primero que bloquea corta la ejecución.
381
+ function resolve(names) {
382
+ const resolved = names.flatMap((name) => hookGroups[name] || [name])
383
+ if (!resolved.length) throw new Error('Se requiere el nombre de un guard o de un grupo.')
384
+ return resolved
385
+ }
386
+
387
+ function executeAll(names, input) {
388
+ for (const name of resolve(names)) execute(name, input)
389
+ }
390
+
391
+ if (require.main === module) {
392
+ try { executeAll(process.argv.slice(2), readInput()) } catch (error) {
393
+ console.error(`BLOQUEADO: ${error.message}`)
394
+ process.exit(error.blocked ? 2 : 1)
395
+ }
396
+ }
397
+
398
+ module.exports = {
399
+ commandOf, execute, executeAll, fileOf, filesOf, findOpsRoot, guards, hookGroups, hookMetadata,
400
+ }
@@ -0,0 +1,80 @@
1
+ 'use strict'
2
+
3
+ const fs = require('node:fs')
4
+ const path = require('node:path')
5
+ const S = require('./state')
6
+
7
+ const STATES = ['draft', 'approved', 'published']
8
+ const TYPES = ['Epic', 'Story', 'Task', 'Sub-task']
9
+
10
+ function read(root, provider) {
11
+ const dir = path.join(root, 'integrations', provider, 'proposed')
12
+ let files = []
13
+ try {
14
+ files = fs.readdirSync(dir).filter((file) => file.endsWith('.md') && file !== 'README.md')
15
+ } catch { return [] }
16
+ return files.sort().map((file) => {
17
+ const content = fs.readFileSync(path.join(dir, file), 'utf8')
18
+ const fields = S.frontmatter(content)
19
+ const body = content.replace(/^---[\s\S]*?---\s*/, '')
20
+ const summary = ((body.match(/^#\s+(.+)$/m) || [])[1] || '').trim()
21
+ const description = ((body.match(
22
+ /^##\s+Descripción\s*\n([\s\S]*?)(?=^##\s+|(?![\s\S]))/im,
23
+ ) || [])[1] || '').trim()
24
+ return {
25
+ file,
26
+ path: path.join(dir, file),
27
+ content,
28
+ fields,
29
+ summary,
30
+ description,
31
+ }
32
+ })
33
+ }
34
+
35
+ function validate(root, provider, workspaces = []) {
36
+ const errors = []
37
+ const stagedKeys = new Set(S.readStaging(root, provider).map((item) => item.key))
38
+ let maxHours = 4
39
+ try {
40
+ const config = JSON.parse(fs.readFileSync(path.join(root, 'ops.config.json'), 'utf8'))
41
+ maxHours = config.runner.maxTaskHours
42
+ } catch { /* reported by the main validator */ }
43
+ for (const proposal of read(root, provider)) {
44
+ const at = `integrations/${provider}/proposed/${proposal.file}`
45
+ const fields = proposal.fields
46
+ if (fields.provider !== provider) errors.push(`${at}: provider debe ser ${provider}`)
47
+ if (!STATES.includes(fields.state)) errors.push(`${at}: state inválido`)
48
+ if (!TYPES.includes(fields.type)) errors.push(`${at}: type inválido`)
49
+ if (!proposal.summary) errors.push(`${at}: falta título`)
50
+ if (!proposal.description) errors.push(`${at}: falta Descripción`)
51
+ if (fields.parent && !/^[A-Za-z][A-Za-z0-9_]*-\d+$/.test(fields.parent)) {
52
+ errors.push(`${at}: parent no es una clave remota válida`)
53
+ }
54
+ if (fields.type !== 'Epic' && !fields.parent) {
55
+ errors.push(`${at}: ${fields.type || 'el tipo'} exige parent`)
56
+ }
57
+ if (fields.parent && !stagedKeys.has(fields.parent)) {
58
+ errors.push(`${at}: parent ${fields.parent} no está presente en staging`)
59
+ }
60
+ if (fields.state === 'approved') {
61
+ if (!fields.service) errors.push(`${at}: approved exige service`)
62
+ const exists = workspaces.some((workspace) => {
63
+ return fs.existsSync(path.join(workspace.resolved, fields.service || ''))
64
+ })
65
+ if (fields.service && !exists) errors.push(`${at}: service no existe`)
66
+ const estimate = Number(fields.estimateHours)
67
+ if (!Number.isFinite(estimate) || estimate <= 0) {
68
+ errors.push(`${at}: approved exige estimateHours mayor que cero`)
69
+ } else if (estimate > maxHours && !fields.justification) {
70
+ errors.push(`${at}: supera ${maxHours}h; debe dividirse o justificarlo`)
71
+ }
72
+ }
73
+ if (fields.state === 'published' && !fields.remote) {
74
+ errors.push(`${at}: published exige remote`)
75
+ }
76
+ }
77
+ return errors
78
+ }
79
+
80
+ module.exports = { STATES, TYPES, read, validate }