arkaos 4.22.0 → 4.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/THE-ARKAOS-GUIDE.md +72 -0
  2. package/VERSION +1 -1
  3. package/arka/SKILL.md +28 -6
  4. package/arka/skills/bootstrap-agent/SKILL.md +3 -2
  5. package/arka/skills/flow/SKILL.md +3 -2
  6. package/arka/skills/forge/SKILL.md +3 -2
  7. package/arka/skills/recipes/SKILL.md +3 -2
  8. package/arka/skills/refine/SKILL.md +3 -2
  9. package/arka/skills/research/SKILL.md +3 -2
  10. package/bin/arka-doctor +8 -0
  11. package/core/cognition/insights/store.py +15 -4
  12. package/core/forge/persistence.py +27 -9
  13. package/core/forge/schema.py +45 -22
  14. package/core/governance/evidence_checks.py +101 -9
  15. package/core/governance/kb_cite_check.py +16 -6
  16. package/core/governance/stop_lint.py +38 -11
  17. package/core/governance/stop_lint_telemetry.py +11 -2
  18. package/core/hooks/user_prompt_submit.py +21 -23
  19. package/core/synapse/engine.py +46 -16
  20. package/core/synapse/graph_context_layer.py +7 -2
  21. package/core/synapse/kb_cache.py +63 -16
  22. package/core/synapse/layers.py +93 -30
  23. package/core/synapse/layers_base.py +16 -0
  24. package/core/synapse/layers_kb.py +325 -19
  25. package/dashboard/app/layouts/default.vue +7 -0
  26. package/dashboard/app/pages/plan-canvas.vue +630 -0
  27. package/departments/brand/SKILL.md +3 -2
  28. package/departments/brand/skills/archetype-finder/SKILL.md +3 -2
  29. package/departments/brand/skills/colors/SKILL.md +3 -2
  30. package/departments/brand/skills/design-system/SKILL.md +3 -2
  31. package/departments/brand/skills/identity-system/SKILL.md +3 -2
  32. package/departments/brand/skills/logo-brief/SKILL.md +3 -2
  33. package/departments/brand/skills/mockup-generate/SKILL.md +3 -2
  34. package/departments/brand/skills/naming-evaluate/SKILL.md +3 -2
  35. package/departments/brand/skills/positioning-statement/SKILL.md +3 -2
  36. package/departments/brand/skills/primal-audit/SKILL.md +3 -2
  37. package/departments/brand/skills/ux-audit/SKILL.md +3 -2
  38. package/departments/brand/skills/voice-guide/SKILL.md +3 -2
  39. package/departments/brand/skills/wireframe/SKILL.md +3 -2
  40. package/departments/community/SKILL.md +3 -2
  41. package/departments/community/skills/ai-community/SKILL.md +3 -2
  42. package/departments/community/skills/betting-setup/SKILL.md +3 -2
  43. package/departments/community/skills/business-model/SKILL.md +3 -2
  44. package/departments/community/skills/content-calendar/SKILL.md +3 -2
  45. package/departments/community/skills/events-plan/SKILL.md +3 -2
  46. package/departments/community/skills/gamification-design/SKILL.md +3 -2
  47. package/departments/community/skills/growth-plan/SKILL.md +3 -2
  48. package/departments/community/skills/metrics-track/SKILL.md +3 -2
  49. package/departments/community/skills/moderation/SKILL.md +3 -2
  50. package/departments/community/skills/monetize-plan/SKILL.md +3 -2
  51. package/departments/community/skills/niche-setup/SKILL.md +3 -2
  52. package/departments/community/skills/onboarding-flow/SKILL.md +3 -2
  53. package/departments/community/skills/platform-select/SKILL.md +3 -2
  54. package/departments/content/SKILL.md +3 -2
  55. package/departments/content/skills/ai-workflow/SKILL.md +3 -2
  56. package/departments/content/skills/analytics/SKILL.md +3 -2
  57. package/departments/content/skills/calendar/SKILL.md +3 -2
  58. package/departments/content/skills/content-system/SKILL.md +3 -2
  59. package/departments/content/skills/monetization-plan/SKILL.md +3 -2
  60. package/departments/content/skills/newsletter-write/SKILL.md +3 -2
  61. package/departments/content/skills/platform-optimize/SKILL.md +3 -2
  62. package/departments/content/skills/repurpose-plan/SKILL.md +3 -2
  63. package/departments/content/skills/research-compile/SKILL.md +3 -2
  64. package/departments/content/skills/script-structure/SKILL.md +3 -2
  65. package/departments/content/skills/short-form/SKILL.md +3 -2
  66. package/departments/content/skills/thumbnail-package/SKILL.md +3 -2
  67. package/departments/content/skills/trend-hunt/SKILL.md +3 -2
  68. package/departments/content/skills/video-produce/SKILL.md +3 -2
  69. package/departments/content/skills/video-setup/SKILL.md +3 -2
  70. package/departments/content/skills/viral-design/SKILL.md +3 -2
  71. package/departments/content/skills/youtube-strategy/SKILL.md +3 -2
  72. package/departments/dev/SKILL.md +3 -2
  73. package/departments/dev/skills/ai-assisted-dev/SKILL.md +3 -2
  74. package/departments/dev/skills/animated-website/SKILL.md +7 -0
  75. package/departments/dev/skills/architecture-design/SKILL.md +3 -2
  76. package/departments/dev/skills/code-review/SKILL.md +3 -2
  77. package/departments/dev/skills/db-design/SKILL.md +3 -2
  78. package/departments/dev/skills/ddd-model/SKILL.md +3 -2
  79. package/departments/dev/skills/demo-gif/SKILL.md +3 -2
  80. package/departments/dev/skills/deploy/SKILL.md +3 -2
  81. package/departments/dev/skills/devops-pipeline/SKILL.md +3 -2
  82. package/departments/dev/skills/docs/SKILL.md +3 -2
  83. package/departments/dev/skills/mcp/SKILL.md +3 -2
  84. package/departments/dev/skills/performance-audit/SKILL.md +3 -2
  85. package/departments/dev/skills/refactor-plan/SKILL.md +3 -2
  86. package/departments/dev/skills/research/SKILL.md +3 -2
  87. package/departments/dev/skills/security-compliance/SKILL.md +3 -2
  88. package/departments/dev/skills/stack-check/SKILL.md +3 -2
  89. package/departments/ecom/SKILL.md +3 -2
  90. package/departments/ecom/skills/analytics/SKILL.md +3 -2
  91. package/departments/ecom/skills/browse-competitor/SKILL.md +3 -2
  92. package/departments/ecom/skills/cart-recovery/SKILL.md +3 -2
  93. package/departments/ecom/skills/cro-optimize/SKILL.md +3 -2
  94. package/departments/ecom/skills/customer-journey/SKILL.md +3 -2
  95. package/departments/ecom/skills/fulfillment-plan/SKILL.md +3 -2
  96. package/departments/ecom/skills/marketplace-manage/SKILL.md +3 -2
  97. package/departments/ecom/skills/pricing-strategy/SKILL.md +3 -2
  98. package/departments/ecom/skills/product-launch/SKILL.md +3 -2
  99. package/departments/ecom/skills/rfm-segment/SKILL.md +3 -2
  100. package/departments/ecom/skills/social-commerce/SKILL.md +3 -2
  101. package/departments/ecom/skills/store-audit/SKILL.md +3 -2
  102. package/departments/ecom/skills/subscription-model/SKILL.md +3 -2
  103. package/departments/finance/SKILL.md +3 -2
  104. package/departments/finance/skills/budget-plan/SKILL.md +3 -2
  105. package/departments/finance/skills/cashflow-forecast/SKILL.md +3 -2
  106. package/departments/finance/skills/ciso-advisor/SKILL.md +3 -2
  107. package/departments/finance/skills/financial-model/SKILL.md +3 -2
  108. package/departments/finance/skills/pitch-deck/SKILL.md +3 -2
  109. package/departments/finance/skills/scenario-analysis/SKILL.md +3 -2
  110. package/departments/finance/skills/unit-economics/SKILL.md +3 -2
  111. package/departments/finance/skills/valuation-model/SKILL.md +3 -2
  112. package/departments/kb/SKILL.md +3 -2
  113. package/departments/kb/skills/ai-research/SKILL.md +3 -2
  114. package/departments/kb/skills/competitive-intel/SKILL.md +3 -2
  115. package/departments/kb/skills/doc-extraction/SKILL.md +3 -2
  116. package/departments/kb/skills/doc-redaction/SKILL.md +3 -2
  117. package/departments/kb/skills/knowledge-ops/SKILL.md +3 -2
  118. package/departments/kb/skills/knowledge-review/SKILL.md +3 -2
  119. package/departments/kb/skills/learn-content/SKILL.md +3 -2
  120. package/departments/kb/skills/moc-create/SKILL.md +3 -2
  121. package/departments/kb/skills/persona-build/SKILL.md +3 -2
  122. package/departments/kb/skills/research-plan/SKILL.md +3 -2
  123. package/departments/kb/skills/search-kb/SKILL.md +3 -2
  124. package/departments/kb/skills/source-evaluate/SKILL.md +3 -2
  125. package/departments/kb/skills/taxonomy-manage/SKILL.md +3 -2
  126. package/departments/kb/skills/write-as-persona/SKILL.md +3 -2
  127. package/departments/landing/SKILL.md +3 -2
  128. package/departments/landing/skills/ab-test/SKILL.md +3 -2
  129. package/departments/landing/skills/affiliate-bridge/SKILL.md +3 -2
  130. package/departments/landing/skills/awareness-diagnose/SKILL.md +3 -2
  131. package/departments/landing/skills/email-sequence/SKILL.md +3 -2
  132. package/departments/landing/skills/funnel-metrics/SKILL.md +3 -2
  133. package/departments/landing/skills/headline-write/SKILL.md +3 -2
  134. package/departments/landing/skills/launch-sequence/SKILL.md +3 -2
  135. package/departments/landing/skills/offer-create/SKILL.md +3 -2
  136. package/departments/landing/skills/optimize-page/SKILL.md +3 -2
  137. package/departments/landing/skills/page-architect/SKILL.md +3 -2
  138. package/departments/landing/skills/persuasion-apply/SKILL.md +3 -2
  139. package/departments/landing/skills/webinar-funnel/SKILL.md +3 -2
  140. package/departments/leadership/SKILL.md +3 -2
  141. package/departments/leadership/skills/change-manage/SKILL.md +3 -2
  142. package/departments/leadership/skills/conflict-resolve/SKILL.md +3 -2
  143. package/departments/leadership/skills/culture-audit/SKILL.md +3 -2
  144. package/departments/leadership/skills/delegation-matrix/SKILL.md +3 -2
  145. package/departments/leadership/skills/disc-assess/SKILL.md +3 -2
  146. package/departments/leadership/skills/feedback-give/SKILL.md +3 -2
  147. package/departments/leadership/skills/hiring-plan/SKILL.md +3 -2
  148. package/departments/leadership/skills/performance-review/SKILL.md +3 -2
  149. package/departments/marketing/SKILL.md +3 -2
  150. package/departments/marketing/skills/ab-test/SKILL.md +3 -2
  151. package/departments/marketing/skills/analytics-report/SKILL.md +3 -2
  152. package/departments/marketing/skills/audience-segment/SKILL.md +3 -2
  153. package/departments/marketing/skills/calendar-plan/SKILL.md +3 -2
  154. package/departments/marketing/skills/competitor-analysis/SKILL.md +3 -2
  155. package/departments/marketing/skills/content-audit/SKILL.md +3 -2
  156. package/departments/marketing/skills/email-sequence/SKILL.md +3 -2
  157. package/departments/marketing/skills/growth-loop/SKILL.md +3 -2
  158. package/departments/marketing/skills/marketing-automation/SKILL.md +3 -2
  159. package/departments/marketing/skills/paid-campaign/SKILL.md +3 -2
  160. package/departments/marketing/skills/programmatic-seo/SKILL.md +3 -2
  161. package/departments/marketing/skills/seo-audit/SKILL.md +3 -2
  162. package/departments/marketing/skills/social-strategy/SKILL.md +3 -2
  163. package/departments/ops/SKILL.md +3 -2
  164. package/departments/ops/skills/bottleneck-find/SKILL.md +3 -2
  165. package/departments/ops/skills/dashboard-build/SKILL.md +3 -2
  166. package/departments/ops/skills/gdpr-compliance/SKILL.md +3 -2
  167. package/departments/ops/skills/github-ops/SKILL.md +3 -2
  168. package/departments/ops/skills/gtd-setup/SKILL.md +3 -2
  169. package/departments/ops/skills/integration-design/SKILL.md +3 -2
  170. package/departments/ops/skills/iso27001/SKILL.md +3 -2
  171. package/departments/ops/skills/lean-audit/SKILL.md +3 -2
  172. package/departments/ops/skills/metrics-dashboard/SKILL.md +3 -2
  173. package/departments/ops/skills/n8n-flow/SKILL.md +3 -2
  174. package/departments/ops/skills/quality-management/SKILL.md +3 -2
  175. package/departments/ops/skills/risk-management/SKILL.md +3 -2
  176. package/departments/ops/skills/soc2-compliance/SKILL.md +3 -2
  177. package/departments/ops/skills/sop-create/SKILL.md +3 -2
  178. package/departments/ops/skills/terminal-ops/SKILL.md +3 -2
  179. package/departments/ops/skills/workflow-automate/SKILL.md +3 -2
  180. package/departments/ops/skills/zapier-flow/SKILL.md +3 -2
  181. package/departments/org/SKILL.md +3 -2
  182. package/departments/org/skills/compensation-plan/SKILL.md +3 -2
  183. package/departments/org/skills/culture-define/SKILL.md +3 -2
  184. package/departments/org/skills/decision-framework/SKILL.md +3 -2
  185. package/departments/org/skills/hiring-plan/SKILL.md +3 -2
  186. package/departments/org/skills/meeting-optimize/SKILL.md +3 -2
  187. package/departments/org/skills/onboarding-design/SKILL.md +3 -2
  188. package/departments/org/skills/org-design/SKILL.md +3 -2
  189. package/departments/org/skills/remote-setup/SKILL.md +3 -2
  190. package/departments/org/skills/sop-process/SKILL.md +3 -2
  191. package/departments/org/skills/team-assess/SKILL.md +3 -2
  192. package/departments/pm/SKILL.md +3 -2
  193. package/departments/pm/skills/backlog-groom/SKILL.md +3 -2
  194. package/departments/pm/skills/discovery-plan/SKILL.md +3 -2
  195. package/departments/pm/skills/estimate-forecast/SKILL.md +3 -2
  196. package/departments/pm/skills/impact-map/SKILL.md +3 -2
  197. package/departments/pm/skills/kanban-setup/SKILL.md +3 -2
  198. package/departments/pm/skills/risk-register/SKILL.md +3 -2
  199. package/departments/pm/skills/roadmap-build/SKILL.md +3 -2
  200. package/departments/pm/skills/sprint-plan/SKILL.md +3 -2
  201. package/departments/pm/skills/stakeholder-map/SKILL.md +3 -2
  202. package/departments/pm/skills/standup-run/SKILL.md +3 -2
  203. package/departments/pm/skills/story-write/SKILL.md +3 -2
  204. package/departments/saas/SKILL.md +3 -2
  205. package/departments/saas/skills/benchmark-compare/SKILL.md +3 -2
  206. package/departments/saas/skills/churn-analysis/SKILL.md +3 -2
  207. package/departments/saas/skills/customer-success/SKILL.md +3 -2
  208. package/departments/saas/skills/growth-plan/SKILL.md +3 -2
  209. package/departments/saas/skills/gtm-strategy/SKILL.md +3 -2
  210. package/departments/saas/skills/launch-execute/SKILL.md +3 -2
  211. package/departments/saas/skills/metrics-dashboard/SKILL.md +3 -2
  212. package/departments/saas/skills/micro-saas-stack/SKILL.md +3 -2
  213. package/departments/saas/skills/mvp-build/SKILL.md +3 -2
  214. package/departments/saas/skills/niche-evaluate/SKILL.md +3 -2
  215. package/departments/saas/skills/onboarding-optimize/SKILL.md +3 -2
  216. package/departments/saas/skills/plg-setup/SKILL.md +3 -2
  217. package/departments/saas/skills/pricing-strategy/SKILL.md +3 -2
  218. package/departments/saas/skills/validate-idea/SKILL.md +3 -2
  219. package/departments/sales/SKILL.md +3 -2
  220. package/departments/sales/skills/challenger-sell/SKILL.md +3 -2
  221. package/departments/sales/skills/deal-qualify/SKILL.md +3 -2
  222. package/departments/sales/skills/discovery-call/SKILL.md +3 -2
  223. package/departments/sales/skills/forecast-revenue/SKILL.md +3 -2
  224. package/departments/sales/skills/negotiate-plan/SKILL.md +3 -2
  225. package/departments/sales/skills/objection-handle/SKILL.md +3 -2
  226. package/departments/sales/skills/pipeline-manage/SKILL.md +3 -2
  227. package/departments/sales/skills/pricing-negotiate/SKILL.md +3 -2
  228. package/departments/strategy/SKILL.md +3 -2
  229. package/departments/strategy/skills/blue-ocean/SKILL.md +3 -2
  230. package/departments/strategy/skills/bmc/SKILL.md +3 -2
  231. package/departments/strategy/skills/board-advisor/SKILL.md +3 -2
  232. package/departments/strategy/skills/cto-advisor/SKILL.md +3 -2
  233. package/departments/strategy/skills/extract-data/SKILL.md +3 -2
  234. package/departments/strategy/skills/five-forces/SKILL.md +3 -2
  235. package/departments/strategy/skills/growth-strategy/SKILL.md +3 -2
  236. package/departments/strategy/skills/moat-analysis/SKILL.md +3 -2
  237. package/departments/strategy/skills/position/SKILL.md +3 -2
  238. package/departments/strategy/skills/scenario-plan/SKILL.md +3 -2
  239. package/installer/config-seed.js +81 -25
  240. package/installer/graphify.js +340 -0
  241. package/installer/index.js +8 -1
  242. package/installer/keys.js +18 -3
  243. package/installer/update.js +8 -1
  244. package/knowledge/skills-manifest.json +1 -1
  245. package/mcps/registry.json +9 -9
  246. package/mcps/scripts/apply-mcps.sh +6 -2
  247. package/package.json +2 -1
  248. package/pyproject.toml +1 -1
  249. package/scripts/dashboard-api.py +336 -124
  250. package/scripts/guide_gen.py +139 -0
  251. package/scripts/migrate_skills_kb_first.py +3 -2
  252. package/scripts/synapse-bridge.py +9 -1
