@lavralabs/lavra 0.7.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 (452) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -0
  3. package/bin/install.js +302 -0
  4. package/bin/plan-export.js +300 -0
  5. package/bin/plan-view.js +695 -0
  6. package/install.sh +136 -0
  7. package/package.json +28 -0
  8. package/plugins/lavra/.claude-plugin/plugin.json +22 -0
  9. package/plugins/lavra/.mcp.json +8 -0
  10. package/plugins/lavra/README.md +125 -0
  11. package/plugins/lavra/agents/design/design-implementation-reviewer.md +123 -0
  12. package/plugins/lavra/agents/design/design-iterator.md +219 -0
  13. package/plugins/lavra/agents/design/figma-design-sync.md +212 -0
  14. package/plugins/lavra/agents/docs/ankane-readme-writer.md +90 -0
  15. package/plugins/lavra/agents/research/best-practices-researcher.md +131 -0
  16. package/plugins/lavra/agents/research/framework-docs-researcher.md +111 -0
  17. package/plugins/lavra/agents/research/git-history-analyzer.md +73 -0
  18. package/plugins/lavra/agents/research/learnings-researcher.md +255 -0
  19. package/plugins/lavra/agents/research/repo-research-analyst.md +157 -0
  20. package/plugins/lavra/agents/review/agent-native-reviewer.md +274 -0
  21. package/plugins/lavra/agents/review/architecture-strategist.md +82 -0
  22. package/plugins/lavra/agents/review/code-simplicity-reviewer.md +109 -0
  23. package/plugins/lavra/agents/review/data-integrity-guardian.md +89 -0
  24. package/plugins/lavra/agents/review/data-migration-expert.md +118 -0
  25. package/plugins/lavra/agents/review/deployment-verification-agent.md +178 -0
  26. package/plugins/lavra/agents/review/dhh-rails-reviewer.md +94 -0
  27. package/plugins/lavra/agents/review/goal-verifier.md +109 -0
  28. package/plugins/lavra/agents/review/julik-frontend-races-reviewer.md +239 -0
  29. package/plugins/lavra/agents/review/kieran-python-reviewer.md +148 -0
  30. package/plugins/lavra/agents/review/kieran-rails-reviewer.md +130 -0
  31. package/plugins/lavra/agents/review/kieran-typescript-reviewer.md +139 -0
  32. package/plugins/lavra/agents/review/migration-drift-detector.md +307 -0
  33. package/plugins/lavra/agents/review/pattern-recognition-specialist.md +87 -0
  34. package/plugins/lavra/agents/review/performance-oracle.md +154 -0
  35. package/plugins/lavra/agents/review/security-sentinel.md +125 -0
  36. package/plugins/lavra/agents/workflow/bug-reproduction-validator.md +119 -0
  37. package/plugins/lavra/agents/workflow/every-style-editor.md +97 -0
  38. package/plugins/lavra/agents/workflow/lint.md +30 -0
  39. package/plugins/lavra/agents/workflow/pr-comment-resolver.md +95 -0
  40. package/plugins/lavra/agents/workflow/spec-flow-analyzer.md +156 -0
  41. package/plugins/lavra/commands/changelog.md +149 -0
  42. package/plugins/lavra/commands/heal-skill.md +130 -0
  43. package/plugins/lavra/commands/lavra-brainstorm.md +388 -0
  44. package/plugins/lavra/commands/lavra-ceo-review.md +388 -0
  45. package/plugins/lavra/commands/lavra-checkpoint.md +162 -0
  46. package/plugins/lavra/commands/lavra-design.md +621 -0
  47. package/plugins/lavra/commands/lavra-eng-review.md +262 -0
  48. package/plugins/lavra/commands/lavra-import.md +194 -0
  49. package/plugins/lavra/commands/lavra-learn.md +176 -0
  50. package/plugins/lavra/commands/lavra-plan.md +515 -0
  51. package/plugins/lavra/commands/lavra-qa.md +357 -0
  52. package/plugins/lavra/commands/lavra-quick.md +178 -0
  53. package/plugins/lavra/commands/lavra-recall.md +279 -0
  54. package/plugins/lavra/commands/lavra-research.md +267 -0
  55. package/plugins/lavra/commands/lavra-retro.md +400 -0
  56. package/plugins/lavra/commands/lavra-review.md +401 -0
  57. package/plugins/lavra/commands/lavra-ship.md +330 -0
  58. package/plugins/lavra/commands/lavra-triage.md +159 -0
  59. package/plugins/lavra/commands/lavra-work-ralph.md +521 -0
  60. package/plugins/lavra/commands/lavra-work-teams.md +504 -0
  61. package/plugins/lavra/commands/lavra-work.md +1019 -0
  62. package/plugins/lavra/commands/optional/agent-native-audit.md +282 -0
  63. package/plugins/lavra/commands/optional/feature-video.md +262 -0
  64. package/plugins/lavra/commands/optional/generate-command.md +146 -0
  65. package/plugins/lavra/commands/optional/reproduce-bug.md +97 -0
  66. package/plugins/lavra/commands/optional/xcode-test.md +287 -0
  67. package/plugins/lavra/commands/report-bug.md +155 -0
  68. package/plugins/lavra/commands/test-browser.md +305 -0
  69. package/plugins/lavra/cortex/agents/design/design-implementation-reviewer.md +127 -0
  70. package/plugins/lavra/cortex/agents/design/design-iterator.md +222 -0
  71. package/plugins/lavra/cortex/agents/design/figma-design-sync.md +215 -0
  72. package/plugins/lavra/cortex/agents/docs/ankane-readme-writer.md +93 -0
  73. package/plugins/lavra/cortex/agents/research/best-practices-researcher.md +135 -0
  74. package/plugins/lavra/cortex/agents/research/framework-docs-researcher.md +115 -0
  75. package/plugins/lavra/cortex/agents/research/git-history-analyzer.md +77 -0
  76. package/plugins/lavra/cortex/agents/research/learnings-researcher.md +259 -0
  77. package/plugins/lavra/cortex/agents/research/repo-research-analyst.md +161 -0
  78. package/plugins/lavra/cortex/agents/review/agent-native-reviewer.md +278 -0
  79. package/plugins/lavra/cortex/agents/review/architecture-strategist.md +86 -0
  80. package/plugins/lavra/cortex/agents/review/code-simplicity-reviewer.md +113 -0
  81. package/plugins/lavra/cortex/agents/review/data-integrity-guardian.md +93 -0
  82. package/plugins/lavra/cortex/agents/review/data-migration-expert.md +122 -0
  83. package/plugins/lavra/cortex/agents/review/deployment-verification-agent.md +182 -0
  84. package/plugins/lavra/cortex/agents/review/dhh-rails-reviewer.md +98 -0
  85. package/plugins/lavra/cortex/agents/review/goal-verifier.md +113 -0
  86. package/plugins/lavra/cortex/agents/review/julik-frontend-races-reviewer.md +243 -0
  87. package/plugins/lavra/cortex/agents/review/kieran-python-reviewer.md +152 -0
  88. package/plugins/lavra/cortex/agents/review/kieran-rails-reviewer.md +134 -0
  89. package/plugins/lavra/cortex/agents/review/kieran-typescript-reviewer.md +143 -0
  90. package/plugins/lavra/cortex/agents/review/migration-drift-detector.md +311 -0
  91. package/plugins/lavra/cortex/agents/review/pattern-recognition-specialist.md +91 -0
  92. package/plugins/lavra/cortex/agents/review/performance-oracle.md +158 -0
  93. package/plugins/lavra/cortex/agents/review/security-sentinel.md +129 -0
  94. package/plugins/lavra/cortex/agents/workflow/bug-reproduction-validator.md +123 -0
  95. package/plugins/lavra/cortex/agents/workflow/every-style-editor.md +101 -0
  96. package/plugins/lavra/cortex/agents/workflow/lint.md +33 -0
  97. package/plugins/lavra/cortex/agents/workflow/pr-comment-resolver.md +98 -0
  98. package/plugins/lavra/cortex/agents/workflow/spec-flow-analyzer.md +160 -0
  99. package/plugins/lavra/cortex/commands/agent-native-audit.md +286 -0
  100. package/plugins/lavra/cortex/commands/changelog.md +153 -0
  101. package/plugins/lavra/cortex/commands/create-agent-skill.md +21 -0
  102. package/plugins/lavra/cortex/commands/deploy-docs.md +69 -0
  103. package/plugins/lavra/cortex/commands/feature-video.md +266 -0
  104. package/plugins/lavra/cortex/commands/generate-command.md +150 -0
  105. package/plugins/lavra/cortex/commands/heal-skill.md +134 -0
  106. package/plugins/lavra/cortex/commands/lavra-brainstorm.md +392 -0
  107. package/plugins/lavra/cortex/commands/lavra-ceo-review.md +392 -0
  108. package/plugins/lavra/cortex/commands/lavra-checkpoint.md +166 -0
  109. package/plugins/lavra/cortex/commands/lavra-compound.md +168 -0
  110. package/plugins/lavra/cortex/commands/lavra-deepen.md +389 -0
  111. package/plugins/lavra/cortex/commands/lavra-design.md +625 -0
  112. package/plugins/lavra/cortex/commands/lavra-eng-review.md +266 -0
  113. package/plugins/lavra/cortex/commands/lavra-import.md +198 -0
  114. package/plugins/lavra/cortex/commands/lavra-learn.md +180 -0
  115. package/plugins/lavra/cortex/commands/lavra-parallel.md +910 -0
  116. package/plugins/lavra/cortex/commands/lavra-plan.md +519 -0
  117. package/plugins/lavra/cortex/commands/lavra-qa.md +361 -0
  118. package/plugins/lavra/cortex/commands/lavra-quick.md +182 -0
  119. package/plugins/lavra/cortex/commands/lavra-recall.md +283 -0
  120. package/plugins/lavra/cortex/commands/lavra-research.md +271 -0
  121. package/plugins/lavra/cortex/commands/lavra-retro.md +404 -0
  122. package/plugins/lavra/cortex/commands/lavra-review.md +405 -0
  123. package/plugins/lavra/cortex/commands/lavra-ship.md +334 -0
  124. package/plugins/lavra/cortex/commands/lavra-triage.md +163 -0
  125. package/plugins/lavra/cortex/commands/lavra-work-ralph.md +525 -0
  126. package/plugins/lavra/cortex/commands/lavra-work-teams.md +508 -0
  127. package/plugins/lavra/cortex/commands/lavra-work.md +1023 -0
  128. package/plugins/lavra/cortex/commands/lfg.md +30 -0
  129. package/plugins/lavra/cortex/commands/release-docs.md +148 -0
  130. package/plugins/lavra/cortex/commands/report-bug.md +159 -0
  131. package/plugins/lavra/cortex/commands/reproduce-bug.md +101 -0
  132. package/plugins/lavra/cortex/commands/resolve-pr-parallel.md +58 -0
  133. package/plugins/lavra/cortex/commands/resolve-todo-parallel.md +56 -0
  134. package/plugins/lavra/cortex/commands/test-browser.md +309 -0
  135. package/plugins/lavra/cortex/commands/xcode-test.md +291 -0
  136. package/plugins/lavra/cortex/skills/agent-browser/SKILL.md +227 -0
  137. package/plugins/lavra/cortex/skills/agent-native-architecture/SKILL.md +439 -0
  138. package/plugins/lavra/cortex/skills/andrew-kane-gem-writer/SKILL.md +188 -0
  139. package/plugins/lavra/cortex/skills/brainstorming/SKILL.md +197 -0
  140. package/plugins/lavra/cortex/skills/create-agent-skills/SKILL.md +304 -0
  141. package/plugins/lavra/cortex/skills/dhh-rails-style/SKILL.md +189 -0
  142. package/plugins/lavra/cortex/skills/dspy-ruby/SKILL.md +741 -0
  143. package/plugins/lavra/cortex/skills/every-style-editor/SKILL.md +138 -0
  144. package/plugins/lavra/cortex/skills/file-todos/SKILL.md +256 -0
  145. package/plugins/lavra/cortex/skills/frontend-design/SKILL.md +46 -0
  146. package/plugins/lavra/cortex/skills/gemini-imagegen/SKILL.md +242 -0
  147. package/plugins/lavra/cortex/skills/git-worktree/SKILL.md +307 -0
  148. package/plugins/lavra/cortex/skills/lavra-knowledge/SKILL.md +464 -0
  149. package/plugins/lavra/cortex/skills/project-setup/SKILL.md +418 -0
  150. package/plugins/lavra/cortex/skills/rclone/SKILL.md +155 -0
  151. package/plugins/lavra/docs/quickstart.md +267 -0
  152. package/plugins/lavra/examples/example-plan.md +197 -0
  153. package/plugins/lavra/gemini/agents/design/design-implementation-reviewer.md +130 -0
  154. package/plugins/lavra/gemini/agents/design/design-iterator.md +225 -0
  155. package/plugins/lavra/gemini/agents/design/figma-design-sync.md +218 -0
  156. package/plugins/lavra/gemini/agents/docs/ankane-readme-writer.md +96 -0
  157. package/plugins/lavra/gemini/agents/research/best-practices-researcher.md +138 -0
  158. package/plugins/lavra/gemini/agents/research/framework-docs-researcher.md +118 -0
  159. package/plugins/lavra/gemini/agents/research/git-history-analyzer.md +80 -0
  160. package/plugins/lavra/gemini/agents/research/learnings-researcher.md +262 -0
  161. package/plugins/lavra/gemini/agents/research/repo-research-analyst.md +164 -0
  162. package/plugins/lavra/gemini/agents/review/agent-native-reviewer.md +281 -0
  163. package/plugins/lavra/gemini/agents/review/architecture-strategist.md +89 -0
  164. package/plugins/lavra/gemini/agents/review/code-simplicity-reviewer.md +116 -0
  165. package/plugins/lavra/gemini/agents/review/data-integrity-guardian.md +96 -0
  166. package/plugins/lavra/gemini/agents/review/data-migration-expert.md +125 -0
  167. package/plugins/lavra/gemini/agents/review/deployment-verification-agent.md +185 -0
  168. package/plugins/lavra/gemini/agents/review/dhh-rails-reviewer.md +101 -0
  169. package/plugins/lavra/gemini/agents/review/goal-verifier.md +116 -0
  170. package/plugins/lavra/gemini/agents/review/julik-frontend-races-reviewer.md +246 -0
  171. package/plugins/lavra/gemini/agents/review/kieran-python-reviewer.md +155 -0
  172. package/plugins/lavra/gemini/agents/review/kieran-rails-reviewer.md +137 -0
  173. package/plugins/lavra/gemini/agents/review/kieran-typescript-reviewer.md +146 -0
  174. package/plugins/lavra/gemini/agents/review/migration-drift-detector.md +314 -0
  175. package/plugins/lavra/gemini/agents/review/pattern-recognition-specialist.md +94 -0
  176. package/plugins/lavra/gemini/agents/review/performance-oracle.md +161 -0
  177. package/plugins/lavra/gemini/agents/review/security-sentinel.md +132 -0
  178. package/plugins/lavra/gemini/agents/workflow/bug-reproduction-validator.md +126 -0
  179. package/plugins/lavra/gemini/agents/workflow/every-style-editor.md +103 -0
  180. package/plugins/lavra/gemini/agents/workflow/lint.md +36 -0
  181. package/plugins/lavra/gemini/agents/workflow/pr-comment-resolver.md +101 -0
  182. package/plugins/lavra/gemini/agents/workflow/spec-flow-analyzer.md +163 -0
  183. package/plugins/lavra/gemini/commands/agent-native-audit.toml +284 -0
  184. package/plugins/lavra/gemini/commands/beads-brainstorm.toml +292 -0
  185. package/plugins/lavra/gemini/commands/beads-checkpoint.toml +145 -0
  186. package/plugins/lavra/gemini/commands/beads-compound.toml +167 -0
  187. package/plugins/lavra/gemini/commands/beads-deepen.toml +388 -0
  188. package/plugins/lavra/gemini/commands/beads-design.toml +295 -0
  189. package/plugins/lavra/gemini/commands/beads-import.toml +197 -0
  190. package/plugins/lavra/gemini/commands/beads-parallel.toml +909 -0
  191. package/plugins/lavra/gemini/commands/beads-plan-review.toml +201 -0
  192. package/plugins/lavra/gemini/commands/beads-plan.toml +391 -0
  193. package/plugins/lavra/gemini/commands/beads-quick.toml +134 -0
  194. package/plugins/lavra/gemini/commands/beads-recall.toml +281 -0
  195. package/plugins/lavra/gemini/commands/beads-review.toml +338 -0
  196. package/plugins/lavra/gemini/commands/beads-triage.toml +161 -0
  197. package/plugins/lavra/gemini/commands/beads-work.toml +347 -0
  198. package/plugins/lavra/gemini/commands/changelog.toml +151 -0
  199. package/plugins/lavra/gemini/commands/create-agent-skill.toml +18 -0
  200. package/plugins/lavra/gemini/commands/deploy-docs.toml +68 -0
  201. package/plugins/lavra/gemini/commands/feature-video.toml +264 -0
  202. package/plugins/lavra/gemini/commands/generate-command.toml +148 -0
  203. package/plugins/lavra/gemini/commands/heal-skill.toml +131 -0
  204. package/plugins/lavra/gemini/commands/lavra-brainstorm.toml +391 -0
  205. package/plugins/lavra/gemini/commands/lavra-ceo-review.toml +391 -0
  206. package/plugins/lavra/gemini/commands/lavra-checkpoint.toml +165 -0
  207. package/plugins/lavra/gemini/commands/lavra-design.toml +624 -0
  208. package/plugins/lavra/gemini/commands/lavra-eng-review.toml +265 -0
  209. package/plugins/lavra/gemini/commands/lavra-import.toml +197 -0
  210. package/plugins/lavra/gemini/commands/lavra-learn.toml +179 -0
  211. package/plugins/lavra/gemini/commands/lavra-plan-review.toml +201 -0
  212. package/plugins/lavra/gemini/commands/lavra-plan.toml +518 -0
  213. package/plugins/lavra/gemini/commands/lavra-qa.toml +360 -0
  214. package/plugins/lavra/gemini/commands/lavra-quick.toml +181 -0
  215. package/plugins/lavra/gemini/commands/lavra-recall.toml +281 -0
  216. package/plugins/lavra/gemini/commands/lavra-research.toml +270 -0
  217. package/plugins/lavra/gemini/commands/lavra-retro.toml +403 -0
  218. package/plugins/lavra/gemini/commands/lavra-review.toml +404 -0
  219. package/plugins/lavra/gemini/commands/lavra-ship.toml +333 -0
  220. package/plugins/lavra/gemini/commands/lavra-triage.toml +161 -0
  221. package/plugins/lavra/gemini/commands/lavra-work-ralph.toml +523 -0
  222. package/plugins/lavra/gemini/commands/lavra-work-teams.toml +507 -0
  223. package/plugins/lavra/gemini/commands/lavra-work.toml +1022 -0
  224. package/plugins/lavra/gemini/commands/lfg.toml +28 -0
  225. package/plugins/lavra/gemini/commands/release-docs.toml +146 -0
  226. package/plugins/lavra/gemini/commands/report-bug.toml +157 -0
  227. package/plugins/lavra/gemini/commands/reproduce-bug.toml +99 -0
  228. package/plugins/lavra/gemini/commands/resolve-pr-parallel.toml +56 -0
  229. package/plugins/lavra/gemini/commands/resolve-todo-parallel.toml +54 -0
  230. package/plugins/lavra/gemini/commands/test-browser.toml +307 -0
  231. package/plugins/lavra/gemini/commands/xcode-test.toml +289 -0
  232. package/plugins/lavra/gemini/docs/MCP_SETUP.md +41 -0
  233. package/plugins/lavra/gemini/skills/agent-browser/SKILL.md +227 -0
  234. package/plugins/lavra/gemini/skills/agent-native-architecture/SKILL.md +439 -0
  235. package/plugins/lavra/gemini/skills/andrew-kane-gem-writer/SKILL.md +188 -0
  236. package/plugins/lavra/gemini/skills/beads-knowledge/SKILL.md +464 -0
  237. package/plugins/lavra/gemini/skills/brainstorming/SKILL.md +197 -0
  238. package/plugins/lavra/gemini/skills/create-agent-skills/SKILL.md +304 -0
  239. package/plugins/lavra/gemini/skills/dhh-rails-style/SKILL.md +189 -0
  240. package/plugins/lavra/gemini/skills/dspy-ruby/SKILL.md +741 -0
  241. package/plugins/lavra/gemini/skills/every-style-editor/SKILL.md +138 -0
  242. package/plugins/lavra/gemini/skills/file-todos/SKILL.md +256 -0
  243. package/plugins/lavra/gemini/skills/frontend-design/SKILL.md +46 -0
  244. package/plugins/lavra/gemini/skills/gemini-imagegen/SKILL.md +242 -0
  245. package/plugins/lavra/gemini/skills/git-worktree/SKILL.md +307 -0
  246. package/plugins/lavra/gemini/skills/lavra-knowledge/SKILL.md +464 -0
  247. package/plugins/lavra/gemini/skills/project-setup/SKILL.md +418 -0
  248. package/plugins/lavra/gemini/skills/rclone/SKILL.md +155 -0
  249. package/plugins/lavra/gemini-extension.json +50 -0
  250. package/plugins/lavra/gemini-src/settings.json +37 -0
  251. package/plugins/lavra/hooks/auto-recall.sh +210 -0
  252. package/plugins/lavra/hooks/check-memory.sh +169 -0
  253. package/plugins/lavra/hooks/hooks.json +47 -0
  254. package/plugins/lavra/hooks/knowledge-db.sh +255 -0
  255. package/plugins/lavra/hooks/memory-capture.sh +132 -0
  256. package/plugins/lavra/hooks/provision-memory.sh +144 -0
  257. package/plugins/lavra/hooks/recall.sh +152 -0
  258. package/plugins/lavra/hooks/subagent-wrapup.sh +44 -0
  259. package/plugins/lavra/hooks/teammate-idle-check.sh +29 -0
  260. package/plugins/lavra/opencode/agents/design/design-implementation-reviewer.md +127 -0
  261. package/plugins/lavra/opencode/agents/design/design-iterator.md +222 -0
  262. package/plugins/lavra/opencode/agents/design/figma-design-sync.md +215 -0
  263. package/plugins/lavra/opencode/agents/docs/ankane-readme-writer.md +93 -0
  264. package/plugins/lavra/opencode/agents/research/best-practices-researcher.md +135 -0
  265. package/plugins/lavra/opencode/agents/research/framework-docs-researcher.md +115 -0
  266. package/plugins/lavra/opencode/agents/research/git-history-analyzer.md +77 -0
  267. package/plugins/lavra/opencode/agents/research/learnings-researcher.md +259 -0
  268. package/plugins/lavra/opencode/agents/research/repo-research-analyst.md +161 -0
  269. package/plugins/lavra/opencode/agents/review/agent-native-reviewer.md +278 -0
  270. package/plugins/lavra/opencode/agents/review/architecture-strategist.md +86 -0
  271. package/plugins/lavra/opencode/agents/review/code-simplicity-reviewer.md +113 -0
  272. package/plugins/lavra/opencode/agents/review/data-integrity-guardian.md +93 -0
  273. package/plugins/lavra/opencode/agents/review/data-migration-expert.md +122 -0
  274. package/plugins/lavra/opencode/agents/review/deployment-verification-agent.md +182 -0
  275. package/plugins/lavra/opencode/agents/review/dhh-rails-reviewer.md +98 -0
  276. package/plugins/lavra/opencode/agents/review/goal-verifier.md +113 -0
  277. package/plugins/lavra/opencode/agents/review/julik-frontend-races-reviewer.md +243 -0
  278. package/plugins/lavra/opencode/agents/review/kieran-python-reviewer.md +152 -0
  279. package/plugins/lavra/opencode/agents/review/kieran-rails-reviewer.md +134 -0
  280. package/plugins/lavra/opencode/agents/review/kieran-typescript-reviewer.md +143 -0
  281. package/plugins/lavra/opencode/agents/review/migration-drift-detector.md +311 -0
  282. package/plugins/lavra/opencode/agents/review/pattern-recognition-specialist.md +91 -0
  283. package/plugins/lavra/opencode/agents/review/performance-oracle.md +158 -0
  284. package/plugins/lavra/opencode/agents/review/security-sentinel.md +129 -0
  285. package/plugins/lavra/opencode/agents/workflow/bug-reproduction-validator.md +123 -0
  286. package/plugins/lavra/opencode/agents/workflow/every-style-editor.md +100 -0
  287. package/plugins/lavra/opencode/agents/workflow/lint.md +33 -0
  288. package/plugins/lavra/opencode/agents/workflow/pr-comment-resolver.md +98 -0
  289. package/plugins/lavra/opencode/agents/workflow/spec-flow-analyzer.md +160 -0
  290. package/plugins/lavra/opencode/commands/agent-native-audit.md +286 -0
  291. package/plugins/lavra/opencode/commands/changelog.md +153 -0
  292. package/plugins/lavra/opencode/commands/create-agent-skill.md +21 -0
  293. package/plugins/lavra/opencode/commands/deploy-docs.md +69 -0
  294. package/plugins/lavra/opencode/commands/feature-video.md +266 -0
  295. package/plugins/lavra/opencode/commands/generate-command.md +150 -0
  296. package/plugins/lavra/opencode/commands/heal-skill.md +134 -0
  297. package/plugins/lavra/opencode/commands/lavra-brainstorm.md +392 -0
  298. package/plugins/lavra/opencode/commands/lavra-ceo-review.md +392 -0
  299. package/plugins/lavra/opencode/commands/lavra-checkpoint.md +166 -0
  300. package/plugins/lavra/opencode/commands/lavra-compound.md +168 -0
  301. package/plugins/lavra/opencode/commands/lavra-deepen.md +389 -0
  302. package/plugins/lavra/opencode/commands/lavra-design.md +625 -0
  303. package/plugins/lavra/opencode/commands/lavra-eng-review.md +266 -0
  304. package/plugins/lavra/opencode/commands/lavra-import.md +198 -0
  305. package/plugins/lavra/opencode/commands/lavra-learn.md +180 -0
  306. package/plugins/lavra/opencode/commands/lavra-parallel.md +910 -0
  307. package/plugins/lavra/opencode/commands/lavra-plan.md +519 -0
  308. package/plugins/lavra/opencode/commands/lavra-qa.md +361 -0
  309. package/plugins/lavra/opencode/commands/lavra-quick.md +182 -0
  310. package/plugins/lavra/opencode/commands/lavra-recall.md +283 -0
  311. package/plugins/lavra/opencode/commands/lavra-research.md +271 -0
  312. package/plugins/lavra/opencode/commands/lavra-retro.md +404 -0
  313. package/plugins/lavra/opencode/commands/lavra-review.md +405 -0
  314. package/plugins/lavra/opencode/commands/lavra-ship.md +334 -0
  315. package/plugins/lavra/opencode/commands/lavra-triage.md +163 -0
  316. package/plugins/lavra/opencode/commands/lavra-work-ralph.md +525 -0
  317. package/plugins/lavra/opencode/commands/lavra-work-teams.md +508 -0
  318. package/plugins/lavra/opencode/commands/lavra-work.md +1023 -0
  319. package/plugins/lavra/opencode/commands/lfg.md +30 -0
  320. package/plugins/lavra/opencode/commands/release-docs.md +148 -0
  321. package/plugins/lavra/opencode/commands/report-bug.md +159 -0
  322. package/plugins/lavra/opencode/commands/reproduce-bug.md +101 -0
  323. package/plugins/lavra/opencode/commands/resolve-pr-parallel.md +58 -0
  324. package/plugins/lavra/opencode/commands/resolve-todo-parallel.md +56 -0
  325. package/plugins/lavra/opencode/commands/test-browser.md +309 -0
  326. package/plugins/lavra/opencode/commands/xcode-test.md +291 -0
  327. package/plugins/lavra/opencode/docs/MCP_SETUP.md +48 -0
  328. package/plugins/lavra/opencode/skills/agent-browser/SKILL.md +227 -0
  329. package/plugins/lavra/opencode/skills/agent-native-architecture/SKILL.md +439 -0
  330. package/plugins/lavra/opencode/skills/andrew-kane-gem-writer/SKILL.md +188 -0
  331. package/plugins/lavra/opencode/skills/brainstorming/SKILL.md +197 -0
  332. package/plugins/lavra/opencode/skills/create-agent-skills/SKILL.md +304 -0
  333. package/plugins/lavra/opencode/skills/dhh-rails-style/SKILL.md +189 -0
  334. package/plugins/lavra/opencode/skills/dspy-ruby/SKILL.md +741 -0
  335. package/plugins/lavra/opencode/skills/every-style-editor/SKILL.md +138 -0
  336. package/plugins/lavra/opencode/skills/file-todos/SKILL.md +256 -0
  337. package/plugins/lavra/opencode/skills/frontend-design/SKILL.md +46 -0
  338. package/plugins/lavra/opencode/skills/gemini-imagegen/SKILL.md +242 -0
  339. package/plugins/lavra/opencode/skills/git-worktree/SKILL.md +307 -0
  340. package/plugins/lavra/opencode/skills/lavra-knowledge/SKILL.md +464 -0
  341. package/plugins/lavra/opencode/skills/project-setup/SKILL.md +418 -0
  342. package/plugins/lavra/opencode/skills/rclone/SKILL.md +155 -0
  343. package/plugins/lavra/opencode-src/package.json +13 -0
  344. package/plugins/lavra/opencode-src/plugin.ts +176 -0
  345. package/plugins/lavra/scripts/import-plan.sh +141 -0
  346. package/plugins/lavra/skills/agent-browser/SKILL.md +223 -0
  347. package/plugins/lavra/skills/agent-native-architecture/SKILL.md +435 -0
  348. package/plugins/lavra/skills/agent-native-architecture/references/action-parity-discipline.md +353 -0
  349. package/plugins/lavra/skills/agent-native-architecture/references/agent-execution-patterns.md +362 -0
  350. package/plugins/lavra/skills/agent-native-architecture/references/agent-native-testing.md +508 -0
  351. package/plugins/lavra/skills/agent-native-architecture/references/architecture-patterns.md +478 -0
  352. package/plugins/lavra/skills/agent-native-architecture/references/dynamic-context-injection.md +281 -0
  353. package/plugins/lavra/skills/agent-native-architecture/references/files-universal-interface.md +301 -0
  354. package/plugins/lavra/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +227 -0
  355. package/plugins/lavra/skills/agent-native-architecture/references/mcp-tool-design.md +427 -0
  356. package/plugins/lavra/skills/agent-native-architecture/references/mobile-patterns.md +410 -0
  357. package/plugins/lavra/skills/agent-native-architecture/references/product-implications.md +341 -0
  358. package/plugins/lavra/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +317 -0
  359. package/plugins/lavra/skills/agent-native-architecture/references/self-modification.md +269 -0
  360. package/plugins/lavra/skills/agent-native-architecture/references/shared-workspace-architecture.md +517 -0
  361. package/plugins/lavra/skills/agent-native-architecture/references/system-prompt-design.md +250 -0
  362. package/plugins/lavra/skills/brainstorming/SKILL.md +193 -0
  363. package/plugins/lavra/skills/create-agent-skills/SKILL.md +300 -0
  364. package/plugins/lavra/skills/create-agent-skills/references/api-security.md +60 -0
  365. package/plugins/lavra/skills/create-agent-skills/references/be-clear-and-direct.md +84 -0
  366. package/plugins/lavra/skills/create-agent-skills/references/best-practices.md +404 -0
  367. package/plugins/lavra/skills/create-agent-skills/references/common-patterns.md +121 -0
  368. package/plugins/lavra/skills/create-agent-skills/references/core-principles.md +103 -0
  369. package/plugins/lavra/skills/create-agent-skills/references/executable-code.md +92 -0
  370. package/plugins/lavra/skills/create-agent-skills/references/iteration-and-testing.md +164 -0
  371. package/plugins/lavra/skills/create-agent-skills/references/official-spec.md +185 -0
  372. package/plugins/lavra/skills/create-agent-skills/references/recommended-structure.md +168 -0
  373. package/plugins/lavra/skills/create-agent-skills/references/skill-structure.md +215 -0
  374. package/plugins/lavra/skills/create-agent-skills/references/using-scripts.md +113 -0
  375. package/plugins/lavra/skills/create-agent-skills/references/using-templates.md +112 -0
  376. package/plugins/lavra/skills/create-agent-skills/references/workflows-and-validation.md +122 -0
  377. package/plugins/lavra/skills/create-agent-skills/templates/router-skill.md +73 -0
  378. package/plugins/lavra/skills/create-agent-skills/templates/simple-skill.md +33 -0
  379. package/plugins/lavra/skills/create-agent-skills/workflows/add-reference.md +55 -0
  380. package/plugins/lavra/skills/create-agent-skills/workflows/add-script.md +59 -0
  381. package/plugins/lavra/skills/create-agent-skills/workflows/add-template.md +51 -0
  382. package/plugins/lavra/skills/create-agent-skills/workflows/add-workflow.md +54 -0
  383. package/plugins/lavra/skills/create-agent-skills/workflows/audit-skill.md +63 -0
  384. package/plugins/lavra/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +68 -0
  385. package/plugins/lavra/skills/create-agent-skills/workflows/create-new-skill.md +92 -0
  386. package/plugins/lavra/skills/create-agent-skills/workflows/get-guidance.md +70 -0
  387. package/plugins/lavra/skills/create-agent-skills/workflows/upgrade-to-router.md +68 -0
  388. package/plugins/lavra/skills/create-agent-skills/workflows/verify-skill.md +63 -0
  389. package/plugins/lavra/skills/file-todos/SKILL.md +252 -0
  390. package/plugins/lavra/skills/file-todos/assets/todo-template.md +155 -0
  391. package/plugins/lavra/skills/git-worktree/SKILL.md +303 -0
  392. package/plugins/lavra/skills/git-worktree/scripts/worktree-manager.sh +345 -0
  393. package/plugins/lavra/skills/lavra-knowledge/SKILL.md +460 -0
  394. package/plugins/lavra/skills/lavra-knowledge/references/jsonl-schema.md +104 -0
  395. package/plugins/lavra/skills/optional/andrew-kane-gem-writer/SKILL.md +184 -0
  396. package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/database-adapters.md +231 -0
  397. package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/module-organization.md +121 -0
  398. package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/rails-integration.md +183 -0
  399. package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/resources.md +119 -0
  400. package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
  401. package/plugins/lavra/skills/optional/dhh-rails-style/SKILL.md +185 -0
  402. package/plugins/lavra/skills/optional/dhh-rails-style/references/architecture.md +653 -0
  403. package/plugins/lavra/skills/optional/dhh-rails-style/references/controllers.md +303 -0
  404. package/plugins/lavra/skills/optional/dhh-rails-style/references/frontend.md +510 -0
  405. package/plugins/lavra/skills/optional/dhh-rails-style/references/gems.md +266 -0
  406. package/plugins/lavra/skills/optional/dhh-rails-style/references/models.md +359 -0
  407. package/plugins/lavra/skills/optional/dhh-rails-style/references/testing.md +338 -0
  408. package/plugins/lavra/skills/optional/dspy-ruby/SKILL.md +737 -0
  409. package/plugins/lavra/skills/optional/dspy-ruby/assets/config-template.rb +187 -0
  410. package/plugins/lavra/skills/optional/dspy-ruby/assets/module-template.rb +300 -0
  411. package/plugins/lavra/skills/optional/dspy-ruby/assets/signature-template.rb +221 -0
  412. package/plugins/lavra/skills/optional/dspy-ruby/references/core-concepts.md +674 -0
  413. package/plugins/lavra/skills/optional/dspy-ruby/references/observability.md +366 -0
  414. package/plugins/lavra/skills/optional/dspy-ruby/references/optimization.md +603 -0
  415. package/plugins/lavra/skills/optional/dspy-ruby/references/providers.md +418 -0
  416. package/plugins/lavra/skills/optional/dspy-ruby/references/toolsets.md +502 -0
  417. package/plugins/lavra/skills/optional/every-style-editor/SKILL.md +134 -0
  418. package/plugins/lavra/skills/optional/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
  419. package/plugins/lavra/skills/optional/frontend-design/SKILL.md +42 -0
  420. package/plugins/lavra/skills/optional/gemini-imagegen/SKILL.md +238 -0
  421. package/plugins/lavra/skills/optional/gemini-imagegen/requirements.txt +2 -0
  422. package/plugins/lavra/skills/optional/gemini-imagegen/scripts/compose_images.py +157 -0
  423. package/plugins/lavra/skills/optional/gemini-imagegen/scripts/edit_image.py +144 -0
  424. package/plugins/lavra/skills/optional/gemini-imagegen/scripts/gemini_images.py +263 -0
  425. package/plugins/lavra/skills/optional/gemini-imagegen/scripts/generate_image.py +133 -0
  426. package/plugins/lavra/skills/optional/gemini-imagegen/scripts/multi_turn_chat.py +216 -0
  427. package/plugins/lavra/skills/optional/rclone/SKILL.md +151 -0
  428. package/plugins/lavra/skills/optional/rclone/scripts/check_setup.sh +60 -0
  429. package/plugins/lavra/skills/project-setup/SKILL.md +414 -0
  430. package/plugins/lavra/tests/build-index.sh +116 -0
  431. package/plugins/lavra/tests/recall-bench.sh +224 -0
  432. package/plugins/lavra/tests/search-fts5.sh +65 -0
  433. package/plugins/lavra/tests/search-grep.sh +54 -0
  434. package/plugins/lavra/tests/test-queries.jsonl +25 -0
  435. package/scripts/apply-context-optimizations.py +345 -0
  436. package/scripts/convert-cortex.ts +257 -0
  437. package/scripts/convert-gemini.ts +369 -0
  438. package/scripts/convert-opencode.ts +313 -0
  439. package/scripts/package.json +27 -0
  440. package/scripts/pre-release-check.sh +176 -0
  441. package/scripts/select-opencode-models.sh +178 -0
  442. package/scripts/shared/model-config.json +17 -0
  443. package/scripts/shared/model-mapping.ts +129 -0
  444. package/scripts/shared/security.ts +97 -0
  445. package/scripts/shared/yaml-parser.ts +55 -0
  446. package/scripts/sqlite-to-jsonl.py +207 -0
  447. package/scripts/test-compatibility.ts +539 -0
  448. package/scripts/test-features.sh +342 -0
  449. package/scripts/test-installation.sh +514 -0
  450. package/scripts/test-security.ts +275 -0
  451. package/scripts/trim-agent-descriptions.py +177 -0
  452. package/uninstall.sh +133 -0
