@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,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lavra plugin for OpenCode
|
|
3
|
+
*
|
|
4
|
+
* Ports auto-recall.sh and memory-capture.sh hooks to OpenCode's event system.
|
|
5
|
+
* Subagent wrapup is handled separately via tool.execute.after with tool=task filter.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Plugin } from "@opencode-ai/plugin";
|
|
9
|
+
import { resolve } from "node:path";
|
|
10
|
+
|
|
11
|
+
console.log("[lavra] Plugin loaded successfully");
|
|
12
|
+
|
|
13
|
+
export default {
|
|
14
|
+
// Set CLAUDE_PROJECT_DIR globally for all bd commands
|
|
15
|
+
"shell.env": async ({ directory }) => {
|
|
16
|
+
console.log("[lavra] shell.env hook triggered");
|
|
17
|
+
|
|
18
|
+
// Validate that directory is an absolute path (security)
|
|
19
|
+
if (!directory || !resolve(directory).startsWith("/")) {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
CLAUDE_PROJECT_DIR: directory,
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
// Auto-recall: inject relevant knowledge at session start
|
|
29
|
+
"session.created": async ({ directory }) => {
|
|
30
|
+
console.log("[lavra] session.created hook triggered");
|
|
31
|
+
// Validate absolute path (security)
|
|
32
|
+
if (!directory || !resolve(directory).startsWith("/")) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const hookScript = resolve(
|
|
37
|
+
import.meta.dir,
|
|
38
|
+
"../hooks/auto-recall.sh"
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const proc = Bun.spawn(["bash", hookScript], {
|
|
42
|
+
env: {
|
|
43
|
+
...process.env,
|
|
44
|
+
CLAUDE_PROJECT_DIR: directory,
|
|
45
|
+
},
|
|
46
|
+
stdout: "pipe",
|
|
47
|
+
stderr: "pipe",
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const stdout = await new Response(proc.stdout).text();
|
|
51
|
+
const stderr = await new Response(proc.stderr).text();
|
|
52
|
+
|
|
53
|
+
if (stderr) {
|
|
54
|
+
console.error("[lavra] auto-recall error:", stderr);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Parse JSON output
|
|
58
|
+
try {
|
|
59
|
+
const output = JSON.parse(stdout);
|
|
60
|
+
if (output.hookSpecificOutput?.systemMessage) {
|
|
61
|
+
return {
|
|
62
|
+
systemMessage: output.hookSpecificOutput.systemMessage,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
} catch (err) {
|
|
66
|
+
// Not JSON or parse error - no output to inject
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return;
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
// Memory capture: extract knowledge from bd comments add commands
|
|
73
|
+
// Subagent wrapup: warn when subagents complete without logging knowledge
|
|
74
|
+
"tool.execute.after": async ({ tool, input, output, metadata, directory }) => {
|
|
75
|
+
// Handle subagent completion (tool=task)
|
|
76
|
+
if (tool === "task") {
|
|
77
|
+
// Check if BEAD_ID is referenced in the subagent output or title
|
|
78
|
+
const beadIdPattern = /\b(BD-[A-Za-z0-9._-]+|bdcompound-[A-Za-z0-9._-]+)\b/i;
|
|
79
|
+
const hasBeadId =
|
|
80
|
+
beadIdPattern.test(input?.title || "") ||
|
|
81
|
+
beadIdPattern.test(output || "") ||
|
|
82
|
+
beadIdPattern.test(metadata?.summary || "");
|
|
83
|
+
|
|
84
|
+
if (!hasBeadId) {
|
|
85
|
+
// No BEAD_ID found, no action needed
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Check if subagent logged any knowledge comments
|
|
90
|
+
const hasKnowledgeComment =
|
|
91
|
+
(metadata?.summary || "").includes("bd comments add") ||
|
|
92
|
+
(metadata?.summary || "").includes("bd comment add");
|
|
93
|
+
|
|
94
|
+
if (hasKnowledgeComment) {
|
|
95
|
+
// Knowledge was captured, all good
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// BEAD_ID found but no knowledge logged - inject reminder
|
|
100
|
+
return {
|
|
101
|
+
systemMessage: `⚠️ **Subagent completed without logging knowledge**
|
|
102
|
+
|
|
103
|
+
The subagent referenced a bead but didn't capture any learnings. Consider running:
|
|
104
|
+
|
|
105
|
+
\`\`\`bash
|
|
106
|
+
bd comments add <BEAD_ID> "LEARNED: <key insight from subagent work>"
|
|
107
|
+
\`\`\`
|
|
108
|
+
|
|
109
|
+
Use one of: LEARNED, DECISION, FACT, PATTERN, INVESTIGATION`,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Pre-filter: only process bash commands (performance optimization)
|
|
114
|
+
if (tool !== "bash") {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const command = input?.command;
|
|
119
|
+
if (!command || typeof command !== "string") {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Pre-filter: check for bd comments pattern before spawning subprocess
|
|
124
|
+
// This is a hot path - 95% of bash commands are not bd comments
|
|
125
|
+
if (!command.match(/bd\s+comments?\s+add\s+/)) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Pre-filter: check for knowledge prefixes
|
|
130
|
+
if (!command.match(/(INVESTIGATION:|LEARNED:|DECISION:|FACT:|PATTERN:)/)) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Validate directory path (security)
|
|
135
|
+
if (!directory || !resolve(directory).startsWith("/")) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Construct stdin payload in Claude Code format
|
|
140
|
+
const stdinPayload = JSON.stringify({
|
|
141
|
+
tool_name: "Bash",
|
|
142
|
+
tool_input: {
|
|
143
|
+
command: command,
|
|
144
|
+
},
|
|
145
|
+
cwd: directory,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
const hookScript = resolve(
|
|
149
|
+
import.meta.dir,
|
|
150
|
+
"../hooks/memory-capture.sh"
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
// Use Bun.spawn() with stdin piping (security: prevents shell injection)
|
|
154
|
+
const proc = Bun.spawn(["bash", hookScript], {
|
|
155
|
+
env: {
|
|
156
|
+
...process.env,
|
|
157
|
+
CLAUDE_PROJECT_DIR: directory,
|
|
158
|
+
},
|
|
159
|
+
stdin: "pipe",
|
|
160
|
+
stdout: "pipe",
|
|
161
|
+
stderr: "pipe",
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
// Write stdin payload
|
|
165
|
+
const writer = proc.stdin.getWriter();
|
|
166
|
+
await writer.write(new TextEncoder().encode(stdinPayload));
|
|
167
|
+
await writer.close();
|
|
168
|
+
|
|
169
|
+
const stderr = await new Response(proc.stderr).text();
|
|
170
|
+
if (stderr) {
|
|
171
|
+
console.error("[lavra] memory-capture error:", stderr);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return;
|
|
175
|
+
},
|
|
176
|
+
} satisfies Plugin;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Import a markdown plan into beads
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# ./import-plan.sh plan.md "Epic Title"
|
|
7
|
+
#
|
|
8
|
+
# Expected markdown format:
|
|
9
|
+
# # Epic Title
|
|
10
|
+
# Description here
|
|
11
|
+
#
|
|
12
|
+
# ## Research / Background
|
|
13
|
+
# Research findings...
|
|
14
|
+
#
|
|
15
|
+
# ## Implementation Steps
|
|
16
|
+
# ### Step 1: Database Schema
|
|
17
|
+
# Details...
|
|
18
|
+
#
|
|
19
|
+
# ### Step 2: API Endpoints
|
|
20
|
+
# Details...
|
|
21
|
+
#
|
|
22
|
+
# This will create:
|
|
23
|
+
# - Epic bead with full plan as description
|
|
24
|
+
# - Child beads for each step (### headers under Implementation Steps)
|
|
25
|
+
# - Knowledge comments for research/background sections
|
|
26
|
+
#
|
|
27
|
+
|
|
28
|
+
set -euo pipefail
|
|
29
|
+
|
|
30
|
+
PLAN_FILE="${1:-}"
|
|
31
|
+
EPIC_TITLE="${2:-}"
|
|
32
|
+
|
|
33
|
+
if [[ -z "$PLAN_FILE" || ! -f "$PLAN_FILE" ]]; then
|
|
34
|
+
echo "Usage: $0 <plan.md> <epic-title>"
|
|
35
|
+
echo ""
|
|
36
|
+
echo "Example:"
|
|
37
|
+
echo " $0 auth-plan.md \"Add two-factor authentication\""
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
if [[ -z "$EPIC_TITLE" ]]; then
|
|
42
|
+
echo "Error: Epic title required"
|
|
43
|
+
echo "Usage: $0 <plan.md> <epic-title>"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
echo "Importing plan from: $PLAN_FILE"
|
|
48
|
+
echo "Epic title: $EPIC_TITLE"
|
|
49
|
+
echo ""
|
|
50
|
+
|
|
51
|
+
# Read full plan
|
|
52
|
+
FULL_PLAN=$(cat "$PLAN_FILE")
|
|
53
|
+
|
|
54
|
+
# Create epic bead
|
|
55
|
+
echo "Creating epic bead..."
|
|
56
|
+
EPIC_OUTPUT=$(bd create "$EPIC_TITLE" -d "$FULL_PLAN" --type epic 2>&1)
|
|
57
|
+
EPIC_ID=$(echo "$EPIC_OUTPUT" | grep -oE '[A-Z]+-[0-9]+' | head -1)
|
|
58
|
+
|
|
59
|
+
if [[ -z "$EPIC_ID" ]]; then
|
|
60
|
+
echo "Error: Failed to create epic bead"
|
|
61
|
+
echo "$EPIC_OUTPUT"
|
|
62
|
+
exit 1
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
echo "Created epic: $EPIC_ID"
|
|
66
|
+
echo ""
|
|
67
|
+
|
|
68
|
+
# Extract research/background section and add as INVESTIGATION
|
|
69
|
+
RESEARCH=$(awk '/^## (Research|Background|Context)/{flag=1;next}/^## /{flag=0}flag' "$PLAN_FILE")
|
|
70
|
+
|
|
71
|
+
if [[ -n "$RESEARCH" ]]; then
|
|
72
|
+
echo "Adding research findings as INVESTIGATION..."
|
|
73
|
+
bd comments add "$EPIC_ID" "INVESTIGATION: Background and Research
|
|
74
|
+
|
|
75
|
+
$RESEARCH"
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Extract decisions section and add as DECISION
|
|
79
|
+
DECISIONS=$(awk '/^## (Decisions|Choices|Approach)/{flag=1;next}/^## /{flag=0}flag' "$PLAN_FILE")
|
|
80
|
+
|
|
81
|
+
if [[ -n "$DECISIONS" ]]; then
|
|
82
|
+
echo "Adding decisions..."
|
|
83
|
+
bd comments add "$EPIC_ID" "DECISION: Architectural Decisions
|
|
84
|
+
|
|
85
|
+
$DECISIONS"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Extract implementation steps (### headers under Implementation/Tasks/Steps section)
|
|
89
|
+
echo ""
|
|
90
|
+
echo "Creating child beads for implementation steps..."
|
|
91
|
+
|
|
92
|
+
PREV_BEAD=""
|
|
93
|
+
STEP_NUM=0
|
|
94
|
+
|
|
95
|
+
# Find the Implementation Steps section and extract ### headers
|
|
96
|
+
awk '/^## (Implementation|Tasks|Steps|Work)/{flag=1;next}/^## /{flag=0}flag' "$PLAN_FILE" | \
|
|
97
|
+
grep -E '^### ' | \
|
|
98
|
+
while IFS= read -r line; do
|
|
99
|
+
((STEP_NUM++))
|
|
100
|
+
|
|
101
|
+
# Extract step title (remove ###)
|
|
102
|
+
STEP_TITLE=$(echo "$line" | sed 's/^### *//')
|
|
103
|
+
|
|
104
|
+
# Extract step description (text between this ### and next ### or ##)
|
|
105
|
+
STEP_DESC=$(awk -v title="$line" '
|
|
106
|
+
$0 == title {flag=1; next}
|
|
107
|
+
/^##/ {flag=0}
|
|
108
|
+
flag && /^$/ {next}
|
|
109
|
+
flag {print}
|
|
110
|
+
' "$PLAN_FILE" | head -20)
|
|
111
|
+
|
|
112
|
+
# Create child bead
|
|
113
|
+
if [[ -z "$PREV_BEAD" ]]; then
|
|
114
|
+
# First step, no dependencies
|
|
115
|
+
CHILD_OUTPUT=$(bd create "$STEP_TITLE" -d "$STEP_DESC" --parent "$EPIC_ID" 2>&1)
|
|
116
|
+
else
|
|
117
|
+
# Subsequent steps depend on previous
|
|
118
|
+
CHILD_OUTPUT=$(bd create "$STEP_TITLE" -d "$STEP_DESC" --parent "$EPIC_ID" --deps "$PREV_BEAD" 2>&1)
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
CHILD_ID=$(echo "$CHILD_OUTPUT" | grep -oE '[A-Z]+-[0-9.]+' | head -1)
|
|
122
|
+
|
|
123
|
+
if [[ -n "$CHILD_ID" ]]; then
|
|
124
|
+
echo " Created: $CHILD_ID - $STEP_TITLE"
|
|
125
|
+
PREV_BEAD="$CHILD_ID"
|
|
126
|
+
else
|
|
127
|
+
echo " Warning: Failed to create bead for: $STEP_TITLE"
|
|
128
|
+
fi
|
|
129
|
+
done
|
|
130
|
+
|
|
131
|
+
echo ""
|
|
132
|
+
echo "Import complete!"
|
|
133
|
+
echo ""
|
|
134
|
+
echo "Epic: $EPIC_ID"
|
|
135
|
+
echo "View: bd show $EPIC_ID"
|
|
136
|
+
echo "List children: bd list --parent $EPIC_ID"
|
|
137
|
+
echo ""
|
|
138
|
+
echo "Next steps:"
|
|
139
|
+
echo " 1. Review the created beads: bd show $EPIC_ID"
|
|
140
|
+
echo " 2. Start work: /lavra-work ${EPIC_ID}.1"
|
|
141
|
+
echo " 3. Or refine with research: /lavra-plan $EPIC_ID"
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-browser
|
|
3
|
+
description: Browser automation using Vercel's agent-browser CLI. Use when you need to interact with web pages, fill forms, take screenshots, or scrape data. Alternative to Playwright MCP - uses Bash commands with ref-based element selection. Triggers on "browse website", "fill form", "click button", "take screenshot", "scrape page", "web automation".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# agent-browser: CLI Browser Automation
|
|
7
|
+
|
|
8
|
+
Vercel's headless browser automation CLI designed for AI agents. Uses ref-based selection (@e1, @e2) from accessibility snapshots.
|
|
9
|
+
|
|
10
|
+
## Setup Check
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Check installation
|
|
14
|
+
command -v agent-browser >/dev/null 2>&1 && echo "Installed" || echo "NOT INSTALLED - run: npm install -g agent-browser && agent-browser install"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Install if needed
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g agent-browser
|
|
21
|
+
agent-browser install # Downloads Chromium
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Core Workflow
|
|
25
|
+
|
|
26
|
+
**The snapshot + ref pattern is optimal for LLMs:**
|
|
27
|
+
|
|
28
|
+
1. **Navigate** to URL
|
|
29
|
+
2. **Snapshot** to get interactive elements with refs
|
|
30
|
+
3. **Interact** using refs (@e1, @e2, etc.)
|
|
31
|
+
4. **Re-snapshot** after navigation or DOM changes
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Step 1: Open URL
|
|
35
|
+
agent-browser open https://example.com
|
|
36
|
+
|
|
37
|
+
# Step 2: Get interactive elements with refs
|
|
38
|
+
agent-browser snapshot -i --json
|
|
39
|
+
|
|
40
|
+
# Step 3: Interact using refs
|
|
41
|
+
agent-browser click @e1
|
|
42
|
+
agent-browser fill @e2 "search query"
|
|
43
|
+
|
|
44
|
+
# Step 4: Re-snapshot after changes
|
|
45
|
+
agent-browser snapshot -i
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Key Commands
|
|
49
|
+
|
|
50
|
+
### Navigation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
agent-browser open <url> # Navigate to URL
|
|
54
|
+
agent-browser back # Go back
|
|
55
|
+
agent-browser forward # Go forward
|
|
56
|
+
agent-browser reload # Reload page
|
|
57
|
+
agent-browser close # Close browser
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Snapshots (Essential for AI)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
agent-browser snapshot # Full accessibility tree
|
|
64
|
+
agent-browser snapshot -i # Interactive elements only (recommended)
|
|
65
|
+
agent-browser snapshot -i --json # JSON output for parsing
|
|
66
|
+
agent-browser snapshot -c # Compact (remove empty elements)
|
|
67
|
+
agent-browser snapshot -d 3 # Limit depth
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Interactions
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
agent-browser click @e1 # Click element
|
|
74
|
+
agent-browser dblclick @e1 # Double-click
|
|
75
|
+
agent-browser fill @e1 "text" # Clear and fill input
|
|
76
|
+
agent-browser type @e1 "text" # Type without clearing
|
|
77
|
+
agent-browser press Enter # Press key
|
|
78
|
+
agent-browser hover @e1 # Hover element
|
|
79
|
+
agent-browser check @e1 # Check checkbox
|
|
80
|
+
agent-browser uncheck @e1 # Uncheck checkbox
|
|
81
|
+
agent-browser select @e1 "option" # Select dropdown option
|
|
82
|
+
agent-browser scroll down 500 # Scroll (up/down/left/right)
|
|
83
|
+
agent-browser scrollintoview @e1 # Scroll element into view
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Get Information
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
agent-browser get text @e1 # Get element text
|
|
90
|
+
agent-browser get html @e1 # Get element HTML
|
|
91
|
+
agent-browser get value @e1 # Get input value
|
|
92
|
+
agent-browser get attr href @e1 # Get attribute
|
|
93
|
+
agent-browser get title # Get page title
|
|
94
|
+
agent-browser get url # Get current URL
|
|
95
|
+
agent-browser get count "button" # Count matching elements
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Screenshots & PDFs
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
agent-browser screenshot # Viewport screenshot
|
|
102
|
+
agent-browser screenshot --full # Full page
|
|
103
|
+
agent-browser screenshot output.png # Save to file
|
|
104
|
+
agent-browser screenshot --full output.png # Full page to file
|
|
105
|
+
agent-browser pdf output.pdf # Save as PDF
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Wait
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
agent-browser wait @e1 # Wait for element
|
|
112
|
+
agent-browser wait 2000 # Wait milliseconds
|
|
113
|
+
agent-browser wait "text" # Wait for text to appear
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Semantic Locators (Alternative to Refs)
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
agent-browser find role button click --name "Submit"
|
|
120
|
+
agent-browser find text "Sign up" click
|
|
121
|
+
agent-browser find label "Email" fill "user@example.com"
|
|
122
|
+
agent-browser find placeholder "Search..." fill "query"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Sessions (Parallel Browsers)
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Run multiple independent browser sessions
|
|
129
|
+
agent-browser --session browser1 open https://site1.com
|
|
130
|
+
agent-browser --session browser2 open https://site2.com
|
|
131
|
+
|
|
132
|
+
# List active sessions
|
|
133
|
+
agent-browser session list
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Examples
|
|
137
|
+
|
|
138
|
+
### Login Flow
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
agent-browser open https://app.example.com/login
|
|
142
|
+
agent-browser snapshot -i
|
|
143
|
+
# Output shows: textbox "Email" [ref=e1], textbox "Password" [ref=e2], button "Sign in" [ref=e3]
|
|
144
|
+
agent-browser fill @e1 "user@example.com"
|
|
145
|
+
agent-browser fill @e2 "password123"
|
|
146
|
+
agent-browser click @e3
|
|
147
|
+
agent-browser wait 2000
|
|
148
|
+
agent-browser snapshot -i # Verify logged in
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Search and Extract
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
agent-browser open https://news.ycombinator.com
|
|
155
|
+
agent-browser snapshot -i --json
|
|
156
|
+
# Parse JSON to find story links
|
|
157
|
+
agent-browser get text @e12 # Get headline text
|
|
158
|
+
agent-browser click @e12 # Click to open story
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Form Filling
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
agent-browser open https://forms.example.com
|
|
165
|
+
agent-browser snapshot -i
|
|
166
|
+
agent-browser fill @e1 "John Doe"
|
|
167
|
+
agent-browser fill @e2 "john@example.com"
|
|
168
|
+
agent-browser select @e3 "United States"
|
|
169
|
+
agent-browser check @e4 # Agree to terms
|
|
170
|
+
agent-browser click @e5 # Submit button
|
|
171
|
+
agent-browser screenshot confirmation.png
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Debug Mode
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Run with visible browser window
|
|
178
|
+
agent-browser --headed open https://example.com
|
|
179
|
+
agent-browser --headed snapshot -i
|
|
180
|
+
agent-browser --headed click @e1
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## JSON Output
|
|
184
|
+
|
|
185
|
+
Add `--json` for structured output:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
agent-browser snapshot -i --json
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Returns:
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"success": true,
|
|
195
|
+
"data": {
|
|
196
|
+
"refs": {
|
|
197
|
+
"e1": {"name": "Submit", "role": "button"},
|
|
198
|
+
"e2": {"name": "Email", "role": "textbox"}
|
|
199
|
+
},
|
|
200
|
+
"snapshot": "- button \"Submit\" [ref=e1]\n- textbox \"Email\" [ref=e2]"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## vs Playwright MCP
|
|
206
|
+
|
|
207
|
+
| Feature | agent-browser (CLI) | Playwright MCP |
|
|
208
|
+
|---------|---------------------|----------------|
|
|
209
|
+
| Interface | Bash commands | MCP tools |
|
|
210
|
+
| Selection | Refs (@e1) | Refs (e1) |
|
|
211
|
+
| Output | Text/JSON | Tool responses |
|
|
212
|
+
| Parallel | Sessions | Tabs |
|
|
213
|
+
| Best for | Quick automation | Tool integration |
|
|
214
|
+
|
|
215
|
+
Use agent-browser when:
|
|
216
|
+
- You prefer Bash-based workflows
|
|
217
|
+
- You want simpler CLI commands
|
|
218
|
+
- You need quick one-off automation
|
|
219
|
+
|
|
220
|
+
Use Playwright MCP when:
|
|
221
|
+
- You need deep MCP tool integration
|
|
222
|
+
- You want tool-based responses
|
|
223
|
+
- You're building complex automation
|