@@ -7,8 +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:** query `mcp__obsidian__search_notes` and cite
11
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
10
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
11
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
12
+ > or graph nodes — or declare the gap — BEFORE any external research.
12
13
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
13
14
  <!-- arka:kb-first-prefix end -->
14
15
 
@@ -12,8 +12,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
12
12
  ---
13
13
 
14
14
  <!-- arka:kb-first-prefix begin -->
15
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
16
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
15
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
16
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
17
+ > or graph nodes — or declare the gap — BEFORE any external research.
17
18
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
18
19
  <!-- arka:kb-first-prefix end -->
19
20
 
@@ -12,8 +12,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
12
12
  ---
13
13
 
14
14
  <!-- arka:kb-first-prefix begin -->
15
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
16
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
15
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
16
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
17
+ > or graph nodes — or declare the gap — BEFORE any external research.
17
18
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
18
19
  <!-- arka:kb-first-prefix end -->
19
20
 
@@ -11,8 +11,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
11
11
  ---
12
12
 
13
13
  <!-- arka:kb-first-prefix begin -->
14
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
15
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
14
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
15
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
16
+ > or graph nodes — or declare the gap — BEFORE any external research.
16
17
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
17
18
  <!-- arka:kb-first-prefix end -->
18
19
 
@@ -12,8 +12,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
12
12
  ---