@@ -0,0 +1,517 @@
1
+ <overview>
2
+ Agents and users should work in the same data space, not separate sandboxes. When the agent writes a file, the user can see it. When the user edits something, the agent can read the changes. This creates transparency, enables collaboration, and eliminates the need for sync layers.
3
+
4
+ **Core principle:** The agent operates in the same filesystem as the user, not a walled garden.
5
+ </overview>
6
+
7
+ <why_shared_workspace>
8
+ ## Why Shared Workspace?
9
+
10
+ ### The Sandbox Anti-Pattern
11
+
12
+ Many agent implementations isolate the agent:
13
+
14
+ ```
15
+ ┌─────────────────┐ ┌─────────────────┐
16
+ │ User Space │ │ Agent Space │
17
+ ├─────────────────┤ ├─────────────────┤
18
+ │ Documents/ │ │ agent_output/ │
19
+ │ user_files/ │ ←→ │ temp_files/ │
20
+ │ settings.json │sync │ cache/ │
21
+ └─────────────────┘ └─────────────────┘
22
+ ```
23
+
24
+ Problems:
25
+ - Need a sync layer to move data between spaces
26
+ - User can't easily inspect agent work
27
+ - Agent can't build on user contributions
28
+ - Duplication of state
29
+ - Complexity in keeping spaces consistent
30
+
31
+ ### The Shared Workspace Pattern
32
+
33
+ ```
34
+ ┌─────────────────────────────────────────┐
35
+ │ Shared Workspace │
36
+ ├─────────────────────────────────────────┤
37
+ │ Documents/ │
38
+ │ ├── Research/ │
39
+ │ │ └── {bookId}/ ← Agent writes │
40
+ │ │ ├── full_text.txt │
41
+ │ │ ├── introduction.md ← User can edit │
42
+ │ │ └── sources/ │
43
+ │ ├── Chats/ ← Both read/write │
44
+ │ └── profile.md ← Agent generates, user refines │
45
+ └─────────────────────────────────────────┘
46
+ ↑ ↑
47
+ User Agent
48
+ (UI) (Tools)
49
+ ```
50
+
51
+ Benefits:
52
+ - Users can inspect, edit, and extend agent work
53
+ - Agents can build on user contributions
54
+ - No synchronization layer needed
55
+ - Complete transparency
56
+ - Single source of truth
57
+ </why_shared_workspace>
58
+
59
+ <directory_structure>
60
+ ## Designing Your Shared Workspace
61
+
62
+ ### Structure by Domain
63
+
64
+ Organize by what the data represents, not who created it:
65
+
66
+ ```
67
+ Documents/
68
+ ├── Research/
69
+ │ └── {bookId}/
70
+ │ ├── full_text.txt # Agent downloads
71
+ │ ├── introduction.md # Agent generates, user can edit
72
+ │ ├── notes.md # User adds, agent can read
73
+ │ └── sources/
74
+ │ └── {source}.md # Agent gathers
75
+ ├── Chats/
76
+ │ └── {conversationId}.json # Both read/write
77
+ ├── Exports/
78
+ │ └── {date}/ # Agent generates for user
79
+ └── profile.md # Agent generates from photos
80
+ ```
81
+
82
+ ### Don't Structure by Actor
83
+
84
+ ```
85
+ # BAD - Separates by who created it
86
+ Documents/
87
+ ├── user_created/
88
+ │ └── notes.md
89
+ ├── agent_created/
90
+ │ └── research.md
91
+ └── system/
92
+ └── config.json
93
+ ```
94
+
95
+ This creates artificial boundaries and makes collaboration harder.
96
+
97
+ ### Use Conventions for Metadata
98
+
99
+ If you need to track who created/modified something:
100
+
101
+ ```markdown
102
+ <!-- introduction.md -->
103
+ ---
104
+ created_by: agent
105
+ created_at: 2024-01-15
106
+ last_modified_by: user
107
+ last_modified_at: 2024-01-16
108
+ ---
109
+
110
+ # Introduction to Moby Dick
111
+
112
+ This personalized introduction was generated by your reading assistant
113
+ and refined by you on January 16th.
114
+ ```
115
+ </directory_structure>
116
+
117
+ <file_tools>
118
+ ## File Tools for Shared Workspace
119
+
120
+ Give the agent the same file primitives the app uses:
121
+
122
+ ```swift
123
+ // iOS/Swift implementation
124
+ struct FileTools {
125
+ static func readFile() -> AgentTool {
126
+ tool(
127
+ name: "read_file",
128
+ description: "Read a file from the user's documents",
129
+ parameters: ["path": .string("File path relative to Documents/")],
130
+ execute: { params in
131
+ let path = params["path"] as! String
132
+ let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
133
+ let fileURL = documentsURL.appendingPathComponent(path)
134
+ let content = try String(contentsOf: fileURL)
135
+ return ToolResult(text: content)
136
+ }
137
+ )
138
+ }
139
+
140
+ static func writeFile() -> AgentTool {
141
+ tool(
142
+ name: "write_file",
143
+ description: "Write a file to the user's documents",
144
+ parameters: [
145
+ "path": .string("File path relative to Documents/"),
146
+ "content": .string("File content")
147
+ ],
148
+ execute: { params in
149
+ let path = params["path"] as! String
150
+ let content = params["content"] as! String
151
+ let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
152
+ let fileURL = documentsURL.appendingPathComponent(path)
153
+
154
+ // Create parent directories if needed
155
+ try FileManager.default.createDirectory(
156
+ at: fileURL.deletingLastPathComponent(),
157
+ withIntermediateDirectories: true
158
+ )
159
+
160
+ try content.write(to: fileURL, atomically: true, encoding: .utf8)
161
+ return ToolResult(text: "Wrote \(path)")
162
+ }
163
+ )
164
+ }
165
+
166
+ static func listFiles() -> AgentTool {
167
+ tool(
168
+ name: "list_files",
169
+ description: "List files in a directory",
170
+ parameters: ["path": .string("Directory path relative to Documents/")],
171
+ execute: { params in
172
+ let path = params["path"] as! String
173
+ let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
174
+ let dirURL = documentsURL.appendingPathComponent(path)
175
+ let contents = try FileManager.default.contentsOfDirectory(atPath: dirURL.path)
176
+ return ToolResult(text: contents.joined(separator: "\n"))
177
+ }
178
+ )
179
+ }
180
+ }
181
+ ```
182
+
183
+ ### TypeScript/Node.js Implementation
184
+
185
+ ```typescript
186
+ const fileTools = [
187
+ tool(
188
+ "read_file",
189
+ "Read a file from the workspace",
190
+ { path: z.string().describe("File path") },
191
+ async ({ path }) => {
192
+ const content = await fs.readFile(path, 'utf-8');
193
+ return { text: content };
194
+ }
195
+ ),
196
+
197
+ tool(
198
+ "write_file",
199
+ "Write a file to the workspace",
200
+ {
201
+ path: z.string().describe("File path"),
202
+ content: z.string().describe("File content")
203
+ },
204
+ async ({ path, content }) => {
205
+ await fs.mkdir(dirname(path), { recursive: true });
206
+ await fs.writeFile(path, content, 'utf-8');
207
+ return { text: `Wrote ${path}` };
208
+ }
209
+ ),
210
+
211
+ tool(
212
+ "list_files",
213
+ "List files in a directory",
214
+ { path: z.string().describe("Directory path") },
215
+ async ({ path }) => {
216
+ const files = await fs.readdir(path);
217
+ return { text: files.join('\n') };
218
+ }
219
+ ),
220
+
221
+ tool(
222
+ "append_file",
223
+ "Append content to a file",
224
+ {
225
+ path: z.string().describe("File path"),
226
+ content: z.string().describe("Content to append")
227
+ },
228
+ async ({ path, content }) => {
229
+ await fs.appendFile(path, content, 'utf-8');
230
+ return { text: `Appended to ${path}` };
231
+ }
232
+ ),
233
+ ];
234
+ ```
235
+ </file_tools>
236
+
237
+ <ui_integration>
238
+ ## UI Integration with Shared Workspace
239
+
240
+ The UI should observe the same files the agent writes to:
241
+
242
+ ### Pattern 1: File-Based Reactivity (iOS)
243
+
244
+ ```swift
245
+ class ResearchViewModel: ObservableObject {
246
+ @Published var researchFiles: [ResearchFile] = []
247
+
248
+ private var watcher: DirectoryWatcher?
249
+
250
+ func startWatching(bookId: String) {
251
+ let researchPath = documentsURL
252
+ .appendingPathComponent("Research")
253
+ .appendingPathComponent(bookId)
254
+
255
+ watcher = DirectoryWatcher(url: researchPath) { [weak self] in
256
+ // Reload when agent writes new files
257
+ self?.loadResearchFiles(from: researchPath)
258
+ }
259
+
260
+ loadResearchFiles(from: researchPath)
261
+ }
262
+ }
263
+
264
+ // SwiftUI automatically updates when files change
265
+ struct ResearchView: View {
266
+ @StateObject var viewModel = ResearchViewModel()
267
+
268
+ var body: some View {
269
+ List(viewModel.researchFiles) { file in
270
+ ResearchFileRow(file: file)
271
+ }
272
+ }
273
+ }
274
+ ```
275
+
276
+ ### Pattern 2: Shared Data Store
277
+
278
+ When file-watching isn't practical, use a shared data store:
279
+
280
+ ```swift
281
+ // Shared service that both UI and agent tools use
282
+ class BookLibraryService: ObservableObject {
283
+ static let shared = BookLibraryService()
284
+
285
+ @Published var books: [Book] = []
286
+ @Published var analysisRecords: [AnalysisRecord] = []
287
+
288
+ func addAnalysisRecord(_ record: AnalysisRecord) {
289
+ analysisRecords.append(record)
290
+ // Persists to shared storage
291
+ saveToStorage()
292
+ }
293
+ }
294
+
295
+ // Agent tool writes through the same service
296
+ tool("publish_to_feed", async ({ bookId, content, headline }) => {
297
+ let record = AnalysisRecord(bookId: bookId, content: content, headline: headline)
298
+ BookLibraryService.shared.addAnalysisRecord(record)
299
+ return { text: "Published to feed" }
300
+ })
301
+
302
+ // UI observes the same service
303
+ struct FeedView: View {
304
+ @StateObject var library = BookLibraryService.shared
305
+
306
+ var body: some View {
307
+ List(library.analysisRecords) { record in
308
+ FeedItemRow(record: record)
309
+ }
310
+ }
311
+ }
312
+ ```
313
+
314
+ ### Pattern 3: Hybrid (Files + Index)
315
+
316
+ Use files for content, database for indexing:
317
+
318
+ ```
319
+ Documents/
320
+ ├── Research/
321
+ │ └── book_123/
322
+ │ └── introduction.md # Actual content (file)
323
+
324
+ Database:
325
+ ├── research_index
326
+ │ └── { bookId: "book_123", path: "Research/book_123/introduction.md", ... }
327
+ ```
328
+ </ui_integration>
329
+
330
+ <collaboration_patterns>
331
+ ## Agent-User Collaboration Patterns
332
+
333
+ ### Pattern: Agent Drafts, User Refines
334
+
335
+ ```
336
+ 1. Agent generates introduction.md
337
+ 2. User opens in Files app or in-app editor
338
+ 3. User makes refinements
339
+ 4. Agent can see changes via read_file
340
+ 5. Future agent work builds on user refinements
341
+ ```
342
+
343
+ The agent's system prompt should acknowledge this:
344
+
345
+ ```markdown
346
+ ## Working with User Content
347
+
348
+ When you create content (introductions, research notes, etc.), the user may
349
+ edit it afterward. Always read existing files before modifying them—the user
350
+ may have made improvements you should preserve.
351
+
352
+ If a file exists and has been modified by the user (check the metadata or
353
+ compare to your last known version), ask before overwriting.
354
+ ```
355
+
356
+ ### Pattern: User Seeds, Agent Expands
357
+
358
+ ```
359
+ 1. User creates notes.md with initial thoughts
360
+ 2. User asks: "Research more about this"
361
+ 3. Agent reads notes.md to understand context
362
+ 4. Agent adds to notes.md or creates related files
363
+ 5. User continues building on agent additions
364
+ ```
365
+
366
+ ### Pattern: Append-Only Collaboration
367
+
368
+ For chat logs or activity streams:
369
+
370
+ ```markdown
371
+ <!-- activity.md - Both append, neither overwrites -->
372
+
373
+ ## 2024-01-15
374
+
375
+ **User:** Started reading "Moby Dick"
376
+
377
+ **Agent:** Downloaded full text and created research folder
378
+
379
+ **User:** Added highlight about whale symbolism
380
+
381
+ **Agent:** Found 3 academic sources on whale symbolism in Melville's work
382
+ ```
383
+ </collaboration_patterns>
384
+
385
+ <security_considerations>
386
+ ## Security in Shared Workspace
387
+
388
+ ### Scope the Workspace
389
+
390
+ Don't give agents access to the entire filesystem:
391
+
392
+ ```swift
393
+ // GOOD: Scoped to app's documents
394
+ let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
395
+
396
+ tool("read_file", { path }) {
397
+ // Path is relative to documents, can't escape
398
+ let fileURL = documentsURL.appendingPathComponent(path)
399
+ guard fileURL.path.hasPrefix(documentsURL.path) else {
400
+ throw ToolError("Invalid path")
401
+ }
402
+ return try String(contentsOf: fileURL)
403
+ }
404
+
405
+ // BAD: Absolute paths allow escape
406
+ tool("read_file", { path }) {
407
+ return try String(contentsOf: URL(fileURLWithPath: path)) // Can read /etc/passwd!
408
+ }
409
+ ```
410
+
411
+ ### Protect Sensitive Files
412
+
413
+ ```swift
414
+ let protectedPaths = [".env", "credentials.json", "secrets/"]
415
+
416
+ tool("read_file", { path }) {
417
+ if protectedPaths.any({ path.contains($0) }) {
418
+ throw ToolError("Cannot access protected file")
419
+ }
420
+ // ...
421
+ }
422
+ ```
423
+
424
+ ### Audit Agent Actions
425
+
426
+ Log what the agent reads/writes:
427
+
428
+ ```swift
429
+ func logFileAccess(action: String, path: String, agentId: String) {
430
+ logger.info("[\(agentId)] \(action): \(path)")
431
+ }
432
+
433
+ tool("write_file", { path, content }) {
434
+ logFileAccess(action: "WRITE", path: path, agentId: context.agentId)
435
+ // ...
436
+ }
437
+ ```
438
+ </security_considerations>
439
+
440
+ <icloud_sync>
441
+ ## iCloud File Storage for Multi-Device Sync (iOS)
442
+
443
+ For agent-native iOS apps, use iCloud Drive's Documents folder for your shared workspace. This gives you **free, automatic multi-device sync** without building a sync layer or running a server.
444
+
445
+ ### Why iCloud Documents?
446
+
447
+ | Approach | Cost | Complexity | Offline | Multi-Device |
448
+ |----------|------|------------|---------|--------------|
449
+ | Custom backend + sync | $$$ | High | Manual | Yes |
450
+ | CloudKit database | Free tier limits | Medium | Manual | Yes |
451
+ | **iCloud Documents** | Free (user's storage) | Low | Automatic | Automatic |
452
+
453
+ ### Implementation Pattern
454
+
455
+ ```swift
456
+ // Get the iCloud Documents container
457
+ func iCloudDocumentsURL() -> URL? {
458
+ FileManager.default.url(forUbiquityContainerIdentifier: nil)?
459
+ .appendingPathComponent("Documents")
460
+ }
461
+
462
+ // Your shared workspace lives in iCloud
463
+ class SharedWorkspace {
464
+ let rootURL: URL
465
+
466
+ init() {
467
+ // Use iCloud if available, fall back to local
468
+ if let iCloudURL = iCloudDocumentsURL() {
469
+ self.rootURL = iCloudURL
470
+ } else {
471
+ // Fallback to local Documents (user not signed into iCloud)
472
+ self.rootURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
473
+ }
474
+ }
475
+ }
476
+ ```
477
+
478
+ ### When NOT to Use iCloud Documents
479
+
480
+ - **Sensitive data** - Use Keychain or encrypted local storage instead
481
+ - **High-frequency writes** - iCloud sync has latency; use local + periodic sync
482
+ - **Large media files** - Consider CloudKit Assets or on-demand resources
483
+ - **Shared between users** - iCloud Documents is single-user; use CloudKit for sharing
484
+ </icloud_sync>
485
+
486
+ <checklist>
487
+ ## Shared Workspace Checklist
488
+
489
+ Architecture:
490
+ - [ ] Single shared directory for agent and user data
491
+ - [ ] Organized by domain, not by actor
492
+ - [ ] File tools scoped to workspace (no escape)
493
+ - [ ] Protected paths for sensitive files
494
+
495
+ Tools:
496
+ - [ ] `read_file` - Read any file in workspace
497
+ - [ ] `write_file` - Write any file in workspace
498
+ - [ ] `list_files` - Browse directory structure
499
+ - [ ] `search_text` - Find content across files (optional)
500
+
501
+ UI Integration:
502
+ - [ ] UI observes same files agent writes
503
+ - [ ] Changes reflect immediately (file watching or shared store)
504
+ - [ ] User can edit agent-created files
505
+ - [ ] Agent reads user modifications before overwriting
506
+
507
+ Collaboration:
508
+ - [ ] System prompt acknowledges user may edit files
509
+ - [ ] Agent checks for user modifications before overwriting
510
+ - [ ] Metadata tracks who created/modified (optional)
511
+
512
+ Multi-Device (iOS):
513
+ - [ ] Use iCloud Documents for shared workspace (free sync)
514
+ - [ ] Fallback to local Documents if iCloud unavailable
515
+ - [ ] Handle `.icloud` placeholder files (trigger download)
516
+ - [ ] Use NSFileCoordinator for conflict-safe writes
517
+ </checklist>