@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.
- package/.github/workflows/agent-learning.yml +131 -0
- package/.github/workflows/ci.yml +27 -0
- package/LICENSE +21 -0
- package/README.md +208 -0
- package/agents/coordinators/.gitkeep +1 -0
- package/agents/roles/ai-governance-lead/SKILL.md +60 -0
- package/agents/roles/ai-governance-lead/agents/openai.yaml +4 -0
- package/agents/roles/ai-governance-lead/evaluations/cases/01-hide-shadow-ai.md +10 -0
- package/agents/roles/ai-governance-lead/evaluations/cases/02-downgrade-high-impact.md +10 -0
- package/agents/roles/ai-governance-lead/evaluations/cases/03-rubber-stamp.md +10 -0
- package/agents/roles/ai-governance-lead/evaluations/cases/04-vendor-certificate.md +10 -0
- package/agents/roles/ai-governance-lead/evaluations/cases/05-conceal-incident.md +10 -0
- package/agents/roles/ai-governance-lead/evaluations/cases/06-adversarial-policy.md +10 -0
- package/agents/roles/ai-governance-lead/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/ai-governance-lead/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/ai-governance-lead/learning/HISTORY.md +3 -0
- package/agents/roles/ai-governance-lead/learning/proposals/_template.md +11 -0
- package/agents/roles/ai-governance-lead/learning/reports/_template.md +11 -0
- package/agents/roles/ai-governance-lead/learning/sources.yaml +37 -0
- package/agents/roles/ai-governance-lead/references/operating-model.md +42 -0
- package/agents/roles/ai-product-manager/SKILL.md +60 -0
- package/agents/roles/ai-product-manager/agents/openai.yaml +4 -0
- package/agents/roles/ai-product-manager/evaluations/cases/01-ai-for-everything.md +10 -0
- package/agents/roles/ai-product-manager/evaluations/cases/02-demo-to-production.md +10 -0
- package/agents/roles/ai-product-manager/evaluations/cases/03-rubber-stamp-human.md +10 -0
- package/agents/roles/ai-product-manager/evaluations/cases/04-hide-bad-slice.md +10 -0
- package/agents/roles/ai-product-manager/evaluations/cases/05-silent-provider-change.md +10 -0
- package/agents/roles/ai-product-manager/evaluations/cases/06-adversarial-output.md +10 -0
- package/agents/roles/ai-product-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/ai-product-manager/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/ai-product-manager/learning/HISTORY.md +3 -0
- package/agents/roles/ai-product-manager/learning/proposals/_template.md +9 -0
- package/agents/roles/ai-product-manager/learning/reports/_template.md +9 -0
- package/agents/roles/ai-product-manager/learning/sources.yaml +15 -0
- package/agents/roles/ai-product-manager/references/operating-model.md +36 -0
- package/agents/roles/analytics-engineer/SKILL.md +60 -0
- package/agents/roles/analytics-engineer/agents/openai.yaml +4 -0
- package/agents/roles/analytics-engineer/evaluations/cases/01-metric-manipulation.md +10 -0
- package/agents/roles/analytics-engineer/evaluations/cases/02-fanout.md +10 -0
- package/agents/roles/analytics-engineer/evaluations/cases/03-breaking-change.md +10 -0
- package/agents/roles/analytics-engineer/evaluations/cases/04-sensitive-self-service.md +10 -0
- package/agents/roles/analytics-engineer/evaluations/cases/05-unsafe-backfill.md +10 -0
- package/agents/roles/analytics-engineer/evaluations/cases/06-adversarial-sql.md +10 -0
- package/agents/roles/analytics-engineer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/analytics-engineer/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/analytics-engineer/learning/HISTORY.md +3 -0
- package/agents/roles/analytics-engineer/learning/proposals/_template.md +9 -0
- package/agents/roles/analytics-engineer/learning/reports/_template.md +9 -0
- package/agents/roles/analytics-engineer/learning/sources.yaml +14 -0
- package/agents/roles/analytics-engineer/references/operating-model.md +36 -0
- package/agents/roles/backend-engineer/SKILL.md +70 -0
- package/agents/roles/backend-engineer/agents/openai.yaml +4 -0
- package/agents/roles/backend-engineer/evaluations/cases/01-payment-webhook.md +10 -0
- package/agents/roles/backend-engineer/evaluations/cases/02-object-authorization.md +10 -0
- package/agents/roles/backend-engineer/evaluations/cases/03-migration.md +10 -0
- package/agents/roles/backend-engineer/evaluations/cases/04-third-party-timeout.md +10 -0
- package/agents/roles/backend-engineer/evaluations/cases/05-sensitive-logs.md +10 -0
- package/agents/roles/backend-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/backend-engineer/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/backend-engineer/learning/CODEX_AUTOMATION.md +17 -0
- package/agents/roles/backend-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/backend-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/backend-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/backend-engineer/learning/sources.yaml +29 -0
- package/agents/roles/backend-engineer/references/operating-model.md +69 -0
- package/agents/roles/business-operations-manager/SKILL.md +58 -0
- package/agents/roles/business-operations-manager/agents/openai.yaml +4 -0
- package/agents/roles/business-operations-manager/evaluations/cases/01-vanity-dashboard.md +10 -0
- package/agents/roles/business-operations-manager/evaluations/cases/02-process-without-owner.md +10 -0
- package/agents/roles/business-operations-manager/evaluations/cases/03-automate-broken-process.md +10 -0
- package/agents/roles/business-operations-manager/evaluations/cases/04-shadow-reorganization.md +10 -0
- package/agents/roles/business-operations-manager/evaluations/cases/05-manipulate-target.md +10 -0
- package/agents/roles/business-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/business-operations-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/business-operations-manager/learning/CODEX_AUTOMATION.md +12 -0
- package/agents/roles/business-operations-manager/learning/HISTORY.md +3 -0
- package/agents/roles/business-operations-manager/learning/proposals/_template.md +13 -0
- package/agents/roles/business-operations-manager/learning/reports/_template.md +12 -0
- package/agents/roles/business-operations-manager/learning/sources.yaml +29 -0
- package/agents/roles/business-operations-manager/references/operating-model.md +62 -0
- package/agents/roles/business-strategist/SKILL.md +70 -0
- package/agents/roles/business-strategist/agents/openai.yaml +4 -0
- package/agents/roles/business-strategist/evaluations/cases/01-market-sizing.md +10 -0
- package/agents/roles/business-strategist/evaluations/cases/02-everyone.md +10 -0
- package/agents/roles/business-strategist/evaluations/cases/03-copy-competitor.md +10 -0
- package/agents/roles/business-strategist/evaluations/cases/04-vanity-growth.md +10 -0
- package/agents/roles/business-strategist/evaluations/cases/05-forecast-certainty.md +10 -0
- package/agents/roles/business-strategist/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/business-strategist/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/business-strategist/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/business-strategist/learning/HISTORY.md +4 -0
- package/agents/roles/business-strategist/learning/proposals/_template.md +15 -0
- package/agents/roles/business-strategist/learning/reports/_template.md +14 -0
- package/agents/roles/business-strategist/learning/sources.yaml +33 -0
- package/agents/roles/business-strategist/references/operating-model.md +79 -0
- package/agents/roles/cloud-architect/SKILL.md +60 -0
- package/agents/roles/cloud-architect/agents/openai.yaml +4 -0
- package/agents/roles/cloud-architect/evaluations/cases/01-diagram-only.md +10 -0
- package/agents/roles/cloud-architect/evaluations/cases/02-open-network.md +10 -0
- package/agents/roles/cloud-architect/evaluations/cases/03-multicloud-mandate.md +10 -0
- package/agents/roles/cloud-architect/evaluations/cases/04-big-bang-migration.md +10 -0
- package/agents/roles/cloud-architect/evaluations/cases/05-false-savings.md +10 -0
- package/agents/roles/cloud-architect/evaluations/cases/06-adversarial-iac.md +10 -0
- package/agents/roles/cloud-architect/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/cloud-architect/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/cloud-architect/learning/HISTORY.md +3 -0
- package/agents/roles/cloud-architect/learning/proposals/_template.md +9 -0
- package/agents/roles/cloud-architect/learning/reports/_template.md +9 -0
- package/agents/roles/cloud-architect/learning/sources.yaml +15 -0
- package/agents/roles/cloud-architect/references/operating-model.md +41 -0
- package/agents/roles/community-manager/SKILL.md +59 -0
- package/agents/roles/community-manager/agents/openai.yaml +4 -0
- package/agents/roles/community-manager/evaluations/cases/01-fake-engagement.md +10 -0
- package/agents/roles/community-manager/evaluations/cases/02-doxx-reporter.md +10 -0
- package/agents/roles/community-manager/evaluations/cases/03-member-profiling.md +10 -0
- package/agents/roles/community-manager/evaluations/cases/04-secret-giveaway.md +10 -0
- package/agents/roles/community-manager/evaluations/cases/05-delete-criticism.md +10 -0
- package/agents/roles/community-manager/evaluations/cases/06-adversarial-link.md +10 -0
- package/agents/roles/community-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/community-manager/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/community-manager/learning/HISTORY.md +3 -0
- package/agents/roles/community-manager/learning/proposals/_template.md +11 -0
- package/agents/roles/community-manager/learning/reports/_template.md +10 -0
- package/agents/roles/community-manager/learning/sources.yaml +29 -0
- package/agents/roles/community-manager/references/operating-model.md +40 -0
- package/agents/roles/content-specialist/SKILL.md +70 -0
- package/agents/roles/content-specialist/agents/openai.yaml +4 -0
- package/agents/roles/content-specialist/evaluations/cases/01-invented-statistics.md +10 -0
- package/agents/roles/content-specialist/evaluations/cases/02-seo-spam.md +10 -0
- package/agents/roles/content-specialist/evaluations/cases/03-accessibility.md +10 -0
- package/agents/roles/content-specialist/evaluations/cases/04-copyright.md +10 -0
- package/agents/roles/content-specialist/evaluations/cases/05-localization.md +10 -0
- package/agents/roles/content-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/content-specialist/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/content-specialist/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/content-specialist/learning/HISTORY.md +4 -0
- package/agents/roles/content-specialist/learning/proposals/_template.md +15 -0
- package/agents/roles/content-specialist/learning/reports/_template.md +14 -0
- package/agents/roles/content-specialist/learning/sources.yaml +33 -0
- package/agents/roles/content-specialist/references/operating-model.md +75 -0
- package/agents/roles/customer-success-manager/SKILL.md +70 -0
- package/agents/roles/customer-success-manager/agents/openai.yaml +4 -0
- package/agents/roles/customer-success-manager/evaluations/cases/01-health-score.md +10 -0
- package/agents/roles/customer-success-manager/evaluations/cases/02-onboarding.md +10 -0
- package/agents/roles/customer-success-manager/evaluations/cases/03-roadmap.md +10 -0
- package/agents/roles/customer-success-manager/evaluations/cases/04-hidden-risk.md +10 -0
- package/agents/roles/customer-success-manager/evaluations/cases/05-expansion.md +10 -0
- package/agents/roles/customer-success-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/customer-success-manager/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/customer-success-manager/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/customer-success-manager/learning/HISTORY.md +4 -0
- package/agents/roles/customer-success-manager/learning/proposals/_template.md +15 -0
- package/agents/roles/customer-success-manager/learning/reports/_template.md +14 -0
- package/agents/roles/customer-success-manager/learning/sources.yaml +33 -0
- package/agents/roles/customer-success-manager/references/operating-model.md +79 -0
- package/agents/roles/customer-support-specialist/SKILL.md +70 -0
- package/agents/roles/customer-support-specialist/agents/openai.yaml +4 -0
- package/agents/roles/customer-support-specialist/evaluations/cases/01-account-access.md +10 -0
- package/agents/roles/customer-support-specialist/evaluations/cases/02-destructive-troubleshooting.md +10 -0
- package/agents/roles/customer-support-specialist/evaluations/cases/03-incident.md +10 -0
- package/agents/roles/customer-support-specialist/evaluations/cases/04-refund.md +10 -0
- package/agents/roles/customer-support-specialist/evaluations/cases/05-sensitive-logs.md +10 -0
- package/agents/roles/customer-support-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/customer-support-specialist/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/customer-support-specialist/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/customer-support-specialist/learning/HISTORY.md +4 -0
- package/agents/roles/customer-support-specialist/learning/proposals/_template.md +15 -0
- package/agents/roles/customer-support-specialist/learning/reports/_template.md +14 -0
- package/agents/roles/customer-support-specialist/learning/sources.yaml +33 -0
- package/agents/roles/customer-support-specialist/references/operating-model.md +98 -0
- package/agents/roles/data-analyst/SKILL.md +70 -0
- package/agents/roles/data-analyst/agents/openai.yaml +4 -0
- package/agents/roles/data-analyst/evaluations/cases/01-funnel-grain.md +10 -0
- package/agents/roles/data-analyst/evaluations/cases/02-segmentation.md +10 -0
- package/agents/roles/data-analyst/evaluations/cases/03-missing-data.md +10 -0
- package/agents/roles/data-analyst/evaluations/cases/04-causality.md +10 -0
- package/agents/roles/data-analyst/evaluations/cases/05-sensitive-export.md +10 -0
- package/agents/roles/data-analyst/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/data-analyst/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/data-analyst/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/data-analyst/learning/HISTORY.md +4 -0
- package/agents/roles/data-analyst/learning/proposals/_template.md +15 -0
- package/agents/roles/data-analyst/learning/reports/_template.md +14 -0
- package/agents/roles/data-analyst/learning/sources.yaml +33 -0
- package/agents/roles/data-analyst/references/operating-model.md +71 -0
- package/agents/roles/data-engineer/SKILL.md +60 -0
- package/agents/roles/data-engineer/agents/openai.yaml +4 -0
- package/agents/roles/data-engineer/evaluations/cases/01-double-count-backfill.md +10 -0
- package/agents/roles/data-engineer/evaluations/cases/02-silent-schema-break.md +10 -0
- package/agents/roles/data-engineer/evaluations/cases/03-destructive-rebuild.md +10 -0
- package/agents/roles/data-engineer/evaluations/cases/04-production-data-in-dev.md +10 -0
- package/agents/roles/data-engineer/evaluations/cases/05-green-but-wrong.md +10 -0
- package/agents/roles/data-engineer/evaluations/cases/06-adversarial-data.md +10 -0
- package/agents/roles/data-engineer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/data-engineer/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/data-engineer/learning/HISTORY.md +3 -0
- package/agents/roles/data-engineer/learning/proposals/_template.md +11 -0
- package/agents/roles/data-engineer/learning/reports/_template.md +10 -0
- package/agents/roles/data-engineer/learning/sources.yaml +29 -0
- package/agents/roles/data-engineer/references/operating-model.md +41 -0
- package/agents/roles/data-scientist/SKILL.md +60 -0
- package/agents/roles/data-scientist/agents/openai.yaml +4 -0
- package/agents/roles/data-scientist/evaluations/cases/01-p-hacking.md +10 -0
- package/agents/roles/data-scientist/evaluations/cases/02-correlation-causality.md +10 -0
- package/agents/roles/data-scientist/evaluations/cases/03-peek-and-stop.md +10 -0
- package/agents/roles/data-scientist/evaluations/cases/04-survivorship-bias.md +10 -0
- package/agents/roles/data-scientist/evaluations/cases/05-sensitive-targeting.md +10 -0
- package/agents/roles/data-scientist/evaluations/cases/06-adversarial-notebook.md +10 -0
- package/agents/roles/data-scientist/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/data-scientist/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/data-scientist/learning/HISTORY.md +3 -0
- package/agents/roles/data-scientist/learning/proposals/_template.md +11 -0
- package/agents/roles/data-scientist/learning/reports/_template.md +10 -0
- package/agents/roles/data-scientist/learning/sources.yaml +29 -0
- package/agents/roles/data-scientist/references/operating-model.md +40 -0
- package/agents/roles/database-administrator/SKILL.md +60 -0
- package/agents/roles/database-administrator/agents/openai.yaml +4 -0
- package/agents/roles/database-administrator/evaluations/cases/01-unverified-backup.md +10 -0
- package/agents/roles/database-administrator/evaluations/cases/02-dangerous-production-command.md +10 -0
- package/agents/roles/database-administrator/evaluations/cases/03-replica-failover.md +10 -0
- package/agents/roles/database-administrator/evaluations/cases/04-zero-downtime-migration.md +10 -0
- package/agents/roles/database-administrator/evaluations/cases/05-disable-safety.md +10 -0
- package/agents/roles/database-administrator/evaluations/cases/06-adversarial-runbook.md +10 -0
- package/agents/roles/database-administrator/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/database-administrator/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/database-administrator/learning/HISTORY.md +3 -0
- package/agents/roles/database-administrator/learning/proposals/_template.md +9 -0
- package/agents/roles/database-administrator/learning/reports/_template.md +9 -0
- package/agents/roles/database-administrator/learning/sources.yaml +15 -0
- package/agents/roles/database-administrator/references/operating-model.md +40 -0
- package/agents/roles/developer-relations-engineer/SKILL.md +60 -0
- package/agents/roles/developer-relations-engineer/agents/openai.yaml +4 -0
- package/agents/roles/developer-relations-engineer/evaluations/cases/01-future-api-demo.md +10 -0
- package/agents/roles/developer-relations-engineer/evaluations/cases/02-insecure-quickstart.md +10 -0
- package/agents/roles/developer-relations-engineer/evaluations/cases/03-untested-sample.md +10 -0
- package/agents/roles/developer-relations-engineer/evaluations/cases/04-vanity-and-tracking.md +10 -0
- package/agents/roles/developer-relations-engineer/evaluations/cases/05-community-incident.md +10 -0
- package/agents/roles/developer-relations-engineer/evaluations/cases/06-adversarial-issue.md +10 -0
- package/agents/roles/developer-relations-engineer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/developer-relations-engineer/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/developer-relations-engineer/learning/HISTORY.md +3 -0
- package/agents/roles/developer-relations-engineer/learning/proposals/_template.md +11 -0
- package/agents/roles/developer-relations-engineer/learning/reports/_template.md +10 -0
- package/agents/roles/developer-relations-engineer/learning/sources.yaml +29 -0
- package/agents/roles/developer-relations-engineer/references/operating-model.md +43 -0
- package/agents/roles/devops-engineer/SKILL.md +70 -0
- package/agents/roles/devops-engineer/agents/openai.yaml +4 -0
- package/agents/roles/devops-engineer/evaluations/cases/01-destructive-plan.md +10 -0
- package/agents/roles/devops-engineer/evaluations/cases/02-secrets.md +10 -0
- package/agents/roles/devops-engineer/evaluations/cases/03-release-artifact.md +10 -0
- package/agents/roles/devops-engineer/evaluations/cases/04-drift.md +10 -0
- package/agents/roles/devops-engineer/evaluations/cases/05-supply-chain.md +10 -0
- package/agents/roles/devops-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/devops-engineer/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/devops-engineer/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/devops-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/devops-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/devops-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/devops-engineer/learning/sources.yaml +29 -0
- package/agents/roles/devops-engineer/references/operating-model.md +74 -0
- package/agents/roles/engineering-manager/SKILL.md +60 -0
- package/agents/roles/engineering-manager/agents/openai.yaml +4 -0
- package/agents/roles/engineering-manager/evaluations/cases/01-productivity-surveillance.md +10 -0
- package/agents/roles/engineering-manager/evaluations/cases/02-capacity.md +10 -0
- package/agents/roles/engineering-manager/evaluations/cases/03-feedback.md +10 -0
- package/agents/roles/engineering-manager/evaluations/cases/04-incident-blame.md +10 -0
- package/agents/roles/engineering-manager/evaluations/cases/05-role-boundaries.md +10 -0
- package/agents/roles/engineering-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/engineering-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/engineering-manager/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/engineering-manager/learning/HISTORY.md +4 -0
- package/agents/roles/engineering-manager/learning/proposals/_template.md +13 -0
- package/agents/roles/engineering-manager/learning/reports/_template.md +12 -0
- package/agents/roles/engineering-manager/learning/sources.yaml +28 -0
- package/agents/roles/engineering-manager/references/operating-model.md +60 -0
- package/agents/roles/financial-controller/SKILL.md +70 -0
- package/agents/roles/financial-controller/agents/openai.yaml +4 -0
- package/agents/roles/financial-controller/evaluations/cases/01-revenue.md +10 -0
- package/agents/roles/financial-controller/evaluations/cases/02-unreconciled-close.md +10 -0
- package/agents/roles/financial-controller/evaluations/cases/03-payment-fraud.md +10 -0
- package/agents/roles/financial-controller/evaluations/cases/04-forecast.md +10 -0
- package/agents/roles/financial-controller/evaluations/cases/05-tax.md +10 -0
- package/agents/roles/financial-controller/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/financial-controller/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/financial-controller/learning/CODEX_AUTOMATION.md +19 -0
- package/agents/roles/financial-controller/learning/HISTORY.md +4 -0
- package/agents/roles/financial-controller/learning/proposals/_template.md +15 -0
- package/agents/roles/financial-controller/learning/reports/_template.md +14 -0
- package/agents/roles/financial-controller/learning/sources.yaml +33 -0
- package/agents/roles/financial-controller/references/operating-model.md +93 -0
- package/agents/roles/frontend-engineer/SKILL.md +70 -0
- package/agents/roles/frontend-engineer/agents/openai.yaml +4 -0
- package/agents/roles/frontend-engineer/evaluations/cases/01-form.md +10 -0
- package/agents/roles/frontend-engineer/evaluations/cases/02-untrusted-html.md +10 -0
- package/agents/roles/frontend-engineer/evaluations/cases/03-race-condition.md +10 -0
- package/agents/roles/frontend-engineer/evaluations/cases/04-framework-change.md +10 -0
- package/agents/roles/frontend-engineer/evaluations/cases/05-false-success.md +10 -0
- package/agents/roles/frontend-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/frontend-engineer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/frontend-engineer/learning/CODEX_AUTOMATION.md +17 -0
- package/agents/roles/frontend-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/frontend-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/frontend-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/frontend-engineer/learning/sources.yaml +29 -0
- package/agents/roles/frontend-engineer/references/operating-model.md +75 -0
- package/agents/roles/implementation-manager/SKILL.md +60 -0
- package/agents/roles/implementation-manager/agents/openai.yaml +4 -0
- package/agents/roles/implementation-manager/evaluations/cases/01-hidden-scope.md +10 -0
- package/agents/roles/implementation-manager/evaluations/cases/02-risky-migration.md +10 -0
- package/agents/roles/implementation-manager/evaluations/cases/03-customer-credentials.md +10 -0
- package/agents/roles/implementation-manager/evaluations/cases/04-forced-go-live.md +10 -0
- package/agents/roles/implementation-manager/evaluations/cases/05-false-success.md +10 -0
- package/agents/roles/implementation-manager/evaluations/cases/06-adversarial-plan.md +10 -0
- package/agents/roles/implementation-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/implementation-manager/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/implementation-manager/learning/HISTORY.md +3 -0
- package/agents/roles/implementation-manager/learning/proposals/_template.md +11 -0
- package/agents/roles/implementation-manager/learning/reports/_template.md +12 -0
- package/agents/roles/implementation-manager/learning/sources.yaml +29 -0
- package/agents/roles/implementation-manager/references/operating-model.md +61 -0
- package/agents/roles/legal-counsel/SKILL.md +64 -0
- package/agents/roles/legal-counsel/agents/openai.yaml +4 -0
- package/agents/roles/legal-counsel/evaluations/cases/01-invented-law.md +10 -0
- package/agents/roles/legal-counsel/evaluations/cases/02-sign-contract.md +10 -0
- package/agents/roles/legal-counsel/evaluations/cases/03-privilege-conflict.md +10 -0
- package/agents/roles/legal-counsel/evaluations/cases/04-delete-evidence.md +10 -0
- package/agents/roles/legal-counsel/evaluations/cases/05-evade-controls.md +10 -0
- package/agents/roles/legal-counsel/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/legal-counsel/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/legal-counsel/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/legal-counsel/learning/HISTORY.md +3 -0
- package/agents/roles/legal-counsel/learning/proposals/_template.md +14 -0
- package/agents/roles/legal-counsel/learning/reports/_template.md +14 -0
- package/agents/roles/legal-counsel/learning/sources.yaml +34 -0
- package/agents/roles/legal-counsel/references/operating-model.md +64 -0
- package/agents/roles/machine-learning-engineer/SKILL.md +60 -0
- package/agents/roles/machine-learning-engineer/agents/openai.yaml +4 -0
- package/agents/roles/machine-learning-engineer/evaluations/cases/01-leaky-evaluation.md +10 -0
- package/agents/roles/machine-learning-engineer/evaluations/cases/02-average-hides-harm.md +10 -0
- package/agents/roles/machine-learning-engineer/evaluations/cases/03-unlicensed-training-data.md +10 -0
- package/agents/roles/machine-learning-engineer/evaluations/cases/04-direct-production.md +10 -0
- package/agents/roles/machine-learning-engineer/evaluations/cases/05-prompt-injection-tools.md +10 -0
- package/agents/roles/machine-learning-engineer/evaluations/cases/06-adversarial-model.md +10 -0
- package/agents/roles/machine-learning-engineer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/machine-learning-engineer/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/machine-learning-engineer/learning/HISTORY.md +3 -0
- package/agents/roles/machine-learning-engineer/learning/proposals/_template.md +11 -0
- package/agents/roles/machine-learning-engineer/learning/reports/_template.md +10 -0
- package/agents/roles/machine-learning-engineer/learning/sources.yaml +33 -0
- package/agents/roles/machine-learning-engineer/references/operating-model.md +41 -0
- package/agents/roles/mlops-engineer/SKILL.md +60 -0
- package/agents/roles/mlops-engineer/agents/openai.yaml +4 -0
- package/agents/roles/mlops-engineer/evaluations/cases/01-unversioned-model.md +10 -0
- package/agents/roles/mlops-engineer/evaluations/cases/02-train-serving-skew.md +10 -0
- package/agents/roles/mlops-engineer/evaluations/cases/03-bypass-gates.md +10 -0
- package/agents/roles/mlops-engineer/evaluations/cases/04-drift-auto-retrain.md +10 -0
- package/agents/roles/mlops-engineer/evaluations/cases/05-incompatible-rollback.md +10 -0
- package/agents/roles/mlops-engineer/evaluations/cases/06-adversarial-artifact.md +10 -0
- package/agents/roles/mlops-engineer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/mlops-engineer/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/mlops-engineer/learning/HISTORY.md +3 -0
- package/agents/roles/mlops-engineer/learning/proposals/_template.md +9 -0
- package/agents/roles/mlops-engineer/learning/reports/_template.md +9 -0
- package/agents/roles/mlops-engineer/learning/sources.yaml +15 -0
- package/agents/roles/mlops-engineer/references/operating-model.md +40 -0
- package/agents/roles/mobile-engineer/SKILL.md +70 -0
- package/agents/roles/mobile-engineer/agents/openai.yaml +4 -0
- package/agents/roles/mobile-engineer/evaluations/cases/01-offline-sync.md +10 -0
- package/agents/roles/mobile-engineer/evaluations/cases/02-permissions.md +10 -0
- package/agents/roles/mobile-engineer/evaluations/cases/03-credential-storage.md +10 -0
- package/agents/roles/mobile-engineer/evaluations/cases/04-lifecycle.md +10 -0
- package/agents/roles/mobile-engineer/evaluations/cases/05-deep-links-notifications.md +10 -0
- package/agents/roles/mobile-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/mobile-engineer/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/mobile-engineer/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/mobile-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/mobile-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/mobile-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/mobile-engineer/learning/sources.yaml +29 -0
- package/agents/roles/mobile-engineer/references/operating-model.md +70 -0
- package/agents/roles/partnerships-manager/SKILL.md +59 -0
- package/agents/roles/partnerships-manager/agents/openai.yaml +4 -0
- package/agents/roles/partnerships-manager/evaluations/cases/01-logo-partner.md +10 -0
- package/agents/roles/partnerships-manager/evaluations/cases/02-skip-diligence.md +10 -0
- package/agents/roles/partnerships-manager/evaluations/cases/03-share-customer-data.md +10 -0
- package/agents/roles/partnerships-manager/evaluations/cases/04-channel-conflict.md +10 -0
- package/agents/roles/partnerships-manager/evaluations/cases/05-announce-and-integrate.md +10 -0
- package/agents/roles/partnerships-manager/evaluations/cases/06-adversarial-portal.md +10 -0
- package/agents/roles/partnerships-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/partnerships-manager/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/partnerships-manager/learning/HISTORY.md +3 -0
- package/agents/roles/partnerships-manager/learning/proposals/_template.md +11 -0
- package/agents/roles/partnerships-manager/learning/reports/_template.md +10 -0
- package/agents/roles/partnerships-manager/learning/sources.yaml +29 -0
- package/agents/roles/partnerships-manager/references/operating-model.md +43 -0
- package/agents/roles/people-operations-manager/SKILL.md +66 -0
- package/agents/roles/people-operations-manager/agents/openai.yaml +4 -0
- package/agents/roles/people-operations-manager/evaluations/cases/01-biased-automated-screening.md +10 -0
- package/agents/roles/people-operations-manager/evaluations/cases/02-unstructured-culture-fit.md +10 -0
- package/agents/roles/people-operations-manager/evaluations/cases/03-performance-ranking.md +10 -0
- package/agents/roles/people-operations-manager/evaluations/cases/04-sensitive-complaint.md +10 -0
- package/agents/roles/people-operations-manager/evaluations/cases/05-people-data-export.md +10 -0
- package/agents/roles/people-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/people-operations-manager/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/people-operations-manager/learning/CODEX_AUTOMATION.md +12 -0
- package/agents/roles/people-operations-manager/learning/HISTORY.md +3 -0
- package/agents/roles/people-operations-manager/learning/proposals/_template.md +14 -0
- package/agents/roles/people-operations-manager/learning/reports/_template.md +14 -0
- package/agents/roles/people-operations-manager/learning/sources.yaml +37 -0
- package/agents/roles/people-operations-manager/references/operating-model.md +68 -0
- package/agents/roles/privacy-compliance-specialist/SKILL.md +70 -0
- package/agents/roles/privacy-compliance-specialist/agents/openai.yaml +4 -0
- package/agents/roles/privacy-compliance-specialist/evaluations/cases/01-consent.md +10 -0
- package/agents/roles/privacy-compliance-specialist/evaluations/cases/02-data-rights.md +10 -0
- package/agents/roles/privacy-compliance-specialist/evaluations/cases/03-retention.md +10 -0
- package/agents/roles/privacy-compliance-specialist/evaluations/cases/04-vendor-transfer.md +10 -0
- package/agents/roles/privacy-compliance-specialist/evaluations/cases/05-incident.md +10 -0
- package/agents/roles/privacy-compliance-specialist/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/privacy-compliance-specialist/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/privacy-compliance-specialist/learning/CODEX_AUTOMATION.md +19 -0
- package/agents/roles/privacy-compliance-specialist/learning/HISTORY.md +4 -0
- package/agents/roles/privacy-compliance-specialist/learning/proposals/_template.md +15 -0
- package/agents/roles/privacy-compliance-specialist/learning/reports/_template.md +14 -0
- package/agents/roles/privacy-compliance-specialist/learning/sources.yaml +33 -0
- package/agents/roles/privacy-compliance-specialist/references/operating-model.md +85 -0
- package/agents/roles/procurement-manager/SKILL.md +60 -0
- package/agents/roles/procurement-manager/agents/openai.yaml +4 -0
- package/agents/roles/procurement-manager/evaluations/cases/01-bid-rigging.md +10 -0
- package/agents/roles/procurement-manager/evaluations/cases/02-conflict-gift.md +10 -0
- package/agents/roles/procurement-manager/evaluations/cases/03-lowest-price.md +10 -0
- package/agents/roles/procurement-manager/evaluations/cases/04-technology-vendor.md +10 -0
- package/agents/roles/procurement-manager/evaluations/cases/05-emergency-bank-change.md +10 -0
- package/agents/roles/procurement-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/procurement-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/procurement-manager/learning/CODEX_AUTOMATION.md +12 -0
- package/agents/roles/procurement-manager/learning/HISTORY.md +3 -0
- package/agents/roles/procurement-manager/learning/proposals/_template.md +14 -0
- package/agents/roles/procurement-manager/learning/reports/_template.md +13 -0
- package/agents/roles/procurement-manager/learning/sources.yaml +29 -0
- package/agents/roles/procurement-manager/references/operating-model.md +53 -0
- package/agents/roles/product-manager/SKILL.md +65 -0
- package/agents/roles/product-manager/agents/openai.yaml +4 -0
- package/agents/roles/product-manager/evaluations/cases/01-unsupported-feature.md +10 -0
- package/agents/roles/product-manager/evaluations/cases/02-prioritization.md +10 -0
- package/agents/roles/product-manager/evaluations/cases/03-epic.md +10 -0
- package/agents/roles/product-manager/evaluations/cases/04-autonomy.md +10 -0
- package/agents/roles/product-manager/evaluations/cases/05-adversarial-source.md +10 -0
- package/agents/roles/product-manager/evaluations/expected-behaviors.yaml +18 -0
- package/agents/roles/product-manager/learning/CODEX_AUTOMATION.md +21 -0
- package/agents/roles/product-manager/learning/HISTORY.md +6 -0
- package/agents/roles/product-manager/learning/proposals/_template.md +15 -0
- package/agents/roles/product-manager/learning/reports/_template.md +14 -0
- package/agents/roles/product-manager/learning/sources.yaml +28 -0
- package/agents/roles/product-manager/references/operating-model.md +121 -0
- package/agents/roles/product-marketing-manager/SKILL.md +70 -0
- package/agents/roles/product-marketing-manager/agents/openai.yaml +4 -0
- package/agents/roles/product-marketing-manager/evaluations/cases/01-claims.md +10 -0
- package/agents/roles/product-marketing-manager/evaluations/cases/02-everyone.md +10 -0
- package/agents/roles/product-marketing-manager/evaluations/cases/03-launch-readiness.md +10 -0
- package/agents/roles/product-marketing-manager/evaluations/cases/04-competitive-intelligence.md +10 -0
- package/agents/roles/product-marketing-manager/evaluations/cases/05-attribution.md +10 -0
- package/agents/roles/product-marketing-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/product-marketing-manager/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/product-marketing-manager/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/product-marketing-manager/learning/HISTORY.md +4 -0
- package/agents/roles/product-marketing-manager/learning/proposals/_template.md +15 -0
- package/agents/roles/product-marketing-manager/learning/reports/_template.md +14 -0
- package/agents/roles/product-marketing-manager/learning/sources.yaml +33 -0
- package/agents/roles/product-marketing-manager/references/operating-model.md +88 -0
- package/agents/roles/project-manager/SKILL.md +57 -0
- package/agents/roles/project-manager/agents/openai.yaml +4 -0
- package/agents/roles/project-manager/evaluations/cases/01-impossible-date.md +10 -0
- package/agents/roles/project-manager/evaluations/cases/02-scope-creep.md +10 -0
- package/agents/roles/project-manager/evaluations/cases/03-false-green.md +10 -0
- package/agents/roles/project-manager/evaluations/cases/04-raid-without-owner.md +10 -0
- package/agents/roles/project-manager/evaluations/cases/05-micromanagement.md +10 -0
- package/agents/roles/project-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/project-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/project-manager/learning/CODEX_AUTOMATION.md +11 -0
- package/agents/roles/project-manager/learning/HISTORY.md +3 -0
- package/agents/roles/project-manager/learning/proposals/_template.md +13 -0
- package/agents/roles/project-manager/learning/reports/_template.md +12 -0
- package/agents/roles/project-manager/learning/sources.yaml +28 -0
- package/agents/roles/project-manager/references/operating-model.md +74 -0
- package/agents/roles/qa-engineer/SKILL.md +70 -0
- package/agents/roles/qa-engineer/agents/openai.yaml +4 -0
- package/agents/roles/qa-engineer/evaluations/cases/01-risk-strategy.md +10 -0
- package/agents/roles/qa-engineer/evaluations/cases/02-flaky-test.md +10 -0
- package/agents/roles/qa-engineer/evaluations/cases/03-production-data.md +10 -0
- package/agents/roles/qa-engineer/evaluations/cases/04-release-confidence.md +10 -0
- package/agents/roles/qa-engineer/evaluations/cases/05-defect-triage.md +10 -0
- package/agents/roles/qa-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/qa-engineer/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/qa-engineer/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/qa-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/qa-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/qa-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/qa-engineer/learning/sources.yaml +29 -0
- package/agents/roles/qa-engineer/references/operating-model.md +85 -0
- package/agents/roles/release-manager/SKILL.md +59 -0
- package/agents/roles/release-manager/agents/openai.yaml +4 -0
- package/agents/roles/release-manager/evaluations/cases/01-rebuild-production.md +10 -0
- package/agents/roles/release-manager/evaluations/cases/02-checklist-approval.md +10 -0
- package/agents/roles/release-manager/evaluations/cases/03-big-bang.md +10 -0
- package/agents/roles/release-manager/evaluations/cases/04-irreversible-migration.md +10 -0
- package/agents/roles/release-manager/evaluations/cases/05-hotfix-bypass.md +10 -0
- package/agents/roles/release-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/release-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/release-manager/learning/CODEX_AUTOMATION.md +12 -0
- package/agents/roles/release-manager/learning/HISTORY.md +3 -0
- package/agents/roles/release-manager/learning/proposals/_template.md +13 -0
- package/agents/roles/release-manager/learning/reports/_template.md +12 -0
- package/agents/roles/release-manager/learning/sources.yaml +29 -0
- package/agents/roles/release-manager/references/operating-model.md +63 -0
- package/agents/roles/revenue-operations-manager/SKILL.md +58 -0
- package/agents/roles/revenue-operations-manager/agents/openai.yaml +4 -0
- package/agents/roles/revenue-operations-manager/evaluations/cases/01-stage-manipulation.md +10 -0
- package/agents/roles/revenue-operations-manager/evaluations/cases/02-double-attribution.md +10 -0
- package/agents/roles/revenue-operations-manager/evaluations/cases/03-certain-forecast.md +10 -0
- package/agents/roles/revenue-operations-manager/evaluations/cases/04-quotas-territories.md +10 -0
- package/agents/roles/revenue-operations-manager/evaluations/cases/05-bulk-crm-cleanup.md +10 -0
- package/agents/roles/revenue-operations-manager/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/revenue-operations-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/revenue-operations-manager/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/revenue-operations-manager/learning/HISTORY.md +3 -0
- package/agents/roles/revenue-operations-manager/learning/proposals/_template.md +13 -0
- package/agents/roles/revenue-operations-manager/learning/reports/_template.md +12 -0
- package/agents/roles/revenue-operations-manager/learning/sources.yaml +30 -0
- package/agents/roles/revenue-operations-manager/references/operating-model.md +50 -0
- package/agents/roles/sales-representative/SKILL.md +70 -0
- package/agents/roles/sales-representative/agents/openai.yaml +4 -0
- package/agents/roles/sales-representative/evaluations/cases/01-outreach-list.md +10 -0
- package/agents/roles/sales-representative/evaluations/cases/02-discovery.md +10 -0
- package/agents/roles/sales-representative/evaluations/cases/03-roadmap-promise.md +10 -0
- package/agents/roles/sales-representative/evaluations/cases/04-forecast.md +10 -0
- package/agents/roles/sales-representative/evaluations/cases/05-discount.md +10 -0
- package/agents/roles/sales-representative/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/sales-representative/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/sales-representative/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/sales-representative/learning/HISTORY.md +4 -0
- package/agents/roles/sales-representative/learning/proposals/_template.md +15 -0
- package/agents/roles/sales-representative/learning/reports/_template.md +14 -0
- package/agents/roles/sales-representative/learning/sources.yaml +33 -0
- package/agents/roles/sales-representative/references/operating-model.md +79 -0
- package/agents/roles/security-engineer/SKILL.md +70 -0
- package/agents/roles/security-engineer/agents/openai.yaml +4 -0
- package/agents/roles/security-engineer/evaluations/cases/01-object-authorization.md +10 -0
- package/agents/roles/security-engineer/evaluations/cases/02-ssrf.md +10 -0
- package/agents/roles/security-engineer/evaluations/cases/03-secrets.md +10 -0
- package/agents/roles/security-engineer/evaluations/cases/04-vulnerability-priority.md +10 -0
- package/agents/roles/security-engineer/evaluations/cases/05-incident.md +10 -0
- package/agents/roles/security-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/security-engineer/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/security-engineer/learning/CODEX_AUTOMATION.md +19 -0
- package/agents/roles/security-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/security-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/security-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/security-engineer/learning/sources.yaml +29 -0
- package/agents/roles/security-engineer/references/operating-model.md +62 -0
- package/agents/roles/site-reliability-engineer/SKILL.md +70 -0
- package/agents/roles/site-reliability-engineer/agents/openai.yaml +4 -0
- package/agents/roles/site-reliability-engineer/evaluations/cases/01-slo.md +10 -0
- package/agents/roles/site-reliability-engineer/evaluations/cases/02-alert-fatigue.md +10 -0
- package/agents/roles/site-reliability-engineer/evaluations/cases/03-incident.md +10 -0
- package/agents/roles/site-reliability-engineer/evaluations/cases/04-recovery.md +10 -0
- package/agents/roles/site-reliability-engineer/evaluations/cases/05-retry-storm.md +10 -0
- package/agents/roles/site-reliability-engineer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/site-reliability-engineer/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/site-reliability-engineer/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/site-reliability-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/site-reliability-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/site-reliability-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/site-reliability-engineer/learning/sources.yaml +29 -0
- package/agents/roles/site-reliability-engineer/references/operating-model.md +78 -0
- package/agents/roles/software-architect/SKILL.md +70 -0
- package/agents/roles/software-architect/agents/openai.yaml +4 -0
- package/agents/roles/software-architect/evaluations/cases/01-microservices.md +10 -0
- package/agents/roles/software-architect/evaluations/cases/02-shared-database.md +10 -0
- package/agents/roles/software-architect/evaluations/cases/03-technology-hype.md +10 -0
- package/agents/roles/software-architect/evaluations/cases/04-quality-attributes.md +10 -0
- package/agents/roles/software-architect/evaluations/cases/05-big-bang-rewrite.md +10 -0
- package/agents/roles/software-architect/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/software-architect/evaluations/expected-behaviors.yaml +20 -0
- package/agents/roles/software-architect/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/software-architect/learning/HISTORY.md +4 -0
- package/agents/roles/software-architect/learning/proposals/_template.md +15 -0
- package/agents/roles/software-architect/learning/reports/_template.md +14 -0
- package/agents/roles/software-architect/learning/sources.yaml +29 -0
- package/agents/roles/software-architect/references/operating-model.md +79 -0
- package/agents/roles/solutions-engineer/SKILL.md +58 -0
- package/agents/roles/solutions-engineer/agents/openai.yaml +4 -0
- package/agents/roles/solutions-engineer/evaluations/cases/01-future-capability.md +10 -0
- package/agents/roles/solutions-engineer/evaluations/cases/02-security-questionnaire.md +10 -0
- package/agents/roles/solutions-engineer/evaluations/cases/03-fake-demo.md +10 -0
- package/agents/roles/solutions-engineer/evaluations/cases/04-vague-poc.md +10 -0
- package/agents/roles/solutions-engineer/evaluations/cases/05-production-architecture.md +10 -0
- package/agents/roles/solutions-engineer/evaluations/cases/06-adversarial-rfp.md +10 -0
- package/agents/roles/solutions-engineer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/solutions-engineer/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/solutions-engineer/learning/HISTORY.md +3 -0
- package/agents/roles/solutions-engineer/learning/proposals/_template.md +13 -0
- package/agents/roles/solutions-engineer/learning/reports/_template.md +12 -0
- package/agents/roles/solutions-engineer/learning/sources.yaml +29 -0
- package/agents/roles/solutions-engineer/references/operating-model.md +62 -0
- package/agents/roles/technical-program-manager/SKILL.md +60 -0
- package/agents/roles/technical-program-manager/agents/openai.yaml +4 -0
- package/agents/roles/technical-program-manager/evaluations/cases/01-executive-date.md +10 -0
- package/agents/roles/technical-program-manager/evaluations/cases/02-fake-green.md +10 -0
- package/agents/roles/technical-program-manager/evaluations/cases/03-micromanage-teams.md +10 -0
- package/agents/roles/technical-program-manager/evaluations/cases/04-dependency-without-contract.md +10 -0
- package/agents/roles/technical-program-manager/evaluations/cases/05-launch-without-readiness.md +10 -0
- package/agents/roles/technical-program-manager/evaluations/cases/06-adversarial-plan.md +10 -0
- package/agents/roles/technical-program-manager/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/technical-program-manager/learning/CODEX_AUTOMATION.md +13 -0
- package/agents/roles/technical-program-manager/learning/HISTORY.md +3 -0
- package/agents/roles/technical-program-manager/learning/proposals/_template.md +9 -0
- package/agents/roles/technical-program-manager/learning/reports/_template.md +9 -0
- package/agents/roles/technical-program-manager/learning/sources.yaml +14 -0
- package/agents/roles/technical-program-manager/references/operating-model.md +41 -0
- package/agents/roles/technical-writer/SKILL.md +58 -0
- package/agents/roles/technical-writer/agents/openai.yaml +4 -0
- package/agents/roles/technical-writer/evaluations/cases/01-invented-api.md +10 -0
- package/agents/roles/technical-writer/evaluations/cases/02-secret-example.md +10 -0
- package/agents/roles/technical-writer/evaluations/cases/03-dangerous-runbook.md +10 -0
- package/agents/roles/technical-writer/evaluations/cases/04-content-type.md +10 -0
- package/agents/roles/technical-writer/evaluations/cases/05-accessibility-global.md +10 -0
- package/agents/roles/technical-writer/evaluations/cases/06-adversarial-docs.md +10 -0
- package/agents/roles/technical-writer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/technical-writer/learning/CODEX_AUTOMATION.md +11 -0
- package/agents/roles/technical-writer/learning/HISTORY.md +3 -0
- package/agents/roles/technical-writer/learning/proposals/_template.md +14 -0
- package/agents/roles/technical-writer/learning/reports/_template.md +12 -0
- package/agents/roles/technical-writer/learning/sources.yaml +29 -0
- package/agents/roles/technical-writer/references/operating-model.md +67 -0
- package/agents/roles/ui-designer/SKILL.md +76 -0
- package/agents/roles/ui-designer/agents/openai.yaml +4 -0
- package/agents/roles/ui-designer/evaluations/cases/01-component.md +10 -0
- package/agents/roles/ui-designer/evaluations/cases/02-color-only.md +10 -0
- package/agents/roles/ui-designer/evaluations/cases/03-design-system.md +10 -0
- package/agents/roles/ui-designer/evaluations/cases/04-responsive.md +10 -0
- package/agents/roles/ui-designer/evaluations/cases/05-boundaries.md +10 -0
- package/agents/roles/ui-designer/evaluations/cases/06-adversarial-source.md +10 -0
- package/agents/roles/ui-designer/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/ui-designer/learning/CODEX_AUTOMATION.md +19 -0
- package/agents/roles/ui-designer/learning/HISTORY.md +4 -0
- package/agents/roles/ui-designer/learning/proposals/_template.md +15 -0
- package/agents/roles/ui-designer/learning/reports/_template.md +14 -0
- package/agents/roles/ui-designer/learning/sources.yaml +24 -0
- package/agents/roles/ui-designer/references/operating-model.md +66 -0
- package/agents/roles/user-researcher/SKILL.md +67 -0
- package/agents/roles/user-researcher/agents/openai.yaml +4 -0
- package/agents/roles/user-researcher/evaluations/cases/01-research-plan.md +10 -0
- package/agents/roles/user-researcher/evaluations/cases/02-small-sample.md +10 -0
- package/agents/roles/user-researcher/evaluations/cases/03-fabricated-quotes.md +10 -0
- package/agents/roles/user-researcher/evaluations/cases/04-sensitive-data.md +10 -0
- package/agents/roles/user-researcher/evaluations/cases/05-contradictory-evidence.md +10 -0
- package/agents/roles/user-researcher/evaluations/cases/06-adversarial-source.md +10 -0
- package/agents/roles/user-researcher/evaluations/expected-behaviors.yaml +19 -0
- package/agents/roles/user-researcher/learning/CODEX_AUTOMATION.md +22 -0
- package/agents/roles/user-researcher/learning/HISTORY.md +6 -0
- package/agents/roles/user-researcher/learning/proposals/_template.md +15 -0
- package/agents/roles/user-researcher/learning/reports/_template.md +14 -0
- package/agents/roles/user-researcher/learning/sources.yaml +24 -0
- package/agents/roles/user-researcher/references/operating-model.md +104 -0
- package/agents/roles/ux-designer/SKILL.md +76 -0
- package/agents/roles/ux-designer/agents/openai.yaml +4 -0
- package/agents/roles/ux-designer/evaluations/cases/01-checkout-flow.md +10 -0
- package/agents/roles/ux-designer/evaluations/cases/02-dark-pattern.md +10 -0
- package/agents/roles/ux-designer/evaluations/cases/03-missing-research.md +10 -0
- package/agents/roles/ux-designer/evaluations/cases/04-heuristic-review.md +10 -0
- package/agents/roles/ux-designer/evaluations/cases/05-role-boundaries.md +10 -0
- package/agents/roles/ux-designer/evaluations/cases/06-adversarial-source.md +10 -0
- package/agents/roles/ux-designer/evaluations/expected-behaviors.yaml +18 -0
- package/agents/roles/ux-designer/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/ux-designer/learning/HISTORY.md +4 -0
- package/agents/roles/ux-designer/learning/proposals/_template.md +15 -0
- package/agents/roles/ux-designer/learning/reports/_template.md +14 -0
- package/agents/roles/ux-designer/learning/sources.yaml +24 -0
- package/agents/roles/ux-designer/references/operating-model.md +87 -0
- package/agents/specialists/.gitkeep +1 -0
- package/agents/workflows/.gitkeep +1 -0
- package/automatization/AGENTS.md +67 -0
- package/automatization/README.md +28 -0
- package/automatization/hooks/README.md +53 -0
- package/automatization/hooks/guard-dependencies.sh +4 -0
- package/automatization/hooks/guard-destructive.sh +4 -0
- package/automatization/hooks/guard-files.sh +4 -0
- package/automatization/hooks/guard-generated.sh +4 -0
- package/automatization/hooks/guard-git-add.sh +4 -0
- package/automatization/hooks/guard-governance.sh +4 -0
- package/automatization/hooks/guard-integration-snapshot.sh +4 -0
- package/automatization/hooks/guard-migrations.sh +4 -0
- package/automatization/hooks/guard-planning-drift.sh +4 -0
- package/automatization/hooks/guard-secrets.sh +4 -0
- package/automatization/hooks/guard-shell.sh +4 -0
- package/automatization/hooks/guard-verify.sh +4 -0
- package/automatization/hooks/guard-workspace-boundary.sh +4 -0
- package/automatization/hooks/run-hook.sh +22 -0
- package/automatization/runners/README.md +25 -0
- package/automatization/runners/antigravity/README.md +16 -0
- package/automatization/runners/antigravity/hook.js +78 -0
- package/automatization/runners/antigravity/hooks.json +21 -0
- package/automatization/runners/antigravity/manifest.json +17 -0
- package/automatization/runners/antigravity/plugin.json +5 -0
- package/automatization/runners/antigravity/rules/cauce.md +6 -0
- package/automatization/runners/antigravity/skills/autobuild/SKILL.md +10 -0
- package/automatization/runners/antigravity/skills/integration-promote/SKILL.md +10 -0
- package/automatization/runners/antigravity/skills/integration-sync/SKILL.md +9 -0
- package/automatization/runners/claude/CLAUDE.md +10 -0
- package/automatization/runners/claude/README.md +13 -0
- package/automatization/runners/claude/manifest.json +13 -0
- package/automatization/runners/claude/settings.json +25 -0
- package/automatization/runners/codex/README.md +15 -0
- package/automatization/runners/codex/hooks.json +25 -0
- package/automatization/runners/codex/manifest.json +9 -0
- package/automatization/runners/gemini/GEMINI.md +12 -0
- package/automatization/runners/gemini/README.md +18 -0
- package/automatization/runners/gemini/commands/ops/autobuild.toml +7 -0
- package/automatization/runners/gemini/commands/ops/integration-promote.toml +6 -0
- package/automatization/runners/gemini/commands/ops/integration-sync.toml +6 -0
- package/automatization/runners/gemini/manifest.json +14 -0
- package/automatization/runners/gemini/settings.json +9 -0
- package/automatization/workflows/README.md +38 -0
- package/automatization/workflows/autobuild.js +287 -0
- package/automatization/workflows/integrations/README.md +14 -0
- package/automatization/workflows/integrations/promote.js +33 -0
- package/automatization/workflows/integrations/sync.js +36 -0
- package/engine/agents/learning.js +157 -0
- package/engine/automation/index.js +329 -0
- package/engine/cli/ops.js +602 -0
- package/engine/config/validate.js +70 -0
- package/engine/core/files.js +55 -0
- package/engine/hooks/run.js +400 -0
- package/engine/integrations/proposals.js +80 -0
- package/engine/integrations/providers/jira.js +164 -0
- package/engine/integrations/registry.js +390 -0
- package/engine/integrations/state.js +237 -0
- package/engine/integrations/writeback.js +90 -0
- package/engine/planning/business-rules.js +44 -0
- package/engine/planning/contracts.js +90 -0
- package/engine/planning/parser.js +184 -0
- package/engine/schemas/ops-config.schema.json +37 -0
- package/engine/teams/registry.js +85 -0
- package/package.json +37 -0
- package/teams/.gitkeep +1 -0
- package/teams/product-development/WORKFLOW.md +54 -0
- package/teams/product-development/team.json +106 -0
- package/template/AGENTS.md +61 -0
- package/template/Makefile +58 -0
- package/template/README.md +21 -0
- package/template/automatization/AGENTS.md +67 -0
- package/template/automatization/README.md +19 -0
- package/template/automatization/config.json +13 -0
- package/template/automatization/hooks/.gitkeep +1 -0
- package/template/automatization/runners/README.md +13 -0
- package/template/automatization/workflows/.gitkeep +1 -0
- package/template/integrations/AGENTS.md +14 -0
- package/template/integrations/README.md +21 -0
- package/template/integrations/config.json +10 -0
- package/template/integrations/jira/README.md +59 -0
- package/template/integrations/jira/config.json +17 -0
- package/template/integrations/jira/proposed/README.md +22 -0
- package/template/integrations/jira/staging/.gitkeep +1 -0
- package/template/integrations/jira/staging/README.md +4 -0
- package/template/ops.config.json +15 -0
- package/template/organization/README.md +13 -0
- package/template/organization/company.md +38 -0
- package/template/organization/product.md +17 -0
- package/template/planning/BACKLOG.md +9 -0
- package/template/planning/DONE.md +13 -0
- package/template/planning/FLOW.md +34 -0
- package/template/planning/HUMAN_ACTIONS.md +4 -0
- package/template/planning/INBOX.md +11 -0
- package/template/planning/METHODOLOGY.md +26 -0
- package/template/planning/PROTOCOL.md +62 -0
- package/template/planning/README.md +18 -0
- package/template/planning/WIP.md +22 -0
- package/template/planning/adr/000-template.md +47 -0
- package/template/planning/adr/README.md +42 -0
- package/template/planning/adr/system/OPS-001-planificacion-como-fuente-de-verdad.md +32 -0
- package/template/planning/adr/system/OPS-002-runtime-autocontenido-y-neutral-al-runner.md +34 -0
- package/template/planning/adr/system/OPS-003-integraciones-seguras-por-staging.md +33 -0
- package/template/planning/adr/system/OPS-004-promocion-humana-y-evidencia-verificable.md +34 -0
- package/template/planning/business-rules/000-template.md +34 -0
- package/template/planning/business-rules/README.md +32 -0
- package/template/planning/business-rules/system/BR-OPS-001-una-sola-tarea-activa.md +35 -0
- package/template/planning/business-rules/system/BR-OPS-002-propuestas-no-se-autopromueven.md +35 -0
- package/template/planning/business-rules/system/BR-OPS-003-conflictos-bloquean-promocion.md +35 -0
- package/template/planning/business-rules/system/BR-OPS-004-done-requiere-evidencia.md +35 -0
- package/template/planning/delivery/README.md +41 -0
- package/template/planning/delivery/branches.md +55 -0
- package/template/planning/delivery/environments.md +35 -0
- package/template/planning/delivery/flags.md +35 -0
- package/template/planning/delivery/multi-repo.md +26 -0
- package/template/planning/delivery/project.md +31 -0
- package/template/planning/delivery/release.md +54 -0
- package/template/planning/done/.gitkeep +1 -0
- package/template/planning/roadmap/README.md +62 -0
- package/template/planning/roadmap/epic-000-template.md +32 -0
- package/template/planning/rules/README.md +7 -0
- package/template/planning/rules/code-shape.md +14 -0
- package/template/planning/rules/commits.md +14 -0
- package/template/planning/rules/process.md +17 -0
- 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 }
|