13
13
 
14
14
  <!-- arka:kb-first-prefix begin -->
15
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
16
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
15
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
16
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
17
+ > or graph nodes — or declare the gap — BEFORE any external research.
17
18
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
18
19
  <!-- arka:kb-first-prefix end -->
19
20
 
@@ -12,8 +12,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
12
12
  ---
13
13
 
14
14
  <!-- arka:kb-first-prefix begin -->
15
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
16
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
15
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
16
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
17
+ > or graph nodes — or declare the gap — BEFORE any external research.
17
18
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
18
19
  <!-- arka:kb-first-prefix end -->
19
20
 
@@ -12,8 +12,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
12
12
  ---
13
13
 
14
14
  <!-- arka:kb-first-prefix begin -->
15
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
16
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
15
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
16
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
17
+ > or graph nodes — or declare the gap — BEFORE any external research.
17
18
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
18
19
  <!-- arka:kb-first-prefix end -->
19
20
 
@@ -12,8 +12,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
12
12
  ---
13
13
 
14
14
  <!-- arka:kb-first-prefix begin -->
15
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
16
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
15
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
16
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
17
+ > or graph nodes — or declare the gap — BEFORE any external research.
17
18
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
18
19
  <!-- arka:kb-first-prefix end -->
19
20
 
@@ -12,8 +12,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
12
12
  ---
