arkaos 4.6.0 → 4.7.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 (310) hide show
  1. package/CONSTITUTION.md +30 -16
  2. package/VERSION +1 -1
  3. package/arka/SKILL.md +26 -36
  4. package/arka/skills/bootstrap-agent/SKILL.md +6 -0
  5. package/arka/skills/checkpoint/SKILL.md +1 -1
  6. package/arka/skills/costs/SKILL.md +14 -5
  7. package/arka/skills/flow/SKILL.md +30 -15
  8. package/arka/skills/forge/SKILL.md +19 -15
  9. package/arka/skills/human-writing/SKILL.md +16 -7
  10. package/arka/skills/research/SKILL.md +20 -7
  11. package/arka/templates/skill-template.md +102 -0
  12. package/bin/arka-py.ps1 +9 -2
  13. package/config/claude-agents/architect.md +51 -0
  14. package/config/claude-agents/backend-dev.md +51 -0
  15. package/config/claude-agents/dba.md +51 -0
  16. package/config/claude-agents/devops-eng.md +51 -0
  17. package/config/claude-agents/eduardo-copy.md +14 -7
  18. package/config/claude-agents/francisca-tech.md +24 -6
  19. package/config/claude-agents/frontend-dev.md +51 -0
  20. package/config/claude-agents/marta-cqo.md +28 -8
  21. package/config/claude-agents/qa-eng.md +51 -0
  22. package/config/claude-agents/research-assistant.md +50 -0
  23. package/config/claude-agents/security-eng.md +51 -0
  24. package/config/constitution.yaml +127 -88
  25. package/config/hooks/session-start.ps1 +3 -1
  26. package/config/hooks/session-start.sh +3 -1
  27. package/config/hooks/user-prompt-submit-v2.sh +4 -11
  28. package/config/hooks/user-prompt-submit.ps1 +4 -7
  29. package/config/hooks/user-prompt-submit.sh +8 -1
  30. package/core/agents/__pycache__/behavioral_compiler.cpython-313.pyc +0 -0
  31. package/core/agents/behavioral_compiler.py +294 -0
  32. package/core/budget/__pycache__/__init__.cpython-314.pyc +0 -0
  33. package/core/budget/__pycache__/manager.cpython-314.pyc +0 -0
  34. package/core/budget/__pycache__/schema.cpython-314.pyc +0 -0
  35. package/core/forge/__pycache__/__init__.cpython-314.pyc +0 -0
  36. package/core/forge/__pycache__/complexity.cpython-314.pyc +0 -0
  37. package/core/forge/__pycache__/handoff.cpython-314.pyc +0 -0
  38. package/core/forge/__pycache__/orchestrator.cpython-314.pyc +0 -0
  39. package/core/forge/__pycache__/persistence.cpython-314.pyc +0 -0
  40. package/core/forge/__pycache__/renderer.cpython-314.pyc +0 -0
  41. package/core/forge/__pycache__/runtime_dispatcher.cpython-314.pyc +0 -0
  42. package/core/forge/__pycache__/schema.cpython-314.pyc +0 -0
  43. package/core/governance/__pycache__/agent_experiences.cpython-314.pyc +0 -0
  44. package/core/governance/__pycache__/closing_marker_check.cpython-313.pyc +0 -0
  45. package/core/governance/__pycache__/closing_marker_check.cpython-314.pyc +0 -0
  46. package/core/governance/__pycache__/phantom_action_check.cpython-313.pyc +0 -0
  47. package/core/governance/__pycache__/phantom_action_check.cpython-314.pyc +0 -0
  48. package/core/governance/__pycache__/qg_verdict.cpython-313.pyc +0 -0
  49. package/core/governance/__pycache__/quality_api.cpython-314.pyc +0 -0
  50. package/core/governance/__pycache__/quality_router.cpython-314.pyc +0 -0
  51. package/core/governance/__pycache__/review_workflow.cpython-314.pyc +0 -0
  52. package/core/governance/closing_marker_check.py +2 -2
  53. package/core/governance/phantom_action_check.py +221 -0
  54. package/core/governance/qg_verdict.py +12 -0
  55. package/core/hooks/__pycache__/stop.cpython-313.pyc +0 -0
  56. package/core/hooks/__pycache__/stop.cpython-314.pyc +0 -0
  57. package/core/hooks/__pycache__/user_prompt_submit.cpython-313.pyc +0 -0
  58. package/core/hooks/__pycache__/user_prompt_submit.cpython-314.pyc +0 -0
  59. package/core/hooks/stop.py +25 -0
  60. package/core/hooks/user_prompt_submit.py +15 -10
  61. package/core/knowledge/__pycache__/__init__.cpython-314.pyc +0 -0
  62. package/core/knowledge/__pycache__/chunker.cpython-314.pyc +0 -0
  63. package/core/knowledge/__pycache__/embedder.cpython-314.pyc +0 -0
  64. package/core/knowledge/__pycache__/pattern_cards.cpython-314.pyc +0 -0
  65. package/core/knowledge/__pycache__/vector_store.cpython-312.pyc +0 -0
  66. package/core/knowledge/__pycache__/vector_store.cpython-314.pyc +0 -0
  67. package/core/memory/__pycache__/rehydrator.cpython-314.pyc +0 -0
  68. package/core/runtime/__pycache__/claude_code.cpython-313.pyc +0 -0
  69. package/core/runtime/__pycache__/codex_cli.cpython-313.pyc +0 -0
  70. package/core/runtime/__pycache__/gemini_cli.cpython-313.pyc +0 -0
  71. package/core/runtime/claude_code.py +2 -1
  72. package/core/runtime/codex_cli.py +2 -0
  73. package/core/runtime/gemini_cli.py +2 -0
  74. package/core/shared/__pycache__/temp_paths.cpython-312.pyc +0 -0
  75. package/core/synapse/__pycache__/agent_experiences_layer.cpython-313.pyc +0 -0
  76. package/core/synapse/__pycache__/agent_experiences_layer.cpython-314.pyc +0 -0
  77. package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
  78. package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
  79. package/core/synapse/__pycache__/engine.cpython-314.pyc +0 -0
  80. package/core/synapse/__pycache__/graph_context_layer.cpython-313.pyc +0 -0
  81. package/core/synapse/__pycache__/graph_context_layer.cpython-314.pyc +0 -0
  82. package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
  83. package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
  84. package/core/synapse/__pycache__/layers.cpython-314.pyc +0 -0
  85. package/core/synapse/__pycache__/pattern_library_layer.cpython-313.pyc +0 -0
  86. package/core/synapse/__pycache__/pattern_library_layer.cpython-314.pyc +0 -0
  87. package/core/synapse/agent_experiences_layer.py +4 -0
  88. package/core/synapse/engine.py +13 -2
  89. package/core/synapse/graph_context_layer.py +4 -0
  90. package/core/synapse/layers.py +28 -49
  91. package/core/synapse/pattern_library_layer.py +4 -0
  92. package/departments/brand/SKILL.md +5 -13
  93. package/departments/brand/skills/archetype-finder/SKILL.md +3 -11
  94. package/departments/brand/skills/colors/SKILL.md +3 -11
  95. package/departments/brand/skills/design-review/SKILL.md +11 -3
  96. package/departments/brand/skills/design-system/SKILL.md +3 -11
  97. package/departments/brand/skills/identity-system/SKILL.md +3 -11
  98. package/departments/brand/skills/logo-brief/SKILL.md +3 -11
  99. package/departments/brand/skills/mockup-generate/SKILL.md +3 -11
  100. package/departments/brand/skills/naming-evaluate/SKILL.md +3 -11
  101. package/departments/brand/skills/positioning-statement/SKILL.md +3 -11
  102. package/departments/brand/skills/primal-audit/SKILL.md +3 -11
  103. package/departments/brand/skills/ux-audit/SKILL.md +3 -11
  104. package/departments/brand/skills/voice-guide/SKILL.md +3 -11
  105. package/departments/brand/skills/wireframe/SKILL.md +3 -11
  106. package/departments/community/SKILL.md +4 -12
  107. package/departments/community/skills/ai-community/SKILL.md +3 -11
  108. package/departments/community/skills/betting-setup/SKILL.md +3 -11
  109. package/departments/community/skills/business-model/SKILL.md +3 -11
  110. package/departments/community/skills/content-calendar/SKILL.md +3 -11
  111. package/departments/community/skills/events-plan/SKILL.md +3 -11
  112. package/departments/community/skills/gamification-design/SKILL.md +3 -11
  113. package/departments/community/skills/growth-plan/SKILL.md +13 -12
  114. package/departments/community/skills/metrics-track/SKILL.md +3 -11
  115. package/departments/community/skills/moderation/SKILL.md +3 -11
  116. package/departments/community/skills/monetize-plan/SKILL.md +3 -11
  117. package/departments/community/skills/niche-setup/SKILL.md +3 -11
  118. package/departments/community/skills/onboarding-flow/SKILL.md +3 -11
  119. package/departments/community/skills/platform-select/SKILL.md +3 -11
  120. package/departments/content/SKILL.md +4 -12
  121. package/departments/content/skills/ai-workflow/SKILL.md +3 -11
  122. package/departments/content/skills/analytics/SKILL.md +3 -11
  123. package/departments/content/skills/calendar/SKILL.md +3 -11
  124. package/departments/content/skills/content-system/SKILL.md +3 -11
  125. package/departments/content/skills/monetization-plan/SKILL.md +3 -11
  126. package/departments/content/skills/newsletter-write/SKILL.md +3 -11
  127. package/departments/content/skills/platform-optimize/SKILL.md +3 -11
  128. package/departments/content/skills/repurpose-plan/SKILL.md +3 -11
  129. package/departments/content/skills/script-structure/SKILL.md +3 -11
  130. package/departments/content/skills/short-form/SKILL.md +3 -11
  131. package/departments/content/skills/thumbnail-package/SKILL.md +3 -11
  132. package/departments/content/skills/viral-design/SKILL.md +3 -11
  133. package/departments/content/skills/youtube-strategy/SKILL.md +3 -11
  134. package/departments/dev/SKILL.md +4 -12
  135. package/departments/dev/agents/security-eng.yaml +1 -1
  136. package/departments/dev/skills/adversarial-review/SKILL.md +10 -2
  137. package/departments/dev/skills/ai-assisted-dev/SKILL.md +3 -11
  138. package/departments/dev/skills/architecture-design/SKILL.md +3 -11
  139. package/departments/dev/skills/clean-code-review/SKILL.md +9 -2
  140. package/departments/dev/skills/code-review/SKILL.md +12 -12
  141. package/departments/dev/skills/db-design/SKILL.md +3 -11
  142. package/departments/dev/skills/ddd-model/SKILL.md +3 -11
  143. package/departments/dev/skills/demo-gif/SKILL.md +3 -11
  144. package/departments/dev/skills/deploy/SKILL.md +3 -11
  145. package/departments/dev/skills/devops-pipeline/SKILL.md +3 -11
  146. package/departments/dev/skills/docs/SKILL.md +3 -11
  147. package/departments/dev/skills/mcp/SKILL.md +3 -11
  148. package/departments/dev/skills/performance-audit/SKILL.md +3 -11
  149. package/departments/dev/skills/refactor-plan/SKILL.md +3 -11
  150. package/departments/dev/skills/research/SKILL.md +16 -12
  151. package/departments/dev/skills/scaffold/SKILL.md +15 -11
  152. package/departments/dev/skills/security-compliance/SKILL.md +3 -11
  153. package/departments/dev/skills/spec/SKILL.md +15 -10
  154. package/departments/dev/skills/stack-check/SKILL.md +3 -11
  155. package/departments/ecom/SKILL.md +4 -12
  156. package/departments/ecom/skills/analytics/SKILL.md +3 -11
  157. package/departments/ecom/skills/browse-competitor/SKILL.md +3 -11
  158. package/departments/ecom/skills/cart-recovery/SKILL.md +3 -11
  159. package/departments/ecom/skills/cro-optimize/SKILL.md +3 -11
  160. package/departments/ecom/skills/customer-journey/SKILL.md +3 -11
  161. package/departments/ecom/skills/fulfillment-plan/SKILL.md +3 -11
  162. package/departments/ecom/skills/marketplace-manage/SKILL.md +3 -11
  163. package/departments/ecom/skills/pricing-strategy/SKILL.md +3 -11
  164. package/departments/ecom/skills/product-launch/SKILL.md +3 -11
  165. package/departments/ecom/skills/rfm-segment/SKILL.md +3 -11
  166. package/departments/ecom/skills/social-commerce/SKILL.md +3 -11
  167. package/departments/ecom/skills/store-audit/SKILL.md +3 -11
  168. package/departments/ecom/skills/subscription-model/SKILL.md +3 -11
  169. package/departments/finance/SKILL.md +4 -12
  170. package/departments/finance/skills/budget-plan/SKILL.md +3 -11
  171. package/departments/finance/skills/cashflow-forecast/SKILL.md +3 -11
  172. package/departments/finance/skills/ciso-advisor/SKILL.md +3 -11
  173. package/departments/finance/skills/financial-model/SKILL.md +3 -11
  174. package/departments/finance/skills/pitch-deck/SKILL.md +3 -11
  175. package/departments/finance/skills/scenario-analysis/SKILL.md +3 -11
  176. package/departments/finance/skills/unit-economics/SKILL.md +3 -11
  177. package/departments/finance/skills/valuation-model/SKILL.md +3 -11
  178. package/departments/kb/SKILL.md +4 -12
  179. package/departments/kb/skills/ai-research/SKILL.md +3 -11
  180. package/departments/kb/skills/competitive-intel/SKILL.md +3 -11
  181. package/departments/kb/skills/knowledge-review/SKILL.md +3 -11
  182. package/departments/kb/skills/learn-content/SKILL.md +3 -11
  183. package/departments/kb/skills/moc-create/SKILL.md +3 -11
  184. package/departments/kb/skills/persona-build/SKILL.md +3 -11
  185. package/departments/kb/skills/research-plan/SKILL.md +3 -11
  186. package/departments/kb/skills/search-kb/SKILL.md +3 -11
  187. package/departments/kb/skills/source-evaluate/SKILL.md +3 -11
  188. package/departments/kb/skills/taxonomy-manage/SKILL.md +3 -11
  189. package/departments/kb/skills/write-as-persona/SKILL.md +3 -11
  190. package/departments/landing/SKILL.md +4 -12
  191. package/departments/landing/skills/ab-test/SKILL.md +3 -11
  192. package/departments/landing/skills/affiliate-bridge/SKILL.md +3 -11
  193. package/departments/landing/skills/awareness-diagnose/SKILL.md +3 -11
  194. package/departments/landing/skills/copy-framework/SKILL.md +1 -1
  195. package/departments/landing/skills/email-sequence/SKILL.md +3 -11
  196. package/departments/landing/skills/funnel-metrics/SKILL.md +3 -11
  197. package/departments/landing/skills/headline-write/SKILL.md +3 -11
  198. package/departments/landing/skills/launch-sequence/SKILL.md +3 -11
  199. package/departments/landing/skills/offer-create/SKILL.md +3 -11
  200. package/departments/landing/skills/optimize-page/SKILL.md +3 -11
  201. package/departments/landing/skills/page-architect/SKILL.md +3 -11
  202. package/departments/landing/skills/persuasion-apply/SKILL.md +3 -11
  203. package/departments/landing/skills/webinar-funnel/SKILL.md +3 -11
  204. package/departments/leadership/SKILL.md +4 -12
  205. package/departments/leadership/skills/change-manage/SKILL.md +3 -11
  206. package/departments/leadership/skills/conflict-resolve/SKILL.md +3 -11
  207. package/departments/leadership/skills/culture-audit/SKILL.md +3 -11
  208. package/departments/leadership/skills/delegation-matrix/SKILL.md +3 -11
  209. package/departments/leadership/skills/disc-assess/SKILL.md +3 -11
  210. package/departments/leadership/skills/feedback-give/SKILL.md +3 -11
  211. package/departments/leadership/skills/hiring-plan/SKILL.md +3 -11
  212. package/departments/leadership/skills/performance-review/SKILL.md +3 -11
  213. package/departments/marketing/SKILL.md +4 -12
  214. package/departments/marketing/skills/ab-test/SKILL.md +3 -11
  215. package/departments/marketing/skills/analytics-report/SKILL.md +3 -11
  216. package/departments/marketing/skills/audience-segment/SKILL.md +3 -11
  217. package/departments/marketing/skills/calendar-plan/SKILL.md +3 -11
  218. package/departments/marketing/skills/competitor-analysis/SKILL.md +3 -11
  219. package/departments/marketing/skills/content-audit/SKILL.md +3 -11
  220. package/departments/marketing/skills/email-sequence/SKILL.md +3 -11
  221. package/departments/marketing/skills/growth-loop/SKILL.md +15 -13
  222. package/departments/marketing/skills/marketing-automation/SKILL.md +3 -11
  223. package/departments/marketing/skills/paid-campaign/SKILL.md +3 -11
  224. package/departments/marketing/skills/programmatic-seo/SKILL.md +3 -11
  225. package/departments/marketing/skills/seo-audit/SKILL.md +3 -11
  226. package/departments/marketing/skills/social-strategy/SKILL.md +3 -11
  227. package/departments/ops/SKILL.md +4 -12
  228. package/departments/ops/skills/bottleneck-find/SKILL.md +3 -11
  229. package/departments/ops/skills/dashboard-build/SKILL.md +3 -11
  230. package/departments/ops/skills/gdpr-compliance/SKILL.md +3 -11
  231. package/departments/ops/skills/gtd-setup/SKILL.md +3 -11
  232. package/departments/ops/skills/integration-design/SKILL.md +3 -11
  233. package/departments/ops/skills/iso27001/SKILL.md +3 -11
  234. package/departments/ops/skills/lean-audit/SKILL.md +3 -11
  235. package/departments/ops/skills/metrics-dashboard/SKILL.md +3 -11
  236. package/departments/ops/skills/n8n-flow/SKILL.md +3 -11
  237. package/departments/ops/skills/quality-management/SKILL.md +3 -11
  238. package/departments/ops/skills/risk-management/SKILL.md +3 -11
  239. package/departments/ops/skills/soc2-compliance/SKILL.md +3 -11
  240. package/departments/ops/skills/sop-create/SKILL.md +3 -11
  241. package/departments/ops/skills/workflow-automate/SKILL.md +3 -11
  242. package/departments/ops/skills/zapier-flow/SKILL.md +3 -11
  243. package/departments/org/SKILL.md +4 -12
  244. package/departments/org/skills/compensation-plan/SKILL.md +3 -11
  245. package/departments/org/skills/culture-define/SKILL.md +3 -11
  246. package/departments/org/skills/decision-framework/SKILL.md +3 -11
  247. package/departments/org/skills/hiring-plan/SKILL.md +3 -11
  248. package/departments/org/skills/meeting-optimize/SKILL.md +3 -11
  249. package/departments/org/skills/onboarding-design/SKILL.md +3 -11
  250. package/departments/org/skills/org-design/SKILL.md +3 -11
  251. package/departments/org/skills/remote-setup/SKILL.md +3 -11
  252. package/departments/org/skills/sop-process/SKILL.md +3 -11
  253. package/departments/org/skills/team-assess/SKILL.md +3 -11
  254. package/departments/pm/SKILL.md +4 -12
  255. package/departments/pm/skills/backlog-groom/SKILL.md +3 -11
  256. package/departments/pm/skills/discovery-plan/SKILL.md +3 -11
  257. package/departments/pm/skills/estimate-forecast/SKILL.md +3 -11
  258. package/departments/pm/skills/impact-map/SKILL.md +3 -11
  259. package/departments/pm/skills/kanban-setup/SKILL.md +3 -11
  260. package/departments/pm/skills/risk-register/SKILL.md +3 -11
  261. package/departments/pm/skills/roadmap-build/SKILL.md +3 -11
  262. package/departments/pm/skills/sprint-plan/SKILL.md +3 -11
  263. package/departments/pm/skills/stakeholder-map/SKILL.md +3 -11
  264. package/departments/pm/skills/standup-run/SKILL.md +3 -11
  265. package/departments/pm/skills/story-write/SKILL.md +3 -11
  266. package/departments/quality/agents/copy-director.yaml +10 -4
  267. package/departments/saas/SKILL.md +4 -12
  268. package/departments/saas/skills/benchmark-compare/SKILL.md +3 -11
  269. package/departments/saas/skills/churn-analysis/SKILL.md +3 -11
  270. package/departments/saas/skills/customer-success/SKILL.md +3 -11
  271. package/departments/saas/skills/growth-plan/SKILL.md +13 -12
  272. package/departments/saas/skills/gtm-strategy/SKILL.md +3 -11
  273. package/departments/saas/skills/launch-execute/SKILL.md +3 -11
  274. package/departments/saas/skills/metrics-dashboard/SKILL.md +3 -11
  275. package/departments/saas/skills/micro-saas-stack/SKILL.md +3 -11
  276. package/departments/saas/skills/mvp-build/SKILL.md +3 -11
  277. package/departments/saas/skills/niche-evaluate/SKILL.md +13 -12
  278. package/departments/saas/skills/onboarding-optimize/SKILL.md +3 -11
  279. package/departments/saas/skills/plg-setup/SKILL.md +3 -11
  280. package/departments/saas/skills/pricing-strategy/SKILL.md +3 -11
  281. package/departments/saas/skills/validate-idea/SKILL.md +13 -13
  282. package/departments/sales/SKILL.md +4 -12
  283. package/departments/sales/skills/challenger-sell/SKILL.md +3 -11
  284. package/departments/sales/skills/deal-qualify/SKILL.md +3 -11
  285. package/departments/sales/skills/discovery-call/SKILL.md +3 -11
  286. package/departments/sales/skills/forecast-revenue/SKILL.md +3 -11
  287. package/departments/sales/skills/negotiate-plan/SKILL.md +3 -11
  288. package/departments/sales/skills/objection-handle/SKILL.md +3 -11
  289. package/departments/sales/skills/pipeline-manage/SKILL.md +3 -11
  290. package/departments/sales/skills/pricing-negotiate/SKILL.md +3 -11
  291. package/departments/strategy/SKILL.md +4 -12
  292. package/departments/strategy/skills/blue-ocean/SKILL.md +3 -11
  293. package/departments/strategy/skills/bmc/SKILL.md +3 -11
  294. package/departments/strategy/skills/board-advisor/SKILL.md +3 -11
  295. package/departments/strategy/skills/cto-advisor/SKILL.md +3 -11
  296. package/departments/strategy/skills/extract-data/SKILL.md +3 -11
  297. package/departments/strategy/skills/five-forces/SKILL.md +3 -11
  298. package/departments/strategy/skills/growth-strategy/SKILL.md +15 -14
  299. package/departments/strategy/skills/moat-analysis/SKILL.md +3 -11
  300. package/departments/strategy/skills/position/SKILL.md +3 -11
  301. package/departments/strategy/skills/scenario-plan/SKILL.md +3 -11
  302. package/knowledge/commands-registry.json +3006 -1676
  303. package/knowledge/commands-registry.json.bak +4121 -0
  304. package/package.json +1 -1
  305. package/pyproject.toml +1 -1
  306. package/scripts/__pycache__/migrate_skills_kb_first.cpython-313.pyc +0 -0
  307. package/scripts/__pycache__/synapse-bridge.cpython-314.pyc +0 -0
  308. package/scripts/migrate_skills_kb_first.py +41 -21
  309. package/scripts/tools/__pycache__/prompt_lint.cpython-313.pyc +0 -0
  310. package/scripts/tools/prompt_lint.py +276 -0
