arkaos 4.7.0 → 4.8.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 (388) hide show
  1. package/VERSION +1 -1
  2. package/arka/SKILL.md +2 -2
  3. package/arka/skills/bootstrap-agent/SKILL.md +11 -7
  4. package/arka/skills/checkpoint/SKILL.md +10 -4
  5. package/arka/skills/comfyui/SKILL.md +11 -8
  6. package/arka/skills/conclave/SKILL.md +11 -3
  7. package/arka/skills/costs/SKILL.md +2 -3
  8. package/arka/skills/design-ops/SKILL.md +11 -5
  9. package/arka/skills/dreams/SKILL.md +10 -4
  10. package/arka/skills/flow/SKILL.md +1 -1
  11. package/arka/skills/forge/SKILL.md +6 -8
  12. package/arka/skills/fusion/SKILL.md +11 -7
  13. package/arka/skills/human-writing/SKILL.md +11 -13
  14. package/arka/skills/research/SKILL.md +8 -10
  15. package/bin/arka-py.ps1 +9 -2
  16. package/config/claude-agents/affiliate-manager.md +50 -0
  17. package/config/claude-agents/ai-engineering-lead.md +52 -0
  18. package/config/claude-agents/architect.md +1 -1
  19. package/config/claude-agents/automation-engineer.md +50 -0
  20. package/config/claude-agents/brand-director.md +51 -0
  21. package/config/claude-agents/brand-strategist.md +50 -0
  22. package/config/claude-agents/business-model-designer.md +50 -0
  23. package/config/claude-agents/cfo.md +50 -0
  24. package/config/claude-agents/chief-of-staff.md +51 -0
  25. package/config/claude-agents/commerce-engineer.md +50 -0
  26. package/config/claude-agents/community-manager.md +50 -0
  27. package/config/claude-agents/community-strategist.md +50 -0
  28. package/config/claude-agents/content-marketer.md +50 -0
  29. package/config/claude-agents/content-strategist.md +50 -0
  30. package/config/claude-agents/conversion-strategist.md +50 -0
  31. package/config/claude-agents/coo.md +50 -0
  32. package/config/claude-agents/cs-manager.md +50 -0
  33. package/config/claude-agents/cto.md +51 -0
  34. package/config/claude-agents/culture-coach.md +50 -0
  35. package/config/claude-agents/data-collector.md +50 -0
  36. package/config/claude-agents/decision-quality.md +51 -0
  37. package/config/claude-agents/design-ops-lead.md +51 -0
  38. package/config/claude-agents/devops-eng.md +1 -1
  39. package/config/claude-agents/doc-writer.md +50 -0
  40. package/config/claude-agents/ecom-cro-specialist.md +50 -0
  41. package/config/claude-agents/ecom-director.md +50 -0
  42. package/config/claude-agents/engagement-designer.md +50 -0
  43. package/config/claude-agents/etl-eng.md +52 -0
  44. package/config/claude-agents/extraction-script-writer.md +51 -0
  45. package/config/claude-agents/financial-analyst.md +49 -0
  46. package/config/claude-agents/growth-engineer.md +50 -0
  47. package/config/claude-agents/hr-specialist.md +50 -0
  48. package/config/claude-agents/investment-strategist.md +50 -0
  49. package/config/claude-agents/knowledge-curator.md +51 -0
  50. package/config/claude-agents/knowledge-director.md +51 -0
  51. package/config/claude-agents/landing-cro-specialist.md +50 -0
  52. package/config/claude-agents/laravel-eng.md +52 -0
  53. package/config/claude-agents/leadership-director.md +50 -0
  54. package/config/claude-agents/market-analyst.md +50 -0
  55. package/config/claude-agents/marketing-director.md +50 -0
  56. package/config/claude-agents/metrics-analyst.md +50 -0
  57. package/config/claude-agents/node-ts-eng.md +52 -0
  58. package/config/claude-agents/okr-steward.md +51 -0
  59. package/config/claude-agents/ops-lead.md +50 -0
  60. package/config/claude-agents/org-designer.md +49 -0
  61. package/config/claude-agents/paid-specialist.md +50 -0
  62. package/config/claude-agents/people-ops.md +50 -0
  63. package/config/claude-agents/pm-director.md +52 -0
  64. package/config/claude-agents/product-owner.md +52 -0
  65. package/config/claude-agents/python-eng.md +52 -0
  66. package/config/claude-agents/repurpose-distributor.md +50 -0
  67. package/config/claude-agents/research-analyst.md +50 -0
  68. package/config/claude-agents/retention-manager.md +50 -0
  69. package/config/claude-agents/revops-lead.md +51 -0
  70. package/config/claude-agents/saas-strategist.md +50 -0
  71. package/config/claude-agents/sales-closer.md +50 -0
  72. package/config/claude-agents/sales-copywriter.md +51 -0
  73. package/config/claude-agents/sales-director.md +50 -0
  74. package/config/claude-agents/sales-ops.md +49 -0
  75. package/config/claude-agents/scriptwriter.md +50 -0
  76. package/config/claude-agents/scrum-master.md +50 -0
  77. package/config/claude-agents/sdr.md +51 -0
  78. package/config/claude-agents/security-eng.md +1 -1
  79. package/config/claude-agents/seo-specialist.md +50 -0
  80. package/config/claude-agents/shadcn-padronizer.md +51 -0
  81. package/config/claude-agents/strategic-pm.md +51 -0
  82. package/config/claude-agents/strategy-director.md +51 -0
  83. package/config/claude-agents/ux-designer.md +50 -0
  84. package/config/claude-agents/ux-researcher.md +51 -0
  85. package/config/claude-agents/ux-strategist.md +51 -0
  86. package/config/claude-agents/viral-engineer.md +50 -0
  87. package/config/claude-agents/visual-designer.md +50 -0
  88. package/config/claude-agents/wcag-auditor.md +51 -0
  89. package/config/hooks/user-prompt-submit.sh +7 -0
  90. package/core/agents/__pycache__/behavioral_compiler.cpython-313.pyc +0 -0
  91. package/core/agents/behavioral_compiler.py +66 -34
  92. package/core/budget/__pycache__/__init__.cpython-314.pyc +0 -0
  93. package/core/budget/__pycache__/manager.cpython-314.pyc +0 -0
  94. package/core/budget/__pycache__/schema.cpython-314.pyc +0 -0
  95. package/core/forge/__pycache__/__init__.cpython-314.pyc +0 -0
  96. package/core/forge/__pycache__/complexity.cpython-314.pyc +0 -0
  97. package/core/forge/__pycache__/handoff.cpython-314.pyc +0 -0
  98. package/core/forge/__pycache__/orchestrator.cpython-314.pyc +0 -0
  99. package/core/forge/__pycache__/persistence.cpython-314.pyc +0 -0
  100. package/core/forge/__pycache__/renderer.cpython-314.pyc +0 -0
  101. package/core/forge/__pycache__/runtime_dispatcher.cpython-314.pyc +0 -0
  102. package/core/forge/__pycache__/schema.cpython-314.pyc +0 -0
  103. package/core/governance/__pycache__/agent_experiences.cpython-314.pyc +0 -0
  104. package/core/governance/__pycache__/compliance_telemetry_cli.cpython-313.pyc +0 -0
  105. package/core/governance/__pycache__/enforcement_telemetry_cli.cpython-313.pyc +0 -0
  106. package/core/governance/__pycache__/phantom_action_check.cpython-313.pyc +0 -0
  107. package/core/governance/__pycache__/phantom_action_check.cpython-314.pyc +0 -0
  108. package/core/governance/__pycache__/qg_verdict.cpython-313.pyc +0 -0
  109. package/core/governance/__pycache__/quality_api.cpython-314.pyc +0 -0
  110. package/core/governance/__pycache__/quality_router.cpython-314.pyc +0 -0
  111. package/core/governance/__pycache__/review_workflow.cpython-314.pyc +0 -0
  112. package/core/governance/phantom_action_check.py +19 -4
  113. package/core/hooks/__pycache__/user_prompt_submit.cpython-313.pyc +0 -0
  114. package/core/hooks/__pycache__/user_prompt_submit.cpython-314.pyc +0 -0
  115. package/core/hooks/user_prompt_submit.py +9 -2
  116. package/core/knowledge/__pycache__/__init__.cpython-314.pyc +0 -0
  117. package/core/knowledge/__pycache__/chunker.cpython-314.pyc +0 -0
  118. package/core/knowledge/__pycache__/embedder.cpython-314.pyc +0 -0
  119. package/core/knowledge/__pycache__/pattern_cards.cpython-314.pyc +0 -0
  120. package/core/knowledge/__pycache__/vector_store.cpython-314.pyc +0 -0
  121. package/core/memory/__pycache__/rehydrator.cpython-314.pyc +0 -0
  122. package/core/runtime/__pycache__/claude_code.cpython-313.pyc +0 -0
  123. package/core/runtime/__pycache__/claude_code.cpython-314.pyc +0 -0
  124. package/core/runtime/__pycache__/codex_cli.cpython-313.pyc +0 -0
  125. package/core/runtime/__pycache__/codex_cli.cpython-314.pyc +0 -0
  126. package/core/runtime/__pycache__/gemini_cli.cpython-313.pyc +0 -0
  127. package/core/runtime/__pycache__/gemini_cli.cpython-314.pyc +0 -0
  128. package/core/runtime/__pycache__/subagent.cpython-313.pyc +0 -0
  129. package/core/runtime/claude_code.py +2 -1
  130. package/core/runtime/codex_cli.py +2 -0
  131. package/core/runtime/gemini_cli.py +2 -0
  132. package/core/runtime/subagent.py +11 -170
  133. package/core/synapse/__pycache__/agent_experiences_layer.cpython-312.pyc +0 -0
  134. package/core/synapse/__pycache__/agent_experiences_layer.cpython-313.pyc +0 -0
  135. package/core/synapse/__pycache__/agent_experiences_layer.cpython-314.pyc +0 -0
  136. package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
  137. package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
  138. package/core/synapse/__pycache__/engine.cpython-314.pyc +0 -0
  139. package/core/synapse/__pycache__/graph_context_layer.cpython-313.pyc +0 -0
  140. package/core/synapse/__pycache__/graph_context_layer.cpython-314.pyc +0 -0
  141. package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
  142. package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
  143. package/core/synapse/__pycache__/layers.cpython-314.pyc +0 -0
  144. package/core/synapse/__pycache__/pattern_library_layer.cpython-313.pyc +0 -0
  145. package/core/synapse/__pycache__/pattern_library_layer.cpython-314.pyc +0 -0
  146. package/core/synapse/agent_experiences_layer.py +4 -0
  147. package/core/synapse/engine.py +9 -0
  148. package/core/synapse/graph_context_layer.py +4 -0
  149. package/core/synapse/layers.py +28 -0
  150. package/core/synapse/pattern_library_layer.py +4 -0
  151. package/core/workflow/__init__.py +5 -3
  152. package/core/workflow/__pycache__/__init__.cpython-313.pyc +0 -0
  153. package/core/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
  154. package/departments/brand/skills/archetype-finder/SKILL.md +7 -1
  155. package/departments/brand/skills/colors/SKILL.md +7 -1
  156. package/departments/brand/skills/design-system/SKILL.md +9 -2
  157. package/departments/brand/skills/identity-system/SKILL.md +8 -1
  158. package/departments/brand/skills/logo-brief/SKILL.md +7 -1
  159. package/departments/brand/skills/mockup-generate/SKILL.md +7 -1
  160. package/departments/brand/skills/naming-evaluate/SKILL.md +7 -1
  161. package/departments/brand/skills/positioning-statement/SKILL.md +8 -1
  162. package/departments/brand/skills/primal-audit/SKILL.md +7 -2
  163. package/departments/brand/skills/ux-audit/SKILL.md +8 -1
  164. package/departments/brand/skills/voice-guide/SKILL.md +8 -1
  165. package/departments/brand/skills/wireframe/SKILL.md +8 -1
  166. package/departments/community/skills/ai-community/SKILL.md +7 -1
  167. package/departments/community/skills/betting-setup/SKILL.md +7 -1
  168. package/departments/community/skills/business-model/SKILL.md +9 -2
  169. package/departments/community/skills/content-calendar/SKILL.md +8 -1
  170. package/departments/community/skills/events-plan/SKILL.md +7 -1
  171. package/departments/community/skills/gamification-design/SKILL.md +8 -1
  172. package/departments/community/skills/metrics-track/SKILL.md +8 -1
  173. package/departments/community/skills/moderation/SKILL.md +8 -1
  174. package/departments/community/skills/monetize-plan/SKILL.md +8 -1
  175. package/departments/community/skills/niche-setup/SKILL.md +9 -1
  176. package/departments/community/skills/onboarding-flow/SKILL.md +8 -1
  177. package/departments/community/skills/platform-select/SKILL.md +8 -1
  178. package/departments/community/skills/retention-system/SKILL.md +8 -2
  179. package/departments/content/skills/ai-workflow/SKILL.md +8 -1
  180. package/departments/content/skills/analytics/SKILL.md +8 -1
  181. package/departments/content/skills/calendar/SKILL.md +8 -1
  182. package/departments/content/skills/content-system/SKILL.md +8 -2
  183. package/departments/content/skills/hook-write/SKILL.md +8 -2
  184. package/departments/content/skills/monetization-plan/SKILL.md +8 -1
  185. package/departments/content/skills/newsletter-write/SKILL.md +7 -1
  186. package/departments/content/skills/platform-optimize/SKILL.md +9 -1
  187. package/departments/content/skills/repurpose-plan/SKILL.md +7 -1
  188. package/departments/content/skills/script-structure/SKILL.md +8 -1
  189. package/departments/content/skills/short-form/SKILL.md +8 -1
  190. package/departments/content/skills/thumbnail-package/SKILL.md +8 -1
  191. package/departments/content/skills/viral-design/SKILL.md +8 -2
  192. package/departments/content/skills/youtube-strategy/SKILL.md +9 -3
  193. package/departments/dev/skills/agent-design/SKILL.md +9 -2
  194. package/departments/dev/skills/agent-workflow/SKILL.md +9 -2
  195. package/departments/dev/skills/ai-assisted-dev/SKILL.md +7 -1
  196. package/departments/dev/skills/ai-security/SKILL.md +9 -2
  197. package/departments/dev/skills/api-design/SKILL.md +8 -2
  198. package/departments/dev/skills/app-test/SKILL.md +7 -3
  199. package/departments/dev/skills/architecture-design/SKILL.md +8 -2
  200. package/departments/dev/skills/changelog/SKILL.md +8 -1
  201. package/departments/dev/skills/ci-cd-pipeline/SKILL.md +7 -2
  202. package/departments/dev/skills/codebase-onboard/SKILL.md +8 -1
  203. package/departments/dev/skills/db-design/SKILL.md +8 -1
  204. package/departments/dev/skills/db-schema/SKILL.md +8 -2
  205. package/departments/dev/skills/ddd-model/SKILL.md +8 -1
  206. package/departments/dev/skills/demo-gif/SKILL.md +7 -3
  207. package/departments/dev/skills/dependency-audit/SKILL.md +8 -1
  208. package/departments/dev/skills/deploy/SKILL.md +8 -1
  209. package/departments/dev/skills/devops-pipeline/SKILL.md +8 -1
  210. package/departments/dev/skills/docs/SKILL.md +7 -1
  211. package/departments/dev/skills/env-secrets/SKILL.md +7 -1
  212. package/departments/dev/skills/incident/SKILL.md +8 -1
  213. package/departments/dev/skills/mcp/SKILL.md +8 -5
  214. package/departments/dev/skills/mcp-builder/SKILL.md +8 -2
  215. package/departments/dev/skills/observability/SKILL.md +8 -1
  216. package/departments/dev/skills/onboard/SKILL.md +8 -8
  217. package/departments/dev/skills/performance-audit/SKILL.md +8 -2
  218. package/departments/dev/skills/performance-profiler/SKILL.md +9 -2
  219. package/departments/dev/skills/rag-architect/SKILL.md +8 -2
  220. package/departments/dev/skills/red-team/SKILL.md +10 -1
  221. package/departments/dev/skills/refactor-plan/SKILL.md +8 -1
  222. package/departments/dev/skills/release/SKILL.md +8 -1
  223. package/departments/dev/skills/runbook/SKILL.md +8 -1
  224. package/departments/dev/skills/scaffold/SKILL.md +23 -16
  225. package/departments/dev/skills/security-audit/SKILL.md +9 -1
  226. package/departments/dev/skills/security-compliance/SKILL.md +8 -1
  227. package/departments/dev/skills/skill-audit/SKILL.md +9 -1
  228. package/departments/dev/skills/spec/SKILL.md +11 -14
  229. package/departments/dev/skills/stack-check/SKILL.md +8 -1
  230. package/departments/dev/skills/tdd-cycle/SKILL.md +8 -2
  231. package/departments/dev/skills/tech-debt/SKILL.md +8 -1
  232. package/departments/ecom/skills/analytics/SKILL.md +9 -1
  233. package/departments/ecom/skills/browse-competitor/SKILL.md +10 -3
  234. package/departments/ecom/skills/cart-recovery/SKILL.md +8 -1
  235. package/departments/ecom/skills/cro-optimize/SKILL.md +9 -2
  236. package/departments/ecom/skills/customer-journey/SKILL.md +8 -1
  237. package/departments/ecom/skills/ecommerce/SKILL.md +9 -8
  238. package/departments/ecom/skills/fulfillment-plan/SKILL.md +9 -1
  239. package/departments/ecom/skills/marketplace-manage/SKILL.md +9 -1
  240. package/departments/ecom/skills/pricing-strategy/SKILL.md +9 -1
  241. package/departments/ecom/skills/product-launch/SKILL.md +9 -3
  242. package/departments/ecom/skills/rfm-segment/SKILL.md +9 -2
  243. package/departments/ecom/skills/social-commerce/SKILL.md +8 -1
  244. package/departments/ecom/skills/store-audit/SKILL.md +9 -1
  245. package/departments/ecom/skills/subscription-model/SKILL.md +8 -1
  246. package/departments/finance/skills/budget-plan/SKILL.md +9 -1
  247. package/departments/finance/skills/cashflow-forecast/SKILL.md +9 -1
  248. package/departments/finance/skills/ciso-advisor/SKILL.md +9 -2
  249. package/departments/finance/skills/financial-model/SKILL.md +9 -2
  250. package/departments/finance/skills/pitch-deck/SKILL.md +9 -1
  251. package/departments/finance/skills/scenario-analysis/SKILL.md +8 -1
  252. package/departments/finance/skills/unit-economics/SKILL.md +9 -2
  253. package/departments/finance/skills/valuation-model/SKILL.md +9 -1
  254. package/departments/kb/skills/ai-research/SKILL.md +8 -1
  255. package/departments/kb/skills/competitive-intel/SKILL.md +8 -1
  256. package/departments/kb/skills/knowledge/SKILL.md +10 -9
  257. package/departments/kb/skills/knowledge-review/SKILL.md +7 -1
  258. package/departments/kb/skills/learn-content/SKILL.md +11 -1
  259. package/departments/kb/skills/moc-create/SKILL.md +7 -1
  260. package/departments/kb/skills/persona-build/SKILL.md +9 -4
  261. package/departments/kb/skills/research-plan/SKILL.md +9 -2
  262. package/departments/kb/skills/search-kb/SKILL.md +7 -1
  263. package/departments/kb/skills/source-evaluate/SKILL.md +8 -1
  264. package/departments/kb/skills/taxonomy-manage/SKILL.md +7 -1
  265. package/departments/kb/skills/write-as-persona/SKILL.md +8 -1
  266. package/departments/kb/skills/zettelkasten-process/SKILL.md +9 -2
  267. package/departments/landing/skills/ab-test/SKILL.md +7 -1
  268. package/departments/landing/skills/affiliate-bridge/SKILL.md +7 -1
  269. package/departments/landing/skills/awareness-diagnose/SKILL.md +8 -1
  270. package/departments/landing/skills/copy-framework/SKILL.md +7 -2
  271. package/departments/landing/skills/email-sequence/SKILL.md +7 -1
  272. package/departments/landing/skills/funnel-design/SKILL.md +8 -2
  273. package/departments/landing/skills/funnel-metrics/SKILL.md +7 -1
  274. package/departments/landing/skills/headline-write/SKILL.md +7 -1
  275. package/departments/landing/skills/landing-gen/SKILL.md +9 -3
  276. package/departments/landing/skills/launch-sequence/SKILL.md +7 -1
  277. package/departments/landing/skills/offer-create/SKILL.md +8 -2
  278. package/departments/landing/skills/optimize-page/SKILL.md +8 -1
  279. package/departments/landing/skills/page-architect/SKILL.md +7 -1
  280. package/departments/landing/skills/persuasion-apply/SKILL.md +9 -1
  281. package/departments/landing/skills/webinar-funnel/SKILL.md +8 -2
  282. package/departments/leadership/skills/change-manage/SKILL.md +8 -1
  283. package/departments/leadership/skills/conflict-resolve/SKILL.md +8 -1
  284. package/departments/leadership/skills/culture-audit/SKILL.md +7 -1
  285. package/departments/leadership/skills/delegation-matrix/SKILL.md +8 -1
  286. package/departments/leadership/skills/disc-assess/SKILL.md +8 -1
  287. package/departments/leadership/skills/feedback-give/SKILL.md +8 -1
  288. package/departments/leadership/skills/hiring-plan/SKILL.md +8 -1
  289. package/departments/leadership/skills/okr-define/SKILL.md +8 -2
  290. package/departments/leadership/skills/performance-review/SKILL.md +8 -1
  291. package/departments/leadership/skills/team-health/SKILL.md +8 -2
  292. package/departments/marketing/skills/ab-test/SKILL.md +7 -1
  293. package/departments/marketing/skills/analytics-report/SKILL.md +10 -1
  294. package/departments/marketing/skills/audience-segment/SKILL.md +8 -1
  295. package/departments/marketing/skills/calendar-plan/SKILL.md +8 -1
  296. package/departments/marketing/skills/cold-email/SKILL.md +8 -3
  297. package/departments/marketing/skills/competitor-analysis/SKILL.md +8 -1
  298. package/departments/marketing/skills/content-audit/SKILL.md +7 -1
  299. package/departments/marketing/skills/email-sequence/SKILL.md +9 -1
  300. package/departments/marketing/skills/marketing-automation/SKILL.md +7 -1
  301. package/departments/marketing/skills/paid-campaign/SKILL.md +8 -1
  302. package/departments/marketing/skills/programmatic-seo/SKILL.md +8 -3
  303. package/departments/marketing/skills/seo-audit/SKILL.md +8 -2
  304. package/departments/marketing/skills/social-strategy/SKILL.md +8 -1
  305. package/departments/ops/skills/bottleneck-find/SKILL.md +6 -2
  306. package/departments/ops/skills/dashboard-build/SKILL.md +7 -1
  307. package/departments/ops/skills/gdpr-compliance/SKILL.md +6 -1
  308. package/departments/ops/skills/gtd-setup/SKILL.md +6 -1
  309. package/departments/ops/skills/integration-design/SKILL.md +6 -1
  310. package/departments/ops/skills/iso27001/SKILL.md +7 -1
  311. package/departments/ops/skills/lean-audit/SKILL.md +6 -1
  312. package/departments/ops/skills/metrics-dashboard/SKILL.md +6 -1
  313. package/departments/ops/skills/n8n-flow/SKILL.md +6 -1
  314. package/departments/ops/skills/operations/SKILL.md +8 -8
  315. package/departments/ops/skills/quality-management/SKILL.md +6 -1
  316. package/departments/ops/skills/risk-management/SKILL.md +7 -1
  317. package/departments/ops/skills/soc2-compliance/SKILL.md +7 -1
  318. package/departments/ops/skills/sop-create/SKILL.md +6 -1
  319. package/departments/ops/skills/update/SKILL.md +8 -1
  320. package/departments/ops/skills/workflow-automate/SKILL.md +7 -2
  321. package/departments/ops/skills/zapier-flow/SKILL.md +6 -1
  322. package/departments/org/skills/compensation-plan/SKILL.md +7 -1
  323. package/departments/org/skills/culture-define/SKILL.md +8 -3
  324. package/departments/org/skills/decision-framework/SKILL.md +7 -1
  325. package/departments/org/skills/hiring-plan/SKILL.md +7 -1
  326. package/departments/org/skills/meeting-optimize/SKILL.md +7 -1
  327. package/departments/org/skills/okr-cadence/SKILL.md +7 -3
  328. package/departments/org/skills/onboarding-design/SKILL.md +7 -1
  329. package/departments/org/skills/org-design/SKILL.md +7 -1
  330. package/departments/org/skills/principles-audit/SKILL.md +8 -3
  331. package/departments/org/skills/remote-setup/SKILL.md +7 -1
  332. package/departments/org/skills/sop-process/SKILL.md +7 -1
  333. package/departments/org/skills/team-assess/SKILL.md +7 -1
  334. package/departments/pm/skills/agile-po/SKILL.md +10 -3
  335. package/departments/pm/skills/backlog-groom/SKILL.md +8 -1
  336. package/departments/pm/skills/discovery-plan/SKILL.md +10 -2
  337. package/departments/pm/skills/estimate-forecast/SKILL.md +9 -1
  338. package/departments/pm/skills/impact-map/SKILL.md +9 -1
  339. package/departments/pm/skills/kanban-setup/SKILL.md +7 -1
  340. package/departments/pm/skills/risk-register/SKILL.md +9 -1
  341. package/departments/pm/skills/roadmap-build/SKILL.md +10 -4
  342. package/departments/pm/skills/shape-pitch/SKILL.md +8 -2
  343. package/departments/pm/skills/sprint-plan/SKILL.md +8 -1
  344. package/departments/pm/skills/stakeholder-map/SKILL.md +7 -1
  345. package/departments/pm/skills/standup-run/SKILL.md +8 -1
  346. package/departments/pm/skills/story-write/SKILL.md +8 -1
  347. package/departments/saas/skills/benchmark-compare/SKILL.md +8 -1
  348. package/departments/saas/skills/churn-analysis/SKILL.md +8 -1
  349. package/departments/saas/skills/customer-success/SKILL.md +9 -1
  350. package/departments/saas/skills/gtm-strategy/SKILL.md +9 -3
  351. package/departments/saas/skills/launch-execute/SKILL.md +8 -1
  352. package/departments/saas/skills/leaky-bucket/SKILL.md +8 -3
  353. package/departments/saas/skills/metrics-dashboard/SKILL.md +8 -1
  354. package/departments/saas/skills/micro-saas-stack/SKILL.md +8 -1
  355. package/departments/saas/skills/mvp-build/SKILL.md +8 -1
  356. package/departments/saas/skills/onboarding-optimize/SKILL.md +9 -1
  357. package/departments/saas/skills/plg-setup/SKILL.md +9 -2
  358. package/departments/saas/skills/pricing-strategy/SKILL.md +9 -2
  359. package/departments/saas/skills/saas-scaffold/SKILL.md +8 -3
  360. package/departments/saas/skills/voc-loop/SKILL.md +10 -3
  361. package/departments/sales/skills/challenger-sell/SKILL.md +7 -1
  362. package/departments/sales/skills/deal-qualify/SKILL.md +7 -1
  363. package/departments/sales/skills/discovery-call/SKILL.md +6 -1
  364. package/departments/sales/skills/forecast-revenue/SKILL.md +7 -1
  365. package/departments/sales/skills/negotiate-plan/SKILL.md +7 -1
  366. package/departments/sales/skills/objection-handle/SKILL.md +7 -1
  367. package/departments/sales/skills/pipeline-manage/SKILL.md +7 -1
  368. package/departments/sales/skills/pricing-negotiate/SKILL.md +7 -1
  369. package/departments/sales/skills/proposal-write/SKILL.md +7 -2
  370. package/departments/sales/skills/spin-sell/SKILL.md +8 -2
  371. package/departments/strategy/skills/blue-ocean/SKILL.md +9 -2
  372. package/departments/strategy/skills/bmc/SKILL.md +8 -1
  373. package/departments/strategy/skills/board-advisor/SKILL.md +10 -2
  374. package/departments/strategy/skills/cto-advisor/SKILL.md +9 -2
  375. package/departments/strategy/skills/extract-data/SKILL.md +9 -3
  376. package/departments/strategy/skills/five-forces/SKILL.md +9 -2
  377. package/departments/strategy/skills/moat-analysis/SKILL.md +8 -1
  378. package/departments/strategy/skills/position/SKILL.md +10 -1
  379. package/departments/strategy/skills/premortem/SKILL.md +9 -3
  380. package/departments/strategy/skills/scenario-plan/SKILL.md +9 -1
  381. package/knowledge/commands-registry.json +3006 -1676
  382. package/knowledge/commands-registry.json.bak +4121 -0
  383. package/package.json +1 -1
  384. package/pyproject.toml +1 -1
  385. package/scripts/__pycache__/synapse-bridge.cpython-314.pyc +0 -0
  386. package/scripts/tools/__pycache__/prompt_lint.cpython-313.pyc +0 -0
  387. package/core/workflow/announcer.py +0 -246
  388. package/core/workflow/engine.py +0 -260
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkaos",
3
- "version": "4.7.0",
3
+ "version": "4.8.0",
4
4
  "description": "The Operating System for AI Agent Teams",