13
13
 
14
14
  <!-- arka:kb-first-prefix begin -->
15
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
16
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
15
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
16
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
17
+ > or graph nodes — or declare the gap — BEFORE any external research.
17
18
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
18
19
  <!-- arka:kb-first-prefix end -->
19
20
 
@@ -8,8 +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:** query `mcp__obsidian__search_notes` and cite
12
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
11
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
12
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
13
+ > or graph nodes — or declare the gap — BEFORE any external research.
13
14
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
14
15
  <!-- arka:kb-first-prefix end -->
15
16
 
@@ -14,8 +14,9 @@ allowed-tools: [Read, Write, Edit, Agent, WebFetch, WebSearch]
14
14
  ---
15
15
 
16
16
  <!-- arka:kb-first-prefix begin -->
17
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
18
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
17
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
18
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
19
+ > or graph nodes — or declare the gap — BEFORE any external research.
19
20
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
21
  <!-- arka:kb-first-prefix end -->
21
22
 
@@ -13,8 +13,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
13
13
  ---
14
14
 
15
15
  <!-- arka:kb-first-prefix begin -->
16
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
17
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
16
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
17
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
18
+ > or graph nodes — or declare the gap — BEFORE any external research.
18
19
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
19
20
  <!-- arka:kb-first-prefix end -->