@@ -50,13 +50,11 @@ _CACHE_DIR = arkaos_temp_dir("arkaos-context-cache")
50
50
  _CACHE_TTL = 300 # Constitution cache: 5 minutes
51
51
 
52
52
  _L0_FALLBACK = (
53
- "[Constitution] NON-NEGOTIABLE: branch-isolation, obsidian-output, "
54
- "authority-boundaries, security-gate, context-first, solid-clean-code, "
55
- "spec-driven, human-writing, squad-routing, full-visibility, "
56
- "sequential-validation, mandatory-qa, arka-supremacy | QUALITY-GATE: "
57
- "marta-cqo, eduardo-copy, francisca-tech-ux | MUST: "
58
- "conventional-commits, test-coverage, pattern-matching, "
59
- "actionable-output, memory-persistence"
53
+ "[Constitution] NON-NEGOTIABLE: branch-isolation, security-gate, "
54
+ "mandatory-qa, evidence-flow, arkaos-not-yes-man, excellence-mandate "
55
+ "| QUALITY-GATE: marta-cqo, eduardo-copy, francisca-tech-ux | "
56
+ "MUST (28) incl.: squad-routing, spec-driven, conventional-commits, "
57
+ "test-coverage, subagent-discipline, persona-vs-artifact"
60
58
  )
