arkaos 2.0.0-alpha.1

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 (486) hide show
  1. package/CONSTITUTION.md +81 -0
  2. package/LICENSE +21 -0
  3. package/README.md +154 -0
  4. package/VERSION +1 -0
  5. package/arka/SKILL.md +134 -0
  6. package/bin/arkaos +107 -0
  7. package/config/constitution.yaml +168 -0
  8. package/config/hooks/post-tool-use-v2.sh +116 -0
  9. package/config/hooks/post-tool-use.sh +188 -0
  10. package/config/hooks/pre-compact-v2.sh +43 -0
  11. package/config/hooks/pre-compact.sh +99 -0
  12. package/config/hooks/user-prompt-submit-v2.sh +119 -0
  13. package/config/hooks/user-prompt-submit.sh +312 -0
  14. package/core/__init__.py +3 -0
  15. package/core/__pycache__/__init__.cpython-313.pyc +0 -0
  16. package/core/agents/__init__.py +14 -0
  17. package/core/agents/__pycache__/__init__.cpython-313.pyc +0 -0
  18. package/core/agents/__pycache__/loader.cpython-313.pyc +0 -0
  19. package/core/agents/__pycache__/registry_gen.cpython-313.pyc +0 -0
  20. package/core/agents/__pycache__/schema.cpython-313.pyc +0 -0
  21. package/core/agents/__pycache__/validator.cpython-313.pyc +0 -0
  22. package/core/agents/loader.py +88 -0
  23. package/core/agents/registry_gen.py +118 -0
  24. package/core/agents/schema.py +265 -0
  25. package/core/agents/validator.py +141 -0
  26. package/core/conclave/__init__.py +12 -0
  27. package/core/conclave/__pycache__/__init__.cpython-313.pyc +0 -0
  28. package/core/conclave/__pycache__/advisor_db.cpython-313.pyc +0 -0
  29. package/core/conclave/__pycache__/display.cpython-313.pyc +0 -0
  30. package/core/conclave/__pycache__/matcher.cpython-313.pyc +0 -0
  31. package/core/conclave/__pycache__/persistence.cpython-313.pyc +0 -0
  32. package/core/conclave/__pycache__/profiler.cpython-313.pyc +0 -0
  33. package/core/conclave/__pycache__/prompts.cpython-313.pyc +0 -0
  34. package/core/conclave/__pycache__/schema.cpython-313.pyc +0 -0
  35. package/core/conclave/advisor_db.py +373 -0
  36. package/core/conclave/display.py +104 -0
  37. package/core/conclave/matcher.py +104 -0
  38. package/core/conclave/persistence.py +61 -0
  39. package/core/conclave/profiler.py +298 -0
  40. package/core/conclave/prompts.py +77 -0
  41. package/core/conclave/schema.py +132 -0
  42. package/core/governance/__init__.py +5 -0
  43. package/core/governance/__pycache__/__init__.cpython-313.pyc +0 -0
  44. package/core/governance/__pycache__/constitution.cpython-313.pyc +0 -0
  45. package/core/governance/constitution.py +152 -0
  46. package/core/registry/__init__.py +1 -0
  47. package/core/registry/__pycache__/__init__.cpython-313.pyc +0 -0
  48. package/core/registry/__pycache__/generator.cpython-313.pyc +0 -0
  49. package/core/registry/generator.py +199 -0
  50. package/core/runtime/__init__.py +6 -0
  51. package/core/runtime/__pycache__/__init__.cpython-313.pyc +0 -0
  52. package/core/runtime/__pycache__/base.cpython-313.pyc +0 -0
  53. package/core/runtime/__pycache__/claude_code.cpython-313.pyc +0 -0
  54. package/core/runtime/__pycache__/codex_cli.cpython-313.pyc +0 -0
  55. package/core/runtime/__pycache__/cursor.cpython-313.pyc +0 -0
  56. package/core/runtime/__pycache__/gemini_cli.cpython-313.pyc +0 -0
  57. package/core/runtime/__pycache__/registry.cpython-313.pyc +0 -0
  58. package/core/runtime/__pycache__/subagent.cpython-313.pyc +0 -0
  59. package/core/runtime/base.py +143 -0
  60. package/core/runtime/claude_code.py +104 -0
  61. package/core/runtime/codex_cli.py +71 -0
  62. package/core/runtime/cursor.py +71 -0
  63. package/core/runtime/gemini_cli.py +68 -0
  64. package/core/runtime/registry.py +86 -0
  65. package/core/runtime/subagent.py +201 -0
  66. package/core/specs/__init__.py +10 -0
  67. package/core/specs/__pycache__/__init__.cpython-313.pyc +0 -0
  68. package/core/specs/__pycache__/manager.cpython-313.pyc +0 -0
  69. package/core/specs/__pycache__/schema.cpython-313.pyc +0 -0
  70. package/core/specs/manager.py +164 -0
  71. package/core/specs/schema.py +199 -0
  72. package/core/squads/__init__.py +7 -0
  73. package/core/squads/__pycache__/__init__.cpython-313.pyc +0 -0
  74. package/core/squads/__pycache__/loader.cpython-313.pyc +0 -0
  75. package/core/squads/__pycache__/registry.cpython-313.pyc +0 -0
  76. package/core/squads/__pycache__/schema.cpython-313.pyc +0 -0
  77. package/core/squads/loader.py +40 -0
  78. package/core/squads/registry.py +145 -0
  79. package/core/squads/schema.py +93 -0
  80. package/core/synapse/__init__.py +11 -0
  81. package/core/synapse/__pycache__/__init__.cpython-313.pyc +0 -0
  82. package/core/synapse/__pycache__/cache.cpython-313.pyc +0 -0
  83. package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
  84. package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
  85. package/core/synapse/cache.py +82 -0
  86. package/core/synapse/engine.py +184 -0
  87. package/core/synapse/layers.py +441 -0
  88. package/core/tasks/__init__.py +6 -0
  89. package/core/tasks/__pycache__/__init__.cpython-313.pyc +0 -0
  90. package/core/tasks/__pycache__/manager.cpython-313.pyc +0 -0
  91. package/core/tasks/__pycache__/schema.cpython-313.pyc +0 -0
  92. package/core/tasks/manager.py +150 -0
  93. package/core/tasks/schema.py +108 -0
  94. package/core/workflow/__init__.py +10 -0
  95. package/core/workflow/__pycache__/__init__.cpython-313.pyc +0 -0
  96. package/core/workflow/__pycache__/engine.cpython-313.pyc +0 -0
  97. package/core/workflow/__pycache__/loader.cpython-313.pyc +0 -0
  98. package/core/workflow/__pycache__/schema.cpython-313.pyc +0 -0
  99. package/core/workflow/engine.py +216 -0
  100. package/core/workflow/loader.py +28 -0
  101. package/core/workflow/schema.py +129 -0
  102. package/departments/brand/SKILL.md +85 -0
  103. package/departments/brand/agents/brand-director.yaml +77 -0
  104. package/departments/brand/agents/brand-strategist.md +182 -0
  105. package/departments/brand/agents/brand-strategist.yaml +58 -0
  106. package/departments/brand/agents/creative-director.md +149 -0
  107. package/departments/brand/agents/motion-designer.md +113 -0
  108. package/departments/brand/agents/ux-designer.yaml +60 -0
  109. package/departments/brand/agents/visual-designer.md +187 -0
  110. package/departments/brand/agents/visual-designer.yaml +58 -0
  111. package/departments/brand/references/brand-creation-guide.md +559 -0
  112. package/departments/brand/scripts/provider-call.sh +262 -0
  113. package/departments/brand/skills/archetype-finder/SKILL.md +18 -0
  114. package/departments/brand/skills/colors/SKILL.md +18 -0
  115. package/departments/brand/skills/design-system/SKILL.md +18 -0
  116. package/departments/brand/skills/identity-system/SKILL.md +18 -0
  117. package/departments/brand/skills/logo-brief/SKILL.md +18 -0
  118. package/departments/brand/skills/mockup-generate/SKILL.md +18 -0
  119. package/departments/brand/skills/naming-evaluate/SKILL.md +50 -0
  120. package/departments/brand/skills/positioning-statement/SKILL.md +18 -0
  121. package/departments/brand/skills/primal-audit/SKILL.md +43 -0
  122. package/departments/brand/skills/ux-audit/SKILL.md +18 -0
  123. package/departments/brand/skills/voice-guide/SKILL.md +18 -0
  124. package/departments/brand/skills/wireframe/SKILL.md +18 -0
  125. package/departments/brand/squad.yaml +39 -0
  126. package/departments/brand/workflows/identity.yaml +113 -0
  127. package/departments/brand/workflows/naming.yaml +58 -0
  128. package/departments/community/SKILL.md +62 -0
  129. package/departments/community/agents/community-manager.yaml +57 -0
  130. package/departments/community/agents/community-strategist.yaml +74 -0
  131. package/departments/community/agents/engagement-designer.yaml +56 -0
  132. package/departments/community/skills/ai-community/SKILL.md +18 -0
  133. package/departments/community/skills/betting-setup/SKILL.md +18 -0
  134. package/departments/community/skills/business-model/SKILL.md +53 -0
  135. package/departments/community/skills/content-calendar/SKILL.md +18 -0
  136. package/departments/community/skills/events-plan/SKILL.md +18 -0
  137. package/departments/community/skills/gamification-design/SKILL.md +18 -0
  138. package/departments/community/skills/growth-plan/SKILL.md +18 -0
  139. package/departments/community/skills/metrics-track/SKILL.md +18 -0
  140. package/departments/community/skills/moderation/SKILL.md +18 -0
  141. package/departments/community/skills/monetize-plan/SKILL.md +18 -0
  142. package/departments/community/skills/niche-setup/SKILL.md +18 -0
  143. package/departments/community/skills/onboarding-flow/SKILL.md +18 -0
  144. package/departments/community/skills/platform-select/SKILL.md +18 -0
  145. package/departments/community/skills/retention-system/SKILL.md +48 -0
  146. package/departments/community/squad.yaml +32 -0
  147. package/departments/community/workflows/setup.yaml +62 -0
  148. package/departments/content/SKILL.md +65 -0
  149. package/departments/content/agents/content-strategist.yaml +74 -0
  150. package/departments/content/agents/repurpose-distributor.yaml +57 -0
  151. package/departments/content/agents/scriptwriter.yaml +56 -0
  152. package/departments/content/agents/viral-engineer.yaml +56 -0
  153. package/departments/content/skills/ai-workflow/SKILL.md +18 -0
  154. package/departments/content/skills/analytics/SKILL.md +18 -0
  155. package/departments/content/skills/calendar/SKILL.md +18 -0
  156. package/departments/content/skills/content-system/SKILL.md +75 -0
  157. package/departments/content/skills/hook-write/SKILL.md +43 -0
  158. package/departments/content/skills/monetization-plan/SKILL.md +18 -0
  159. package/departments/content/skills/newsletter-write/SKILL.md +18 -0
  160. package/departments/content/skills/platform-optimize/SKILL.md +18 -0
  161. package/departments/content/skills/repurpose-plan/SKILL.md +18 -0
  162. package/departments/content/skills/script-structure/SKILL.md +18 -0
  163. package/departments/content/skills/short-form/SKILL.md +18 -0
  164. package/departments/content/skills/thumbnail-package/SKILL.md +18 -0
  165. package/departments/content/skills/viral-design/SKILL.md +45 -0
  166. package/departments/content/skills/youtube-strategy/SKILL.md +18 -0
  167. package/departments/content/squad.yaml +39 -0
  168. package/departments/content/workflows/viral.yaml +99 -0
  169. package/departments/dev/SKILL.md +135 -0
  170. package/departments/dev/agents/analyst.md +184 -0
  171. package/departments/dev/agents/architect.md +184 -0
  172. package/departments/dev/agents/architect.yaml +74 -0
  173. package/departments/dev/agents/backend-dev.yaml +70 -0
  174. package/departments/dev/agents/cto.md +140 -0
  175. package/departments/dev/agents/cto.yaml +77 -0
  176. package/departments/dev/agents/dba.yaml +72 -0
  177. package/departments/dev/agents/devops-eng.yaml +72 -0
  178. package/departments/dev/agents/devops.md +204 -0
  179. package/departments/dev/agents/frontend-dev.md +213 -0
  180. package/departments/dev/agents/frontend-dev.yaml +71 -0
  181. package/departments/dev/agents/qa-eng.yaml +72 -0
  182. package/departments/dev/agents/qa.md +231 -0
  183. package/departments/dev/agents/security-eng.yaml +72 -0
  184. package/departments/dev/agents/security.md +174 -0
  185. package/departments/dev/agents/senior-dev.md +177 -0
  186. package/departments/dev/agents/tech-lead.md +188 -0
  187. package/departments/dev/agents/tech-lead.yaml +72 -0
  188. package/departments/dev/skills/adversarial-review/SKILL.md +117 -0
  189. package/departments/dev/skills/agent-design/SKILL.md +127 -0
  190. package/departments/dev/skills/agent-workflow/SKILL.md +116 -0
  191. package/departments/dev/skills/ai-assisted-dev/SKILL.md +18 -0
  192. package/departments/dev/skills/ai-security/SKILL.md +112 -0
  193. package/departments/dev/skills/api-design/SKILL.md +59 -0
  194. package/departments/dev/skills/architecture-design/SKILL.md +89 -0
  195. package/departments/dev/skills/changelog/SKILL.md +110 -0
  196. package/departments/dev/skills/ci-cd-pipeline/SKILL.md +130 -0
  197. package/departments/dev/skills/clean-code-review/SKILL.md +65 -0
  198. package/departments/dev/skills/code-review/SKILL.md +18 -0
  199. package/departments/dev/skills/codebase-onboard/SKILL.md +109 -0
  200. package/departments/dev/skills/db-design/SKILL.md +18 -0
  201. package/departments/dev/skills/db-schema/SKILL.md +130 -0
  202. package/departments/dev/skills/ddd-model/SKILL.md +18 -0
  203. package/departments/dev/skills/dependency-audit/SKILL.md +118 -0
  204. package/departments/dev/skills/deploy/SKILL.md +18 -0
  205. package/departments/dev/skills/devops-pipeline/SKILL.md +18 -0
  206. package/departments/dev/skills/docs/SKILL.md +18 -0
  207. package/departments/dev/skills/env-secrets/SKILL.md +89 -0
  208. package/departments/dev/skills/incident/SKILL.md +125 -0
  209. package/departments/dev/skills/mcp/SKILL.md +106 -0
  210. package/departments/dev/skills/mcp-builder/SKILL.md +121 -0
  211. package/departments/dev/skills/observability/SKILL.md +119 -0
  212. package/departments/dev/skills/onboard/SKILL.md +389 -0
  213. package/departments/dev/skills/onboard/scripts/detect-stack.py +472 -0
  214. package/departments/dev/skills/performance-audit/SKILL.md +49 -0
  215. package/departments/dev/skills/performance-profiler/SKILL.md +128 -0
  216. package/departments/dev/skills/rag-architect/SKILL.md +125 -0
  217. package/departments/dev/skills/red-team/SKILL.md +112 -0
  218. package/departments/dev/skills/refactor-plan/SKILL.md +18 -0
  219. package/departments/dev/skills/release/SKILL.md +130 -0
  220. package/departments/dev/skills/research/SKILL.md +18 -0
  221. package/departments/dev/skills/runbook/SKILL.md +103 -0
  222. package/departments/dev/skills/scaffold/SKILL.md +249 -0
  223. package/departments/dev/skills/security-audit/SKILL.md +68 -0
  224. package/departments/dev/skills/skill-audit/SKILL.md +96 -0
  225. package/departments/dev/skills/spec/SKILL.md +218 -0
  226. package/departments/dev/skills/stack-check/SKILL.md +18 -0
  227. package/departments/dev/skills/tdd-cycle/SKILL.md +56 -0
  228. package/departments/dev/skills/tech-debt/SKILL.md +100 -0
  229. package/departments/dev/squad.yaml +62 -0
  230. package/departments/dev/workflows/debug.yaml +63 -0
  231. package/departments/dev/workflows/feature.yaml +129 -0
  232. package/departments/dev/workflows/refactor.yaml +64 -0
  233. package/departments/ecom/SKILL.md +39 -0
  234. package/departments/ecom/agents/commerce-engineer.yaml +58 -0
  235. package/departments/ecom/agents/cro-specialist.yaml +56 -0
  236. package/departments/ecom/agents/ecom-director.yaml +73 -0
  237. package/departments/ecom/agents/retention-manager.yaml +59 -0
  238. package/departments/ecom/skills/analytics/SKILL.md +18 -0
  239. package/departments/ecom/skills/cart-recovery/SKILL.md +18 -0
  240. package/departments/ecom/skills/cro-optimize/SKILL.md +58 -0
  241. package/departments/ecom/skills/customer-journey/SKILL.md +18 -0
  242. package/departments/ecom/skills/fulfillment-plan/SKILL.md +18 -0
  243. package/departments/ecom/skills/marketplace-manage/SKILL.md +18 -0
  244. package/departments/ecom/skills/pricing-strategy/SKILL.md +18 -0
  245. package/departments/ecom/skills/product-launch/SKILL.md +18 -0
  246. package/departments/ecom/skills/rfm-segment/SKILL.md +44 -0
  247. package/departments/ecom/skills/social-commerce/SKILL.md +18 -0
  248. package/departments/ecom/skills/store-audit/SKILL.md +18 -0
  249. package/departments/ecom/skills/subscription-model/SKILL.md +18 -0
  250. package/departments/ecom/squad.yaml +39 -0
  251. package/departments/ecom/workflows/product-page.yaml +62 -0
  252. package/departments/ecommerce/SKILL.md +363 -0
  253. package/departments/ecommerce/agents/ecommerce-manager.md +91 -0
  254. package/departments/finance/SKILL.md +37 -0
  255. package/departments/finance/agents/cfo.md +85 -0
  256. package/departments/finance/agents/cfo.yaml +77 -0
  257. package/departments/finance/agents/financial-analyst.yaml +57 -0
  258. package/departments/finance/agents/investment-strategist.yaml +58 -0
  259. package/departments/finance/skills/budget-plan/SKILL.md +18 -0
  260. package/departments/finance/skills/cashflow-forecast/SKILL.md +18 -0
  261. package/departments/finance/skills/ciso-advisor/SKILL.md +113 -0
  262. package/departments/finance/skills/financial-model/SKILL.md +70 -0
  263. package/departments/finance/skills/pitch-deck/SKILL.md +18 -0
  264. package/departments/finance/skills/scenario-analysis/SKILL.md +18 -0
  265. package/departments/finance/skills/unit-economics/SKILL.md +44 -0
  266. package/departments/finance/skills/valuation-model/SKILL.md +18 -0
  267. package/departments/finance/squad.yaml +37 -0
  268. package/departments/finance/workflows/cashflow.yaml +47 -0
  269. package/departments/finance/workflows/model.yaml +83 -0
  270. package/departments/kb/SKILL.md +38 -0
  271. package/departments/kb/agents/knowledge-curator.yaml +60 -0
  272. package/departments/kb/agents/knowledge-director.yaml +72 -0
  273. package/departments/kb/agents/research-analyst.yaml +58 -0
  274. package/departments/kb/skills/ai-research/SKILL.md +18 -0
  275. package/departments/kb/skills/competitive-intel/SKILL.md +18 -0
  276. package/departments/kb/skills/knowledge-review/SKILL.md +18 -0
  277. package/departments/kb/skills/learn-content/SKILL.md +18 -0
  278. package/departments/kb/skills/moc-create/SKILL.md +18 -0
  279. package/departments/kb/skills/persona-build/SKILL.md +18 -0
  280. package/departments/kb/skills/research-plan/SKILL.md +51 -0
  281. package/departments/kb/skills/search-kb/SKILL.md +18 -0
  282. package/departments/kb/skills/source-evaluate/SKILL.md +18 -0
  283. package/departments/kb/skills/taxonomy-manage/SKILL.md +18 -0
  284. package/departments/kb/skills/write-as-persona/SKILL.md +18 -0
  285. package/departments/kb/skills/zettelkasten-process/SKILL.md +56 -0
  286. package/departments/kb/squad.yaml +34 -0
  287. package/departments/kb/workflows/learn.yaml +63 -0
  288. package/departments/knowledge/SKILL.md +474 -0
  289. package/departments/knowledge/agents/knowledge-curator.md +89 -0
  290. package/departments/knowledge/scripts/kb-check-capabilities.sh +143 -0
  291. package/departments/knowledge/scripts/kb-cleanup.sh +135 -0
  292. package/departments/knowledge/scripts/kb-queue.sh +156 -0
  293. package/departments/knowledge/scripts/kb-status.sh +195 -0
  294. package/departments/knowledge/scripts/kb-worker.sh +217 -0
  295. package/departments/landing/SKILL.md +65 -0
  296. package/departments/landing/agents/affiliate-manager.yaml +57 -0
  297. package/departments/landing/agents/conversion-strategist.yaml +74 -0
  298. package/departments/landing/agents/cro-specialist.yaml +58 -0
  299. package/departments/landing/agents/sales-copywriter.yaml +61 -0
  300. package/departments/landing/skills/ab-test/SKILL.md +18 -0
  301. package/departments/landing/skills/affiliate-bridge/SKILL.md +18 -0
  302. package/departments/landing/skills/awareness-diagnose/SKILL.md +18 -0
  303. package/departments/landing/skills/copy-framework/SKILL.md +55 -0
  304. package/departments/landing/skills/email-sequence/SKILL.md +18 -0
  305. package/departments/landing/skills/funnel-design/SKILL.md +49 -0
  306. package/departments/landing/skills/funnel-metrics/SKILL.md +18 -0
  307. package/departments/landing/skills/headline-write/SKILL.md +18 -0
  308. package/departments/landing/skills/landing-gen/SKILL.md +124 -0
  309. package/departments/landing/skills/launch-sequence/SKILL.md +18 -0
  310. package/departments/landing/skills/offer-create/SKILL.md +62 -0
  311. package/departments/landing/skills/optimize-page/SKILL.md +18 -0
  312. package/departments/landing/skills/page-architect/SKILL.md +18 -0
  313. package/departments/landing/skills/persuasion-apply/SKILL.md +18 -0
  314. package/departments/landing/skills/webinar-funnel/SKILL.md +18 -0
  315. package/departments/landing/squad.yaml +39 -0
  316. package/departments/landing/workflows/launch.yaml +72 -0
  317. package/departments/landing/workflows/offer.yaml +99 -0
  318. package/departments/leadership/SKILL.md +35 -0
  319. package/departments/leadership/agents/culture-coach.yaml +59 -0
  320. package/departments/leadership/agents/hr-specialist.yaml +57 -0
  321. package/departments/leadership/agents/leadership-director.yaml +72 -0
  322. package/departments/leadership/skills/change-manage/SKILL.md +18 -0
  323. package/departments/leadership/skills/conflict-resolve/SKILL.md +18 -0
  324. package/departments/leadership/skills/culture-audit/SKILL.md +18 -0
  325. package/departments/leadership/skills/delegation-matrix/SKILL.md +18 -0
  326. package/departments/leadership/skills/disc-assess/SKILL.md +18 -0
  327. package/departments/leadership/skills/feedback-give/SKILL.md +18 -0
  328. package/departments/leadership/skills/hiring-plan/SKILL.md +18 -0
  329. package/departments/leadership/skills/okr-define/SKILL.md +69 -0
  330. package/departments/leadership/skills/performance-review/SKILL.md +18 -0
  331. package/departments/leadership/skills/team-health/SKILL.md +56 -0
  332. package/departments/leadership/squad.yaml +35 -0
  333. package/departments/leadership/workflows/team-build.yaml +55 -0
  334. package/departments/marketing/SKILL.md +61 -0
  335. package/departments/marketing/agents/content-creator.md +85 -0
  336. package/departments/marketing/agents/content-marketer.yaml +58 -0
  337. package/departments/marketing/agents/marketing-director.yaml +75 -0
  338. package/departments/marketing/agents/paid-specialist.yaml +58 -0
  339. package/departments/marketing/agents/seo-specialist.yaml +57 -0
  340. package/departments/marketing/skills/ab-test/SKILL.md +18 -0
  341. package/departments/marketing/skills/analytics-report/SKILL.md +18 -0
  342. package/departments/marketing/skills/audience-segment/SKILL.md +18 -0
  343. package/departments/marketing/skills/calendar-plan/SKILL.md +18 -0
  344. package/departments/marketing/skills/cold-email/SKILL.md +128 -0
  345. package/departments/marketing/skills/competitor-analysis/SKILL.md +18 -0
  346. package/departments/marketing/skills/content-audit/SKILL.md +18 -0
  347. package/departments/marketing/skills/email-sequence/SKILL.md +18 -0
  348. package/departments/marketing/skills/growth-loop/SKILL.md +50 -0
  349. package/departments/marketing/skills/marketing-automation/SKILL.md +18 -0
  350. package/departments/marketing/skills/paid-campaign/SKILL.md +18 -0
  351. package/departments/marketing/skills/programmatic-seo/SKILL.md +123 -0
  352. package/departments/marketing/skills/seo-audit/SKILL.md +48 -0
  353. package/departments/marketing/skills/social-strategy/SKILL.md +18 -0
  354. package/departments/marketing/squad.yaml +39 -0
  355. package/departments/marketing/workflows/campaign.yaml +112 -0
  356. package/departments/marketing/workflows/social.yaml +56 -0
  357. package/departments/operations/SKILL.md +422 -0
  358. package/departments/operations/agents/coo.md +88 -0
  359. package/departments/ops/SKILL.md +37 -0
  360. package/departments/ops/agents/automation-engineer.yaml +58 -0
  361. package/departments/ops/agents/ops-lead.yaml +71 -0
  362. package/departments/ops/skills/bottleneck-find/SKILL.md +49 -0
  363. package/departments/ops/skills/dashboard-build/SKILL.md +18 -0
  364. package/departments/ops/skills/gtd-setup/SKILL.md +18 -0
  365. package/departments/ops/skills/integration-design/SKILL.md +18 -0
  366. package/departments/ops/skills/lean-audit/SKILL.md +18 -0
  367. package/departments/ops/skills/metrics-dashboard/SKILL.md +18 -0
  368. package/departments/ops/skills/n8n-flow/SKILL.md +18 -0
  369. package/departments/ops/skills/sop-create/SKILL.md +18 -0
  370. package/departments/ops/skills/workflow-automate/SKILL.md +39 -0
  371. package/departments/ops/skills/zapier-flow/SKILL.md +18 -0
  372. package/departments/ops/squad.yaml +35 -0
  373. package/departments/ops/workflows/lean-audit.yaml +69 -0
  374. package/departments/org/SKILL.md +34 -0
  375. package/departments/org/agents/coo.yaml +80 -0
  376. package/departments/org/agents/org-designer.yaml +56 -0
  377. package/departments/org/agents/people-ops.yaml +56 -0
  378. package/departments/org/skills/compensation-plan/SKILL.md +18 -0
  379. package/departments/org/skills/culture-define/SKILL.md +18 -0
  380. package/departments/org/skills/decision-framework/SKILL.md +18 -0
  381. package/departments/org/skills/hiring-plan/SKILL.md +18 -0
  382. package/departments/org/skills/meeting-optimize/SKILL.md +18 -0
  383. package/departments/org/skills/onboarding-design/SKILL.md +18 -0
  384. package/departments/org/skills/org-design/SKILL.md +18 -0
  385. package/departments/org/skills/remote-setup/SKILL.md +18 -0
  386. package/departments/org/skills/sop-process/SKILL.md +18 -0
  387. package/departments/org/skills/team-assess/SKILL.md +18 -0
  388. package/departments/org/squad.yaml +33 -0
  389. package/departments/org/workflows/design.yaml +55 -0
  390. package/departments/pm/SKILL.md +39 -0
  391. package/departments/pm/agents/pm-director.yaml +75 -0
  392. package/departments/pm/agents/product-owner.yaml +59 -0
  393. package/departments/pm/agents/scrum-master.yaml +59 -0
  394. package/departments/pm/skills/agile-po/SKILL.md +118 -0
  395. package/departments/pm/skills/backlog-groom/SKILL.md +18 -0
  396. package/departments/pm/skills/discovery-plan/SKILL.md +48 -0
  397. package/departments/pm/skills/estimate-forecast/SKILL.md +18 -0
  398. package/departments/pm/skills/impact-map/SKILL.md +18 -0
  399. package/departments/pm/skills/kanban-setup/SKILL.md +18 -0
  400. package/departments/pm/skills/risk-register/SKILL.md +18 -0
  401. package/departments/pm/skills/roadmap-build/SKILL.md +18 -0
  402. package/departments/pm/skills/shape-pitch/SKILL.md +55 -0
  403. package/departments/pm/skills/sprint-plan/SKILL.md +18 -0
  404. package/departments/pm/skills/stakeholder-map/SKILL.md +18 -0
  405. package/departments/pm/skills/standup-run/SKILL.md +18 -0
  406. package/departments/pm/skills/story-write/SKILL.md +18 -0
  407. package/departments/pm/squad.yaml +37 -0
  408. package/departments/pm/workflows/retro.yaml +33 -0
  409. package/departments/quality/SKILL.md +66 -0
  410. package/departments/quality/agents/copy-director.md +134 -0
  411. package/departments/quality/agents/copy-director.yaml +73 -0
  412. package/departments/quality/agents/cqo.md +134 -0
  413. package/departments/quality/agents/cqo.yaml +76 -0
  414. package/departments/quality/agents/tech-director.yaml +79 -0
  415. package/departments/quality/agents/tech-ux-director.md +193 -0
  416. package/departments/quality/squad.yaml +25 -0
  417. package/departments/saas/SKILL.md +64 -0
  418. package/departments/saas/agents/cs-manager.yaml +57 -0
  419. package/departments/saas/agents/growth-engineer.yaml +57 -0
  420. package/departments/saas/agents/metrics-analyst.yaml +57 -0
  421. package/departments/saas/agents/saas-strategist.yaml +74 -0
  422. package/departments/saas/skills/benchmark-compare/SKILL.md +18 -0
  423. package/departments/saas/skills/churn-analysis/SKILL.md +18 -0
  424. package/departments/saas/skills/customer-success/SKILL.md +18 -0
  425. package/departments/saas/skills/growth-plan/SKILL.md +18 -0
  426. package/departments/saas/skills/gtm-strategy/SKILL.md +18 -0
  427. package/departments/saas/skills/launch-execute/SKILL.md +18 -0
  428. package/departments/saas/skills/metrics-dashboard/SKILL.md +18 -0
  429. package/departments/saas/skills/micro-saas-stack/SKILL.md +18 -0
  430. package/departments/saas/skills/mvp-build/SKILL.md +18 -0
  431. package/departments/saas/skills/niche-evaluate/SKILL.md +18 -0
  432. package/departments/saas/skills/onboarding-optimize/SKILL.md +18 -0
  433. package/departments/saas/skills/plg-setup/SKILL.md +53 -0
  434. package/departments/saas/skills/pricing-strategy/SKILL.md +48 -0
  435. package/departments/saas/skills/saas-scaffold/SKILL.md +127 -0
  436. package/departments/saas/skills/validate-idea/SKILL.md +55 -0
  437. package/departments/saas/squad.yaml +37 -0
  438. package/departments/saas/workflows/metrics.yaml +58 -0
  439. package/departments/saas/workflows/validate.yaml +103 -0
  440. package/departments/sales/SKILL.md +35 -0
  441. package/departments/sales/agents/sales-closer.yaml +58 -0
  442. package/departments/sales/agents/sales-director.yaml +72 -0
  443. package/departments/sales/agents/sales-ops.yaml +55 -0
  444. package/departments/sales/skills/challenger-sell/SKILL.md +18 -0
  445. package/departments/sales/skills/deal-qualify/SKILL.md +18 -0
  446. package/departments/sales/skills/discovery-call/SKILL.md +18 -0
  447. package/departments/sales/skills/forecast-revenue/SKILL.md +18 -0
  448. package/departments/sales/skills/negotiate-plan/SKILL.md +18 -0
  449. package/departments/sales/skills/objection-handle/SKILL.md +18 -0
  450. package/departments/sales/skills/pipeline-manage/SKILL.md +18 -0
  451. package/departments/sales/skills/pricing-negotiate/SKILL.md +18 -0
  452. package/departments/sales/skills/proposal-write/SKILL.md +54 -0
  453. package/departments/sales/skills/spin-sell/SKILL.md +50 -0
  454. package/departments/sales/squad.yaml +35 -0
  455. package/departments/sales/workflows/pipeline.yaml +49 -0
  456. package/departments/strategy/SKILL.md +37 -0
  457. package/departments/strategy/agents/business-model-designer.yaml +58 -0
  458. package/departments/strategy/agents/market-analyst.yaml +58 -0
  459. package/departments/strategy/agents/strategist.md +79 -0
  460. package/departments/strategy/agents/strategy-director.yaml +75 -0
  461. package/departments/strategy/skills/blue-ocean/SKILL.md +56 -0
  462. package/departments/strategy/skills/bmc/SKILL.md +18 -0
  463. package/departments/strategy/skills/board-advisor/SKILL.md +121 -0
  464. package/departments/strategy/skills/cto-advisor/SKILL.md +113 -0
  465. package/departments/strategy/skills/five-forces/SKILL.md +74 -0
  466. package/departments/strategy/skills/growth-strategy/SKILL.md +18 -0
  467. package/departments/strategy/skills/moat-analysis/SKILL.md +18 -0
  468. package/departments/strategy/skills/position/SKILL.md +18 -0
  469. package/departments/strategy/skills/scenario-plan/SKILL.md +18 -0
  470. package/departments/strategy/squad.yaml +37 -0
  471. package/departments/strategy/workflows/analysis.yaml +90 -0
  472. package/departments/strategy/workflows/swot.yaml +47 -0
  473. package/installer/adapters/claude-code.js +73 -0
  474. package/installer/adapters/codex-cli.js +34 -0
  475. package/installer/adapters/cursor.js +34 -0
  476. package/installer/adapters/gemini-cli.js +37 -0
  477. package/installer/cli.js +91 -0
  478. package/installer/detect-runtime.js +122 -0
  479. package/installer/doctor.js +105 -0
  480. package/installer/index.js +199 -0
  481. package/installer/uninstall.js +46 -0
  482. package/installer/update.js +39 -0
  483. package/knowledge/agents-registry-v2.json +2702 -0
  484. package/knowledge/commands-registry-v2.json +3827 -0
  485. package/package.json +58 -0
  486. package/pyproject.toml +64 -0