20
21
 
@@ -15,8 +15,9 @@ allowed-tools: [Read, Write, Edit, Agent, WebFetch, WebSearch]
15
15
  ---
16
16
 
17
17
  <!-- arka:kb-first-prefix begin -->
18
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
19
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
18
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
19
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
20
+ > or graph nodes — or declare the gap — BEFORE any external research.
20
21
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
21
22
  <!-- arka:kb-first-prefix end -->
22
23
 
@@ -14,8 +14,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
14
14
  ---
15
15
 
16
16
  <!-- arka:kb-first-prefix begin -->
17
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
18
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
17
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
18
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
19
+ > or graph nodes — or declare the gap — BEFORE any external research.
19
20
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
21
  <!-- arka:kb-first-prefix end -->
21
22
 
@@ -14,8 +14,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
14
14
  ---
15
15
 
16
16
  <!-- arka:kb-first-prefix begin -->
17
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
18
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
17
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
18
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
19
+ > or graph nodes — or declare the gap — BEFORE any external research.
19
20
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
21
  <!-- arka:kb-first-prefix end -->
21
22
 
@@ -14,8 +14,9 @@ allowed-tools: [Read, Write, Edit, Agent, WebFetch, WebSearch]
14
14
  ---
15
15
 
16
16
  <!-- arka:kb-first-prefix begin -->