61
59
 
62
60
  _ROUTE_REMINDER = """
@@ -72,7 +70,7 @@ flow applies (constitution rule evidence-flow; source arka/skills/flow/SKILL.md)
72
70
  G1 CONTEXT ([arka:routing] + grounding) -> G2 PLAN (explicit approval) ->
73
71
  G3 EXECUTE (real test run + exit 0 on record) -> G4 REVIEW (executable checks).
74
72
  Emit [arka:gate:N] at each gate start. No writes before G2 approval.
75
- Trivial bypass: [arka:trivial] <reason>, single file, under 10 lines."""
73
+ Trivial bypass: [arka:trivial] <reason> for a single-file edit under 10 lines."""
76
74
 
77
75
  # Keep in sync with ARKA_WF_VERB_PATTERN in _lib/workflow-classifier.sh.
78
76
  _WF_VERB_PATTERN = (
@@ -533,8 +531,15 @@ def main(stdin_json: dict | None = None, raw: str = "") -> int:
533
531
  except OSError:
534
532
  pass
535
533
 
536
- user_input = get_str(stdin_json, "userInput") or get_str(
537
- stdin_json, "message"
534
+ # Claude Code sends the user's text under "prompt" (UserPromptSubmit
535
+ # hook schema); "userInput"/"message" cover other runtimes. Missing
536
+ # "prompt" here meant the raw JSON line fell through as user_input,
537
+ # so L1/L5/L2.5 computed on JSON garbage every turn (found 2026-07-09
538
+ # by the un-swallowed orchestrator bats test).
539
+ user_input = (
540
+ get_str(stdin_json, "prompt")
541
+ or get_str(stdin_json, "userInput")
542
+ or get_str(stdin_json, "message")
538
543
  )
539
544
  session_id = get_str(stdin_json, "session_id")
540
545
  effort_level = get_str(stdin_json, "effort", "level") or os.environ.get(
@@ -152,7 +152,8 @@ def _run_claude_cli(cmd: list[str]) -> subprocess.CompletedProcess:
152
152
 
153
153
  try:
154
154
  return subprocess.run(
155
- cmd, capture_output=True, text=True, timeout=60, check=False
155
+ cmd, capture_output=True, text=True, encoding="utf-8",
156
+ errors="replace", timeout=60, check=False
156
157
  )
157
158
  except subprocess.TimeoutExpired as exc:
158
159
  raise LLMUnavailable("claude CLI timed out after 60s") from exc
@@ -170,6 +170,8 @@ def _run_codex_cli(cmd: list[str]) -> subprocess.CompletedProcess:
170
170
  cmd,
171
171
  capture_output=True,
172
172
  text=True,
173
+ encoding="utf-8",
174
+ errors="replace",
173
175
  timeout=_TIMEOUT_SECONDS,
174
176
  check=False,
175
177
  # CRITICAL: with a prompt arg AND piped stdin, codex exec
@@ -147,6 +147,8 @@ def _run_gemini_cli(cmd: list[str]) -> subprocess.CompletedProcess:
147
147
  cmd,
148
148
  capture_output=True,
149
149
  text=True,
150
+ encoding="utf-8",
151
+ errors="replace",
150
152
  timeout=_TIMEOUT_SECONDS,
151
153
  check=False,
152
154
  )
@@ -46,6 +46,10 @@ class AgentExperiencesLayer(Layer):
46
46
  def name(self) -> str:
47
47
  return "AgentExperiences"
48
48
 
49
+ @property
50
+ def input_sensitive(self) -> bool:
51
+ return True
52
+
49
53
  @property
50
54
  def cache_ttl(self) -> int:
51
55
  return 30
@@ -8,6 +8,7 @@ Design goals:
8
8
  - Relevance filtering (skip irrelevant layers)
9
9
  """
