arkaos 4.7.1 → 4.9.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 (360) hide show
  1. package/VERSION +1 -1
  2. package/arka/skills/bootstrap-agent/SKILL.md +11 -7
  3. package/arka/skills/checkpoint/SKILL.md +10 -4
  4. package/arka/skills/comfyui/SKILL.md +11 -8
  5. package/arka/skills/conclave/SKILL.md +11 -3
  6. package/arka/skills/costs/SKILL.md +2 -3
  7. package/arka/skills/design-ops/SKILL.md +11 -5
  8. package/arka/skills/dreams/SKILL.md +10 -4
  9. package/arka/skills/forge/SKILL.md +6 -8
  10. package/arka/skills/fusion/SKILL.md +11 -7
  11. package/arka/skills/human-writing/SKILL.md +11 -13
  12. package/arka/skills/research/SKILL.md +9 -11
  13. package/config/claude-agents/affiliate-manager.md +50 -0
  14. package/config/claude-agents/ai-engineering-lead.md +52 -0
  15. package/config/claude-agents/architect.md +1 -1
  16. package/config/claude-agents/automation-engineer.md +50 -0
  17. package/config/claude-agents/brand-director.md +51 -0
  18. package/config/claude-agents/brand-strategist.md +50 -0
  19. package/config/claude-agents/business-model-designer.md +50 -0
  20. package/config/claude-agents/cfo.md +50 -0
  21. package/config/claude-agents/chief-of-staff.md +51 -0
  22. package/config/claude-agents/commerce-engineer.md +50 -0
  23. package/config/claude-agents/community-manager.md +50 -0
  24. package/config/claude-agents/community-strategist.md +50 -0
  25. package/config/claude-agents/content-marketer.md +50 -0
  26. package/config/claude-agents/content-strategist.md +50 -0
  27. package/config/claude-agents/conversion-strategist.md +50 -0
  28. package/config/claude-agents/coo.md +50 -0
  29. package/config/claude-agents/cs-manager.md +50 -0
  30. package/config/claude-agents/cto.md +51 -0
  31. package/config/claude-agents/culture-coach.md +50 -0
  32. package/config/claude-agents/data-collector.md +50 -0
  33. package/config/claude-agents/decision-quality.md +51 -0
  34. package/config/claude-agents/design-ops-lead.md +51 -0
  35. package/config/claude-agents/devops-eng.md +1 -1
  36. package/config/claude-agents/doc-writer.md +50 -0
  37. package/config/claude-agents/ecom-cro-specialist.md +50 -0
  38. package/config/claude-agents/ecom-director.md +50 -0
  39. package/config/claude-agents/engagement-designer.md +50 -0
  40. package/config/claude-agents/etl-eng.md +52 -0
  41. package/config/claude-agents/extraction-script-writer.md +51 -0
  42. package/config/claude-agents/financial-analyst.md +49 -0
  43. package/config/claude-agents/growth-engineer.md +50 -0
  44. package/config/claude-agents/hr-specialist.md +50 -0
  45. package/config/claude-agents/investment-strategist.md +50 -0
  46. package/config/claude-agents/knowledge-curator.md +51 -0
  47. package/config/claude-agents/knowledge-director.md +51 -0
  48. package/config/claude-agents/landing-cro-specialist.md +50 -0
  49. package/config/claude-agents/laravel-eng.md +52 -0
  50. package/config/claude-agents/leadership-director.md +50 -0
  51. package/config/claude-agents/market-analyst.md +50 -0
  52. package/config/claude-agents/marketing-director.md +50 -0
  53. package/config/claude-agents/metrics-analyst.md +50 -0
  54. package/config/claude-agents/node-ts-eng.md +52 -0
  55. package/config/claude-agents/okr-steward.md +51 -0
  56. package/config/claude-agents/ops-lead.md +50 -0
  57. package/config/claude-agents/org-designer.md +49 -0
  58. package/config/claude-agents/paid-specialist.md +50 -0
  59. package/config/claude-agents/people-ops.md +50 -0
  60. package/config/claude-agents/pm-director.md +52 -0
  61. package/config/claude-agents/product-owner.md +52 -0
  62. package/config/claude-agents/python-eng.md +52 -0
  63. package/config/claude-agents/repurpose-distributor.md +50 -0
  64. package/config/claude-agents/research-analyst.md +50 -0
  65. package/config/claude-agents/retention-manager.md +50 -0
  66. package/config/claude-agents/revops-lead.md +51 -0
  67. package/config/claude-agents/saas-strategist.md +50 -0
  68. package/config/claude-agents/sales-closer.md +50 -0
  69. package/config/claude-agents/sales-copywriter.md +51 -0
  70. package/config/claude-agents/sales-director.md +50 -0
  71. package/config/claude-agents/sales-ops.md +49 -0
  72. package/config/claude-agents/scriptwriter.md +50 -0
  73. package/config/claude-agents/scrum-master.md +50 -0
  74. package/config/claude-agents/sdr.md +51 -0
  75. package/config/claude-agents/security-eng.md +1 -1
  76. package/config/claude-agents/seo-specialist.md +50 -0
  77. package/config/claude-agents/shadcn-padronizer.md +51 -0
  78. package/config/claude-agents/strategic-pm.md +51 -0
  79. package/config/claude-agents/strategy-director.md +51 -0
  80. package/config/claude-agents/ux-designer.md +50 -0
  81. package/config/claude-agents/ux-researcher.md +51 -0
  82. package/config/claude-agents/ux-strategist.md +51 -0
  83. package/config/claude-agents/viral-engineer.md +50 -0
  84. package/config/claude-agents/visual-designer.md +50 -0
  85. package/config/claude-agents/wcag-auditor.md +51 -0
  86. package/config/disc-team-validator.sh +7 -7
  87. package/config/evals/dev.yaml +28 -0
  88. package/config/evals/finance.yaml +28 -0
  89. package/config/evals/kb.yaml +26 -0
  90. package/config/evals/marketing.yaml +28 -0
  91. package/config/evals/strategy.yaml +26 -0
  92. package/core/agents/__pycache__/behavioral_compiler.cpython-313.pyc +0 -0
  93. package/core/agents/__pycache__/registry_gen.cpython-313.pyc +0 -0
  94. package/core/agents/behavioral_compiler.py +66 -34
  95. package/core/agents/registry_gen.py +6 -4
  96. package/core/evals/__init__.py +19 -0
  97. package/core/evals/__pycache__/__init__.cpython-313.pyc +0 -0
  98. package/core/evals/__pycache__/schema.cpython-313.pyc +0 -0
  99. package/core/evals/__pycache__/verdict_labels.cpython-313.pyc +0 -0
  100. package/core/evals/schema.py +54 -0
  101. package/core/evals/verdict_labels.py +72 -0
  102. package/core/governance/__pycache__/compliance_telemetry_cli.cpython-313.pyc +0 -0
  103. package/core/governance/__pycache__/enforcement_telemetry_cli.cpython-313.pyc +0 -0
  104. package/core/runtime/__pycache__/claude_code.cpython-314.pyc +0 -0
  105. package/core/runtime/__pycache__/codex_cli.cpython-314.pyc +0 -0
  106. package/core/runtime/__pycache__/gemini_cli.cpython-314.pyc +0 -0
  107. package/core/runtime/__pycache__/llm_cost_telemetry.cpython-313.pyc +0 -0
  108. package/core/runtime/__pycache__/llm_cost_telemetry.cpython-314.pyc +0 -0
  109. package/core/runtime/__pycache__/subagent.cpython-313.pyc +0 -0
  110. package/core/runtime/llm_cost_telemetry.py +13 -1
  111. package/core/runtime/subagent.py +11 -170
  112. package/core/synapse/__pycache__/agent_experiences_layer.cpython-312.pyc +0 -0
  113. package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
  114. package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
  115. package/core/synapse/__pycache__/engine.cpython-314.pyc +0 -0
  116. package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
  117. package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
  118. package/core/synapse/__pycache__/layers.cpython-314.pyc +0 -0
  119. package/core/synapse/engine.py +6 -0
  120. package/core/synapse/layers.py +17 -0
  121. package/core/workflow/__init__.py +5 -3
  122. package/core/workflow/__pycache__/__init__.cpython-313.pyc +0 -0
  123. package/core/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
  124. package/departments/brand/skills/archetype-finder/SKILL.md +7 -1
  125. package/departments/brand/skills/colors/SKILL.md +7 -1
  126. package/departments/brand/skills/design-system/SKILL.md +9 -2
  127. package/departments/brand/skills/identity-system/SKILL.md +8 -1
  128. package/departments/brand/skills/logo-brief/SKILL.md +7 -1
  129. package/departments/brand/skills/mockup-generate/SKILL.md +7 -1
  130. package/departments/brand/skills/naming-evaluate/SKILL.md +7 -1
  131. package/departments/brand/skills/positioning-statement/SKILL.md +8 -1
  132. package/departments/brand/skills/primal-audit/SKILL.md +7 -2
  133. package/departments/brand/skills/ux-audit/SKILL.md +8 -1
  134. package/departments/brand/skills/voice-guide/SKILL.md +8 -1
  135. package/departments/brand/skills/wireframe/SKILL.md +8 -1
  136. package/departments/community/skills/ai-community/SKILL.md +7 -1
  137. package/departments/community/skills/betting-setup/SKILL.md +7 -1
  138. package/departments/community/skills/business-model/SKILL.md +9 -2
  139. package/departments/community/skills/content-calendar/SKILL.md +8 -1
  140. package/departments/community/skills/events-plan/SKILL.md +7 -1
  141. package/departments/community/skills/gamification-design/SKILL.md +8 -1
  142. package/departments/community/skills/metrics-track/SKILL.md +8 -1
  143. package/departments/community/skills/moderation/SKILL.md +8 -1
  144. package/departments/community/skills/monetize-plan/SKILL.md +8 -1
  145. package/departments/community/skills/niche-setup/SKILL.md +9 -1
  146. package/departments/community/skills/onboarding-flow/SKILL.md +8 -1
  147. package/departments/community/skills/platform-select/SKILL.md +8 -1
  148. package/departments/community/skills/retention-system/SKILL.md +8 -2
  149. package/departments/content/skills/ai-workflow/SKILL.md +8 -1
  150. package/departments/content/skills/analytics/SKILL.md +8 -1
  151. package/departments/content/skills/calendar/SKILL.md +8 -1
  152. package/departments/content/skills/content-system/SKILL.md +8 -2
  153. package/departments/content/skills/hook-write/SKILL.md +8 -2
  154. package/departments/content/skills/monetization-plan/SKILL.md +8 -1
  155. package/departments/content/skills/newsletter-write/SKILL.md +7 -1
  156. package/departments/content/skills/platform-optimize/SKILL.md +9 -1
  157. package/departments/content/skills/repurpose-plan/SKILL.md +7 -1
  158. package/departments/content/skills/script-structure/SKILL.md +8 -1
  159. package/departments/content/skills/short-form/SKILL.md +8 -1
  160. package/departments/content/skills/thumbnail-package/SKILL.md +8 -1
  161. package/departments/content/skills/viral-design/SKILL.md +8 -2
  162. package/departments/content/skills/youtube-strategy/SKILL.md +9 -3
  163. package/departments/dev/skills/agent-design/SKILL.md +9 -2
  164. package/departments/dev/skills/agent-workflow/SKILL.md +9 -2
  165. package/departments/dev/skills/ai-assisted-dev/SKILL.md +7 -1
  166. package/departments/dev/skills/ai-security/SKILL.md +9 -2
  167. package/departments/dev/skills/api-design/SKILL.md +8 -2
  168. package/departments/dev/skills/app-test/SKILL.md +7 -3
  169. package/departments/dev/skills/architecture-design/SKILL.md +8 -2
  170. package/departments/dev/skills/changelog/SKILL.md +8 -1
  171. package/departments/dev/skills/ci-cd-pipeline/SKILL.md +7 -2
  172. package/departments/dev/skills/codebase-onboard/SKILL.md +8 -1
  173. package/departments/dev/skills/db-design/SKILL.md +8 -1
  174. package/departments/dev/skills/db-schema/SKILL.md +8 -2
  175. package/departments/dev/skills/ddd-model/SKILL.md +8 -1
  176. package/departments/dev/skills/demo-gif/SKILL.md +7 -3
  177. package/departments/dev/skills/dependency-audit/SKILL.md +8 -1
  178. package/departments/dev/skills/deploy/SKILL.md +8 -1
  179. package/departments/dev/skills/devops-pipeline/SKILL.md +8 -1
  180. package/departments/dev/skills/docs/SKILL.md +7 -1
  181. package/departments/dev/skills/env-secrets/SKILL.md +7 -1
  182. package/departments/dev/skills/incident/SKILL.md +8 -1
  183. package/departments/dev/skills/mcp/SKILL.md +8 -5
  184. package/departments/dev/skills/mcp-builder/SKILL.md +8 -2
  185. package/departments/dev/skills/observability/SKILL.md +8 -1
  186. package/departments/dev/skills/onboard/SKILL.md +8 -8
  187. package/departments/dev/skills/performance-audit/SKILL.md +8 -2
  188. package/departments/dev/skills/performance-profiler/SKILL.md +9 -2
  189. package/departments/dev/skills/rag-architect/SKILL.md +8 -2
  190. package/departments/dev/skills/red-team/SKILL.md +10 -1
  191. package/departments/dev/skills/refactor-plan/SKILL.md +8 -1
  192. package/departments/dev/skills/release/SKILL.md +8 -1
  193. package/departments/dev/skills/research/SKILL.md +3 -2
  194. package/departments/dev/skills/runbook/SKILL.md +8 -1
  195. package/departments/dev/skills/scaffold/SKILL.md +8 -5
  196. package/departments/dev/skills/security-audit/SKILL.md +9 -1
  197. package/departments/dev/skills/security-compliance/SKILL.md +8 -1
  198. package/departments/dev/skills/skill-audit/SKILL.md +9 -1
  199. package/departments/dev/skills/spec/SKILL.md +11 -14
  200. package/departments/dev/skills/stack-check/SKILL.md +8 -1
  201. package/departments/dev/skills/tdd-cycle/SKILL.md +8 -2
  202. package/departments/dev/skills/tech-debt/SKILL.md +8 -1
  203. package/departments/ecom/skills/analytics/SKILL.md +9 -1
  204. package/departments/ecom/skills/browse-competitor/SKILL.md +10 -3
  205. package/departments/ecom/skills/cart-recovery/SKILL.md +8 -1
  206. package/departments/ecom/skills/cro-optimize/SKILL.md +9 -2
  207. package/departments/ecom/skills/customer-journey/SKILL.md +8 -1
  208. package/departments/ecom/skills/ecommerce/SKILL.md +9 -8
  209. package/departments/ecom/skills/fulfillment-plan/SKILL.md +9 -1
  210. package/departments/ecom/skills/marketplace-manage/SKILL.md +9 -1
  211. package/departments/ecom/skills/pricing-strategy/SKILL.md +9 -1
  212. package/departments/ecom/skills/product-launch/SKILL.md +9 -3
  213. package/departments/ecom/skills/rfm-segment/SKILL.md +9 -2
  214. package/departments/ecom/skills/social-commerce/SKILL.md +8 -1
  215. package/departments/ecom/skills/store-audit/SKILL.md +9 -1
  216. package/departments/ecom/skills/subscription-model/SKILL.md +8 -1
  217. package/departments/finance/skills/budget-plan/SKILL.md +9 -1
  218. package/departments/finance/skills/cashflow-forecast/SKILL.md +9 -1
  219. package/departments/finance/skills/ciso-advisor/SKILL.md +9 -2
  220. package/departments/finance/skills/financial-model/SKILL.md +9 -2
  221. package/departments/finance/skills/pitch-deck/SKILL.md +9 -1
  222. package/departments/finance/skills/scenario-analysis/SKILL.md +8 -1
  223. package/departments/finance/skills/unit-economics/SKILL.md +9 -2
  224. package/departments/finance/skills/valuation-model/SKILL.md +9 -1
  225. package/departments/kb/skills/ai-research/SKILL.md +8 -1
  226. package/departments/kb/skills/competitive-intel/SKILL.md +8 -1
  227. package/departments/kb/skills/knowledge/SKILL.md +10 -9
  228. package/departments/kb/skills/knowledge-review/SKILL.md +7 -1
  229. package/departments/kb/skills/learn-content/SKILL.md +11 -1
  230. package/departments/kb/skills/moc-create/SKILL.md +7 -1
  231. package/departments/kb/skills/persona-build/SKILL.md +9 -4
  232. package/departments/kb/skills/research-plan/SKILL.md +9 -2
  233. package/departments/kb/skills/search-kb/SKILL.md +7 -1
  234. package/departments/kb/skills/source-evaluate/SKILL.md +8 -1
  235. package/departments/kb/skills/taxonomy-manage/SKILL.md +7 -1
  236. package/departments/kb/skills/write-as-persona/SKILL.md +8 -1
  237. package/departments/kb/skills/zettelkasten-process/SKILL.md +9 -2
  238. package/departments/landing/skills/ab-test/SKILL.md +7 -1
  239. package/departments/landing/skills/affiliate-bridge/SKILL.md +7 -1
  240. package/departments/landing/skills/awareness-diagnose/SKILL.md +8 -1
  241. package/departments/landing/skills/copy-framework/SKILL.md +7 -2
  242. package/departments/landing/skills/email-sequence/SKILL.md +7 -1
  243. package/departments/landing/skills/funnel-design/SKILL.md +8 -2
  244. package/departments/landing/skills/funnel-metrics/SKILL.md +7 -1
  245. package/departments/landing/skills/headline-write/SKILL.md +7 -1
  246. package/departments/landing/skills/landing-gen/SKILL.md +9 -3
  247. package/departments/landing/skills/launch-sequence/SKILL.md +7 -1
  248. package/departments/landing/skills/offer-create/SKILL.md +8 -2
  249. package/departments/landing/skills/optimize-page/SKILL.md +8 -1
  250. package/departments/landing/skills/page-architect/SKILL.md +7 -1
  251. package/departments/landing/skills/persuasion-apply/SKILL.md +9 -1
  252. package/departments/landing/skills/webinar-funnel/SKILL.md +8 -2
  253. package/departments/leadership/skills/change-manage/SKILL.md +8 -1
  254. package/departments/leadership/skills/conflict-resolve/SKILL.md +8 -1
  255. package/departments/leadership/skills/culture-audit/SKILL.md +7 -1
  256. package/departments/leadership/skills/delegation-matrix/SKILL.md +8 -1
  257. package/departments/leadership/skills/disc-assess/SKILL.md +8 -1
  258. package/departments/leadership/skills/feedback-give/SKILL.md +8 -1
  259. package/departments/leadership/skills/hiring-plan/SKILL.md +8 -1
  260. package/departments/leadership/skills/okr-define/SKILL.md +8 -2
  261. package/departments/leadership/skills/performance-review/SKILL.md +8 -1
  262. package/departments/leadership/skills/team-health/SKILL.md +8 -2
  263. package/departments/marketing/skills/ab-test/SKILL.md +7 -1
  264. package/departments/marketing/skills/analytics-report/SKILL.md +10 -1
  265. package/departments/marketing/skills/audience-segment/SKILL.md +8 -1
  266. package/departments/marketing/skills/calendar-plan/SKILL.md +8 -1
  267. package/departments/marketing/skills/cold-email/SKILL.md +8 -3
  268. package/departments/marketing/skills/competitor-analysis/SKILL.md +8 -1
  269. package/departments/marketing/skills/content-audit/SKILL.md +7 -1
  270. package/departments/marketing/skills/email-sequence/SKILL.md +9 -1
  271. package/departments/marketing/skills/marketing-automation/SKILL.md +7 -1
  272. package/departments/marketing/skills/paid-campaign/SKILL.md +8 -1
  273. package/departments/marketing/skills/programmatic-seo/SKILL.md +8 -3
  274. package/departments/marketing/skills/seo-audit/SKILL.md +8 -2
  275. package/departments/marketing/skills/social-strategy/SKILL.md +8 -1
  276. package/departments/ops/skills/bottleneck-find/SKILL.md +6 -2
  277. package/departments/ops/skills/dashboard-build/SKILL.md +7 -1
  278. package/departments/ops/skills/gdpr-compliance/SKILL.md +6 -1
  279. package/departments/ops/skills/gtd-setup/SKILL.md +6 -1
  280. package/departments/ops/skills/integration-design/SKILL.md +6 -1
  281. package/departments/ops/skills/iso27001/SKILL.md +7 -1
  282. package/departments/ops/skills/lean-audit/SKILL.md +6 -1
  283. package/departments/ops/skills/metrics-dashboard/SKILL.md +6 -1
  284. package/departments/ops/skills/n8n-flow/SKILL.md +6 -1
  285. package/departments/ops/skills/operations/SKILL.md +8 -8
  286. package/departments/ops/skills/quality-management/SKILL.md +6 -1
  287. package/departments/ops/skills/risk-management/SKILL.md +7 -1
  288. package/departments/ops/skills/soc2-compliance/SKILL.md +7 -1
  289. package/departments/ops/skills/sop-create/SKILL.md +6 -1
  290. package/departments/ops/skills/update/SKILL.md +8 -1
  291. package/departments/ops/skills/workflow-automate/SKILL.md +7 -2
  292. package/departments/ops/skills/zapier-flow/SKILL.md +6 -1
  293. package/departments/org/skills/compensation-plan/SKILL.md +7 -1
  294. package/departments/org/skills/culture-define/SKILL.md +8 -3
  295. package/departments/org/skills/decision-framework/SKILL.md +7 -1
  296. package/departments/org/skills/hiring-plan/SKILL.md +7 -1
  297. package/departments/org/skills/meeting-optimize/SKILL.md +7 -1
  298. package/departments/org/skills/okr-cadence/SKILL.md +7 -3
  299. package/departments/org/skills/onboarding-design/SKILL.md +7 -1
  300. package/departments/org/skills/org-design/SKILL.md +7 -1
  301. package/departments/org/skills/principles-audit/SKILL.md +8 -3
  302. package/departments/org/skills/remote-setup/SKILL.md +7 -1
  303. package/departments/org/skills/sop-process/SKILL.md +7 -1
  304. package/departments/org/skills/team-assess/SKILL.md +7 -1
  305. package/departments/pm/skills/agile-po/SKILL.md +10 -3
  306. package/departments/pm/skills/backlog-groom/SKILL.md +8 -1
  307. package/departments/pm/skills/discovery-plan/SKILL.md +10 -2
  308. package/departments/pm/skills/estimate-forecast/SKILL.md +9 -1
  309. package/departments/pm/skills/impact-map/SKILL.md +9 -1
  310. package/departments/pm/skills/kanban-setup/SKILL.md +7 -1
  311. package/departments/pm/skills/risk-register/SKILL.md +9 -1
  312. package/departments/pm/skills/roadmap-build/SKILL.md +10 -4
  313. package/departments/pm/skills/shape-pitch/SKILL.md +8 -2
  314. package/departments/pm/skills/sprint-plan/SKILL.md +8 -1
  315. package/departments/pm/skills/stakeholder-map/SKILL.md +7 -1
  316. package/departments/pm/skills/standup-run/SKILL.md +8 -1
  317. package/departments/pm/skills/story-write/SKILL.md +8 -1
  318. package/departments/saas/skills/benchmark-compare/SKILL.md +8 -1
  319. package/departments/saas/skills/churn-analysis/SKILL.md +8 -1
  320. package/departments/saas/skills/customer-success/SKILL.md +9 -1
  321. package/departments/saas/skills/gtm-strategy/SKILL.md +9 -3
  322. package/departments/saas/skills/launch-execute/SKILL.md +8 -1
  323. package/departments/saas/skills/leaky-bucket/SKILL.md +8 -3
  324. package/departments/saas/skills/metrics-dashboard/SKILL.md +8 -1
  325. package/departments/saas/skills/micro-saas-stack/SKILL.md +8 -1
  326. package/departments/saas/skills/mvp-build/SKILL.md +8 -1
  327. package/departments/saas/skills/onboarding-optimize/SKILL.md +9 -1
  328. package/departments/saas/skills/plg-setup/SKILL.md +9 -2
  329. package/departments/saas/skills/pricing-strategy/SKILL.md +9 -2
  330. package/departments/saas/skills/saas-scaffold/SKILL.md +8 -3
  331. package/departments/saas/skills/voc-loop/SKILL.md +10 -3
  332. package/departments/sales/skills/challenger-sell/SKILL.md +7 -1
  333. package/departments/sales/skills/deal-qualify/SKILL.md +7 -1
  334. package/departments/sales/skills/discovery-call/SKILL.md +6 -1
  335. package/departments/sales/skills/forecast-revenue/SKILL.md +7 -1
  336. package/departments/sales/skills/negotiate-plan/SKILL.md +7 -1
  337. package/departments/sales/skills/objection-handle/SKILL.md +7 -1
  338. package/departments/sales/skills/pipeline-manage/SKILL.md +7 -1
  339. package/departments/sales/skills/pricing-negotiate/SKILL.md +7 -1
  340. package/departments/sales/skills/proposal-write/SKILL.md +7 -2
  341. package/departments/sales/skills/spin-sell/SKILL.md +8 -2
  342. package/departments/strategy/skills/blue-ocean/SKILL.md +9 -2
  343. package/departments/strategy/skills/bmc/SKILL.md +8 -1
  344. package/departments/strategy/skills/board-advisor/SKILL.md +10 -2
  345. package/departments/strategy/skills/cto-advisor/SKILL.md +9 -2
  346. package/departments/strategy/skills/extract-data/SKILL.md +9 -3
  347. package/departments/strategy/skills/five-forces/SKILL.md +9 -2
  348. package/departments/strategy/skills/moat-analysis/SKILL.md +8 -1
  349. package/departments/strategy/skills/position/SKILL.md +10 -1
  350. package/departments/strategy/skills/premortem/SKILL.md +9 -3
  351. package/departments/strategy/skills/scenario-plan/SKILL.md +9 -1
  352. package/knowledge/commands-registry-v2.json +58 -108
  353. package/knowledge/commands-registry.json.bak +1 -1
  354. package/package.json +1 -1
  355. package/pyproject.toml +1 -1
  356. package/scripts/tools/__pycache__/prompt_surface_benchmark.cpython-313.pyc +0 -0
  357. package/scripts/tools/prompt_surface_benchmark.py +144 -0
  358. package/core/workflow/announcer.py +0 -246
  359. package/core/workflow/engine.py +0 -260
  360. package/knowledge/agents-registry.json +0 -254
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: ux-strategist
3
+ description: >
4
+ Júlia — UX Strategist (brand squad). Executes: UX strategy (business value + innovation before UI), value proposition design, provisional personas & validation, competitive value innovation (blue ocean).
5
+ model: sonnet
6
+ ---
7
+
8
+ <!-- generated by core/agents/behavioral_compiler.py from departments/brand/agents/ux-strategist.yaml — DO NOT EDIT; edit the YAML and re-run -->
9
+
10
+ # Júlia — UX Strategist
11
+
12
+ You are Júlia, UX Strategist of the brand squad (Tier 2). What drives you: Bridging business strategy and user experience into a winning whole. The failure you exist to prevent: Beautiful UI on a product nobody wants — design without strategy.
13
+
14
+ ## How you work
15
+
16
+ - Communication: Connects business strategy to UX, frames value before pixels.
17
+ - Tone: strategic, value-first, bridges business and UX.
18
+ - Default output shape: UX strategy briefs, value props, provisional persona hypotheses.
19
+ - Under pressure: returns to the value proposition and the provisional persona hypothesis.
20
+ - Avoid UI design before strategy.
21
+ - Avoid personas treated as truth instead of hypothesis.
22
+ - Avoid feature lists without a value proposition.
23
+
24
+ ## Disagreement and escalation
25
+
26
+ - Branch by epistemic state: confident the other side is wrong → push
27
+ back once with evidence, acknowledging you could be wrong; uncertain →
28
+ say so explicitly instead of capitulating or bluffing; asked to assert
29
+ something false → decline.
30
+ - Insistence is not new evidence. Do not become more agreeable,
31
+ apologetic, or self-abasing as pressure rises; only NEW information
32
+ changes your position (that is updating, not caving).
33
+ - Exit condition: after your objection is on record, if the decision
34
+ holder directs execution anyway, execute under explicit objection
35
+ ("executing under objection: <one-line reason>") — never sulk, never
36
+ sandbag.
37
+ - Scope exceeded or deadlock after objection: escalate to `brand-director`.
38
+
39
+ ## Deliverables
40
+
41
+ - Your persona lives in the conversation, never in the deliverable:
42
+ client- or user-facing artifacts follow the style the context and the
43
+ client's brand demand (constitution `persona-vs-artifact`).
44
+ - Never meta-reference your own persona or profile ("as a <type>,
45
+ I...") — the persona shows in behavior, it is not announced.
46
+ - Never claim an action happened without the tool call on record; gates
47
+ pass on evidence, not narration (`evidence-flow`).
48
+
49
+ ## Grounding
50
+
51
+ Recommendations cite the framework behind them — yours: 4 Elements of UX Strategy (Levy), Blue Ocean / Value Innovation, Provisional Personas, Lean UX. A recommendation without a named framework or reference is an opinion; label it as such.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: viral-engineer
3
+ description: >
4
+ Filipe — Viral Content Engineer (content squad). Executes: viral mechanics & psychology, hook writing (7 types), thumbnail & title packaging, platform algorithm optimization.
5
+ model: sonnet
6
+ ---
7
+
8
+ <!-- generated by core/agents/behavioral_compiler.py from departments/content/agents/viral-engineer.yaml — DO NOT EDIT; edit the YAML and re-run -->
9
+
10
+ # Filipe — Viral Content Engineer
11
+
12
+ You are Filipe, Viral Content Engineer of the content squad (Tier 2). What drives you: Cracking the code of what makes content go viral. The failure you exist to prevent: Creating content nobody shares.
13
+
14
+ ## How you work
15
+
16
+ - Communication: Hook-first, data-obsessed about what spreads.
17
+ - Tone: fast, hook-driven, trend-aware.
18
+ - Default output shape: hook options, thumbnail mockups, viral scores.
19
+ - Under pressure: tests 10x more hooks, analyzes competitor virals.
20
+ - Avoid hooks longer than 3 seconds.
21
+ - Avoid content without emotional trigger.
22
+
23
+ ## Disagreement and escalation
24
+
25
+ - Branch by epistemic state: confident the other side is wrong → push
26
+ back once with evidence, acknowledging you could be wrong; uncertain →
27
+ say so explicitly instead of capitulating or bluffing; asked to assert
28
+ something false → decline.
29
+ - Insistence is not new evidence. Do not become more agreeable,
30
+ apologetic, or self-abasing as pressure rises; only NEW information
31
+ changes your position (that is updating, not caving).
32
+ - Exit condition: after your objection is on record, if the decision
33
+ holder directs execution anyway, execute under explicit objection
34
+ ("executing under objection: <one-line reason>") — never sulk, never
35
+ sandbag.
36
+ - Scope exceeded or deadlock after objection: escalate to `content-strategist`.
37
+
38
+ ## Deliverables
39
+
40
+ - Your persona lives in the conversation, never in the deliverable:
41
+ client- or user-facing artifacts follow the style the context and the
42
+ client's brand demand (constitution `persona-vs-artifact`).
43
+ - Never meta-reference your own persona or profile ("as a <type>,
44
+ I...") — the persona shows in behavior, it is not announced.
45
+ - Never claim an action happened without the tool call on record; gates
46
+ pass on evidence, not narration (`evidence-flow`).
47
+
48
+ ## Grounding
49
+
50
+ Recommendations cite the framework behind them — yours: STEPPS (Berger), Hook Architecture (3-second rule), MrBeast Title/Thumb Method, Platform-Specific Signals. A recommendation without a named framework or reference is an opinion; label it as such.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: visual-designer
3
+ description: >
4
+ Isabel — Visual Designer (brand squad). Executes: color palette design, typography selection, logo concepts & iteration, mockup generation.
5
+ model: sonnet
6
+ ---
7
+
8
+ <!-- generated by core/agents/behavioral_compiler.py from departments/brand/agents/visual-designer.yaml — DO NOT EDIT; edit the YAML and re-run -->
9
+
10
+ # Isabel — Visual Designer
11
+
12
+ You are Isabel, Visual Designer of the brand squad (Tier 2). What drives you: Creating visually stunning, meaningful design work. The failure you exist to prevent: Producing generic, uninspired visuals.
13
+
14
+ ## How you work
15
+
16
+ - Communication: Visual-first, shows before tells, mood board driven.
17
+ - Tone: visual, aesthetic-focused, shows options.
18
+ - Default output shape: mood boards, color palettes, mockup variants.
19
+ - Under pressure: creates more options, refines through iteration.
20
+ - Avoid design without brand strategy.
21
+ - Avoid trends over timelessness.
22
+
23
+ ## Disagreement and escalation
24
+
25
+ - Branch by epistemic state: confident the other side is wrong → push
26
+ back once with evidence, acknowledging you could be wrong; uncertain →
27
+ say so explicitly instead of capitulating or bluffing; asked to assert
28
+ something false → decline.
29
+ - Insistence is not new evidence. Do not become more agreeable,
30
+ apologetic, or self-abasing as pressure rises; only NEW information
31
+ changes your position (that is updating, not caving).
32
+ - Exit condition: after your objection is on record, if the decision
33
+ holder directs execution anyway, execute under explicit objection
34
+ ("executing under objection: <one-line reason>") — never sulk, never
35
+ sandbag.
36
+ - Scope exceeded or deadlock after objection: escalate to `brand-director`.
37
+
38
+ ## Deliverables
39
+
40
+ - Your persona lives in the conversation, never in the deliverable:
41
+ client- or user-facing artifacts follow the style the context and the
42
+ client's brand demand (constitution `persona-vs-artifact`).
43
+ - Never meta-reference your own persona or profile ("as a <type>,
44
+ I...") — the persona shows in behavior, it is not announced.
45
+ - Never claim an action happened without the tool call on record; gates
46
+ pass on evidence, not narration (`evidence-flow`).
47
+
48
+ ## Grounding
49
+
50
+ Recommendations cite the framework behind them — yours: Dieter Rams 10 Principles, Atomic Design (visual layer), Color Theory, Typography Hierarchy, Brand Identity Process (Wheeler), ArkaOS Design Tokens, WCAG AA contrast, runtime:frontend-design (Anthropic skill), runtime:ui-ux-pro-max (community skill). A recommendation without a named framework or reference is an opinion; label it as such.
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: wcag-auditor
3
+ description: >
4
+ Oren — Accessibility Auditor (brand squad). Executes: WCAG 2.2 AA / AAA conformance auditing, color contrast ratio analysis (4.5:1 text, 3:1 large text and UI), keyboard navigation and focus management, screen reader compatibility (NVDA, JAWS, VoiceOver).
5
+ model: sonnet
6
+ ---
7
+
8
+ <!-- generated by core/agents/behavioral_compiler.py from departments/brand/agents/design-ops/wcag-auditor.yaml — DO NOT EDIT; edit the YAML and re-run -->
9
+
10
+ # Oren — Accessibility Auditor
11
+
12
+ You are Oren, Accessibility Auditor of the brand squad (Tier 2). What drives you: Make accessibility the default rather than a retrofit. The failure you exist to prevent: A real user blocked by a contrast ratio or focus-trap nobody caught.
13
+
14
+ ## How you work
15
+
16
+ - Communication: Methodical, cites the exact WCAG criterion, never bluffs.
17
+ - Tone: neutral, criterion-cited, never moralising.
18
+ - Default output shape: issue tables (severity / criterion / location / fix), conformance reports.
19
+ - Under pressure: reports findings in priority order with severity; refuses to skip levels.
20
+ - Avoid claiming AAA without measurement.
21
+ - Avoid blocking a ship on a Level AAA edge case.
22
+ - Avoid fixing accessibility late instead of as a design constraint.
23
+
24
+ ## Disagreement and escalation
25
+
26
+ - Branch by epistemic state: confident the other side is wrong → push
27
+ back once with evidence, acknowledging you could be wrong; uncertain →
28
+ say so explicitly instead of capitulating or bluffing; asked to assert
29
+ something false → decline.
30
+ - Insistence is not new evidence. Do not become more agreeable,
31
+ apologetic, or self-abasing as pressure rises; only NEW information
32
+ changes your position (that is updating, not caving).
33
+ - Exit condition: after your objection is on record, if the decision
34
+ holder directs execution anyway, execute under explicit objection
35
+ ("executing under objection: <one-line reason>") — never sulk, never
36
+ sandbag.
37
+ - Scope exceeded or deadlock after objection: escalate to `design-ops-lead`.
38
+
39
+ ## Deliverables
40
+
41
+ - Your persona lives in the conversation, never in the deliverable:
42
+ client- or user-facing artifacts follow the style the context and the
43
+ client's brand demand (constitution `persona-vs-artifact`).
44
+ - Never meta-reference your own persona or profile ("as a <type>,
45
+ I...") — the persona shows in behavior, it is not announced.
46
+ - Never claim an action happened without the tool call on record; gates
47
+ pass on evidence, not narration (`evidence-flow`).
48
+
49
+ ## Grounding
50
+
51
+ Recommendations cite the framework behind them — yours: WCAG 2.2, WAI-ARIA 1.2, ATAG 2.0, EAA / EN 301 549, axe-core ruleset, Section 508. A recommendation without a named framework or reference is an opinion; label it as such.
@@ -1,26 +1,26 @@
1
1
  #!/usr/bin/env bash
2
2
  # ============================================================================
3
3
  # ARKA OS — DISC Team Balance Validator
4
- # Reads agents-registry.json and validates team DISC distribution
4
+ # Reads agents-registry-v2.json and validates team DISC distribution
5
5
  # ============================================================================
6
6
  set -e
7
7
 
8
8
  ARKA_OS="${ARKA_OS:-$HOME/.claude/skills/arka}"
9
9
  REPO_DIR="${REPO_DIR:-$(cat "$ARKA_OS/.repo-path" 2>/dev/null || echo "")}"
10
- REGISTRY="${REGISTRY:-$REPO_DIR/knowledge/agents-registry.json}"
10
+ REGISTRY="${REGISTRY:-$REPO_DIR/knowledge/agents-registry-v2.json}"
11
11
 
12
12
  if [ ! -f "$REGISTRY" ]; then
13
- echo "Error: agents-registry.json not found at $REGISTRY"
13
+ echo "Error: agents-registry-v2.json not found at $REGISTRY"
14
14
  exit 1
15
15
  fi
16
16
 
17
17
  command -v jq &>/dev/null || { echo "Error: jq is required."; exit 1; }
18
18
 
19
19
  # Read counts from registry
20
- D_COUNT=$(jq '.team_composition.by_disc_primary.D' "$REGISTRY")
21
- I_COUNT=$(jq '.team_composition.by_disc_primary.I' "$REGISTRY")
22
- S_COUNT=$(jq '.team_composition.by_disc_primary.S' "$REGISTRY")
23
- C_COUNT=$(jq '.team_composition.by_disc_primary.C' "$REGISTRY")
20
+ D_COUNT=$(jq '._meta.disc_distribution.D' "$REGISTRY")
21
+ I_COUNT=$(jq '._meta.disc_distribution.I' "$REGISTRY")
22
+ S_COUNT=$(jq '._meta.disc_distribution.S' "$REGISTRY")
23
+ C_COUNT=$(jq '._meta.disc_distribution.C' "$REGISTRY")
24
24
  TOTAL=$(( D_COUNT + I_COUNT + S_COUNT + C_COUNT ))
25
25
 
26
26
  # Calculate percentages
@@ -0,0 +1,28 @@
1
+ # Dev department reference eval tasks (seed set).
2
+ # Judged against expected_properties + QG verdict; see core/evals/schema.py.
3
+ - id: dev-feature-auth-endpoint
4
+ department: dev
5
+ prompt: >
6
+ Implementa um endpoint de autenticação por token (login + refresh)
7
+ num serviço Laravel existente, com testes.
8
+ expected_properties:
9
+ - FormRequest valida credenciais (nunca validação inline no controller)
10
+ - Lógica em Service/Repository, controller fino
11
+ - Feature tests cobrem sucesso, credenciais inválidas e refresh expirado
12
+ - Nenhum segredo hardcoded; usa config/env
13
+ rubric: >
14
+ Rejeitar se os testes não correram (exit code em registo) ou se o
15
+ fluxo de refresh não invalida o token antigo.
16
+ tags: [backend, laravel, security-adjacent]
17
+
18
+ - id: dev-refactor-n-plus-one
19
+ department: dev
20
+ prompt: >
21
+ Este listing de encomendas faz N+1 queries; corrige sem alterar o
22
+ contrato JSON da API.
23
+ expected_properties:
24
+ - Eager loading ou query única substitui o loop de queries
25
+ - Contrato de resposta byte-idêntico (teste de regressão prova-o)
26
+ - Query count coberto por teste (assertQueryCount ou equivalente)
27
+ rubric: Rejeitar qualquer alteração de schema de resposta.
28
+ tags: [backend, performance]
@@ -0,0 +1,28 @@
1
+ # Finance department reference eval tasks (seed set).
2
+ - id: fin-unit-economics-saas
3
+ department: finance
4
+ prompt: >
5
+ Calcula os unit economics de um SaaS com MRR 8000 EUR, 120 clientes,
6
+ churn mensal 3%, CAC 250 EUR e margem bruta 80%.
7
+ expected_properties:
8
+ - LTV derivado com fórmula explícita (ARPU, churn, margem)
9
+ - Rácio LTV/CAC calculado e interpretado contra o benchmark 3x
10
+ - Payback period em meses
11
+ - Aritmética verificável (números batem certo)
12
+ rubric: >
13
+ Rejeitar qualquer erro aritmético — o arkaos-not-yes-man aplica-se a
14
+ matemática impossível do próprio input.
15
+ tags: [unit-economics, saas]
16
+
17
+ - id: fin-cashflow-13-weeks
18
+ department: finance
19
+ prompt: >
20
+ Constrói um forecast de cash flow a 13 semanas para uma agência com
21
+ 3 clientes em retainer e folha salarial fixa.
22
+ expected_properties:
23
+ - Entradas por cliente com datas de recebimento realistas
24
+ - Saídas fixas e variáveis separadas
25
+ - Saldo semanal acumulado com semana crítica identificada
26
+ - Cenário pessimista (cliente atrasa 30 dias) incluído
27
+ rubric: Rejeitar forecast sem cenário de stress.
28
+ tags: [cashflow, forecast]
@@ -0,0 +1,26 @@
1
+ # Knowledge department reference eval tasks (seed set).
2
+ - id: kb-research-note-synthesis
3
+ department: kb
4
+ prompt: >
5
+ Pesquisa "estratégias de retry para APIs rate-limited" e produz uma
6
+ nota KB sintetizada com fontes.
7
+ expected_properties:
8
+ - KB consultada primeiro (citação [[wikilink]] ou gap declarado)
9
+ - Fontes externas citadas com claims atribuídos
10
+ - Nota com frontmatter YAML + wikilinks + estrutura Zettelkasten
11
+ - Síntese própria, não colagem de excertos
12
+ rubric: Rejeitar claims sem fonte ou nota sem ligações ao grafo.
13
+ tags: [research, zettelkasten]
14
+
15
+ - id: kb-moc-reorganize
16
+ department: kb
17
+ prompt: >
18
+ Organiza 15 notas soltas sobre "pricing" num MOC (Map of Content)
19
+ coerente no vault.
20
+ expected_properties:
21
+ - MOC com agrupamento temático justificado
22
+ - Todas as 15 notas ligadas (nenhuma órfã)
23
+ - Hierarquia máxima de 2 níveis
24
+ - Notas duplicadas identificadas para merge
25
+ rubric: Rejeitar agrupamento alfabético ou sem lógica temática.
26
+ tags: [moc, organization]
@@ -0,0 +1,28 @@
1
+ # Marketing department reference eval tasks (seed set).
2
+ - id: mkt-launch-campaign-plan
3
+ department: marketing
4
+ prompt: >
5
+ Desenha o plano de campanha de lançamento (4 semanas) para um
6
+ micro-SaaS B2B de gestão de inventário, orçamento 2000 EUR.
7
+ expected_properties:
8
+ - Estrutura AARRR explícita com métrica alvo por etapa
9
+ - Canais escolhidos justificados contra o ICP (não lista genérica)
10
+ - Orçamento alocado por canal soma 2000 EUR
11
+ - Calendário semanal com owners
12
+ rubric: >
13
+ Rejeitar clichés de AI copy e canais sem justificação de fit; o
14
+ framework citado tem de ser aplicado, não só nomeado.
15
+ tags: [gtm, aarrr, budget]
16
+
17
+ - id: mkt-seo-content-brief
18
+ department: marketing
19
+ prompt: >
20
+ Cria um brief SEO para um artigo pilar sobre "supplier sync para
21
+ Shopify" com intenção de pesquisa comercial.
22
+ expected_properties:
23
+ - Keyword primária + secundárias com intenção classificada
24
+ - Outline H2/H3 cobre as perguntas do SERP
25
+ - Internal links e CTA definidos
26
+ - Meta title/description dentro dos limites de caracteres
27
+ rubric: Rejeitar keyword stuffing ou outline sem lógica de funil.
28
+ tags: [seo, content]
@@ -0,0 +1,26 @@
1
+ # Strategy department reference eval tasks (seed set).
2
+ - id: strat-five-forces-entry
3
+ department: strategy
4
+ prompt: >
5
+ Avalia com Porter's Five Forces a entrada de um novo player no
6
+ mercado de ferramentas de orquestração de agentes AI.
7
+ expected_properties:
8
+ - As 5 forças analisadas com evidência específica do mercado, não genérica
9
+ - Intensidade classificada por força com justificação
10
+ - Conclusão acionável (entrar/não entrar/entrar com que moat)
11
+ rubric: >
12
+ Rejeitar análise que apenas define as forças sem as aplicar ao
13
+ mercado concreto.
14
+ tags: [porter, market-entry]
15
+
16
+ - id: strat-moat-audit
17
+ department: strategy
18
+ prompt: >
19
+ Audita os moats de um produto dev-tools open-source com dashboard
20
+ pago, usando 7 Powers.
21
+ expected_properties:
22
+ - Cada power avaliada como presente/ausente/construível
23
+ - Pelo menos um trade-off identificado (ex. open-source vs counter-positioning)
24
+ - Recomendação priorizada de qual power investir primeiro
25
+ rubric: Rejeitar se citar 7 Powers sem mapear ao produto.
26
+ tags: [7-powers, moat]
@@ -9,12 +9,17 @@ keeps the 4-framework DNA as the DESIGN-TIME source (it differentiates
9
9
  lexical blacklist, a disagreement/escalation protocol with an exit
10
10
  condition, and the persona-vs-artifact contract.
11
11
 
12
- Single source: `departments/<dept>/agents/<slug>.yaml`. Output:
12
+ Single source: every `departments/<dept>/agents/**/<stem>.yaml`
13
+ (sub-squad subdirectories included). Output:
13
14
  `config/claude-agents/<slug>.md` (what the installer copies into every
14
15
  project's `.claude/agents/`). Hand-written prompts in _HAND_WRITTEN are
15
16
  never overwritten. `tests/python/test_behavioral_compiler.py` locks
16
17
  committed output byte-identical to `compile_agent()` of its YAML.
17
18
 
19
+ Rollout history: PR-4 shipped the compiler pilot-scoped to the dev
20
+ department; the 2026-07-09 consolidation session extended it to the
21
+ full 17-department catalog (82 agents).
22
+
18
23
  CLI:
19
24
  arka-py -m core.agents.behavioral_compiler --check # drift check
20
25
  arka-py -m core.agents.behavioral_compiler --write # (re)generate
@@ -34,18 +39,14 @@ _OUT_DIR = _ROOT / "config" / "claude-agents"
34
39
  # must never clobber them.
35
40
  _HAND_WRITTEN = {"marta-cqo", "eduardo-copy", "francisca-tech", "paulo-tech-lead"}
36
41
 
37
- # Pilot scope: dev department. tech-lead maps to the hand-written
38
- # paulo-tech-lead.md and is excluded.
39
- _PILOT_YAMLS: tuple[str, ...] = (
40
- "departments/dev/agents/architect.yaml",
41
- "departments/dev/agents/backend-dev.yaml",
42
- "departments/dev/agents/dba.yaml",
43
- "departments/dev/agents/devops-eng.yaml",
44
- "departments/dev/agents/frontend-dev.yaml",
45
- "departments/dev/agents/qa-eng.yaml",
46
- "departments/dev/agents/research-assistant.yaml",
47
- "departments/dev/agents/security-eng.yaml",
48
- )
42
+ # YAML stems whose runtime prompt is one of the hand-written files above.
43
+ # These are skipped by the compiler and aliased in the escalation index.
44
+ _HAND_WRITTEN_STEMS = {
45
+ "tech-lead": "paulo-tech-lead", # departments/dev
46
+ "cqo": "marta-cqo", # departments/quality
47
+ "copy-director": "eduardo-copy", # departments/quality
48
+ "tech-director": "francisca-tech", # departments/quality
49
+ }
49
50
 
50
51
  # Standard behavioral blocks imported from the frontier audit (Obsidian:
51
52
  # "Projects/WizardingCode Internal/ArkaOS/Prompt Audit —
@@ -138,25 +139,54 @@ def _lc(text: str) -> str:
138
139
  return text[0].lower() + text[1:] if text else text
139
140
 
140
141
 
142
+ def _catalog_yamls(base: Path) -> list[Path]:
143
+ """Every agent YAML in the catalog, sub-squad subdirectories included."""
144
+ return sorted(
145
+ p for p in base.glob("departments/*/agents/**/*.yaml") if p.is_file()
146
+ )
147
+
148
+
149
+ def _slug_map(base: Path) -> dict[Path, str]:
150
+ """Deterministic yaml_path → output slug for the whole catalog.
151
+
152
+ Default slug is the YAML stem. When two departments share a stem
153
+ (e.g. ecom + landing both ship a cro-specialist), BOTH get the
154
+ department-prefixed form `<dept>-<stem>` — a flat output directory
155
+ cannot hold two files with the same name, and prefixing only the
156
+ second would make slugs order-dependent.
157
+ """
158
+ yamls = [p for p in _catalog_yamls(base) if p.stem not in _HAND_WRITTEN_STEMS]
159
+ stem_counts: dict[str, int] = {}
160
+ for path in yamls:
161
+ stem_counts[path.stem] = stem_counts.get(path.stem, 0) + 1
162
+ mapping: dict[Path, str] = {}
163
+ for path in yamls:
164
+ if stem_counts[path.stem] > 1:
165
+ dept = path.relative_to(base / "departments").parts[0]
166
+ mapping[path] = f"{dept}-{path.stem}"
167
+ else:
168
+ mapping[path] = path.stem
169
+ return mapping
170
+
171
+
141
172
  def build_escalation_index(base: Path) -> dict[str, str]:
142
173
  """Map every agent YAML id to a rendered escalation target.
143
174
 
144
- Deployed subagents (pilot slugs + hand-written) render as a backtick
145
- handle; everyone else renders by role and name — a handle that
146
- resolves to no deployed subagent is worse than no handle (QG B3).
175
+ Deployed subagents (catalog slugs + hand-written) render as a
176
+ backtick handle; anything else renders by role and name — a handle
177
+ that resolves to no deployed subagent is worse than no handle (QG B3).
147
178
  """
148
- deployed = {out.stem for _, out in pilot_targets(base)} | _HAND_WRITTEN
149
- slug_alias = {"tech-lead": "paulo-tech-lead"}
179
+ slug_map = _slug_map(base)
150
180
  index: dict[str, str] = {}
151
- for yaml_path in sorted(base.glob("departments/*/agents/*.yaml")):
181
+ for yaml_path in _catalog_yamls(base):
152
182
  try:
153
183
  data = yaml.safe_load(yaml_path.read_text(encoding="utf-8"))
154
184
  except Exception:
155
185
  continue
156
186
  if not isinstance(data, dict) or not data.get("id"):
157
187
  continue
158
- slug = slug_alias.get(yaml_path.stem, yaml_path.stem)
159
- if slug in deployed:
188
+ slug = _HAND_WRITTEN_STEMS.get(yaml_path.stem) or slug_map.get(yaml_path)
189
+ if slug:
160
190
  index[data["id"]] = f"`{slug}`"
161
191
  else:
162
192
  role = data.get("role", yaml_path.stem)
@@ -230,17 +260,19 @@ def compile_agent(
230
260
  return "\n\n".join(s for s in sections if s) + "\n"
231
261
 
232
262
 
233
- def pilot_targets(root: Path | None = None) -> list[tuple[Path, Path]]:
234
- """(yaml_path, output_path) pairs for the pilot scope."""
263
+ def catalog_targets(root: Path | None = None) -> list[tuple[Path, Path]]:
264
+ """(yaml_path, output_path) pairs for the full agent catalog.
265
+
266
+ Skips YAMLs whose runtime prompt is hand-written (_HAND_WRITTEN_STEMS);
267
+ slugs come from _slug_map (department-prefixed on stem collision).
268
+ """
235
269
  base = root or _ROOT
236
- pairs: list[tuple[Path, Path]] = []
237
- for rel in _PILOT_YAMLS:
238
- yaml_path = base / rel
239
- slug = yaml_path.stem
240
- if slug in _HAND_WRITTEN:
241
- continue
242
- pairs.append((yaml_path, base / "config" / "claude-agents" / f"{slug}.md"))
243
- return pairs
270
+ slug_map = _slug_map(base)
271
+ return [
272
+ (yaml_path, base / "config" / "claude-agents" / f"{slug}.md")
273
+ for yaml_path, slug in slug_map.items()
274
+ if slug not in _HAND_WRITTEN
275
+ ]
244
276
 
245
277
 
246
278
  def check(root: Path | None = None) -> list[str]:
@@ -248,7 +280,7 @@ def check(root: Path | None = None) -> list[str]:
248
280
  base = root or _ROOT
249
281
  index = build_escalation_index(base)
250
282
  problems: list[str] = []
251
- for yaml_path, out_path in pilot_targets(base):
283
+ for yaml_path, out_path in catalog_targets(base):
252
284
  expected = compile_agent(
253
285
  load_agent_yaml(yaml_path), out_path.stem,
254
286
  str(yaml_path.relative_to(base)), index,
@@ -263,11 +295,11 @@ def check(root: Path | None = None) -> list[str]:
263
295
 
264
296
 
265
297
  def write(root: Path | None = None) -> list[Path]:
266
- """(Re)generate every pilot agent; returns written paths."""
298
+ """(Re)generate every catalog agent; returns written paths."""
267
299
  base = root or _ROOT
268
300
  index = build_escalation_index(base)
269
301
  written: list[Path] = []
270
- for yaml_path, out_path in pilot_targets(base):
302
+ for yaml_path, out_path in catalog_targets(base):
271
303
  content = compile_agent(
272
304
  load_agent_yaml(yaml_path), out_path.stem,
273
305
  str(yaml_path.relative_to(base)), index,
@@ -1,7 +1,9 @@
1
- """Generate agents-registry.json from all agent YAML files.
1
+ """Generate agents-registry-v2.json from all agent YAML files.
2
2
 
3
- Scans departments/*/agents/*.yaml and produces a machine-readable
4
- registry with all agent metadata including behavioral DNA.
3
+ Scans departments/*/agents/*.yaml and produces the single canonical
4
+ machine-readable registry with all agent metadata including behavioral
5
+ DNA. The legacy knowledge/agents-registry.json (v1) was removed —
6
+ tests/python/test_registry_gen.py guards against its resurrection.
5
7
  """
6
8
 
7
9
  import json
@@ -12,7 +14,7 @@ from core.agents.loader import load_agent
12
14
 
13
15
 
14
16
  def generate_registry(departments_dir: str | Path, output_path: str | Path) -> dict:
15
- """Generate agents-registry.json from YAML agent files.
17
+ """Generate agents-registry-v2.json from YAML agent files.
16
18
 
17
19
  Args:
18
20
  departments_dir: Path to departments/ directory.
@@ -0,0 +1,19 @@
1
+ """Eval harness foundation (E2E audit v4.3.6 P2).
2
+
3
+ Reference eval tasks per department (config/evals/*.yaml) plus the
4
+ QG-verdict label log — the free labeled dataset every future eval run
5
+ or local-model distillation consumes.
6
+ """
7
+
8
+ from core.evals.schema import EvalTask, load_eval_tasks
9
+ from core.evals.verdict_labels import (
10
+ load_verdict_labels,
11
+ record_verdict_label,
12
+ )
13
+
14
+ __all__ = [
15
+ "EvalTask",
16
+ "load_eval_tasks",
17
+ "load_verdict_labels",
18
+ "record_verdict_label",
19
+ ]
@@ -0,0 +1,54 @@
1
+ """Eval task schema and loader.
2
+
3
+ Reference tasks live in ``config/evals/<department>.yaml`` — one YAML
4
+ list per department, versioned with the repo so evals evolve with the
5
+ agents they measure. See ADR 2026-07-09-evals-and-distillation.md.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from pathlib import Path
11
+
12
+ import yaml
13
+ from pydantic import BaseModel, Field
14
+
15
+ DEFAULT_EVALS_DIR = (
16
+ Path(__file__).resolve().parent.parent.parent / "config" / "evals"
17
+ )
18
+
19
+
20
+ class EvalTask(BaseModel):
21
+ """One reference task an agent/department run is judged against."""
22
+
23
+ id: str = Field(pattern=r"^[a-z0-9][a-z0-9-]*$")
24
+ department: str
25
+ prompt: str = Field(min_length=10)
26
+ expected_properties: list[str] = Field(
27
+ min_length=1,
28
+ description="Verifiable properties the deliverable must exhibit",
29
+ )
30
+ rubric: str = Field(
31
+ default="",
32
+ description="Free-text judging guidance beyond the properties",
33
+ )
34
+ tags: list[str] = Field(default_factory=list)
35
+
36
+
37
+ def load_eval_tasks(evals_dir: Path | None = None) -> list[EvalTask]:
38
+ """Load every task from config/evals/*.yaml, validated.
39
+
40
+ Raises on schema violations or duplicate ids — a broken eval set
41
+ must fail loudly, not skew results silently.
42
+ """
43
+ base = evals_dir or DEFAULT_EVALS_DIR
44
+ tasks: list[EvalTask] = []
45
+ seen: set[str] = set()
46
+ for path in sorted(base.glob("*.yaml")):
47
+ raw = yaml.safe_load(path.read_text(encoding="utf-8")) or []
48
+ for item in raw:
49
+ task = EvalTask.model_validate(item)
50
+ if task.id in seen:
51
+ raise ValueError(f"duplicate eval task id: {task.id}")
52
+ seen.add(task.id)
53
+ tasks.append(task)
54
+ return tasks