17
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
18
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
17
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
18
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
19
+ > or graph nodes — or declare the gap — BEFORE any external research.
19
20
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
21
  <!-- arka:kb-first-prefix end -->
21
22
 
@@ -17,8 +17,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
17
17
  ---
18
18
 
19
19
  <!-- arka:kb-first-prefix begin -->
20
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
21
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
20
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
21
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
22
+ > or graph nodes — or declare the gap — BEFORE any external research.
22
23
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
23
24
  <!-- arka:kb-first-prefix end -->
24
25
 
@@ -13,8 +13,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
13
13
  ---
14
14
 
15
15
  <!-- arka:kb-first-prefix begin -->
16
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
17
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
16
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
17
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
18
+ > or graph nodes — or declare the gap — BEFORE any external research.
18
19
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
19
20
  <!-- arka:kb-first-prefix end -->
20
21
 
@@ -15,8 +15,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
15
15
  ---
16
16
 
17
17
  <!-- arka:kb-first-prefix begin -->
18
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
19
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
18
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
19
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
20
+ > or graph nodes — or declare the gap — BEFORE any external research.
20
21
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
21
22
  <!-- arka:kb-first-prefix end -->
22
23
 
@@ -14,8 +14,9 @@ allowed-tools: [Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch]
14
14
  ---