10
10
 
11
+ import hashlib
11
12
  import time
12
13
  from dataclasses import dataclass, field
13
14
  from typing import Any
@@ -109,6 +110,14 @@ class SynapseEngine:
109
110
  def _compute_layer(self, layer: Layer, ctx: PromptContext) -> LayerResult:
110
111
  """Compute a single layer with caching."""
111
112
  cache_key = f"{layer.id}:{ctx.cwd}:{ctx.active_agent}"
113
+ if layer.input_sensitive:
114
+ # Input-dependent layers (hints, department, KB retrieval)
115
+ # must not serve one prompt's result to a different prompt
116
+ # within the TTL window.
117
+ digest = hashlib.sha1(
118
+ (ctx.user_input or "").encode("utf-8", "replace")
119
+ ).hexdigest()[:12]
120
+ cache_key += f":{digest}"
112
121
 
113
122
  # Check cache
114
123
  if layer.cache_ttl > 0:
@@ -181,7 +190,6 @@ def create_default_engine(
181
190
  BranchLayer,
182
191
  CommandHintsLayer,
183
192
  QualityGateLayer,
184
- TimeLayer,
185
193
  KnowledgeRetrievalLayer,
186
194
  KBContextLayer,
187
195
  ForgeContextLayer,
@@ -221,7 +229,10 @@ def create_default_engine(
221
229
  engine.register_layer(BranchLayer())
222
230
  engine.register_layer(CommandHintsLayer(commands=commands))
223
231
  engine.register_layer(QualityGateLayer())
224
- engine.register_layer(TimeLayer())
232
+ # L7 TimeLayer removed (prompt-surface P0 2026-07-08): the time-of-day tag
233
+ # had no consumer rule and invalidated the prompt cache at every
234
+ # 5h/12h/18h boundary — same rationale as the session-start hook's
235
+ # time-of-day removal.
225
236
  engine.register_layer(ForgeContextLayer())
226
237
  # L7.5 (PR4 v3.75.0) — Pattern Library injection. Surfaces prior
227
238
  # `PatternCard`s when the user prompt has matching keywords, so
@@ -141,6 +141,10 @@ class GraphContextLayer(Layer):
141
141
  def name(self) -> str:
142
142
  return "GraphContext"
143
143
 
144
+ @property
145
+ def input_sensitive(self) -> bool:
146
+ return True
147
+
144
148
  @property
145
149
  def cache_ttl(self) -> int:
146
150
  return 30
@@ -74,6 +74,18 @@ class Layer(ABC):
74
74
  """Cache TTL in seconds. 0 = no caching."""
75
75
  return 0
76
76
 
77
+ @property
78
+ def input_sensitive(self) -> bool:
79
+ """True when compute() depends on ctx.user_input.
80
+
81
+ Input-sensitive layers get the prompt hashed into their cache
82
+ key — without it, a cached result from one prompt is served for
83
+ a DIFFERENT prompt within the TTL window (found 2026-07-09: L5
84
+ served 'hello' hints for an explicit '/dev feature' command,
85
+ defeating its own slash-suppression rule).
86
+ """
87
+ return False
88
+
77
89
  @property
78
90
  def priority(self) -> int:
79
91
  """Layer priority (lower = computed first)."""
@@ -166,6 +178,10 @@ class DepartmentLayer(Layer):
166
178
  def name(self) -> str:
167
179
  return "Department"
168
180
 
181
+ @property
182
+ def input_sensitive(self) -> bool:
183
+ return True
184
+
169
185
  @property
170
186
  def priority(self) -> int:
171
187
  return 10
@@ -392,6 +408,10 @@ class CommandHintsLayer(Layer):
392
408
  def name(self) -> str:
393
409
  return "CommandHints"
394
410
 
411
+ @property
412
+ def input_sensitive(self) -> bool:
413
+ return True
414
+
395
415
  @property
396
416
  def cache_ttl(self) -> int:
397
417
  return 30
@@ -496,55 +516,6 @@ class QualityGateLayer(Layer):
496
516
  )
497
517
 
498
518
 
499
- # --- L7: Time Signal ---
500
-
501
-
502
- class TimeLayer(Layer):
503
- """L7: Time-of-day signal for context-aware behavior."""
504
-
505
- @property
506
- def id(self) -> str:
507
- return "L7"
508
-
509
- @property
510
- def name(self) -> str:
511
- return "Time"
512
-
513
- @property
514
- def cache_ttl(self) -> int:
515
- # 1 hour — time-of-day period only changes at 5/12/18 boundaries.
516
- # Cache bucket drift of up to 1h is acceptable for a low-signal tag
517
- # and dramatically improves prompt-cache hit rate.
518
- return 3600
519
-
520
- @property
521
- def priority(self) -> int:
522
- return 70
523
-
524
- def compute(self, ctx: PromptContext) -> LayerResult:
525
- start = time.time()
526
- import datetime
527
-
528
- hour = datetime.datetime.now().hour
529
- if 5 <= hour < 12:
530
- period = "morning"
531
- elif 12 <= hour < 18:
532
- period = "afternoon"
533
- else:
534
- period = "evening"
535
-
536
- tag = f"[time:{period}]"
537
- ms = int((time.time() - start) * 1000)
538
- return LayerResult(
539
- layer_id=self.id,
540
- tag=tag,
541
- content=period,
542
- tokens_est=1,
543
- compute_ms=ms,
544
- cached=False,
545
- )
546
-
547
-
548
519
  # --- L3.5: Knowledge Retrieval ---
549
520
 
550
521
 
@@ -571,6 +542,10 @@ class KnowledgeRetrievalLayer(Layer):
571
542
  def name(self) -> str:
572
543
  return "KnowledgeRetrieval"
573
544
 
545
+ @property
546
+ def input_sensitive(self) -> bool:
547
+ return True
548
+
574
549
  @property
575
550
  def cache_ttl(self) -> int:
576
551
  return 30
@@ -1076,6 +1051,10 @@ class KBContextLayer(Layer):
1076
1051
  def name(self) -> str:
1077
1052
  return "KBContext"
1078
1053
 
1054
+ @property
1055
+ def input_sensitive(self) -> bool:
1056
+ return True
1057
+
1079
1058
  @property
1080
1059
  def cache_ttl(self) -> int:
1081
1060
  return 0
@@ -71,6 +71,10 @@ class PatternLibraryLayer(Layer):
71
71
  def name(self) -> str:
72
72
  return "PatternLibrary"
73
73
 
74
+ @property
75
+ def input_sensitive(self) -> bool:
76
+ return True
77
+
74
78
  @property
75
79
  def cache_ttl(self) -> int:
76
80
  return 60
@@ -8,17 +8,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
8
8
  ---
9
9
 
10
10
  <!-- arka:kb-first-prefix begin -->
11
- ## KB-First Research (non-negotiable)
12
-
13
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
14
-
15
- 1. Call `mcp__obsidian__search_notes` on the query first.
16
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
17
- 3. Only after (1) and (2) may external tools run.
18
-
19
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
20
- treat them as your default source. External research supplements, it
21
- does not replace the vault.
11
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
12
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
13
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
22
14
  <!-- arka:kb-first-prefix end -->
23
15
 
24
16
  # Brand & Design Department — ArkaOS v2
@@ -52,7 +44,7 @@ does not replace the vault.
52
44
  | **Isabel** | Visual Designer | 2 | I+S | Colors, logos, mockups, visual assets |
53
45
  | **Sofia D.** | UX/UI Designer | 2 | C+I | Wireframes, usability, accessibility |
54
46
 
55
- ## Brand Creation Method (NON-NEGOTIABLE: strategy before visuals)
47
+ ## Brand Creation Method (MUST: strategy before visuals)
56
48
 
57
49
  ```
58
50
  Level 1 — FOUNDATION (Mateus leads)
@@ -103,7 +95,7 @@ Level 4 — DELIVERY (Valentina leads)
103
95
  When dispatching subagent work via the Task tool, include the `model` parameter from the target agent's YAML `model:` field:
104
96
 
105
97
  - Agent YAMLs at `departments/*/agents/*.yaml` have `model: opus | sonnet | haiku`
106
- - Quality Gate dispatch (Marta/Eduardo/Francisca) ALWAYS uses `model: opus` — NON-NEGOTIABLE
98
+ - Quality Gate dispatch model: constitution `quality_gate.model_policy` (single source best-available via Model Fabric; veto is model-independent)
107
99
  - Default to `sonnet` if the agent YAML has no `model` field
108
100
  - Mechanical tasks (commit messages, routing, keyword extraction) use `model: haiku`
109
101
 
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Archetype Finder — `/brand archetype <brand>`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Colors — `/brand colors <mood>`
@@ -1,9 +1,17 @@
1
1
  ---
2
2
  name: brand/design-review
3
3
  description: >
4
- Open a design tool (Figma, Sketch, Canva desktop) and compare live designs
5
- against brand guidelines. Screenshot and annotate differences.
6
- Requires Computer Use (/mcp computer-use).
4
+ Visual review of live designs against brand guidelines opens Figma,
5
+ Sketch, or Canva desktop via Computer Use, screenshots each artboard, and
6
+ annotates palette, typography, spacing, and logo deviations. Requires
7
+ Computer Use (/mcp -> computer-use). TRIGGER: "/brand design-review",
8
+ "design review", "visual review", "revê o design", "compara com o
9
+ brandbook", "está on-brand?", "visual QA", "UI review" of mockups or
10
+ screenshots, design file paths (*.fig, *.sketch, Canva links). SKIP:
11
+ reviewing the CODE behind a UI (components, CSS, diffs, PRs) ->
12
+ dev/code-review wins; SOLID/style sweep of frontend code ->
13
+ dev/clean-code-review wins; trying to break flows or find abuse vectors ->
14
+ dev/adversarial-review wins.
7
15
  allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent]
8
16
  ---
9
17
 
@@ -7,17 +7,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
7
7
  ---
8
8
 
9
9
  <!-- arka:kb-first-prefix begin -->
10
- ## KB-First Research (non-negotiable)
11
-
12
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
13
-
14
- 1. Call `mcp__obsidian__search_notes` on the query first.
15
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
16
- 3. Only after (1) and (2) may external tools run.
17
-
18
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
19
- treat them as your default source. External research supplements, it
20
- does not replace the vault.
10
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
11
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
12
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
21
13
  <!-- arka:kb-first-prefix end -->
22
14
 
23
15
  # Design System — `/brand design-system`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Identity System — `/brand identity <name>`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Logo — `/brand logo <brief>`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Mockup — `/brand mockup <type>`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Brand Naming — `/brand naming <project>`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Positioning Statement — `/brand positioning <name>`
@@ -7,17 +7,9 @@ allowed-tools: [Read, Write, Edit, Agent, WebFetch, WebSearch]
7
7
  ---
8
8
 
9
9
  <!-- arka:kb-first-prefix begin -->
10
- ## KB-First Research (non-negotiable)
11
-
12
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
13
-
14
- 1. Call `mcp__obsidian__search_notes` on the query first.
15
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
16
- 3. Only after (1) and (2) may external tools run.
17
-
18
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
19
- treat them as your default source. External research supplements, it
20
- does not replace the vault.
10
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
11
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
12
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
21
13
  <!-- arka:kb-first-prefix end -->
22
14
 
23
15
  # Primal Brand Audit — `/brand audit`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Ux Audit — `/brand ux-audit <url>`
@@ -6,17 +6,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
6
6
  ---
7
7
 
8
8
  <!-- arka:kb-first-prefix begin -->
9
- ## KB-First Research (non-negotiable)
10
-
11
- Before any external research (Context7, WebSearch, WebFetch, Firecrawl):
12
-
13
- 1. Call `mcp__obsidian__search_notes` on the query first.
14
- 2. Cite relevant hits with `[[wikilinks]]` or explicitly declare a KB gap.
15
- 3. Only after (1) and (2) may external tools run.
16
-
17
- The Synapse L2.5 layer pre-injects top KB matches on every user prompt;
18
- treat them as your default source. External research supplements, it
19
- does not replace the vault.
9
+ > **KB-first:** query `mcp__obsidian__search_notes` and cite
10
+ > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
12
  <!-- arka:kb-first-prefix end -->
21
13
 
22
14
  # Voice Guide — `/brand voice <context>`