5
5
  "type": "module",
6
6
  "bin": {
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arkaos-core"
3
- version = "4.7.0"
3
+ version = "4.8.0"
4
4
  description = "Core engine for ArkaOS — The Operating System for AI Agent Teams"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -1,246 +0,0 @@
1
- """Phase announcement system for ArkaOS workflows.
2
-
3
- Provides structured, visible announcements for workflow phases
4
- enforcing the Constitution's "full visibility" rule.
5
-
6
- Format: [PHASE] Starting: {name} | [PHASE] Completed: {name} ({duration}ms)
7
- """
8
-
9
- import time
10
- from dataclasses import dataclass, field
11
- from typing import Callable
12
-
13
-
14
- @dataclass
15
- class Announcement:
16
- """A single announcement record."""
17
-
18
- phase_id: str
19
- phase_name: str
20
- event: str # "starting" | "completed" | "failed" | "blocked" | "skipped"
21
- duration_ms: int = 0
22
- metadata: dict = field(default_factory=dict)
23
- at: float = field(default_factory=time.time)
24
-
25
-
26
- class PhaseAnnouncer:
27
- """Manages phase announcements with structured output.
28
-
29
- Integrates with WorkflowEngine via on_visibility callback.
30
- Tracks all announcements for session summary generation.
31
- """
32
-
33
- def __init__(self, on_announce: Callable[[str], None] | None = None):
34
- """Initialize announcer.
35
-
36
- Args:
37
- on_announce: Callback to output announcement. Defaults to print.
38
- """
39
- self._on_announce = on_announce or print
40
- self._announcements: list[Announcement] = []
41
- self._phase_start_times: dict[str, float] = {}
42
-
43
- def starting(self, phase_id: str, phase_name: str, **metadata: str) -> None:
44
- """Announce phase starting.
45
-
46
- Args:
47
- phase_id: Unique phase identifier
48
- phase_name: Human-readable phase name
49
- **metadata: Additional context (agents, department, etc.)
50
- """
51
- self._phase_start_times[phase_id] = time.time()
52
- announcement = Announcement(
53
- phase_id=phase_id,
54
- phase_name=phase_name,
55
- event="starting",
56
- metadata=metadata,
57
- )
58
- self._announcements.append(announcement)
59
- self._emit(announcement)
60
-
61
- def completed(self, phase_id: str, phase_name: str, output: str = "", **metadata: str) -> int:
62
- """Announce phase completed.
63
-
64
- Args:
65
- phase_id: Unique phase identifier
66
- phase_name: Human-readable phase name
67
- output: Phase result summary
68
- **metadata: Additional context
69
-
70
- Returns:
71
- Duration in milliseconds
72
- """
73
- start_time = self._phase_start_times.pop(phase_id, time.time())
74
- duration_ms = int((time.time() - start_time) * 1000)
75
-
76
- announcement = Announcement(
77
- phase_id=phase_id,
78
- phase_name=phase_name,
79
- event="completed",
80
- duration_ms=duration_ms,
81
- metadata=metadata,
82
- )
83
- self._announcements.append(announcement)
84
- self._emit(announcement)
85
- return duration_ms
86
-
87
- def failed(self, phase_id: str, phase_name: str, reason: str = "") -> None:
88
- """Announce phase failed.
89
-
90
- Args:
91
- phase_id: Unique phase identifier
92
- phase_name: Human-readable phase name
93
- reason: Failure reason
94
- """
95
- announcement = Announcement(
96
- phase_id=phase_id,
97
- phase_name=phase_name,
98
- event="failed",
99
- metadata={"reason": reason} if reason else {},
100
- )
101
- self._announcements.append(announcement)
102
- self._emit(announcement)
103
-
104
- def blocked(self, phase_id: str, phase_name: str, reason: str = "") -> None:
105
- """Announce phase blocked.
106
-
107
- Args:
108
- phase_id: Unique phase identifier
109
- phase_name: Human-readable phase name
110
- reason: Block reason
111
- """
112
- announcement = Announcement(
113
- phase_id=phase_id,
114
- phase_name=phase_name,
115
- event="blocked",
116
- metadata={"reason": reason} if reason else {},
117
- )
118
- self._announcements.append(announcement)
119
- self._emit(announcement)
120
-
121
- def skipped(self, phase_id: str, phase_name: str, reason: str = "") -> None:
122
- """Announce phase skipped.
123
-
124
- Args:
125
- phase_id: Unique phase identifier
126
- phase_name: Human-readable phase name
127
- reason: Skip reason
128
- """
129
- announcement = Announcement(
130
- phase_id=phase_id,
131
- phase_name=phase_name,
132
- event="skipped",
133
- metadata={"reason": reason} if reason else {},
134
- )
135
- self._announcements.append(announcement)
136
- self._emit(announcement)
137
-
138
- def workflow_start(self, workflow_name: str, phase_count: int, tier: str) -> None:
139
- """Announce workflow starting.
140
-
141
- Args:
142
- workflow_name: Name of the workflow
143
- phase_count: Number of phases
144
- tier: Workflow tier
145
- """
146
- msg = f"[WORKFLOW] Starting: {workflow_name} ({phase_count} phases, tier: {tier})"
147
- self._on_announce(msg)
148
-
149
- def workflow_complete(self, workflow_name: str, total_duration_ms: int) -> None:
150
- """Announce workflow completed.
151
-
152
- Args:
153
- workflow_name: Name of the workflow
154
- total_duration_ms: Total execution time
155
- """
156
- msg = f"[WORKFLOW] Completed: {workflow_name} (total: {total_duration_ms}ms)"
157
- self._on_announce(msg)
158
-
159
- def _emit(self, announcement: Announcement) -> None:
160
- """Format and emit an announcement."""
161
- if announcement.event == "starting":
162
- agents = announcement.metadata.get("agents", "")
163
- msg = f"[PHASE] Starting: {announcement.phase_name}"
164
- if agents:
165
- msg += f" (agents: {agents})"
166
- elif announcement.event == "completed":
167
- msg = f"[PHASE] Completed: {announcement.phase_name} ({announcement.duration_ms}ms)"
168
- elif announcement.event == "failed":
169
- reason = announcement.metadata.get("reason", "")
170
- msg = f"[PHASE] Failed: {announcement.phase_name}"
171
- if reason:
172
- msg += f" — {reason}"
173
- elif announcement.event == "blocked":
174
- reason = announcement.metadata.get("reason", "")
175
- msg = f"[PHASE] Blocked: {announcement.phase_name}"
176
- if reason:
177
- msg += f" (waiting for: {reason})"
178
- elif announcement.event == "skipped":
179
- reason = announcement.metadata.get("reason", "")
180
- msg = f"[PHASE] Skipped: {announcement.phase_name}"
181
- if reason:
182
- msg += f" ({reason})"
183
- else:
184
- msg = f"[PHASE] {announcement.phase_name} — {announcement.event.upper()}"
185
-
186
- self._on_announce(msg)
187
-
188
- @property
189
- def announcements(self) -> list[Announcement]:
190
- """Get all announcements for this session."""
191
- return self._announcements.copy()
192
-
193
- def get_phase_announcements(
194
- self, phase_id: str
195
- ) -> tuple[Announcement | None, Announcement | None]:
196
- """Get start and completion announcements for a phase.
197
-
198
- Args:
199
- phase_id: The phase identifier
200
-
201
- Returns:
202
- Tuple of (starting_announcement, completed_announcement) or (None, None)
203
- """
204
- start_ann = None
205
- complete_ann = None
206
- for ann in self._announcements:
207
- if ann.phase_id == phase_id:
208
- if ann.event == "starting":
209
- start_ann = ann
210
- elif ann.event == "completed":
211
- complete_ann = ann
212
- return start_ann, complete_ann
213
-
214
- def validate_phase_completion(self, phase_id: str) -> bool:
215
- """Check if a phase has both start and completion announcements.
216
-
217
- Args:
218
- phase_id: The phase to validate
219
-
220
- Returns:
221
- True if phase has both starting and completed announcements
222
- """
223
- start_ann, complete_ann = self.get_phase_announcements(phase_id)
224
- return start_ann is not None and complete_ann is not None
225
-
226
- def get_total_duration_ms(self) -> int:
227
- """Calculate total duration across all completed phases.
228
-
229
- Returns:
230
- Total milliseconds
231
- """
232
- return sum(ann.duration_ms for ann in self._announcements if ann.event == "completed")
233
-
234
-
235
- def make_announcer(
236
- on_announce: Callable[[str], None] | None = None,
237
- ) -> PhaseAnnouncer:
238
- """Factory to create a PhaseAnnouncer.
239
-
240
- Args:
241
- on_announce: Optional output callback
242
-
243
- Returns:
244
- Configured PhaseAnnouncer instance
245
- """
246
- return PhaseAnnouncer(on_announce=on_announce)
@@ -1,260 +0,0 @@
1
- """Workflow execution engine.
2
-
3
- Executes workflows phase by phase, respecting gates, conditions,
4
- and agent assignments. Enforces the Constitution's sequential validation
5
- and full visibility rules.
6
- """
7
-
8
- from dataclasses import dataclass, field
9
- from typing import Optional, Callable, Any
10
-
11
- from core.workflow.schema import (
12
- Workflow, Phase, PhaseStatus, GateType, Gate,
13
- )
14
-
15
-
16
- @dataclass
17
- class PhaseResult:
18
- """Result of executing a single phase."""
19
- phase_id: str
20
- status: PhaseStatus
21
- output: str = ""
22
- agent_outputs: dict[str, str] = field(default_factory=dict)
23
- duration_ms: int = 0
24
-
25
-
26
- @dataclass
27
- class GateResult:
28
- """Result of evaluating a gate."""
29
- passed: bool
30
- gate_type: GateType
31
- message: str = ""
32
- verdict: str = ""
33
-
34
-
35
- class WorkflowEngine:
36
- """Executes YAML-defined workflows with phase gates and visibility.
37
-
38
- The engine enforces:
39
- 1. Sequential validation — Phase N+1 only starts after N completes
40
- 2. Full visibility — Every phase announces what's starting and what resulted
41
- 3. Quality Gate — Mandatory review before delivery
42
- 4. Gate evaluation — User approval, quality checks, or conditions
43
- """
44
-
45
- def __init__(
46
- self,
47
- on_phase_start: Optional[Callable[[Phase], None]] = None,
48
- on_phase_complete: Optional[Callable[[Phase, PhaseResult], None]] = None,
49
- on_gate_check: Optional[Callable[[Gate], GateResult]] = None,
50
- on_visibility: Optional[Callable[[str], None]] = None,
51
- budget_manager: Any = None,
52
- obsidian_writer: Any = None,
53
- ):
54
- """Initialize the workflow engine.
55
-
56
- Args:
57
- on_phase_start: Called when a phase begins execution.
58
- on_phase_complete: Called when a phase finishes.
59
- on_gate_check: Called to evaluate a gate. Must return GateResult.
60
- on_visibility: Called to announce status to the user.
61
- """
62
- self._on_phase_start = on_phase_start
63
- self._on_phase_complete = on_phase_complete
64
- self._on_gate_check = on_gate_check
65
- self._on_visibility = on_visibility
66
- self._budget_manager = budget_manager
67
- self._obsidian_writer = obsidian_writer
68
- self._history: list[PhaseResult] = []
69
-
70
- def announce(self, message: str) -> None:
71
- """Announce a status message (full visibility rule)."""
72
- if self._on_visibility:
73
- self._on_visibility(message)
74
-
75
- def execute(self, workflow: Workflow) -> list[PhaseResult]:
76
- """Execute a workflow from start to finish.
77
-
78
- Phases run sequentially. Each phase must complete and pass
79
- its gate before the next phase starts.
80
-
81
- Args:
82
- workflow: The workflow definition to execute.
83
-
84
- Returns:
85
- List of PhaseResults for each executed phase.
86
- """
87
- workflow.status = PhaseStatus.IN_PROGRESS
88
- results: list[PhaseResult] = []
89
-
90
- self.announce(
91
- f"Starting workflow: {workflow.name} "
92
- f"({len(workflow.phases)} phases, tier: {workflow.tier.value})"
93
- )
94
-
95
- for i, phase in enumerate(workflow.phases):
96
- # Check skip condition
97
- if phase.skip_if and self._evaluate_condition(phase.skip_if):
98
- phase.status = PhaseStatus.SKIPPED
99
- self.announce(f"Phase {i}: {phase.name} — SKIPPED (condition met)")
100
- results.append(PhaseResult(
101
- phase_id=phase.id,
102
- status=PhaseStatus.SKIPPED,
103
- output="Skipped: condition evaluated to true",
104
- ))
105
- continue
106
-
107
- # Check dependencies
108
- if phase.depends_on:
109
- unmet = [
110
- dep for dep in phase.depends_on
111
- if not self._is_phase_complete(workflow, dep)
112
- ]
113
- if unmet:
114
- phase.status = PhaseStatus.BLOCKED
115
- self.announce(
116
- f"Phase {i}: {phase.name} — BLOCKED "
117
- f"(waiting for: {', '.join(unmet)})"
118
- )
119
- results.append(PhaseResult(
120
- phase_id=phase.id,
121
- status=PhaseStatus.BLOCKED,
122
- output=f"Blocked by: {', '.join(unmet)}",
123
- ))
124
- continue
125
-
126
- # Execute phase
127
- self.announce(
128
- f"Phase {i}: {phase.name} — STARTING "
129
- f"(agents: {', '.join(a.agent_id for a in phase.agents)})"
130
- )
131
- phase.status = PhaseStatus.IN_PROGRESS
132
-
133
- if self._on_phase_start:
134
- self._on_phase_start(phase)
135
-
136
- result = self._execute_phase(phase)
137
- results.append(result)
138
-
139
- if result.status == PhaseStatus.FAILED:
140
- phase.status = PhaseStatus.FAILED
141
- workflow.status = PhaseStatus.FAILED
142
- self.announce(f"Phase {i}: {phase.name} — FAILED: {result.output}")
143
- break
144
-
145
- phase.status = PhaseStatus.COMPLETED
146
- phase.result = result.output
147
-
148
- if self._on_phase_complete:
149
- self._on_phase_complete(phase, result)
150
-
151
- # Save outputs to Obsidian vault (NON-NEGOTIABLE: obsidian-output)
152
- if self._obsidian_writer and hasattr(phase, "outputs"):
153
- for output in getattr(phase, "outputs", []):
154
- obsidian_path = getattr(output, "obsidian_path", "")
155
- if obsidian_path and result.output:
156
- try:
157
- saved = self._obsidian_writer.save(
158
- obsidian_path=obsidian_path,
159
- content=result.output,
160
- department=workflow.department,
161
- workflow=workflow.id,
162
- )
163
- self.announce(f"Saved to vault: {saved.name}")
164
- except Exception as e:
165
- self.announce(f"Vault save failed: {e}")
166
-
167
- self.announce(f"Phase {i}: {phase.name} — COMPLETED")
168
-
169
- # Evaluate gate
170
- gate_result = self._evaluate_gate(phase.gate)
171
- if not gate_result.passed:
172
- self.announce(
173
- f"Gate after Phase {i} — REJECTED: {gate_result.message}"
174
- )
175
- # Loop back: reset phase to pending for retry
176
- phase.status = PhaseStatus.PENDING
177
- results.append(PhaseResult(
178
- phase_id=f"{phase.id}_gate",
179
- status=PhaseStatus.FAILED,
180
- output=f"Gate rejected: {gate_result.message}",
181
- ))
182
- workflow.status = PhaseStatus.FAILED
183
- break
184
-
185
- if workflow.all_phases_complete():
186
- workflow.status = PhaseStatus.COMPLETED
187
- self.announce(f"Workflow {workflow.name} — COMPLETED")
188
-
189
- self._history.extend(results)
190
- return results
191
-
192
- def _execute_phase(self, phase: Phase) -> PhaseResult:
193
- """Execute a single phase.
194
-
195
- In the real implementation, this dispatches to agents via
196
- the runtime adapter. Here we return a placeholder result
197
- that the calling code fills in.
198
- """
199
- agent_ids = [a.agent_id for a in phase.agents]
200
- return PhaseResult(
201
- phase_id=phase.id,
202
- status=PhaseStatus.COMPLETED,
203
- output=f"Phase {phase.name} executed by {', '.join(agent_ids)}",
204
- agent_outputs={a.agent_id: "completed" for a in phase.agents},
205
- )
206
-
207
- def _evaluate_gate(self, gate: Gate) -> GateResult:
208
- """Evaluate a phase gate."""
209
- if gate.type == GateType.AUTO:
210
- return GateResult(passed=True, gate_type=GateType.AUTO, message="Auto-pass")
211
-
212
- if gate.type == GateType.BUDGET_CHECK and self._budget_manager:
213
- return self._evaluate_budget_gate(gate)
214
-
215
- if self._on_gate_check:
216
- return self._on_gate_check(gate)
217
-
218
- # Default: pass
219
- return GateResult(passed=True, gate_type=gate.type, message="Default pass")
220
-
221
- def _evaluate_budget_gate(self, gate: Gate) -> GateResult:
222
- """Evaluate a budget gate using the budget manager."""
223
- # Default tier for budget checks (can be overridden via gate metadata)
224
- tier = 2
225
- estimated_tokens = 50_000 # Default estimate per phase
226
-
227
- if self._budget_manager.check_budget(tier, estimated_tokens):
228
- needs_approval = self._budget_manager.needs_approval(tier)
229
- msg = "Budget OK"
230
- if needs_approval:
231
- msg = "Budget OK (>80% used — Tier 0 notified)"
232
- self.announce(f"Budget warning: tier {tier} at >80% monthly usage")
233
- return GateResult(passed=True, gate_type=GateType.BUDGET_CHECK, message=msg)
234
-
235
- summary = self._budget_manager.get_summary(tier)
236
- return GateResult(
237
- passed=False,
238
- gate_type=GateType.BUDGET_CHECK,
239
- message=f"Budget exceeded: {summary.used}/{summary.allocated} tokens used ({summary.percent_used}%). Needs Tier 0 approval.",
240
- )
241
-
242
- def _evaluate_condition(self, condition: str) -> bool:
243
- """Evaluate a skip/branch condition.
244
-
245
- For safety, only evaluates simple boolean expressions.
246
- """
247
- # In production, this would evaluate against workflow context
248
- return False
249
-
250
- def _is_phase_complete(self, workflow: Workflow, phase_id: str) -> bool:
251
- """Check if a specific phase is complete."""
252
- phase = workflow.get_phase_by_id(phase_id)
253
- if phase is None:
254
- return False
255
- return phase.status in (PhaseStatus.COMPLETED, PhaseStatus.SKIPPED)
256
-
257
- @property
258
- def history(self) -> list[PhaseResult]:
259
- """Get the execution history."""
260
- return self._history