15
15
 
16
16
  <!-- arka:kb-first-prefix begin -->
17
- > **KB-first:** query `mcp__obsidian__search_notes` and cite
18
- > `[[wikilinks]]` — or declare the gap — BEFORE any external research.
17
+ > **KB-first:** query `mcp__obsidian__search_notes` (and
18
+ > `mcp__graphify__query_graph` when configured) and cite `[[wikilinks]]`
19
+ > or graph nodes — or declare the gap — BEFORE any external research.
19
20
  > Full doctrine: `arka/SKILL.md` (KB-First Research).
20
21
  <!-- arka:kb-first-prefix end -->
21
22
 
@@ -5,9 +5,12 @@
5
5
  // user choice (true OR false) is always preserved.
6
6
  //
7
7
  // Seeded template keys (operator decisions):
8
- // hooks.hardEnforcement = true (PR19 v2.41.0)
9
- // hooks.kbFirst = true (PR-3 v4.1 — KB-first ON out of the box)
10
- // memory.sessionMemory = true (F1-A2 — session semantic memory ON)
8
+ // hooks.hardEnforcement = true (PR19 v2.41.0)
9
+ // hooks.kbFirst = true (PR-3 v4.1 — KB-first ON out of the box)
10
+ // memory.sessionMemory = true (F1-A2 — session semantic memory ON)
11
+ // knowledge.graphify.enabled = true (graphify HTTP — "active once configured".
12
+ // Applies only when a url + token are also
13
+ // set; a fresh user with no endpoint is a no-op.)
11
14
  //
12
15
  // Returns a status object:
13
16
  // { action: "created" | "added-key" | "noop"
@@ -28,37 +31,31 @@ const SEEDED_SECTIONS = {
28
31
  memory: ["sessionMemory"],
29
32
  };
30
33
 
34
+ // Nested boolean seeds: [section, subsection, key, value]. Same idempotent
35
+ // contract as SEEDED_SECTIONS (seed only when unset, preserve explicit
36
+ // user choice), but for keys nested two levels deep. graphify.enabled means
37
+ // "be active once a url + token exist" — it never activates on its own.
38
+ const NESTED_SEEDS = [
39
+ ["knowledge", "graphify", "enabled", true],
40
+ ];
41
+
31
42
  function defaultConfig() {
32
43
  const config = {};
33
44
  for (const [section, keys] of Object.entries(SEEDED_SECTIONS)) {
34
45
  config[section] = {};
35
46
  for (const key of keys) config[section][key] = true;
36
47
  }
48
+ for (const [section, sub, key, value] of NESTED_SEEDS) {
49
+ config[section] = config[section] || {};
50
+ config[section][sub] = config[section][sub] || {};
51
+ config[section][sub][key] = value;
52
+ }
37
53
  return config;
38
54
  }
39
55
 
