@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.
- package/LICENSE +21 -0
- package/README.md +159 -0
- package/bin/install.js +302 -0
- package/bin/plan-export.js +300 -0
- package/bin/plan-view.js +695 -0
- package/install.sh +136 -0
- package/package.json +28 -0
- package/plugins/lavra/.claude-plugin/plugin.json +22 -0
- package/plugins/lavra/.mcp.json +8 -0
- package/plugins/lavra/README.md +125 -0
- package/plugins/lavra/agents/design/design-implementation-reviewer.md +123 -0
- package/plugins/lavra/agents/design/design-iterator.md +219 -0
- package/plugins/lavra/agents/design/figma-design-sync.md +212 -0
- package/plugins/lavra/agents/docs/ankane-readme-writer.md +90 -0
- package/plugins/lavra/agents/research/best-practices-researcher.md +131 -0
- package/plugins/lavra/agents/research/framework-docs-researcher.md +111 -0
- package/plugins/lavra/agents/research/git-history-analyzer.md +73 -0
- package/plugins/lavra/agents/research/learnings-researcher.md +255 -0
- package/plugins/lavra/agents/research/repo-research-analyst.md +157 -0
- package/plugins/lavra/agents/review/agent-native-reviewer.md +274 -0
- package/plugins/lavra/agents/review/architecture-strategist.md +82 -0
- package/plugins/lavra/agents/review/code-simplicity-reviewer.md +109 -0
- package/plugins/lavra/agents/review/data-integrity-guardian.md +89 -0
- package/plugins/lavra/agents/review/data-migration-expert.md +118 -0
- package/plugins/lavra/agents/review/deployment-verification-agent.md +178 -0
- package/plugins/lavra/agents/review/dhh-rails-reviewer.md +94 -0
- package/plugins/lavra/agents/review/goal-verifier.md +109 -0
- package/plugins/lavra/agents/review/julik-frontend-races-reviewer.md +239 -0
- package/plugins/lavra/agents/review/kieran-python-reviewer.md +148 -0
- package/plugins/lavra/agents/review/kieran-rails-reviewer.md +130 -0
- package/plugins/lavra/agents/review/kieran-typescript-reviewer.md +139 -0
- package/plugins/lavra/agents/review/migration-drift-detector.md +307 -0
- package/plugins/lavra/agents/review/pattern-recognition-specialist.md +87 -0
- package/plugins/lavra/agents/review/performance-oracle.md +154 -0
- package/plugins/lavra/agents/review/security-sentinel.md +125 -0
- package/plugins/lavra/agents/workflow/bug-reproduction-validator.md +119 -0
- package/plugins/lavra/agents/workflow/every-style-editor.md +97 -0
- package/plugins/lavra/agents/workflow/lint.md +30 -0
- package/plugins/lavra/agents/workflow/pr-comment-resolver.md +95 -0
- package/plugins/lavra/agents/workflow/spec-flow-analyzer.md +156 -0
- package/plugins/lavra/commands/changelog.md +149 -0
- package/plugins/lavra/commands/heal-skill.md +130 -0
- package/plugins/lavra/commands/lavra-brainstorm.md +388 -0
- package/plugins/lavra/commands/lavra-ceo-review.md +388 -0
- package/plugins/lavra/commands/lavra-checkpoint.md +162 -0
- package/plugins/lavra/commands/lavra-design.md +621 -0
- package/plugins/lavra/commands/lavra-eng-review.md +262 -0
- package/plugins/lavra/commands/lavra-import.md +194 -0
- package/plugins/lavra/commands/lavra-learn.md +176 -0
- package/plugins/lavra/commands/lavra-plan.md +515 -0
- package/plugins/lavra/commands/lavra-qa.md +357 -0
- package/plugins/lavra/commands/lavra-quick.md +178 -0
- package/plugins/lavra/commands/lavra-recall.md +279 -0
- package/plugins/lavra/commands/lavra-research.md +267 -0
- package/plugins/lavra/commands/lavra-retro.md +400 -0
- package/plugins/lavra/commands/lavra-review.md +401 -0
- package/plugins/lavra/commands/lavra-ship.md +330 -0
- package/plugins/lavra/commands/lavra-triage.md +159 -0
- package/plugins/lavra/commands/lavra-work-ralph.md +521 -0
- package/plugins/lavra/commands/lavra-work-teams.md +504 -0
- package/plugins/lavra/commands/lavra-work.md +1019 -0
- package/plugins/lavra/commands/optional/agent-native-audit.md +282 -0
- package/plugins/lavra/commands/optional/feature-video.md +262 -0
- package/plugins/lavra/commands/optional/generate-command.md +146 -0
- package/plugins/lavra/commands/optional/reproduce-bug.md +97 -0
- package/plugins/lavra/commands/optional/xcode-test.md +287 -0
- package/plugins/lavra/commands/report-bug.md +155 -0
- package/plugins/lavra/commands/test-browser.md +305 -0
- package/plugins/lavra/cortex/agents/design/design-implementation-reviewer.md +127 -0
- package/plugins/lavra/cortex/agents/design/design-iterator.md +222 -0
- package/plugins/lavra/cortex/agents/design/figma-design-sync.md +215 -0
- package/plugins/lavra/cortex/agents/docs/ankane-readme-writer.md +93 -0
- package/plugins/lavra/cortex/agents/research/best-practices-researcher.md +135 -0
- package/plugins/lavra/cortex/agents/research/framework-docs-researcher.md +115 -0
- package/plugins/lavra/cortex/agents/research/git-history-analyzer.md +77 -0
- package/plugins/lavra/cortex/agents/research/learnings-researcher.md +259 -0
- package/plugins/lavra/cortex/agents/research/repo-research-analyst.md +161 -0
- package/plugins/lavra/cortex/agents/review/agent-native-reviewer.md +278 -0
- package/plugins/lavra/cortex/agents/review/architecture-strategist.md +86 -0
- package/plugins/lavra/cortex/agents/review/code-simplicity-reviewer.md +113 -0
- package/plugins/lavra/cortex/agents/review/data-integrity-guardian.md +93 -0
- package/plugins/lavra/cortex/agents/review/data-migration-expert.md +122 -0
- package/plugins/lavra/cortex/agents/review/deployment-verification-agent.md +182 -0
- package/plugins/lavra/cortex/agents/review/dhh-rails-reviewer.md +98 -0
- package/plugins/lavra/cortex/agents/review/goal-verifier.md +113 -0
- package/plugins/lavra/cortex/agents/review/julik-frontend-races-reviewer.md +243 -0
- package/plugins/lavra/cortex/agents/review/kieran-python-reviewer.md +152 -0
- package/plugins/lavra/cortex/agents/review/kieran-rails-reviewer.md +134 -0
- package/plugins/lavra/cortex/agents/review/kieran-typescript-reviewer.md +143 -0
- package/plugins/lavra/cortex/agents/review/migration-drift-detector.md +311 -0
- package/plugins/lavra/cortex/agents/review/pattern-recognition-specialist.md +91 -0
- package/plugins/lavra/cortex/agents/review/performance-oracle.md +158 -0
- package/plugins/lavra/cortex/agents/review/security-sentinel.md +129 -0
- package/plugins/lavra/cortex/agents/workflow/bug-reproduction-validator.md +123 -0
- package/plugins/lavra/cortex/agents/workflow/every-style-editor.md +101 -0
- package/plugins/lavra/cortex/agents/workflow/lint.md +33 -0
- package/plugins/lavra/cortex/agents/workflow/pr-comment-resolver.md +98 -0
- package/plugins/lavra/cortex/agents/workflow/spec-flow-analyzer.md +160 -0
- package/plugins/lavra/cortex/commands/agent-native-audit.md +286 -0
- package/plugins/lavra/cortex/commands/changelog.md +153 -0
- package/plugins/lavra/cortex/commands/create-agent-skill.md +21 -0
- package/plugins/lavra/cortex/commands/deploy-docs.md +69 -0
- package/plugins/lavra/cortex/commands/feature-video.md +266 -0
- package/plugins/lavra/cortex/commands/generate-command.md +150 -0
- package/plugins/lavra/cortex/commands/heal-skill.md +134 -0
- package/plugins/lavra/cortex/commands/lavra-brainstorm.md +392 -0
- package/plugins/lavra/cortex/commands/lavra-ceo-review.md +392 -0
- package/plugins/lavra/cortex/commands/lavra-checkpoint.md +166 -0
- package/plugins/lavra/cortex/commands/lavra-compound.md +168 -0
- package/plugins/lavra/cortex/commands/lavra-deepen.md +389 -0
- package/plugins/lavra/cortex/commands/lavra-design.md +625 -0
- package/plugins/lavra/cortex/commands/lavra-eng-review.md +266 -0
- package/plugins/lavra/cortex/commands/lavra-import.md +198 -0
- package/plugins/lavra/cortex/commands/lavra-learn.md +180 -0
- package/plugins/lavra/cortex/commands/lavra-parallel.md +910 -0
- package/plugins/lavra/cortex/commands/lavra-plan.md +519 -0
- package/plugins/lavra/cortex/commands/lavra-qa.md +361 -0
- package/plugins/lavra/cortex/commands/lavra-quick.md +182 -0
- package/plugins/lavra/cortex/commands/lavra-recall.md +283 -0
- package/plugins/lavra/cortex/commands/lavra-research.md +271 -0
- package/plugins/lavra/cortex/commands/lavra-retro.md +404 -0
- package/plugins/lavra/cortex/commands/lavra-review.md +405 -0
- package/plugins/lavra/cortex/commands/lavra-ship.md +334 -0
- package/plugins/lavra/cortex/commands/lavra-triage.md +163 -0
- package/plugins/lavra/cortex/commands/lavra-work-ralph.md +525 -0
- package/plugins/lavra/cortex/commands/lavra-work-teams.md +508 -0
- package/plugins/lavra/cortex/commands/lavra-work.md +1023 -0
- package/plugins/lavra/cortex/commands/lfg.md +30 -0
- package/plugins/lavra/cortex/commands/release-docs.md +148 -0
- package/plugins/lavra/cortex/commands/report-bug.md +159 -0
- package/plugins/lavra/cortex/commands/reproduce-bug.md +101 -0
- package/plugins/lavra/cortex/commands/resolve-pr-parallel.md +58 -0
- package/plugins/lavra/cortex/commands/resolve-todo-parallel.md +56 -0
- package/plugins/lavra/cortex/commands/test-browser.md +309 -0
- package/plugins/lavra/cortex/commands/xcode-test.md +291 -0
- package/plugins/lavra/cortex/skills/agent-browser/SKILL.md +227 -0
- package/plugins/lavra/cortex/skills/agent-native-architecture/SKILL.md +439 -0
- package/plugins/lavra/cortex/skills/andrew-kane-gem-writer/SKILL.md +188 -0
- package/plugins/lavra/cortex/skills/brainstorming/SKILL.md +197 -0
- package/plugins/lavra/cortex/skills/create-agent-skills/SKILL.md +304 -0
- package/plugins/lavra/cortex/skills/dhh-rails-style/SKILL.md +189 -0
- package/plugins/lavra/cortex/skills/dspy-ruby/SKILL.md +741 -0
- package/plugins/lavra/cortex/skills/every-style-editor/SKILL.md +138 -0
- package/plugins/lavra/cortex/skills/file-todos/SKILL.md +256 -0
- package/plugins/lavra/cortex/skills/frontend-design/SKILL.md +46 -0
- package/plugins/lavra/cortex/skills/gemini-imagegen/SKILL.md +242 -0
- package/plugins/lavra/cortex/skills/git-worktree/SKILL.md +307 -0
- package/plugins/lavra/cortex/skills/lavra-knowledge/SKILL.md +464 -0
- package/plugins/lavra/cortex/skills/project-setup/SKILL.md +418 -0
- package/plugins/lavra/cortex/skills/rclone/SKILL.md +155 -0
- package/plugins/lavra/docs/quickstart.md +267 -0
- package/plugins/lavra/examples/example-plan.md +197 -0
- package/plugins/lavra/gemini/agents/design/design-implementation-reviewer.md +130 -0
- package/plugins/lavra/gemini/agents/design/design-iterator.md +225 -0
- package/plugins/lavra/gemini/agents/design/figma-design-sync.md +218 -0
- package/plugins/lavra/gemini/agents/docs/ankane-readme-writer.md +96 -0
- package/plugins/lavra/gemini/agents/research/best-practices-researcher.md +138 -0
- package/plugins/lavra/gemini/agents/research/framework-docs-researcher.md +118 -0
- package/plugins/lavra/gemini/agents/research/git-history-analyzer.md +80 -0
- package/plugins/lavra/gemini/agents/research/learnings-researcher.md +262 -0
- package/plugins/lavra/gemini/agents/research/repo-research-analyst.md +164 -0
- package/plugins/lavra/gemini/agents/review/agent-native-reviewer.md +281 -0
- package/plugins/lavra/gemini/agents/review/architecture-strategist.md +89 -0
- package/plugins/lavra/gemini/agents/review/code-simplicity-reviewer.md +116 -0
- package/plugins/lavra/gemini/agents/review/data-integrity-guardian.md +96 -0
- package/plugins/lavra/gemini/agents/review/data-migration-expert.md +125 -0
- package/plugins/lavra/gemini/agents/review/deployment-verification-agent.md +185 -0
- package/plugins/lavra/gemini/agents/review/dhh-rails-reviewer.md +101 -0
- package/plugins/lavra/gemini/agents/review/goal-verifier.md +116 -0
- package/plugins/lavra/gemini/agents/review/julik-frontend-races-reviewer.md +246 -0
- package/plugins/lavra/gemini/agents/review/kieran-python-reviewer.md +155 -0
- package/plugins/lavra/gemini/agents/review/kieran-rails-reviewer.md +137 -0
- package/plugins/lavra/gemini/agents/review/kieran-typescript-reviewer.md +146 -0
- package/plugins/lavra/gemini/agents/review/migration-drift-detector.md +314 -0
- package/plugins/lavra/gemini/agents/review/pattern-recognition-specialist.md +94 -0
- package/plugins/lavra/gemini/agents/review/performance-oracle.md +161 -0
- package/plugins/lavra/gemini/agents/review/security-sentinel.md +132 -0
- package/plugins/lavra/gemini/agents/workflow/bug-reproduction-validator.md +126 -0
- package/plugins/lavra/gemini/agents/workflow/every-style-editor.md +103 -0
- package/plugins/lavra/gemini/agents/workflow/lint.md +36 -0
- package/plugins/lavra/gemini/agents/workflow/pr-comment-resolver.md +101 -0
- package/plugins/lavra/gemini/agents/workflow/spec-flow-analyzer.md +163 -0
- package/plugins/lavra/gemini/commands/agent-native-audit.toml +284 -0
- package/plugins/lavra/gemini/commands/beads-brainstorm.toml +292 -0
- package/plugins/lavra/gemini/commands/beads-checkpoint.toml +145 -0
- package/plugins/lavra/gemini/commands/beads-compound.toml +167 -0
- package/plugins/lavra/gemini/commands/beads-deepen.toml +388 -0
- package/plugins/lavra/gemini/commands/beads-design.toml +295 -0
- package/plugins/lavra/gemini/commands/beads-import.toml +197 -0
- package/plugins/lavra/gemini/commands/beads-parallel.toml +909 -0
- package/plugins/lavra/gemini/commands/beads-plan-review.toml +201 -0
- package/plugins/lavra/gemini/commands/beads-plan.toml +391 -0
- package/plugins/lavra/gemini/commands/beads-quick.toml +134 -0
- package/plugins/lavra/gemini/commands/beads-recall.toml +281 -0
- package/plugins/lavra/gemini/commands/beads-review.toml +338 -0
- package/plugins/lavra/gemini/commands/beads-triage.toml +161 -0
- package/plugins/lavra/gemini/commands/beads-work.toml +347 -0
- package/plugins/lavra/gemini/commands/changelog.toml +151 -0
- package/plugins/lavra/gemini/commands/create-agent-skill.toml +18 -0
- package/plugins/lavra/gemini/commands/deploy-docs.toml +68 -0
- package/plugins/lavra/gemini/commands/feature-video.toml +264 -0
- package/plugins/lavra/gemini/commands/generate-command.toml +148 -0
- package/plugins/lavra/gemini/commands/heal-skill.toml +131 -0
- package/plugins/lavra/gemini/commands/lavra-brainstorm.toml +391 -0
- package/plugins/lavra/gemini/commands/lavra-ceo-review.toml +391 -0
- package/plugins/lavra/gemini/commands/lavra-checkpoint.toml +165 -0
- package/plugins/lavra/gemini/commands/lavra-design.toml +624 -0
- package/plugins/lavra/gemini/commands/lavra-eng-review.toml +265 -0
- package/plugins/lavra/gemini/commands/lavra-import.toml +197 -0
- package/plugins/lavra/gemini/commands/lavra-learn.toml +179 -0
- package/plugins/lavra/gemini/commands/lavra-plan-review.toml +201 -0
- package/plugins/lavra/gemini/commands/lavra-plan.toml +518 -0
- package/plugins/lavra/gemini/commands/lavra-qa.toml +360 -0
- package/plugins/lavra/gemini/commands/lavra-quick.toml +181 -0
- package/plugins/lavra/gemini/commands/lavra-recall.toml +281 -0
- package/plugins/lavra/gemini/commands/lavra-research.toml +270 -0
- package/plugins/lavra/gemini/commands/lavra-retro.toml +403 -0
- package/plugins/lavra/gemini/commands/lavra-review.toml +404 -0
- package/plugins/lavra/gemini/commands/lavra-ship.toml +333 -0
- package/plugins/lavra/gemini/commands/lavra-triage.toml +161 -0
- package/plugins/lavra/gemini/commands/lavra-work-ralph.toml +523 -0
- package/plugins/lavra/gemini/commands/lavra-work-teams.toml +507 -0
- package/plugins/lavra/gemini/commands/lavra-work.toml +1022 -0
- package/plugins/lavra/gemini/commands/lfg.toml +28 -0
- package/plugins/lavra/gemini/commands/release-docs.toml +146 -0
- package/plugins/lavra/gemini/commands/report-bug.toml +157 -0
- package/plugins/lavra/gemini/commands/reproduce-bug.toml +99 -0
- package/plugins/lavra/gemini/commands/resolve-pr-parallel.toml +56 -0
- package/plugins/lavra/gemini/commands/resolve-todo-parallel.toml +54 -0
- package/plugins/lavra/gemini/commands/test-browser.toml +307 -0
- package/plugins/lavra/gemini/commands/xcode-test.toml +289 -0
- package/plugins/lavra/gemini/docs/MCP_SETUP.md +41 -0
- package/plugins/lavra/gemini/skills/agent-browser/SKILL.md +227 -0
- package/plugins/lavra/gemini/skills/agent-native-architecture/SKILL.md +439 -0
- package/plugins/lavra/gemini/skills/andrew-kane-gem-writer/SKILL.md +188 -0
- package/plugins/lavra/gemini/skills/beads-knowledge/SKILL.md +464 -0
- package/plugins/lavra/gemini/skills/brainstorming/SKILL.md +197 -0
- package/plugins/lavra/gemini/skills/create-agent-skills/SKILL.md +304 -0
- package/plugins/lavra/gemini/skills/dhh-rails-style/SKILL.md +189 -0
- package/plugins/lavra/gemini/skills/dspy-ruby/SKILL.md +741 -0
- package/plugins/lavra/gemini/skills/every-style-editor/SKILL.md +138 -0
- package/plugins/lavra/gemini/skills/file-todos/SKILL.md +256 -0
- package/plugins/lavra/gemini/skills/frontend-design/SKILL.md +46 -0
- package/plugins/lavra/gemini/skills/gemini-imagegen/SKILL.md +242 -0
- package/plugins/lavra/gemini/skills/git-worktree/SKILL.md +307 -0
- package/plugins/lavra/gemini/skills/lavra-knowledge/SKILL.md +464 -0
- package/plugins/lavra/gemini/skills/project-setup/SKILL.md +418 -0
- package/plugins/lavra/gemini/skills/rclone/SKILL.md +155 -0
- package/plugins/lavra/gemini-extension.json +50 -0
- package/plugins/lavra/gemini-src/settings.json +37 -0
- package/plugins/lavra/hooks/auto-recall.sh +210 -0
- package/plugins/lavra/hooks/check-memory.sh +169 -0
- package/plugins/lavra/hooks/hooks.json +47 -0
- package/plugins/lavra/hooks/knowledge-db.sh +255 -0
- package/plugins/lavra/hooks/memory-capture.sh +132 -0
- package/plugins/lavra/hooks/provision-memory.sh +144 -0
- package/plugins/lavra/hooks/recall.sh +152 -0
- package/plugins/lavra/hooks/subagent-wrapup.sh +44 -0
- package/plugins/lavra/hooks/teammate-idle-check.sh +29 -0
- package/plugins/lavra/opencode/agents/design/design-implementation-reviewer.md +127 -0
- package/plugins/lavra/opencode/agents/design/design-iterator.md +222 -0
- package/plugins/lavra/opencode/agents/design/figma-design-sync.md +215 -0
- package/plugins/lavra/opencode/agents/docs/ankane-readme-writer.md +93 -0
- package/plugins/lavra/opencode/agents/research/best-practices-researcher.md +135 -0
- package/plugins/lavra/opencode/agents/research/framework-docs-researcher.md +115 -0
- package/plugins/lavra/opencode/agents/research/git-history-analyzer.md +77 -0
- package/plugins/lavra/opencode/agents/research/learnings-researcher.md +259 -0
- package/plugins/lavra/opencode/agents/research/repo-research-analyst.md +161 -0
- package/plugins/lavra/opencode/agents/review/agent-native-reviewer.md +278 -0
- package/plugins/lavra/opencode/agents/review/architecture-strategist.md +86 -0
- package/plugins/lavra/opencode/agents/review/code-simplicity-reviewer.md +113 -0
- package/plugins/lavra/opencode/agents/review/data-integrity-guardian.md +93 -0
- package/plugins/lavra/opencode/agents/review/data-migration-expert.md +122 -0
- package/plugins/lavra/opencode/agents/review/deployment-verification-agent.md +182 -0
- package/plugins/lavra/opencode/agents/review/dhh-rails-reviewer.md +98 -0
- package/plugins/lavra/opencode/agents/review/goal-verifier.md +113 -0
- package/plugins/lavra/opencode/agents/review/julik-frontend-races-reviewer.md +243 -0
- package/plugins/lavra/opencode/agents/review/kieran-python-reviewer.md +152 -0
- package/plugins/lavra/opencode/agents/review/kieran-rails-reviewer.md +134 -0
- package/plugins/lavra/opencode/agents/review/kieran-typescript-reviewer.md +143 -0
- package/plugins/lavra/opencode/agents/review/migration-drift-detector.md +311 -0
- package/plugins/lavra/opencode/agents/review/pattern-recognition-specialist.md +91 -0
- package/plugins/lavra/opencode/agents/review/performance-oracle.md +158 -0
- package/plugins/lavra/opencode/agents/review/security-sentinel.md +129 -0
- package/plugins/lavra/opencode/agents/workflow/bug-reproduction-validator.md +123 -0
- package/plugins/lavra/opencode/agents/workflow/every-style-editor.md +100 -0
- package/plugins/lavra/opencode/agents/workflow/lint.md +33 -0
- package/plugins/lavra/opencode/agents/workflow/pr-comment-resolver.md +98 -0
- package/plugins/lavra/opencode/agents/workflow/spec-flow-analyzer.md +160 -0
- package/plugins/lavra/opencode/commands/agent-native-audit.md +286 -0
- package/plugins/lavra/opencode/commands/changelog.md +153 -0
- package/plugins/lavra/opencode/commands/create-agent-skill.md +21 -0
- package/plugins/lavra/opencode/commands/deploy-docs.md +69 -0
- package/plugins/lavra/opencode/commands/feature-video.md +266 -0
- package/plugins/lavra/opencode/commands/generate-command.md +150 -0
- package/plugins/lavra/opencode/commands/heal-skill.md +134 -0
- package/plugins/lavra/opencode/commands/lavra-brainstorm.md +392 -0
- package/plugins/lavra/opencode/commands/lavra-ceo-review.md +392 -0
- package/plugins/lavra/opencode/commands/lavra-checkpoint.md +166 -0
- package/plugins/lavra/opencode/commands/lavra-compound.md +168 -0
- package/plugins/lavra/opencode/commands/lavra-deepen.md +389 -0
- package/plugins/lavra/opencode/commands/lavra-design.md +625 -0
- package/plugins/lavra/opencode/commands/lavra-eng-review.md +266 -0
- package/plugins/lavra/opencode/commands/lavra-import.md +198 -0
- package/plugins/lavra/opencode/commands/lavra-learn.md +180 -0
- package/plugins/lavra/opencode/commands/lavra-parallel.md +910 -0
- package/plugins/lavra/opencode/commands/lavra-plan.md +519 -0
- package/plugins/lavra/opencode/commands/lavra-qa.md +361 -0
- package/plugins/lavra/opencode/commands/lavra-quick.md +182 -0
- package/plugins/lavra/opencode/commands/lavra-recall.md +283 -0
- package/plugins/lavra/opencode/commands/lavra-research.md +271 -0
- package/plugins/lavra/opencode/commands/lavra-retro.md +404 -0
- package/plugins/lavra/opencode/commands/lavra-review.md +405 -0
- package/plugins/lavra/opencode/commands/lavra-ship.md +334 -0
- package/plugins/lavra/opencode/commands/lavra-triage.md +163 -0
- package/plugins/lavra/opencode/commands/lavra-work-ralph.md +525 -0
- package/plugins/lavra/opencode/commands/lavra-work-teams.md +508 -0
- package/plugins/lavra/opencode/commands/lavra-work.md +1023 -0
- package/plugins/lavra/opencode/commands/lfg.md +30 -0
- package/plugins/lavra/opencode/commands/release-docs.md +148 -0
- package/plugins/lavra/opencode/commands/report-bug.md +159 -0
- package/plugins/lavra/opencode/commands/reproduce-bug.md +101 -0
- package/plugins/lavra/opencode/commands/resolve-pr-parallel.md +58 -0
- package/plugins/lavra/opencode/commands/resolve-todo-parallel.md +56 -0
- package/plugins/lavra/opencode/commands/test-browser.md +309 -0
- package/plugins/lavra/opencode/commands/xcode-test.md +291 -0
- package/plugins/lavra/opencode/docs/MCP_SETUP.md +48 -0
- package/plugins/lavra/opencode/skills/agent-browser/SKILL.md +227 -0
- package/plugins/lavra/opencode/skills/agent-native-architecture/SKILL.md +439 -0
- package/plugins/lavra/opencode/skills/andrew-kane-gem-writer/SKILL.md +188 -0
- package/plugins/lavra/opencode/skills/brainstorming/SKILL.md +197 -0
- package/plugins/lavra/opencode/skills/create-agent-skills/SKILL.md +304 -0
- package/plugins/lavra/opencode/skills/dhh-rails-style/SKILL.md +189 -0
- package/plugins/lavra/opencode/skills/dspy-ruby/SKILL.md +741 -0
- package/plugins/lavra/opencode/skills/every-style-editor/SKILL.md +138 -0
- package/plugins/lavra/opencode/skills/file-todos/SKILL.md +256 -0
- package/plugins/lavra/opencode/skills/frontend-design/SKILL.md +46 -0
- package/plugins/lavra/opencode/skills/gemini-imagegen/SKILL.md +242 -0
- package/plugins/lavra/opencode/skills/git-worktree/SKILL.md +307 -0
- package/plugins/lavra/opencode/skills/lavra-knowledge/SKILL.md +464 -0
- package/plugins/lavra/opencode/skills/project-setup/SKILL.md +418 -0
- package/plugins/lavra/opencode/skills/rclone/SKILL.md +155 -0
- package/plugins/lavra/opencode-src/package.json +13 -0
- package/plugins/lavra/opencode-src/plugin.ts +176 -0
- package/plugins/lavra/scripts/import-plan.sh +141 -0
- package/plugins/lavra/skills/agent-browser/SKILL.md +223 -0
- package/plugins/lavra/skills/agent-native-architecture/SKILL.md +435 -0
- package/plugins/lavra/skills/agent-native-architecture/references/action-parity-discipline.md +353 -0
- package/plugins/lavra/skills/agent-native-architecture/references/agent-execution-patterns.md +362 -0
- package/plugins/lavra/skills/agent-native-architecture/references/agent-native-testing.md +508 -0
- package/plugins/lavra/skills/agent-native-architecture/references/architecture-patterns.md +478 -0
- package/plugins/lavra/skills/agent-native-architecture/references/dynamic-context-injection.md +281 -0
- package/plugins/lavra/skills/agent-native-architecture/references/files-universal-interface.md +301 -0
- package/plugins/lavra/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +227 -0
- package/plugins/lavra/skills/agent-native-architecture/references/mcp-tool-design.md +427 -0
- package/plugins/lavra/skills/agent-native-architecture/references/mobile-patterns.md +410 -0
- package/plugins/lavra/skills/agent-native-architecture/references/product-implications.md +341 -0
- package/plugins/lavra/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +317 -0
- package/plugins/lavra/skills/agent-native-architecture/references/self-modification.md +269 -0
- package/plugins/lavra/skills/agent-native-architecture/references/shared-workspace-architecture.md +517 -0
- package/plugins/lavra/skills/agent-native-architecture/references/system-prompt-design.md +250 -0
- package/plugins/lavra/skills/brainstorming/SKILL.md +193 -0
- package/plugins/lavra/skills/create-agent-skills/SKILL.md +300 -0
- package/plugins/lavra/skills/create-agent-skills/references/api-security.md +60 -0
- package/plugins/lavra/skills/create-agent-skills/references/be-clear-and-direct.md +84 -0
- package/plugins/lavra/skills/create-agent-skills/references/best-practices.md +404 -0
- package/plugins/lavra/skills/create-agent-skills/references/common-patterns.md +121 -0
- package/plugins/lavra/skills/create-agent-skills/references/core-principles.md +103 -0
- package/plugins/lavra/skills/create-agent-skills/references/executable-code.md +92 -0
- package/plugins/lavra/skills/create-agent-skills/references/iteration-and-testing.md +164 -0
- package/plugins/lavra/skills/create-agent-skills/references/official-spec.md +185 -0
- package/plugins/lavra/skills/create-agent-skills/references/recommended-structure.md +168 -0
- package/plugins/lavra/skills/create-agent-skills/references/skill-structure.md +215 -0
- package/plugins/lavra/skills/create-agent-skills/references/using-scripts.md +113 -0
- package/plugins/lavra/skills/create-agent-skills/references/using-templates.md +112 -0
- package/plugins/lavra/skills/create-agent-skills/references/workflows-and-validation.md +122 -0
- package/plugins/lavra/skills/create-agent-skills/templates/router-skill.md +73 -0
- package/plugins/lavra/skills/create-agent-skills/templates/simple-skill.md +33 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/add-reference.md +55 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/add-script.md +59 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/add-template.md +51 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/add-workflow.md +54 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/audit-skill.md +63 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +68 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/create-new-skill.md +92 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/get-guidance.md +70 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/upgrade-to-router.md +68 -0
- package/plugins/lavra/skills/create-agent-skills/workflows/verify-skill.md +63 -0
- package/plugins/lavra/skills/file-todos/SKILL.md +252 -0
- package/plugins/lavra/skills/file-todos/assets/todo-template.md +155 -0
- package/plugins/lavra/skills/git-worktree/SKILL.md +303 -0
- package/plugins/lavra/skills/git-worktree/scripts/worktree-manager.sh +345 -0
- package/plugins/lavra/skills/lavra-knowledge/SKILL.md +460 -0
- package/plugins/lavra/skills/lavra-knowledge/references/jsonl-schema.md +104 -0
- package/plugins/lavra/skills/optional/andrew-kane-gem-writer/SKILL.md +184 -0
- package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/database-adapters.md +231 -0
- package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/module-organization.md +121 -0
- package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/rails-integration.md +183 -0
- package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/resources.md +119 -0
- package/plugins/lavra/skills/optional/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
- package/plugins/lavra/skills/optional/dhh-rails-style/SKILL.md +185 -0
- package/plugins/lavra/skills/optional/dhh-rails-style/references/architecture.md +653 -0
- package/plugins/lavra/skills/optional/dhh-rails-style/references/controllers.md +303 -0
- package/plugins/lavra/skills/optional/dhh-rails-style/references/frontend.md +510 -0
- package/plugins/lavra/skills/optional/dhh-rails-style/references/gems.md +266 -0
- package/plugins/lavra/skills/optional/dhh-rails-style/references/models.md +359 -0
- package/plugins/lavra/skills/optional/dhh-rails-style/references/testing.md +338 -0
- package/plugins/lavra/skills/optional/dspy-ruby/SKILL.md +737 -0
- package/plugins/lavra/skills/optional/dspy-ruby/assets/config-template.rb +187 -0
- package/plugins/lavra/skills/optional/dspy-ruby/assets/module-template.rb +300 -0
- package/plugins/lavra/skills/optional/dspy-ruby/assets/signature-template.rb +221 -0
- package/plugins/lavra/skills/optional/dspy-ruby/references/core-concepts.md +674 -0
- package/plugins/lavra/skills/optional/dspy-ruby/references/observability.md +366 -0
- package/plugins/lavra/skills/optional/dspy-ruby/references/optimization.md +603 -0
- package/plugins/lavra/skills/optional/dspy-ruby/references/providers.md +418 -0
- package/plugins/lavra/skills/optional/dspy-ruby/references/toolsets.md +502 -0
- package/plugins/lavra/skills/optional/every-style-editor/SKILL.md +134 -0
- package/plugins/lavra/skills/optional/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
- package/plugins/lavra/skills/optional/frontend-design/SKILL.md +42 -0
- package/plugins/lavra/skills/optional/gemini-imagegen/SKILL.md +238 -0
- package/plugins/lavra/skills/optional/gemini-imagegen/requirements.txt +2 -0
- package/plugins/lavra/skills/optional/gemini-imagegen/scripts/compose_images.py +157 -0
- package/plugins/lavra/skills/optional/gemini-imagegen/scripts/edit_image.py +144 -0
- package/plugins/lavra/skills/optional/gemini-imagegen/scripts/gemini_images.py +263 -0
- package/plugins/lavra/skills/optional/gemini-imagegen/scripts/generate_image.py +133 -0
- package/plugins/lavra/skills/optional/gemini-imagegen/scripts/multi_turn_chat.py +216 -0
- package/plugins/lavra/skills/optional/rclone/SKILL.md +151 -0
- package/plugins/lavra/skills/optional/rclone/scripts/check_setup.sh +60 -0
- package/plugins/lavra/skills/project-setup/SKILL.md +414 -0
- package/plugins/lavra/tests/build-index.sh +116 -0
- package/plugins/lavra/tests/recall-bench.sh +224 -0
- package/plugins/lavra/tests/search-fts5.sh +65 -0
- package/plugins/lavra/tests/search-grep.sh +54 -0
- package/plugins/lavra/tests/test-queries.jsonl +25 -0
- package/scripts/apply-context-optimizations.py +345 -0
- package/scripts/convert-cortex.ts +257 -0
- package/scripts/convert-gemini.ts +369 -0
- package/scripts/convert-opencode.ts +313 -0
- package/scripts/package.json +27 -0
- package/scripts/pre-release-check.sh +176 -0
- package/scripts/select-opencode-models.sh +178 -0
- package/scripts/shared/model-config.json +17 -0
- package/scripts/shared/model-mapping.ts +129 -0
- package/scripts/shared/security.ts +97 -0
- package/scripts/shared/yaml-parser.ts +55 -0
- package/scripts/sqlite-to-jsonl.py +207 -0
- package/scripts/test-compatibility.ts +539 -0
- package/scripts/test-features.sh +342 -0
- package/scripts/test-installation.sh +514 -0
- package/scripts/test-security.ts +275 -0
- package/scripts/trim-agent-descriptions.py +177 -0
- package/uninstall.sh +133 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
<overview>
|
|
2
|
+
Mobile is a first-class platform for agent-native apps. It has unique constraints and opportunities. This guide covers why mobile matters, iOS storage architecture, checkpoint/resume patterns, and cost-aware design.
|
|
3
|
+
</overview>
|
|
4
|
+
|
|
5
|
+
<why_mobile>
|
|
6
|
+
## Why Mobile Matters
|
|
7
|
+
|
|
8
|
+
Mobile devices offer unique advantages for agent-native apps:
|
|
9
|
+
|
|
10
|
+
### A File System
|
|
11
|
+
Agents can work with files naturally, using the same primitives that work everywhere else. The filesystem is the universal interface.
|
|
12
|
+
|
|
13
|
+
### Rich Context
|
|
14
|
+
A walled garden you get access to. Health data, location, photos, calendars—context that doesn't exist on desktop or web. This enables deeply personalized agent experiences.
|
|
15
|
+
|
|
16
|
+
### Local Apps
|
|
17
|
+
Everyone has their own copy of the app. This opens opportunities that aren't fully realized yet: apps that modify themselves, fork themselves, evolve per-user. App Store policies constrain some of this today, but the foundation is there.
|
|
18
|
+
|
|
19
|
+
### Cross-Device Sync
|
|
20
|
+
If you use the file system with iCloud, all devices share the same file system. The agent's work on one device appears on all devices—without you having to build a server.
|
|
21
|
+
|
|
22
|
+
### The Challenge
|
|
23
|
+
|
|
24
|
+
**Agents are long-running. Mobile apps are not.**
|
|
25
|
+
|
|
26
|
+
An agent might need 30 seconds, 5 minutes, or an hour to complete a task. But iOS will background your app after seconds of inactivity, and may kill it entirely to reclaim memory. The user might switch apps, take a call, or lock their phone mid-task.
|
|
27
|
+
|
|
28
|
+
This means mobile agent apps need:
|
|
29
|
+
- **Checkpointing** -- Saving state so work isn't lost
|
|
30
|
+
- **Resuming** -- Picking up where you left off after interruption
|
|
31
|
+
- **Background execution** -- Using the limited time iOS gives you wisely
|
|
32
|
+
- **On-device vs. cloud decisions** -- What runs locally vs. what needs a server
|
|
33
|
+
</why_mobile>
|
|
34
|
+
|
|
35
|
+
<ios_storage>
|
|
36
|
+
## iOS Storage Architecture
|
|
37
|
+
|
|
38
|
+
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.
|
|
39
|
+
|
|
40
|
+
### Why iCloud Documents?
|
|
41
|
+
|
|
42
|
+
| Approach | Cost | Complexity | Offline | Multi-Device |
|
|
43
|
+
|----------|------|------------|---------|--------------|
|
|
44
|
+
| Custom backend + sync | $$$ | High | Manual | Yes |
|
|
45
|
+
| CloudKit database | Free tier limits | Medium | Manual | Yes |
|
|
46
|
+
| **iCloud Documents** | Free (user's storage) | Low | Automatic | Automatic |
|
|
47
|
+
|
|
48
|
+
### Implementation: iCloud-First with Local Fallback
|
|
49
|
+
|
|
50
|
+
```swift
|
|
51
|
+
func iCloudDocumentsURL() -> URL? {
|
|
52
|
+
FileManager.default.url(forUbiquityContainerIdentifier: nil)?
|
|
53
|
+
.appendingPathComponent("Documents")
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
class SharedWorkspace {
|
|
57
|
+
let rootURL: URL
|
|
58
|
+
|
|
59
|
+
init() {
|
|
60
|
+
if let iCloudURL = iCloudDocumentsURL() {
|
|
61
|
+
self.rootURL = iCloudURL
|
|
62
|
+
} else {
|
|
63
|
+
self.rootURL = FileManager.default.urls(
|
|
64
|
+
for: .documentDirectory,
|
|
65
|
+
in: .userDomainMask
|
|
66
|
+
).first!
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Handling iCloud File States
|
|
73
|
+
|
|
74
|
+
```swift
|
|
75
|
+
func readFile(at url: URL) throws -> String {
|
|
76
|
+
if url.pathExtension == "icloud" {
|
|
77
|
+
try FileManager.default.startDownloadingUbiquitousItem(at: url)
|
|
78
|
+
throw FileNotYetAvailableError()
|
|
79
|
+
}
|
|
80
|
+
return try String(contentsOf: url, encoding: .utf8)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
func writeFile(_ content: String, to url: URL) throws {
|
|
84
|
+
let coordinator = NSFileCoordinator()
|
|
85
|
+
var error: NSError?
|
|
86
|
+
coordinator.coordinate(
|
|
87
|
+
writingItemAt: url,
|
|
88
|
+
options: .forReplacing,
|
|
89
|
+
error: &error
|
|
90
|
+
) { newURL in
|
|
91
|
+
try? content.write(to: newURL, atomically: true, encoding: .utf8)
|
|
92
|
+
}
|
|
93
|
+
if let error = error { throw error }
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### When NOT to Use iCloud Documents
|
|
98
|
+
|
|
99
|
+
- **Sensitive data** - Use Keychain or encrypted local storage instead
|
|
100
|
+
- **High-frequency writes** - iCloud sync has latency; use local + periodic sync
|
|
101
|
+
- **Large media files** - Consider CloudKit Assets or on-demand resources
|
|
102
|
+
- **Shared between users** - iCloud Documents is single-user; use CloudKit for sharing
|
|
103
|
+
</ios_storage>
|
|
104
|
+
|
|
105
|
+
<background_execution>
|
|
106
|
+
## Background Execution & Resumption
|
|
107
|
+
|
|
108
|
+
Mobile apps can be suspended or terminated at any time. Agents must handle this gracefully.
|
|
109
|
+
|
|
110
|
+
### Checkpoint/Resume Pattern
|
|
111
|
+
|
|
112
|
+
```swift
|
|
113
|
+
class AgentOrchestrator: ObservableObject {
|
|
114
|
+
@Published var activeSessions: [AgentSession] = []
|
|
115
|
+
|
|
116
|
+
func handleAppWillBackground() {
|
|
117
|
+
for session in activeSessions {
|
|
118
|
+
saveCheckpoint(session)
|
|
119
|
+
session.transition(to: .backgrounded)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
func handleAppDidForeground() {
|
|
124
|
+
for session in activeSessions where session.state == .backgrounded {
|
|
125
|
+
if let checkpoint = loadCheckpoint(session.id) {
|
|
126
|
+
resumeFromCheckpoint(session, checkpoint)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### State Machine for Agent Lifecycle
|
|
134
|
+
|
|
135
|
+
```swift
|
|
136
|
+
enum AgentState {
|
|
137
|
+
case idle // Not running
|
|
138
|
+
case running // Actively executing
|
|
139
|
+
case waitingForUser // Paused, waiting for user input
|
|
140
|
+
case backgrounded // App backgrounded, state saved
|
|
141
|
+
case completed // Finished successfully
|
|
142
|
+
case failed(Error) // Finished with error
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Background Task Extension (iOS)
|
|
147
|
+
|
|
148
|
+
```swift
|
|
149
|
+
class AgentOrchestrator {
|
|
150
|
+
private var backgroundTask: UIBackgroundTaskIdentifier = .invalid
|
|
151
|
+
|
|
152
|
+
func handleAppWillBackground() {
|
|
153
|
+
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
|
|
154
|
+
self?.endBackgroundTask()
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
Task {
|
|
158
|
+
for session in activeSessions {
|
|
159
|
+
await saveCheckpoint(session)
|
|
160
|
+
}
|
|
161
|
+
endBackgroundTask()
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
</background_execution>
|
|
167
|
+
|
|
168
|
+
<permissions>
|
|
169
|
+
## Permission Handling
|
|
170
|
+
|
|
171
|
+
### Common Permissions
|
|
172
|
+
|
|
173
|
+
| Resource | iOS Permission | Use Case |
|
|
174
|
+
|----------|---------------|----------|
|
|
175
|
+
| Photo Library | PHPhotoLibrary | Profile generation from photos |
|
|
176
|
+
| Files | Document picker | Reading user documents |
|
|
177
|
+
| Camera | AVCaptureDevice | Scanning book covers |
|
|
178
|
+
| Location | CLLocationManager | Location-aware recommendations |
|
|
179
|
+
| Network | (automatic) | Web search, API calls |
|
|
180
|
+
|
|
181
|
+
### Permission-Aware Tools
|
|
182
|
+
|
|
183
|
+
Check permissions before executing:
|
|
184
|
+
|
|
185
|
+
```swift
|
|
186
|
+
struct PhotoTools {
|
|
187
|
+
static func readPhotos() -> AgentTool {
|
|
188
|
+
tool(
|
|
189
|
+
name: "read_photos",
|
|
190
|
+
description: "Read photos from the user's photo library",
|
|
191
|
+
execute: { params, context in
|
|
192
|
+
let status = await PHPhotoLibrary.requestAuthorization(for: .readWrite)
|
|
193
|
+
switch status {
|
|
194
|
+
case .authorized, .limited:
|
|
195
|
+
let photos = await fetchPhotos(params)
|
|
196
|
+
return ToolResult(text: "Found \(photos.count) photos", images: photos)
|
|
197
|
+
case .denied, .restricted:
|
|
198
|
+
return ToolResult(
|
|
199
|
+
text: "Photo access needed. Please grant permission in Settings.",
|
|
200
|
+
isError: true
|
|
201
|
+
)
|
|
202
|
+
@unknown default:
|
|
203
|
+
return ToolResult(text: "Unknown permission status", isError: true)
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Permission Request Timing
|
|
212
|
+
|
|
213
|
+
Don't request permissions until needed:
|
|
214
|
+
|
|
215
|
+
```swift
|
|
216
|
+
// BAD: Request all permissions at launch
|
|
217
|
+
func applicationDidFinishLaunching() {
|
|
218
|
+
requestPhotoAccess()
|
|
219
|
+
requestCameraAccess()
|
|
220
|
+
requestLocationAccess()
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// GOOD: Request when the feature is used
|
|
224
|
+
tool("analyze_book_cover", async ({ image }) => {
|
|
225
|
+
let status = await AVCaptureDevice.requestAccess(for: .video)
|
|
226
|
+
if status {
|
|
227
|
+
return await scanCover(image)
|
|
228
|
+
} else {
|
|
229
|
+
return ToolResult(text: "Camera access needed for book scanning")
|
|
230
|
+
}
|
|
231
|
+
})
|
|
232
|
+
```
|
|
233
|
+
</permissions>
|
|
234
|
+
|
|
235
|
+
<cost_awareness>
|
|
236
|
+
## Cost-Aware Design
|
|
237
|
+
|
|
238
|
+
### Model Tier Selection
|
|
239
|
+
|
|
240
|
+
Use the cheapest model that achieves the outcome:
|
|
241
|
+
|
|
242
|
+
```swift
|
|
243
|
+
enum ModelTier {
|
|
244
|
+
case fast // claude-3-haiku
|
|
245
|
+
case balanced // claude-sonnet
|
|
246
|
+
case powerful // claude-opus
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
let agentConfigs: [AgentType: ModelTier] = [
|
|
250
|
+
.quickLookup: .fast,
|
|
251
|
+
.chatAssistant: .balanced,
|
|
252
|
+
.researchAgent: .balanced,
|
|
253
|
+
.profileGenerator: .powerful,
|
|
254
|
+
]
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Token Budgets
|
|
258
|
+
|
|
259
|
+
```swift
|
|
260
|
+
struct AgentConfig {
|
|
261
|
+
let modelTier: ModelTier
|
|
262
|
+
let maxInputTokens: Int
|
|
263
|
+
let maxOutputTokens: Int
|
|
264
|
+
let maxTurns: Int
|
|
265
|
+
|
|
266
|
+
static let research = AgentConfig(
|
|
267
|
+
modelTier: .balanced,
|
|
268
|
+
maxInputTokens: 50_000,
|
|
269
|
+
maxOutputTokens: 4_000,
|
|
270
|
+
maxTurns: 20
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
static let quickChat = AgentConfig(
|
|
274
|
+
modelTier: .fast,
|
|
275
|
+
maxInputTokens: 10_000,
|
|
276
|
+
maxOutputTokens: 1_000,
|
|
277
|
+
maxTurns: 5
|
|
278
|
+
)
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Network-Aware Execution
|
|
283
|
+
|
|
284
|
+
Defer heavy operations to WiFi:
|
|
285
|
+
|
|
286
|
+
```swift
|
|
287
|
+
class AgentOrchestrator {
|
|
288
|
+
@ObservedObject var network = NetworkMonitor()
|
|
289
|
+
|
|
290
|
+
func startResearchAgent(for book: Book) async {
|
|
291
|
+
if network.isExpensive {
|
|
292
|
+
let proceed = await showAlert(
|
|
293
|
+
"Research uses data",
|
|
294
|
+
message: "This will use approximately 1-2 MB of cellular data. Continue?"
|
|
295
|
+
)
|
|
296
|
+
if !proceed { return }
|
|
297
|
+
}
|
|
298
|
+
await runAgent(ResearchAgent.create(book: book))
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
</cost_awareness>
|
|
303
|
+
|
|
304
|
+
<offline_handling>
|
|
305
|
+
## Offline Graceful Degradation
|
|
306
|
+
|
|
307
|
+
```swift
|
|
308
|
+
class ConnectivityAwareAgent {
|
|
309
|
+
@ObservedObject var network = NetworkMonitor()
|
|
310
|
+
|
|
311
|
+
func executeToolCall(_ toolCall: ToolCall) async -> ToolResult {
|
|
312
|
+
let requiresNetwork = ["web_search", "web_fetch", "call_api"]
|
|
313
|
+
.contains(toolCall.name)
|
|
314
|
+
|
|
315
|
+
if requiresNetwork && !network.isConnected {
|
|
316
|
+
return ToolResult(
|
|
317
|
+
text: """
|
|
318
|
+
I can't access the internet right now. Here's what I can do offline:
|
|
319
|
+
- Read your library and existing research
|
|
320
|
+
- Answer questions from cached data
|
|
321
|
+
- Write notes and drafts for later
|
|
322
|
+
|
|
323
|
+
Would you like me to try something that works offline?
|
|
324
|
+
""",
|
|
325
|
+
isError: false
|
|
326
|
+
)
|
|
327
|
+
}
|
|
328
|
+
return await executeOnline(toolCall)
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Offline-First Tools
|
|
334
|
+
|
|
335
|
+
```swift
|
|
336
|
+
let offlineTools: Set<String> = [
|
|
337
|
+
"read_file", "write_file", "list_files",
|
|
338
|
+
"read_library", "search_local",
|
|
339
|
+
]
|
|
340
|
+
|
|
341
|
+
let onlineTools: Set<String> = [
|
|
342
|
+
"web_search", "web_fetch", "publish_to_cloud",
|
|
343
|
+
]
|
|
344
|
+
|
|
345
|
+
let hybridTools: Set<String> = [
|
|
346
|
+
"publish_to_feed", // Works offline, syncs later
|
|
347
|
+
]
|
|
348
|
+
```
|
|
349
|
+
</offline_handling>
|
|
350
|
+
|
|
351
|
+
<on_device_vs_cloud>
|
|
352
|
+
## On-Device vs. Cloud
|
|
353
|
+
|
|
354
|
+
| Component | On-Device | Cloud |
|
|
355
|
+
|-----------|-----------|-------|
|
|
356
|
+
| Orchestration | Yes | |
|
|
357
|
+
| Tool execution | Yes (file ops, photo access, HealthKit) | |
|
|
358
|
+
| LLM calls | | Yes (Anthropic API) |
|
|
359
|
+
| Checkpoints | Yes (local files) | Optional via iCloud |
|
|
360
|
+
| Long-running agents | Limited by iOS | Possible with server |
|
|
361
|
+
|
|
362
|
+
### Implications
|
|
363
|
+
|
|
364
|
+
**Network required for reasoning:**
|
|
365
|
+
- The app needs network connectivity for LLM calls
|
|
366
|
+
- Design tools to degrade gracefully when network is unavailable
|
|
367
|
+
|
|
368
|
+
**Data stays local:**
|
|
369
|
+
- File operations happen on device
|
|
370
|
+
- Sensitive data never leaves the device unless explicitly synced
|
|
371
|
+
- Privacy is preserved by default
|
|
372
|
+
|
|
373
|
+
**Long-running agents:**
|
|
374
|
+
For truly long-running agents (hours), consider a server-side orchestrator that can run indefinitely, with the mobile app as a viewer and input mechanism.
|
|
375
|
+
</on_device_vs_cloud>
|
|
376
|
+
|
|
377
|
+
<checklist>
|
|
378
|
+
## Mobile Agent-Native Checklist
|
|
379
|
+
|
|
380
|
+
**iOS Storage:**
|
|
381
|
+
- [ ] iCloud Documents as primary storage (or conscious alternative)
|
|
382
|
+
- [ ] Local Documents fallback when iCloud unavailable
|
|
383
|
+
- [ ] Handle `.icloud` placeholder files (trigger download)
|
|
384
|
+
- [ ] Use NSFileCoordinator for conflict-safe writes
|
|
385
|
+
|
|
386
|
+
**Background Execution:**
|
|
387
|
+
- [ ] Checkpoint/resume implemented for all agent sessions
|
|
388
|
+
- [ ] State machine for agent lifecycle (idle, running, backgrounded, etc.)
|
|
389
|
+
- [ ] Background task extension for critical saves (30 second window)
|
|
390
|
+
- [ ] User-visible status for backgrounded agents
|
|
391
|
+
|
|
392
|
+
**Permissions:**
|
|
393
|
+
- [ ] Permissions requested only when needed, not at launch
|
|
394
|
+
- [ ] Graceful degradation when permissions denied
|
|
395
|
+
- [ ] Clear error messages with Settings deep links
|
|
396
|
+
- [ ] Alternative paths when permissions unavailable
|
|
397
|
+
|
|
398
|
+
**Cost Awareness:**
|
|
399
|
+
- [ ] Model tier matched to task complexity
|
|
400
|
+
- [ ] Token budgets per session
|
|
401
|
+
- [ ] Network-aware (defer heavy work to WiFi)
|
|
402
|
+
- [ ] Caching for expensive operations
|
|
403
|
+
- [ ] Cost visibility to users
|
|
404
|
+
|
|
405
|
+
**Offline Handling:**
|
|
406
|
+
- [ ] Offline-capable tools identified
|
|
407
|
+
- [ ] Graceful degradation for online-only features
|
|
408
|
+
- [ ] Action queue for sync when online
|
|
409
|
+
- [ ] Clear user communication about offline state
|
|
410
|
+
</checklist>
|