@@ -0,0 +1,199 @@
1
+ """Commands registry generator.
2
+
3
+ Scans all SKILL.md files, extracts command tables, and generates
4
+ a machine-readable JSON registry for /do routing and Synapse L5.
5
+ """
6
+
7
+ import json
8
+ import re
9
+ from datetime import datetime
10
+ from pathlib import Path
11
+ from typing import Optional
12
+
13
+
14
+ # Keywords map: department → common keywords users might type
15
+ DEPARTMENT_KEYWORDS: dict[str, list[str]] = {
16
+ "dev": ["build", "code", "feature", "deploy", "test", "review", "scaffold", "debug",
17
+ "refactor", "api", "migration", "implement", "fix", "bug", "database", "architecture"],
18
+ "marketing": ["social", "content", "campaign", "post", "instagram", "linkedin", "twitter",
19
+ "tiktok", "seo", "marketing", "ads", "email", "growth", "analytics"],
20
+ "brand": ["brand", "logo", "colors", "palette", "mockup", "identity", "naming",
21
+ "positioning", "voice", "guidelines", "ux", "wireframe", "design", "ui"],
22
+ "finance": ["budget", "invoice", "revenue", "forecast", "profit", "financial", "invest",
23
+ "valuation", "cashflow", "expense", "pitch", "model", "scenario"],
24
+ "strategy": ["strategy", "brainstorm", "market", "swot", "competitor", "roadmap",
25
+ "position", "blue ocean", "five forces", "tam", "moat", "growth"],
26
+ "ecom": ["store", "product", "shop", "shopify", "ecommerce", "catalog", "cart",
27
+ "checkout", "pricing", "marketplace", "rfm", "conversion", "cro"],
28
+ "kb": ["learn", "persona", "knowledge", "youtube", "transcribe", "research",
29
+ "zettelkasten", "note", "moc", "taxonomy", "source"],
30
+ "ops": ["automate", "workflow", "process", "sop", "bottleneck", "integration",
31
+ "zapier", "n8n", "dashboard", "lean", "gtd"],
32
+ "pm": ["sprint", "backlog", "standup", "retro", "scrum", "kanban", "story",
33
+ "estimate", "roadmap", "agile", "discover", "shape"],
34
+ "saas": ["saas", "micro-saas", "plg", "freemium", "churn", "mrr", "arr",
35
+ "subscription", "onboarding", "metrics", "validate", "niche", "benchmark"],
36
+ "landing": ["landing", "funnel", "copy", "headline", "offer", "launch", "affiliate",
37
+ "webinar", "conversion", "sales page", "persuade", "cro"],
38
+ "content": ["viral", "hook", "script", "repurpose", "youtube", "tiktok", "reels",
39
+ "shorts", "newsletter", "creator", "thumbnail", "platform", "content system"],
40
+ "community": ["community", "group", "membership", "discord", "telegram", "skool",
41
+ "circle", "gamification", "engagement", "moderate", "event"],
42
+ "sales": ["pipeline", "proposal", "discovery", "objection", "negotiate", "deal",
43
+ "close", "prospect", "spin", "challenger", "forecast"],
44
+ "lead": ["leadership", "delegation", "1on1", "feedback", "culture", "hiring",
45
+ "performance review", "team build", "conflict", "okr"],
46
+ "org": ["org design", "hiring plan", "onboarding", "remote", "meeting",
47
+ "compensation", "decision", "team assess", "sop"],
48
+ }
49
+
50
+
51
+ def extract_commands_from_skill(skill_path: Path) -> list[dict]:
52
+ """Extract commands from a SKILL.md file's command table.
53
+
54
+ Parses markdown tables with | Command | Description | format.
55
+ """
56
+ if not skill_path.exists():
57
+ return []
58
+
59
+ text = skill_path.read_text()
60
+ commands = []
61
+
62
+ # Find command tables (lines with | `/ ... ` | description | ...)
63
+ for line in text.split("\n"):
64
+ match = re.match(r"\|\s*`([^`]+)`\s*\|\s*([^|]+)\|", line)
65
+ if match:
66
+ command = match.group(1).strip()
67
+ description = match.group(2).strip()
68
+ if not command.startswith("/") or "Description" in description or description.startswith("-"):
69
+ continue
70
+ commands.append({
71
+ "command": command,
72
+ "description": description,
73
+ })
74
+
75
+ return commands
76
+
77
+
78
+ def determine_department(skill_path: Path) -> str:
79
+ """Determine department from the skill file's directory."""
80
+ # departments/dev/SKILL.md → dev
81
+ # arka/SKILL.md → arka
82
+ parent = skill_path.parent.name
83
+ return parent
84
+
85
+
86
+ def extract_tier(description: str) -> int:
87
+ """Guess command tier from description keywords."""
88
+ desc_lower = description.lower()
89
+ if any(w in desc_lower for w in ["full", "enterprise", "comprehensive", "complete"]):
90
+ return 1
91
+ if any(w in desc_lower for w in ["audit", "analysis", "strategy", "design"]):
92
+ return 2
93
+ return 3
94
+
95
+
96
+ def generate_commands_registry(
97
+ base_dir: str | Path,
98
+ output_path: str | Path,
99
+ ) -> dict:
100
+ """Generate commands-registry-v2.json from all SKILL.md files.
101
+
102
+ Args:
103
+ base_dir: Project root directory.
104
+ output_path: Where to write the JSON registry.
105
+
106
+ Returns:
107
+ The registry dict.
108
+ """
109
+ base_dir = Path(base_dir)
110
+ output_path = Path(output_path)
111
+
112
+ all_commands = []
113
+
114
+ # v2 department directories (exclude v1 legacy dirs)
115
+ v2_departments = {
116
+ "dev", "marketing", "brand", "finance", "strategy", "ecom", "kb",
117
+ "ops", "pm", "saas", "landing", "content", "community", "sales",
118
+ "leadership", "org", "quality",
119
+ }
120
+
121
+ # Scan department SKILL.md files
122
+ for skill_file in sorted(base_dir.glob("departments/*/SKILL.md")):
123
+ if skill_file.parent.name not in v2_departments:
124
+ continue
125
+ dept = determine_department(skill_file)
126
+ raw_commands = extract_commands_from_skill(skill_file)
127
+ keywords = DEPARTMENT_KEYWORDS.get(dept, [])
128
+
129
+ for cmd in raw_commands:
130
+ command_text = cmd["command"]
131
+ # Generate ID: /dev feature → dev-feature
132
+ cmd_id = command_text.lstrip("/").replace(" ", "-").split("<")[0].rstrip("-")
133
+
134
+ # Determine if code-modifying
135
+ modifies_code = dept == "dev" and any(
136
+ w in command_text for w in ["feature", "api", "debug", "refactor", "db", "scaffold"]
137
+ )
138
+
139
+ all_commands.append({
140
+ "id": cmd_id,
141
+ "command": command_text,
142
+ "department": dept,
143
+ "description": cmd["description"],
144
+ "keywords": keywords[:8],
145
+ "tier": extract_tier(cmd["description"]),
146
+ "modifies_code": modifies_code,
147
+ "requires_branch": modifies_code,
148
+ })
149
+
150
+ # Scan orchestrator SKILL.md
151
+ arka_skill = base_dir / "arka" / "SKILL.md"
152
+ if arka_skill.exists():
153
+ raw_commands = extract_commands_from_skill(arka_skill)
154
+ for cmd in raw_commands:
155
+ command_text = cmd["command"]
156
+ cmd_id = command_text.lstrip("/").replace(" ", "-").split("<")[0].rstrip("-")
157
+ all_commands.append({
158
+ "id": cmd_id,
159
+ "command": command_text,
160
+ "department": "arka",
161
+ "description": cmd["description"],
162
+ "keywords": [],
163
+ "tier": 3,
164
+ "modifies_code": False,
165
+ "requires_branch": False,
166
+ })
167
+
168
+ # Build department summary
169
+ dept_counts: dict[str, int] = {}
170
+ for cmd in all_commands:
171
+ d = cmd["department"]
172
+ dept_counts[d] = dept_counts.get(d, 0) + 1
173
+
174
+ registry = {
175
+ "_meta": {
176
+ "version": "2.0.0",
177
+ "generated": datetime.now().isoformat(),
178
+ "total_commands": len(all_commands),
179
+ "generator": "core/registry/generator.py",
180
+ "departments": dept_counts,
181
+ },
182
+ "commands": all_commands,
183
+ }
184
+
185
+ output_path.parent.mkdir(parents=True, exist_ok=True)
186
+ with open(output_path, "w") as f:
187
+ json.dump(registry, f, indent=2, ensure_ascii=False)
188
+
189
+ return registry
190
+
191
+
192
+ if __name__ == "__main__":
193
+ base = Path(__file__).parent.parent.parent
194
+ reg = generate_commands_registry(
195
+ base,
196
+ base / "knowledge" / "commands-registry-v2.json",
197
+ )
198
+ print(f"Generated: {reg['_meta']['total_commands']} commands")
199
+ print(f"Departments: {reg['_meta']['departments']}")
@@ -0,0 +1,6 @@
1
+ """Runtime adapters for multi-framework support."""
2
+
3
+ from core.runtime.base import RuntimeAdapter, RuntimeConfig
4
+ from core.runtime.registry import get_adapter, detect_runtime
5
+
6
+ __all__ = ["RuntimeAdapter", "RuntimeConfig", "get_adapter", "detect_runtime"]
@@ -0,0 +1,143 @@
1
+ """Abstract runtime adapter interface.
2
+
3
+ Every AI runtime (Claude Code, Codex CLI, Gemini CLI, Cursor) must implement
4
+ this interface. The adapter translates ArkaOS operations into runtime-specific
5
+ commands and configurations.
6
+
7
+ Design: Strategy pattern. The orchestrator calls adapter methods without
8
+ knowing which runtime is active. Each adapter handles the translation.
9
+ """
10
+
11
+ from abc import ABC, abstractmethod
12
+ from dataclasses import dataclass, field
13
+ from pathlib import Path
14
+ from typing import Any
15
+
16
+
17
+ @dataclass
18
+ class RuntimeConfig:
19
+ """Configuration for a specific runtime environment."""
20
+
21
+ id: str
22
+ name: str
23
+ config_dir: Path
24
+ skills_dir: Path
25
+ settings_file: Path
26
+ supports_hooks: bool = True
27
+ supports_subagents: bool = True
28
+ supports_mcp: bool = False
29
+ max_context_tokens: int = 200_000
30
+
31
+
32
+ @dataclass
33
+ class AgentContext:
34
+ """Context passed to an agent for execution."""
35
+
36
+ agent_id: str
37
+ task: str
38
+ department: str
39
+ tier: int
40
+ tools: list[str] = field(default_factory=list)
41
+ files: list[str] = field(default_factory=list)
42
+ context_layers: dict[str, str] = field(default_factory=dict)
43
+
44
+
45
+ @dataclass
46
+ class AgentResult:
47
+ """Result returned by an agent after execution."""
48
+
49
+ agent_id: str
50
+ status: str # "completed", "failed", "needs_review"
51
+ output: str
52
+ files_modified: list[str] = field(default_factory=list)
53
+ tokens_used: int = 0
54
+ duration_ms: int = 0
55
+ metadata: dict[str, Any] = field(default_factory=dict)
56
+
57
+
58
+ class RuntimeAdapter(ABC):
59
+ """Abstract base class for runtime adapters.
60
+
61
+ Each supported AI runtime implements this interface to translate
62
+ ArkaOS operations into runtime-specific actions.
63
+ """
64
+
65
+ @abstractmethod
66
+ def get_config(self) -> RuntimeConfig:
67
+ """Return runtime configuration."""
68
+
69
+ @abstractmethod
70
+ def inject_context(self, layers: dict[str, str]) -> str:
71
+ """Inject context layers into the runtime.
72
+
73
+ Args:
74
+ layers: Dict of layer_name -> context_string
75
+
76
+ Returns:
77
+ The formatted context string for this runtime.
78
+ """
79
+
80
+ @abstractmethod
81
+ def dispatch_agent(self, context: AgentContext) -> AgentResult:
82
+ """Dispatch a task to an agent.
83
+
84
+ Args:
85
+ context: The agent context with task, tools, and files.
86
+
87
+ Returns:
88
+ AgentResult with output and metadata.
89
+ """
90
+
91
+ @abstractmethod
92
+ def spawn_subagent(self, context: AgentContext) -> AgentResult:
93
+ """Spawn a fresh subagent for isolated task execution.
94
+
95
+ Each subagent gets a fresh context window (the subagent pattern).
96
+
97
+ Args:
98
+ context: The agent context for the subagent.
99
+
100
+ Returns:
101
+ AgentResult from the subagent.
102
+ """
103
+
104
+ @abstractmethod
105
+ def read_file(self, path: str) -> str:
106
+ """Read a file through the runtime."""
107
+
108
+ @abstractmethod
109
+ def write_file(self, path: str, content: str) -> None:
110
+ """Write a file through the runtime."""
111
+
112
+ @abstractmethod
113
+ def edit_file(self, path: str, old: str, new: str) -> None:
114
+ """Edit a file through the runtime (find and replace)."""
115
+
116
+ @abstractmethod
117
+ def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
118
+ """Execute a shell command through the runtime.
119
+
120
+ Returns:
121
+ Tuple of (output, exit_code).
122
+ """
123
+
124
+ @abstractmethod
125
+ def search_files(self, pattern: str, path: str = ".") -> list[str]:
126
+ """Search for files matching a glob pattern."""
127
+
128
+ @abstractmethod
129
+ def search_content(self, pattern: str, path: str = ".") -> list[str]:
130
+ """Search file contents for a regex pattern."""
131
+
132
+ def supports_feature(self, feature: str) -> bool:
133
+ """Check if the runtime supports a specific feature.
134
+
135
+ Features: hooks, subagents, mcp, parallel_agents, worktrees
136
+ """
137
+ config = self.get_config()
138
+ feature_map = {
139
+ "hooks": config.supports_hooks,
140
+ "subagents": config.supports_subagents,
141
+ "mcp": config.supports_mcp,
142
+ }
143
+ return feature_map.get(feature, False)
@@ -0,0 +1,104 @@
1
+ """Claude Code runtime adapter.
2
+
3
+ Claude Code is the primary and most capable runtime for ArkaOS.
4
+ It supports hooks, subagents (Agent tool), MCP servers, and worktrees.
5
+ """
6
+
7
+ from pathlib import Path
8
+ from os.path import expanduser
9
+
10
+ from core.runtime.base import RuntimeAdapter, RuntimeConfig, AgentContext, AgentResult
11
+
12
+
13
+ class ClaudeCodeAdapter(RuntimeAdapter):
14
+ """Adapter for Anthropic's Claude Code CLI."""
15
+
16
+ def get_config(self) -> RuntimeConfig:
17
+ home = Path(expanduser("~"))
18
+ return RuntimeConfig(
19
+ id="claude-code",
20
+ name="Claude Code",
21
+ config_dir=home / ".claude",
22
+ skills_dir=home / ".claude" / "skills",
23
+ settings_file=home / ".claude" / "settings.json",
24
+ supports_hooks=True,
25
+ supports_subagents=True,
26
+ supports_mcp=True,
27
+ max_context_tokens=1_000_000,
28
+ )
29
+
30
+ def inject_context(self, layers: dict[str, str]) -> str:
31
+ """Claude Code receives context via UserPromptSubmit hook.
32
+
33
+ The hook script concatenates all layers into a single
34
+ additionalContext string that Claude sees in system-reminder tags.
35
+ """
36
+ parts = []
37
+ for name, content in layers.items():
38
+ parts.append(f"[{name}] {content}")
39
+ return " ".join(parts)
40
+
41
+ def dispatch_agent(self, context: AgentContext) -> AgentResult:
42
+ """In Claude Code, agents are dispatched via the Agent tool.
43
+
44
+ The orchestrator provides the agent type via subagent_type parameter.
45
+ Claude Code handles the actual execution.
46
+ """
47
+ # This is a specification of intent — actual execution happens
48
+ # through Claude Code's native Agent tool
49
+ return AgentResult(
50
+ agent_id=context.agent_id,
51
+ status="dispatched",
52
+ output=f"Agent {context.agent_id} dispatched for: {context.task}",
53
+ metadata={
54
+ "runtime": "claude-code",
55
+ "subagent_type": context.agent_id,
56
+ "department": context.department,
57
+ },
58
+ )
59
+
60
+ def spawn_subagent(self, context: AgentContext) -> AgentResult:
61
+ """Spawn a fresh Claude Code subagent.
62
+
63
+ Uses the Agent tool with a complete task description.
64
+ Each subagent gets a fresh 1M token context window.
65
+ """
66
+ return AgentResult(
67
+ agent_id=context.agent_id,
68
+ status="dispatched",
69
+ output=f"Subagent {context.agent_id} spawned for: {context.task}",
70
+ metadata={
71
+ "runtime": "claude-code",
72
+ "pattern": "subagent",
73
+ "fresh_context": True,
74
+ },
75
+ )
76
+
77
+ def read_file(self, path: str) -> str:
78
+ """Claude Code uses the Read tool natively."""
79
+ # This maps to the Read tool in Claude Code
80
+ raise NotImplementedError("Use Claude Code's native Read tool")
81
+
82
+ def write_file(self, path: str, content: str) -> None:
83
+ """Claude Code uses the Write tool natively."""
84
+ raise NotImplementedError("Use Claude Code's native Write tool")
85
+
86
+ def edit_file(self, path: str, old: str, new: str) -> None:
87
+ """Claude Code uses the Edit tool natively."""
88
+ raise NotImplementedError("Use Claude Code's native Edit tool")
89
+
90
+ def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
91
+ """Claude Code uses the Bash tool natively."""
92
+ raise NotImplementedError("Use Claude Code's native Bash tool")
93
+
94
+ def search_files(self, pattern: str, path: str = ".") -> list[str]:
95
+ """Claude Code uses the Glob tool natively."""
96
+ raise NotImplementedError("Use Claude Code's native Glob tool")
97
+
98
+ def search_content(self, pattern: str, path: str = ".") -> list[str]:
99
+ """Claude Code uses the Grep tool natively."""
100
+ raise NotImplementedError("Use Claude Code's native Grep tool")
101
+
102
+ def supports_feature(self, feature: str) -> bool:
103
+ """Claude Code supports all features."""
104
+ return True
@@ -0,0 +1,71 @@
1
+ """Codex CLI runtime adapter.
2
+
3
+ OpenAI's Codex CLI. Supports sandboxed execution and file operations.
4
+ More limited than Claude Code: no native hooks, no MCP servers.
5
+ """
6
+
7
+ from pathlib import Path
8
+ from os.path import expanduser
9
+
10
+ from core.runtime.base import RuntimeAdapter, RuntimeConfig, AgentContext, AgentResult
11
+
12
+
13
+ class CodexCliAdapter(RuntimeAdapter):
14
+ """Adapter for OpenAI's Codex CLI."""
15
+
16
+ def get_config(self) -> RuntimeConfig:
17
+ home = Path(expanduser("~"))
18
+ return RuntimeConfig(
19
+ id="codex",
20
+ name="Codex CLI",
21
+ config_dir=home / ".codex",
22
+ skills_dir=home / ".codex" / "skills",
23
+ settings_file=home / ".codex" / "settings.json",
24
+ supports_hooks=False,
25
+ supports_subagents=True,
26
+ supports_mcp=False,
27
+ max_context_tokens=200_000,
28
+ )
29
+
30
+ def inject_context(self, layers: dict[str, str]) -> str:
31
+ """Codex receives context via AGENTS.md instruction file."""
32
+ parts = []
33
+ for name, content in layers.items():
34
+ parts.append(f"## {name}\n{content}")
35
+ return "\n\n".join(parts)
36
+
37
+ def dispatch_agent(self, context: AgentContext) -> AgentResult:
38
+ """Codex dispatches agents via its native agent system."""
39
+ return AgentResult(
40
+ agent_id=context.agent_id,
41
+ status="dispatched",
42
+ output=f"Agent {context.agent_id} dispatched via Codex",
43
+ metadata={"runtime": "codex"},
44
+ )
45
+
46
+ def spawn_subagent(self, context: AgentContext) -> AgentResult:
47
+ """Codex supports subagents with fresh context."""
48
+ return AgentResult(
49
+ agent_id=context.agent_id,
50
+ status="dispatched",
51
+ output=f"Subagent {context.agent_id} spawned via Codex",
52
+ metadata={"runtime": "codex", "pattern": "subagent"},
53
+ )
54
+
55
+ def read_file(self, path: str) -> str:
56
+ raise NotImplementedError("Use Codex CLI's native file read")
57
+
58
+ def write_file(self, path: str, content: str) -> None:
59
+ raise NotImplementedError("Use Codex CLI's native file write")
60
+
61
+ def edit_file(self, path: str, old: str, new: str) -> None:
62
+ raise NotImplementedError("Use Codex CLI's native file edit")
63
+
64
+ def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
65
+ raise NotImplementedError("Use Codex CLI's native shell execution")
66
+
67
+ def search_files(self, pattern: str, path: str = ".") -> list[str]:
68
+ raise NotImplementedError("Use Codex CLI's native file search")
69
+
70
+ def search_content(self, pattern: str, path: str = ".") -> list[str]:
71
+ raise NotImplementedError("Use Codex CLI's native content search")
@@ -0,0 +1,71 @@
1
+ """Cursor runtime adapter.
2
+
3
+ Cursor AI IDE. Uses .cursorrules for project instructions and .cursor/rules for global rules.
4
+ Supports agent mode with tool execution.
5
+ """
6
+
7
+ from pathlib import Path
8
+ from os.path import expanduser
9
+
10
+ from core.runtime.base import RuntimeAdapter, RuntimeConfig, AgentContext, AgentResult
11
+
12
+
13
+ class CursorAdapter(RuntimeAdapter):
14
+ """Adapter for Cursor AI IDE."""
15
+
16
+ def get_config(self) -> RuntimeConfig:
17
+ home = Path(expanduser("~"))
18
+ return RuntimeConfig(
19
+ id="cursor",
20
+ name="Cursor",
21
+ config_dir=home / ".cursor",
22
+ skills_dir=home / ".cursor" / "skills",
23
+ settings_file=home / ".cursor" / "settings.json",
24
+ supports_hooks=False,
25
+ supports_subagents=False,
26
+ supports_mcp=True,
27
+ max_context_tokens=200_000,
28
+ )
29
+
30
+ def inject_context(self, layers: dict[str, str]) -> str:
31
+ """Cursor receives context via .cursorrules files."""
32
+ parts = []
33
+ for name, content in layers.items():
34
+ parts.append(f"## {name}\n{content}")
35
+ return "\n\n".join(parts)
36
+
37
+ def dispatch_agent(self, context: AgentContext) -> AgentResult:
38
+ """Cursor agent mode handles dispatch internally."""
39
+ return AgentResult(
40
+ agent_id=context.agent_id,
41
+ status="dispatched",
42
+ output=f"Agent {context.agent_id} dispatched via Cursor",
43
+ metadata={"runtime": "cursor"},
44
+ )
45
+
46
+ def spawn_subagent(self, context: AgentContext) -> AgentResult:
47
+ """Cursor does not support native subagents."""
48
+ return AgentResult(
49
+ agent_id=context.agent_id,
50
+ status="unsupported",
51
+ output="Cursor does not support subagent spawning. Using single-agent mode.",
52
+ metadata={"runtime": "cursor", "fallback": "single-agent"},
53
+ )
54
+
55
+ def read_file(self, path: str) -> str:
56
+ raise NotImplementedError("Use Cursor's native file read")
57
+
58
+ def write_file(self, path: str, content: str) -> None:
59
+ raise NotImplementedError("Use Cursor's native file write")
60
+
61
+ def edit_file(self, path: str, old: str, new: str) -> None:
62
+ raise NotImplementedError("Use Cursor's native file edit")
63
+
64
+ def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
65
+ raise NotImplementedError("Use Cursor's native terminal")
66
+
67
+ def search_files(self, pattern: str, path: str = ".") -> list[str]:
68
+ raise NotImplementedError("Use Cursor's native file search")
69
+
70
+ def search_content(self, pattern: str, path: str = ".") -> list[str]:
71
+ raise NotImplementedError("Use Cursor's native content search")