40
- export function seedArkaosConfig({ home = homedir() } = {}) {
41
- const cfgPath = join(home, ".arkaos", "config.json");
42
-
43
- if (!existsSync(cfgPath)) {
44
- writeConfig(cfgPath, defaultConfig());
45
- return { action: "created", path: cfgPath };
46
- }
47
-
48
- let config;
49
- try {
50
- config = JSON.parse(readFileSync(cfgPath, "utf-8"));
51
- if (typeof config !== "object" || config === null) {
52
- throw new Error("config root is not an object");
53
- }
54
- } catch {
55
- // Corrupt JSON — keep the broken copy for recovery, write safe default.
56
- const backup = `${cfgPath}.broken-${Date.now()}`;
57
- try { copyFileSync(cfgPath, backup); } catch { /* best effort */ }
58
- writeConfig(cfgPath, defaultConfig());
59
- return { action: "rewrote-corrupt", path: cfgPath, backup };
60
- }
61
-
56
+ // Seed the one-level keys in SEEDED_SECTIONS: write only when unset, never
57
+ // clobber an explicit true/false.
58
+ function applyFlatSeeds(config) {
62
59
  let added = false;
63
60
  let preservedFalse = false;
64
61
  for (const [section, keys] of Object.entries(SEEDED_SECTIONS)) {
@@ -76,6 +73,65 @@ export function seedArkaosConfig({ home = homedir() } = {}) {
76
73
  added = true;
77
74
  }
78
75
  }
76
+ return { added, preservedFalse };
77
+ }
78
+
79
+ // Seed the two-level keys in NESTED_SEEDS, same contract as the flat ones:
80
+ // write only when unset, never clobber an explicit true/false.
81
+ // Extracted so seedArkaosConfig stays under the 30-line Clean Code limit.
82
+ function applyNestedSeeds(config) {
83
+ let added = false;
84
+ let preservedFalse = false;
85
+ for (const [section, sub, key, value] of NESTED_SEEDS) {
86
+ const sec = config[section];
87
+ config[section] = sec && typeof sec === "object" ? sec : {};
88
+ const subObj = config[section][sub];
89
+ config[section][sub] = subObj && typeof subObj === "object" ? subObj : {};
90
+ const current = config[section][sub][key];
91
+ if (current === true || current === false) {
92
+ if (current === false) preservedFalse = true; // explicit user choice
93
+ continue;
94
+ }
95
+ config[section][sub][key] = value;
96
+ added = true;
97
+ }
98
+ return { added, preservedFalse };
99
+ }
100
+
101
+ // Load the config for seeding. Returns {config} when there is something to
102
+ // seed, or {done} when the file was absent or corrupt and has been written
103
+ // from the template — in which case the caller returns that status as-is.
104
+ function loadOrReset(cfgPath) {
105
+ if (!existsSync(cfgPath)) {
106
+ writeConfig(cfgPath, defaultConfig());
107
+ return { done: { action: "created", path: cfgPath } };
108
+ }
109
+ try {
110
+ const config = JSON.parse(readFileSync(cfgPath, "utf-8"));
111
+ if (typeof config !== "object" || config === null) {
112
+ throw new Error("config root is not an object");
113
+ }
114
+ return { config };
115
+ } catch {
116
+ // Corrupt JSON — keep the broken copy for recovery, write safe default.
117
+ const backup = `${cfgPath}.broken-${Date.now()}`;
118
+ try { copyFileSync(cfgPath, backup); } catch { /* best effort */ }
119
+ writeConfig(cfgPath, defaultConfig());
120
+ return { done: { action: "rewrote-corrupt", path: cfgPath, backup } };
121
+ }
122
+ }
123
+
124
+ export function seedArkaosConfig({ home = homedir() } = {}) {
125
+ const cfgPath = join(home, ".arkaos", "config.json");
126
+
127
+ const loaded = loadOrReset(cfgPath);
128
+ if (loaded.done) return loaded.done;
129
+ const config = loaded.config;
130
+
131
+ const flat = applyFlatSeeds(config);
132
+ const nested = applyNestedSeeds(config);
133
+ const added = flat.added || nested.added;
134
+ const preservedFalse = flat.preservedFalse || nested.preservedFalse;
79
135
 
80
136
  if (added) {
81
137
  writeConfig(cfgPath, config);