@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,287 @@
1
+ // Implementación portable de planning/PROTOCOL.md para runners compatibles con workflows de Claude.
2
+ // Descubre proyecto, servicios y límites desde ops.config.json; no codifica rutas ni proveedores.
3
+ export const meta = {
4
+ name: 'autobuild',
5
+ description: 'Triage → Pick → Ready → Plan → Build → Review → Verify → QA → Commit → Done',
6
+ whenToUse: 'Ejecutar un hito aprobado con recuperación por WIP y checkpoint humano entre hitos.',
7
+ phases: [
8
+ 'Triage', 'Pick', 'Ready', 'Decompose', 'Plan', 'Critique', 'Build', 'Review',
9
+ 'Verify', 'QA', 'Commit', 'Done', 'Closing',
10
+ ].map((title) => ({ title, detail: `Fase ${title} del protocolo agnóstico` })),
11
+ }
12
+
13
+ const ROOT = process.env.OPS_ROOT || process.env.CLAUDE_PROJECT_DIR || '.'
14
+ const CONFIG = `${ROOT}/ops.config.json`
15
+ const P = `${ROOT}/planning`
16
+ const BACKLOG = `${P}/BACKLOG.md`
17
+ const DONE = `${P}/DONE.md`
18
+ const WIP = `${P}/WIP.md`
19
+ const HUMAN = `${P}/HUMAN_ACTIONS.md`
20
+ const GATE = `${P}/AWAITING_REVIEW.md`
21
+ const ROADMAP = `${P}/roadmap`
22
+
23
+ // Estado de planning tal como lo emite `ops context --json`; ningún modelo parsea BACKLOG ni WIP.
24
+ const CONTEXT = {
25
+ type: 'object', additionalProperties: false, required: ['blocked', 'hasTask', 'wipActive', 'queued'],
26
+ properties: {
27
+ blocked: { type: 'string' }, hasTask: { type: 'boolean' }, wipActive: { type: 'boolean' },
28
+ queued: { type: 'integer' }, slug: { type: 'string' }, hito: { type: 'string' },
29
+ service: { type: 'string' }, acceptance: { type: 'string' }, epic: { type: 'string' },
30
+ lane: { type: 'string', enum: ['', 'directo', 'lite', 'full'] },
31
+ blockedTasks: { type: 'array', items: { type: 'string' } },
32
+ },
33
+ }
34
+ const EXPANSION = {
35
+ type: 'object', additionalProperties: false, required: ['expanded'],
36
+ properties: { expanded: { type: 'boolean' }, hito: { type: 'string' }, reason: { type: 'string' } },
37
+ }
38
+ const READY = {
39
+ type: 'object', additionalProperties: false, required: ['ready', 'needsHuman'],
40
+ properties: { ready: { type: 'boolean' }, needsHuman: { type: 'boolean' }, reason: { type: 'string' }, refinedAcceptance: { type: 'string' } },
41
+ }
42
+ const ESTIMATE = {
43
+ type: 'object', additionalProperties: false, required: ['hours', 'needsSplit'],
44
+ properties: {
45
+ hours: { type: 'number' }, needsSplit: { type: 'boolean' },
46
+ subtasks: { type: 'array', items: { type: 'object', required: ['title', 'acceptance'], properties: {
47
+ title: { type: 'string' }, acceptance: { type: 'string' }, service: { type: 'string' },
48
+ } } },
49
+ },
50
+ }
51
+ const PLAN = {
52
+ type: 'object', additionalProperties: false, required: ['approach', 'steps', 'files', 'testStrategy'],
53
+ properties: {
54
+ approach: { type: 'string' }, steps: { type: 'array', items: { type: 'string' } },
55
+ files: { type: 'array', items: { type: 'string' } }, risks: { type: 'array', items: { type: 'string' } },
56
+ testStrategy: { type: 'string' },
57
+ },
58
+ }
59
+ const DECISION = {
60
+ type: 'object', additionalProperties: false, required: ['approved', 'concerns'],
61
+ properties: { approved: { type: 'boolean' }, concerns: { type: 'array', items: { type: 'string' } } },
62
+ }
63
+ const VERIFY = {
64
+ type: 'object', additionalProperties: false, required: ['passed', 'commands', 'details'],
65
+ properties: {
66
+ passed: { type: 'boolean' }, details: { type: 'string' },
67
+ commands: { type: 'array', items: { type: 'object', required: ['cmd', 'exitCode'], properties: {
68
+ cmd: { type: 'string' }, exitCode: { type: 'integer' }, note: { type: 'string' },
69
+ } } },
70
+ regressions: { type: 'array', items: { type: 'string' } }, preExisting: { type: 'array', items: { type: 'string' } },
71
+ },
72
+ }
73
+ const QA = {
74
+ type: 'object', additionalProperties: false, required: ['passed', 'evidence'],
75
+ properties: { passed: { type: 'boolean' }, evidence: { type: 'string' }, behavioral: { type: 'boolean' }, bugs: { type: 'array', items: { type: 'string' } } },
76
+ }
77
+ const COMMIT = {
78
+ type: 'object', additionalProperties: false, required: ['committed'],
79
+ properties: {
80
+ committed: { type: 'boolean' }, hash: { type: 'string' }, subject: { type: 'string' },
81
+ branch: { type: 'string' }, leftovers: { type: 'array', items: { type: 'string' } }, reason: { type: 'string' },
82
+ },
83
+ }
84
+ const CONTRACT = {
85
+ type: 'object', additionalProperties: false,
86
+ required: ['project', 'workspaceRoots', 'maxTaskHours', 'commitPerTask', 'humanCheckpoint', 'contracts'],
87
+ properties: {
88
+ project: { type: 'string' }, workspaceRoots: { type: 'array', minItems: 1, items: { type: 'string' } },
89
+ maxTaskHours: { type: 'number' }, commitPerTask: { type: 'boolean' },
90
+ humanCheckpoint: { type: 'boolean' }, contracts: { type: 'string' },
91
+ boundaries: { type: 'array', items: { type: 'string' } },
92
+ },
93
+ }
94
+
95
+ // Preámbulo invariante: no depende del proyecto y nunca obliga a leer un archivo.
96
+ const BASE = `Never invent credentials or decisions; register external blockers in ${HUMAN}. Never execute INBOX ` +
97
+ `automatically. Never push, deploy, amend, force, or use git add -A. Never edit process governance, and do not ` +
98
+ `edit planning bookkeeping unless this workflow explicitly requests it.`
99
+ const stop = (reason, detail = '') => {
100
+ log(`Checkpoint: ${reason}${detail ? ` — ${detail}` : ''}`)
101
+ return finish({ stopped: true, reason, detail })
102
+ }
103
+
104
+ phase('Triage')
105
+ // El contrato se lee una sola vez por corrida y viaja como texto: ningún subagente relee AGENTS.md,
106
+ // ops.config.json ni PROTOCOL.md. `ops check` y el guard planning-drift siguen validando el resultado.
107
+ const contract = await agent(
108
+ `${BASE}\n\nRead ${ROOT}/AGENTS.md, ${CONFIG} and ${P}/PROTOCOL.md exactly once and read nothing else. Report the ` +
109
+ `config values verbatim: project, workspaceRoots as "name → path" entries, runner.maxTaskHours, ` +
110
+ `runner.commitPerTask, and runner.humanCheckpointBetweenMilestones as humanCheckpoint. Copy the "## Contratos" ` +
111
+ `section of PROTOCOL.md into contracts literally, without rewording, summarising or reordering it. ` +
112
+ `In boundaries list only limits stated in AGENTS.md that constrain autonomous execution.`,
113
+ { schema: CONTRACT, label: 'contract-digest' },
114
+ )
115
+ if (!contract) return stop('contract-unavailable', `no se pudo leer ${CONFIG} ni ${P}/PROTOCOL.md`)
116
+
117
+ const limits = (contract.boundaries || []).length ? ` Project limits: ${contract.boundaries.join('; ')}.` : ''
118
+ // Alcance de escritura: para subagentes que tocan código o ejecutan gates del producto.
119
+ const SCOPE = `${BASE}\n\nProject ${contract.project}. workspaceRoots is the complete writable product boundary: ` +
120
+ `${contract.workspaceRoots.join('; ')}.${limits} This preamble already carries the contract; do not re-read ` +
121
+ `${ROOT}/AGENTS.md, ${CONFIG} or ${P}/PROTOCOL.md.`
122
+ // Formatos de planning: sólo para subagentes que escriben roadmap, BACKLOG, WIP, DONE o gates.
123
+ const LEDGER = `${SCOPE}\n\nPlanning contracts, verbatim from ${P}/PROTOCOL.md:\n${contract.contracts}`
124
+
125
+ const read = (prompt, options = {}) => agent(`${BASE}\n\n${prompt}`, options)
126
+ const run = (prompt, options = {}) => agent(`${SCOPE}\n\n${prompt}`, options)
127
+ const write = (prompt, options = {}) => agent(`${LEDGER}\n\n${prompt}`, options)
128
+
129
+ // Gate, mutex de WIP y selección de tarea salen de un comando determinista: AWAITING_REVIEW, BACKLOG,
130
+ // WIP y HUMAN_ACTIONS nunca entran al contexto de un modelo, y su tamaño deja de costar tokens.
131
+ const readContext = () => read(
132
+ `Run "node tools/ops.js context ${P} --json" from ${ROOT} and report only what it printed. Derive hasTask from ` +
133
+ `whether task is null, wipActive from whether wip is null, and lane from task.tier; copy slug, hito, service, ` +
134
+ `acceptance and epic from task. The command is the source of truth: do not open planning files to complete it.`,
135
+ { schema: CONTEXT, label: 'planning-context' },
136
+ )
137
+
138
+ let planning = await readContext()
139
+ if (!planning) return stop('context-unavailable', `no se pudo leer el estado de ${P}`)
140
+ if (planning.blocked) return stop('awaiting-human-review', `${GATE} tiene un checkpoint humano sin resolver`)
141
+
142
+ let currentHito = planning.wipActive ? planning.hito : ''
143
+ const completed = []
144
+ let safety = 0
145
+
146
+ while (safety++ < 50) {
147
+ phase('Pick')
148
+ if (!planning.hasTask && !planning.queued) {
149
+ const expansion = await write(
150
+ `Read ${ROADMAP}. Expand only the next approved open epic into a new hito of ${BACKLOG}, preserving each story ` +
151
+ `slug, its criteria references and its service. Never promote ${P}/INBOX.md. Report whether you wrote anything.`,
152
+ { schema: EXPANSION },
153
+ )
154
+ if (!expansion.expanded) break
155
+ planning = await readContext()
156
+ if (!planning) return stop('context-unavailable', `no se pudo releer el estado de ${P}`)
157
+ }
158
+ if (!planning.hasTask || (currentHito && planning.hito !== currentHito)) break
159
+ const task = {
160
+ id: planning.slug, hito: planning.hito, service: planning.service,
161
+ acceptance: planning.acceptance, epic: planning.epic,
162
+ }
163
+ currentHito = task.hito
164
+ const direct = planning.lane === 'directo'
165
+ const lite = planning.lane === 'lite'
166
+
167
+ if (!planning.wipActive) {
168
+ phase('Ready')
169
+ const ready = await read(
170
+ `As product manager, check concrete acceptance, dependencies and unresolved decisions for ${task.id}: ${task.acceptance}. ` +
171
+ `Clarify wording only; never expand scope.`, { schema: READY },
172
+ )
173
+ if (!ready.ready) {
174
+ await write(`Register ${task.id} in ${HUMAN} with reason and an exact human action: ${ready.reason}.`)
175
+ return stop('not-ready', ready.reason)
176
+ }
177
+ if (ready.refinedAcceptance) task.acceptance = ready.refinedAcceptance
178
+
179
+ if (!direct && !lite) {
180
+ phase('Decompose')
181
+ const estimate = await run(
182
+ `Inspect ${task.service} and estimate ${task.id}. Split it only if it exceeds ${contract.maxTaskHours} hours.`,
183
+ { schema: ESTIMATE },
184
+ )
185
+ if (estimate.needsSplit) {
186
+ await write(`Replace only ${task.id} in ${BACKLOG} with ordered, independently verifiable subtasks: ${JSON.stringify(estimate.subtasks)}.`)
187
+ planning = await readContext()
188
+ if (!planning) return stop('context-unavailable', `no se pudo releer el estado de ${P}`)
189
+ continue
190
+ }
191
+ }
192
+
193
+ phase('Plan')
194
+ let plan = await run(
195
+ `Inspect real code, repository instructions, neighbouring conventions, epic context and git status for ${task.id}. ` +
196
+ `Produce the smallest plan satisfying ${task.acceptance}. Planning files cannot be implementation files.`, { schema: PLAN },
197
+ )
198
+ if (!direct && !lite) {
199
+ phase('Critique')
200
+ let critique = await read(
201
+ `Attack this plan for correctness, scope, security, tests and conflicts with existing code: ${JSON.stringify(plan)}`,
202
+ { schema: DECISION },
203
+ )
204
+ if (!critique.approved) {
205
+ plan = await read(`Revise the plan once for: ${critique.concerns.join('; ')}. Plan: ${JSON.stringify(plan)}`, { schema: PLAN })
206
+ critique = await read(`Re-critique the revised plan against ${task.acceptance}: ${JSON.stringify(plan)}`, { schema: DECISION })
207
+ if (!critique.approved) return stop('plan-rejected', critique.concerns.join('; '))
208
+ }
209
+ }
210
+ await write(
211
+ `Persist active WIP before code: task=${task.id}, hito=${JSON.stringify(task.hito)}, phase=Build, service=${task.service}, ` +
212
+ `acceptance=${JSON.stringify(task.acceptance)}, unchecked steps=${JSON.stringify(plan.steps)}. Follow the WIP contract exactly.`,
213
+ )
214
+ }
215
+
216
+ phase('Build')
217
+ const build = await run(
218
+ `Implement only ${task.id} inside ${task.service}. Resume at the first pending WIP step; verify completed steps on disk ` +
219
+ `and tick each successful step. Use RED/GREEN for behavior. Acceptance: ${task.acceptance}.`, {
220
+ schema: { type: 'object', required: ['completed', 'summary'], properties: {
221
+ completed: { type: 'boolean' }, summary: { type: 'string' }, blockers: { type: 'array', items: { type: 'string' } },
222
+ } },
223
+ },
224
+ )
225
+ if (!build.completed) return stop('build-blocked', (build.blockers || []).join('; ') || build.summary)
226
+
227
+ if (!direct) {
228
+ phase('Review')
229
+ let review = await run(
230
+ `Review the actual diff for acceptance, regressions, security, architecture, generated code, migrations and accidental scope.`,
231
+ { schema: DECISION },
232
+ )
233
+ if (!review.approved) {
234
+ await write(`Fix only these evidence-backed findings and update WIP: ${review.concerns.join('; ')}`)
235
+ review = await run(`Re-review the corrected diff for ${task.id}.`, { schema: DECISION })
236
+ if (!review.approved) return stop('review-failed', review.concerns.join('; '))
237
+ }
238
+ }
239
+
240
+ phase('Verify')
241
+ const verified = await run(
242
+ `Discover and run the real gates for ${task.service}: repository instructions first, then applicable test, lint, ` +
243
+ `typecheck and build. Read actual exit codes. passed=true needs commands and no task-caused regression.`, { schema: VERIFY },
244
+ )
245
+ if (!verified.passed || !verified.commands.length) return stop('verify-failed', verified.details)
246
+
247
+ phase('QA')
248
+ const qa = await run(
249
+ `${direct || lite ? 'Perform the cheapest real acceptance check' : 'Exercise real consumer-visible behavior'} for ` +
250
+ `${task.id}. Unit tests alone are not QA. Start only minimum runtime and tear it down. Acceptance: ${task.acceptance}.`,
251
+ { schema: QA },
252
+ )
253
+ if (!qa.passed) return stop('qa-failed', qa.evidence)
254
+
255
+ phase('Commit')
256
+ const commit = contract.commitPerTask ? await run(
257
+ `Find the git repo owning ${task.service}, inspect status/diff, stage explicit task files, create one Conventional ` +
258
+ `Commit with footer "Task: ${task.id}", then verify log/status. Never amend or push; report unrelated leftovers.`,
259
+ { schema: COMMIT },
260
+ ) : { committed: true, reason: 'runner.commitPerTask is disabled' }
261
+ if (!commit.committed) return stop('commit-failed', commit.reason)
262
+
263
+ phase('Done')
264
+ await write(
265
+ `Atomically close ${task.id}: append it under its hito in ${DONE} with acept, done, qa, tests and commit evidence; ` +
266
+ `remove it and its indented notes from ${BACKLOG}; close its epic only if no tagged task remains; reset ${WIP} to ` +
267
+ `status IDLE. Facts: build=${build.summary}; verify=${JSON.stringify(verified.commands)}; qa=${qa.evidence}; ` +
268
+ `commit=${commit.hash || commit.reason}.`,
269
+ )
270
+ completed.push(task.id)
271
+ planning = await readContext()
272
+ if (!planning) return stop('context-unavailable', `no se pudo releer el estado de ${P}`)
273
+ }
274
+
275
+ phase('Closing')
276
+ const closing = await write(
277
+ `Run "node tools/ops.js check ${P}" from ${ROOT}. If red, repair only deterministic derived state; never rewrite ` +
278
+ `acceptance or decisions to force green.`, {
279
+ schema: { type: 'object', required: ['passed', 'details'], properties: { passed: { type: 'boolean' }, details: { type: 'string' } } },
280
+ },
281
+ )
282
+ if (!closing.passed) return stop('planning-check-failed', closing.details)
283
+ if (completed.length && contract.humanCheckpoint) await write(
284
+ `Create ${GATE} with the completed hito, tasks ${completed.join(', ')}, evidence, pending human actions and exact ` +
285
+ `continuation instructions. Never push or deploy.`,
286
+ )
287
+ return finish({ done: completed, count: completed.length, hito: currentHito })
@@ -0,0 +1,14 @@
1
+ # Workflows de integraciones
2
+
3
+ Implementan el ciclo común de cualquier proveedor registrado:
4
+
5
+ ```text
6
+ remoto → sync → staging → revisión humana → promote → planning
7
+ ```
8
+
9
+ - `sync.js`: valida y refresca staging sin promover ni escribir remoto.
10
+ - `promote.js`: materializa localmente un candidato cuyo draft está `ready`.
11
+
12
+ El proveedor se selecciona con `OPS_INTEGRATION_PROVIDER`; `promote` requiere además
13
+ `OPS_INTEGRATION_KEY`. La implementación particular de Jira vive en `engine/integrations/providers/jira.js`,
14
+ no en estos workflows.
@@ -0,0 +1,33 @@
1
+ // Promoción staging → planning para un candidato revisado. Es local y nunca escribe en el proveedor remoto.
2
+ export const meta = {
3
+ name: 'integration-promote',
4
+ description: 'Promueve un draft revisado desde staging hacia el roadmap local.',
5
+ whenToUse: 'Después de que una persona marque un candidato de integración como ready.',
6
+ phases: [
7
+ { title: 'Preflight', detail: 'Validar proveedor, clave y estado ready.' },
8
+ { title: 'Promote', detail: 'Materializar el draft mediante el adaptador común.' },
9
+ { title: 'Validate', detail: 'Comprobar planning e integración.' },
10
+ ],
11
+ }
12
+
13
+ const ROOT = process.env.OPS_ROOT || process.env.CLAUDE_PROJECT_DIR || '.'
14
+ const PROVIDER = process.env.OPS_INTEGRATION_PROVIDER || ''
15
+ const KEY = process.env.OPS_INTEGRATION_KEY || ''
16
+ const RESULT = {
17
+ type: 'object', additionalProperties: false, required: ['passed', 'provider', 'key', 'details'],
18
+ properties: { passed: { type: 'boolean' }, provider: { type: 'string' }, key: { type: 'string' }, details: { type: 'string' }, kind: { type: 'string' } },
19
+ }
20
+
21
+ phase('Preflight')
22
+ const result = await agent(
23
+ `Read ${ROOT}/integrations/README.md, integrations config, the provider contract and planning/PROTOCOL.md. ` +
24
+ `Require OPS_INTEGRATION_PROVIDER=${JSON.stringify(PROVIDER)} and OPS_INTEGRATION_KEY=${JSON.stringify(KEY)}. ` +
25
+ `Run integration check. Inspect only that candidate's draft and snapshot; stop unless draft state is ready and ` +
26
+ `acceptance, hierarchy and service mapping are concrete. Never call or write the remote provider.\n\n` +
27
+ `If valid, enter Promote and run "node tools/ops.js integration promote ${ROOT} ${PROVIDER} ${KEY}" exactly once. ` +
28
+ `Do not modify BACKLOG, WIP or DONE. Then enter Validate and run integration check plus ` +
29
+ `"node tools/ops.js check ${ROOT}/planning". passed=true requires real exit 0 from every command.`,
30
+ { label: 'integration:promote', schema: RESULT },
31
+ )
32
+ log(result && result.passed ? `Promoted ${result.provider}:${result.key} as ${result.kind}` : `Integration promotion failed: ${(result && result.details) || 'no result'}`)
33
+ return result
@@ -0,0 +1,36 @@
1
+ // Sincronización remota → staging para cualquier proveedor registrado. Nunca escribe en el sistema remoto.
2
+ export const meta = {
3
+ name: 'integration-sync',
4
+ description: 'Valida, sincroniza y comprueba staging preservando la curación local.',
5
+ whenToUse: 'Refrescar trabajo remoto antes de revisarlo y promoverlo a planning.',
6
+ phases: [
7
+ { title: 'Preflight', detail: 'Resolver proveedor y validar configuración.' },
8
+ { title: 'Sync', detail: 'Leer remoto mediante su adaptador y refrescar staging.' },
9
+ { title: 'Validate', detail: 'Validar integración y planning sin promover.' },
10
+ ],
11
+ }
12
+
13
+ const ROOT = process.env.OPS_ROOT || process.env.CLAUDE_PROJECT_DIR || '.'
14
+ const REQUESTED = process.env.OPS_INTEGRATION_PROVIDER || ''
15
+ const RESULT = {
16
+ type: 'object', additionalProperties: false, required: ['passed', 'provider', 'details'],
17
+ properties: {
18
+ passed: { type: 'boolean' }, provider: { type: 'string' }, details: { type: 'string' },
19
+ total: { type: 'integer' }, created: { type: 'integer' }, refreshed: { type: 'integer' }, preserved: { type: 'integer' },
20
+ },
21
+ }
22
+
23
+ phase('Preflight')
24
+ const result = await agent(
25
+ `Read ${ROOT}/integrations/README.md, ${ROOT}/integrations/config.json and ${ROOT}/planning/PROTOCOL.md. ` +
26
+ `Resolve provider from OPS_INTEGRATION_PROVIDER=${JSON.stringify(REQUESTED)}; if empty, continue only when exactly ` +
27
+ `one provider is enabled. Run "node tools/ops.js integration check ${ROOT} <provider>" and read its exit code. ` +
28
+ `Do not edit config and do not call a remote write operation.\n\n` +
29
+ `If green, enter Sync and run "node tools/ops.js integration sync ${ROOT} <provider>". The registered adapter owns ` +
30
+ `pagination and normalization. Never edit remote.json or sync-state.json manually; preserve curated draft.md.\n\n` +
31
+ `Finally enter Validate, repeat integration check and run "node tools/ops.js check ${ROOT}/planning". passed=true ` +
32
+ `requires real exit 0 from every command. Never promote candidates as a side effect of sync.`,
33
+ { label: 'integration:sync', schema: RESULT },
34
+ )
35
+ log(result && result.passed ? `Integration ${result.provider} staging green: ${result.details}` : `Integration sync failed: ${(result && result.details) || 'no result'}`)
36
+ return result
@@ -0,0 +1,157 @@
1
+ 'use strict'
2
+
3
+ // Motor de aprendizaje controlado para los perfiles de agentes.
4
+
5
+ const fs = require('fs')
6
+ const path = require('path')
7
+
8
+ const REQUIRED_SECTIONS = [
9
+ 'Hallazgos',
10
+ 'Evidencia',
11
+ 'Cambio propuesto',
12
+ 'Riesgos y regresiones',
13
+ 'Evaluación',
14
+ 'Aprobación humana',
15
+ ]
16
+
17
+ function agentRoot(root, agent) {
18
+ if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(agent || '')) throw new Error(`agente inválido: ${agent || '(vacío)'}`)
19
+ const catalog = path.join(root, 'agents')
20
+ let types = []
21
+ try {
22
+ types = fs.readdirSync(catalog, { withFileTypes: true })
23
+ .filter((entry) => entry.isDirectory())
24
+ .map((entry) => entry.name)
25
+ } catch { /* catálogo ausente */ }
26
+ const matches = types
27
+ .map((type) => path.join(catalog, type, agent))
28
+ .filter((target) => fs.existsSync(path.join(target, 'SKILL.md')))
29
+ if (!matches.length) throw new Error(`no existe agents/<tipo>/${agent}/SKILL.md`)
30
+ if (matches.length > 1) {
31
+ throw new Error(`agente ambiguo ${agent}: ${matches.map((target) => path.relative(root, target)).join(', ')}`)
32
+ }
33
+ return matches[0]
34
+ }
35
+
36
+ function isoDate(now = new Date()) { return now.toISOString().slice(0, 10) }
37
+ function month(now = new Date()) { return now.toISOString().slice(0, 7) }
38
+
39
+ function prepareReport(root, agent, now = new Date()) {
40
+ const reports = path.join(agentRoot(root, agent), 'learning', 'reports')
41
+ const file = path.join(reports, `${isoDate(now)}.md`)
42
+ fs.mkdirSync(reports, { recursive: true })
43
+ if (fs.existsSync(file)) return { file, created: false }
44
+ fs.writeFileSync(file, `---
45
+ agent: ${agent}
46
+ date: ${isoDate(now)}
47
+ status: draft
48
+ ---
49
+
50
+ # Investigación semanal — ${isoDate(now)}
51
+
52
+ ## Fuentes consultadas
53
+
54
+ ## Hallazgos
55
+
56
+ ## Evidencia
57
+
58
+ ## Posibles prácticas obsoletas
59
+
60
+ ## Recomendación
61
+
62
+ ## Preguntas abiertas
63
+ `)
64
+ return { file, created: true }
65
+ }
66
+
67
+ function prepareProposal(root, agent, now = new Date()) {
68
+ const target = agentRoot(root, agent)
69
+ const proposalDir = path.join(target, 'learning', 'proposals')
70
+ const file = path.join(proposalDir, `${month(now)}.md`)
71
+ fs.mkdirSync(proposalDir, { recursive: true })
72
+ if (fs.existsSync(file)) return { file, created: false, reports: 0 }
73
+ let names = []
74
+ try { names = fs.readdirSync(path.join(target, 'learning', 'reports')) } catch { /* vacío */ }
75
+ const reports = names.filter((name) => name.startsWith(month(now)) && /^\d{4}-\d{2}-\d{2}\.md$/.test(name)).sort()
76
+ const summaries = reports.map((name) => {
77
+ const report = path.join(target, 'learning', 'reports', name)
78
+ const text = fs.readFileSync(report, 'utf8')
79
+ const match = text.match(/^## Recomendación\s*\n([\s\S]*?)(?=\n## |$)/m) || []
80
+ const recommendation = (match[1] || 'Sin recomendación registrada.').trim()
81
+ return `### ${name.slice(0, -3)}\n\nFuente interna: \`${path.relative(root, report)}\`\n\n${recommendation}`
82
+ })
83
+ fs.writeFileSync(file, `---
84
+ agent: ${agent}
85
+ period: ${month(now)}
86
+ status: proposed
87
+ automatic_apply: false
88
+ ---
89
+
90
+ # Propuesta mensual — ${month(now)}
91
+
92
+ ## Hallazgos
93
+
94
+ ${summaries.join('\n\n') || 'No hay informes semanales para este período.'}
95
+
96
+ ## Evidencia
97
+
98
+ Revisar las fuentes primarias enlazadas desde cada informe semanal.
99
+
100
+ ## Cambio propuesto
101
+
102
+ Por definir tras revisar los hallazgos. No modificar \`SKILL.md\` desde este proceso.
103
+
104
+ ## Riesgos y regresiones
105
+
106
+ Por evaluar contra los comportamientos y casos del agente.
107
+
108
+ ## Evaluación
109
+
110
+ Pendiente.
111
+
112
+ ## Aprobación humana
113
+
114
+ - Estado: pendiente
115
+ - Responsable: por definir
116
+ - Fecha: por definir
117
+ `)
118
+ return { file, created: true, reports: reports.length }
119
+ }
120
+
121
+ function evaluate(root, agent) {
122
+ const target = agentRoot(root, agent)
123
+ const errors = []
124
+ const requiredFiles = [
125
+ 'learning/sources.yaml',
126
+ 'learning/HISTORY.md',
127
+ 'learning/CODEX_AUTOMATION.md',
128
+ 'evaluations/expected-behaviors.yaml',
129
+ ]
130
+ for (const relative of requiredFiles) {
131
+ if (!fs.existsSync(path.join(target, relative))) errors.push(`falta ${relative}`)
132
+ }
133
+ const skill = fs.readFileSync(path.join(target, 'SKILL.md'), 'utf8').toLowerCase()
134
+ for (const phrase of ['no inventar', 'autorización', 'evidencia observable']) {
135
+ if (!skill.includes(phrase)) errors.push(`SKILL.md no conserva el control: ${phrase}`)
136
+ }
137
+ let proposals = []
138
+ try {
139
+ proposals = fs.readdirSync(path.join(target, 'learning', 'proposals'))
140
+ .filter((name) => /^\d{4}-\d{2}\.md$/.test(name))
141
+ } catch { /* vacío */ }
142
+ for (const name of proposals) {
143
+ const text = fs.readFileSync(path.join(target, 'learning', 'proposals', name), 'utf8')
144
+ if (!/^automatic_apply:\s*false$/m.test(text)) errors.push(`${name}: automatic_apply debe ser false`)
145
+ for (const section of REQUIRED_SECTIONS) {
146
+ if (!text.includes(`## ${section}`)) errors.push(`${name}: falta sección ${section}`)
147
+ }
148
+ }
149
+ let cases = 0
150
+ try {
151
+ cases = fs.readdirSync(path.join(target, 'evaluations', 'cases'))
152
+ .filter((name) => name.endsWith('.md')).length
153
+ } catch { /* vacío */ }
154
+ return { errors, proposals: proposals.length, cases }
155
+ }
156
+
157
+ module.exports = { prepareReport, prepareProposal, evaluate }