@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,132 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# PostToolUse:Bash (async) - Capture knowledge from bd comments add commands
|
|
4
|
+
#
|
|
5
|
+
# Detects: bd comments add {BEAD_ID} "INVESTIGATION: ..." / "LEARNED: ..." /
|
|
6
|
+
# "DECISION: ..." / "FACT: ..." / "PATTERN: ..." / "DEVIATION: ..."
|
|
7
|
+
# Extracts knowledge entries into .lavra/memory/knowledge.jsonl
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
INPUT=$(cat)
|
|
11
|
+
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // empty')
|
|
12
|
+
|
|
13
|
+
[[ "$TOOL_NAME" != "Bash" && "$TOOL_NAME" != "bash" ]] && exit 0
|
|
14
|
+
|
|
15
|
+
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
|
|
16
|
+
[[ -z "$COMMAND" ]] && exit 0
|
|
17
|
+
|
|
18
|
+
echo "$COMMAND" | grep -qE 'bd\s+comments?\s+add\s+' || exit 0
|
|
19
|
+
echo "$COMMAND" | grep -qE '(INVESTIGATION:|LEARNED:|DECISION:|FACT:|PATTERN:|DEVIATION:)' || exit 0
|
|
20
|
+
|
|
21
|
+
# Validate CLAUDE_PROJECT_DIR to prevent redirect attacks
|
|
22
|
+
# Placed AFTER early-exit guards (PostToolUse fires very frequently; this runs on ~1% of calls)
|
|
23
|
+
if [[ -n "$CLAUDE_PROJECT_DIR" ]]; then
|
|
24
|
+
CANONICAL=$(realpath -m "$CLAUDE_PROJECT_DIR" 2>/dev/null || echo "")
|
|
25
|
+
if [[ -z "$CANONICAL" ]] || [[ "$CANONICAL" != /* ]] || \
|
|
26
|
+
[[ "$CANONICAL" != "$HOME"/* && "$CANONICAL" != /tmp/* ]]; then
|
|
27
|
+
CLAUDE_PROJECT_DIR="" # fall through to CWD
|
|
28
|
+
fi
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Extract BEAD_ID
|
|
32
|
+
BEAD_ID=$(echo "$COMMAND" | sed -E 's/.*bd[[:space:]]+comments?[[:space:]]+add[[:space:]]+([A-Za-z0-9._-]+)[[:space:]]+.*/\1/')
|
|
33
|
+
[[ -z "$BEAD_ID" || "$BEAD_ID" == "$COMMAND" ]] && exit 0
|
|
34
|
+
|
|
35
|
+
# Extract comment body
|
|
36
|
+
COMMENT_BODY=$(echo "$COMMAND" | sed -E 's/.*bd[[:space:]]+comments?[[:space:]]+add[[:space:]]+[A-Za-z0-9._-]+[[:space:]]+["'\'']//' | sed -E 's/["'\''][[:space:]]*$//' | head -c 4096)
|
|
37
|
+
[[ -z "$COMMENT_BODY" ]] && exit 0
|
|
38
|
+
|
|
39
|
+
# Detect type from prefix
|
|
40
|
+
TYPE=""
|
|
41
|
+
CONTENT=""
|
|
42
|
+
|
|
43
|
+
for PREFIX in INVESTIGATION LEARNED DECISION FACT PATTERN DEVIATION; do
|
|
44
|
+
if echo "$COMMENT_BODY" | grep -q "${PREFIX}:"; then
|
|
45
|
+
TYPE=$(echo "$PREFIX" | tr '[:upper:]' '[:lower:]')
|
|
46
|
+
CONTENT=$(echo "$COMMENT_BODY" | sed "s/.*${PREFIX}:[[:space:]]*//" | head -c 2048)
|
|
47
|
+
break
|
|
48
|
+
fi
|
|
49
|
+
done
|
|
50
|
+
|
|
51
|
+
[[ -z "$TYPE" || -z "$CONTENT" ]] && exit 0
|
|
52
|
+
|
|
53
|
+
# Generate key
|
|
54
|
+
SLUG=$(echo "$CONTENT" | head -c 60 | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-' | sed 's/^-//;s/-$//')
|
|
55
|
+
KEY="${TYPE}-${SLUG}"
|
|
56
|
+
|
|
57
|
+
# Detect source
|
|
58
|
+
SOURCE="user"
|
|
59
|
+
CWD=$(echo "$INPUT" | jq -r '.cwd // empty')
|
|
60
|
+
|
|
61
|
+
if echo "$CWD" | grep -q '\.worktrees/'; then
|
|
62
|
+
SOURCE="supervisor"
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
# Build tags
|
|
66
|
+
TAGS_ARRAY=("$TYPE")
|
|
67
|
+
|
|
68
|
+
for tag in swift swiftui appkit menubar api security test database \
|
|
69
|
+
networking ui layout performance crash bug fix workaround \
|
|
70
|
+
gotcha pattern convention architecture auth middleware \
|
|
71
|
+
async concurrency model protocol adapter scanner engine \
|
|
72
|
+
decision tradeoff rationale constraint deprecat migration \
|
|
73
|
+
schema endpoint route validation error config env deploy \
|
|
74
|
+
cache queue retry timeout rate-limit pagination rollback \
|
|
75
|
+
react nextjs typescript python rust go docker postgres \
|
|
76
|
+
redis graphql rest webhook cron worker job; do
|
|
77
|
+
if echo "$CONTENT" | grep -qi "$tag"; then
|
|
78
|
+
TAGS_ARRAY+=("$tag")
|
|
79
|
+
fi
|
|
80
|
+
done
|
|
81
|
+
|
|
82
|
+
TAGS_JSON=$(printf '%s\n' "${TAGS_ARRAY[@]}" | jq -R . | jq -s .)
|
|
83
|
+
|
|
84
|
+
TS=$(date +%s)
|
|
85
|
+
|
|
86
|
+
ENTRY=$(jq -cn \
|
|
87
|
+
--arg key "$KEY" \
|
|
88
|
+
--arg type "$TYPE" \
|
|
89
|
+
--arg content "$CONTENT" \
|
|
90
|
+
--arg source "$SOURCE" \
|
|
91
|
+
--argjson tags "$TAGS_JSON" \
|
|
92
|
+
--argjson ts "$TS" \
|
|
93
|
+
--arg bead "$BEAD_ID" \
|
|
94
|
+
'{key: $key, type: $type, content: $content, source: $source, tags: $tags, ts: $ts, bead: $bead}')
|
|
95
|
+
|
|
96
|
+
[[ -z "$ENTRY" ]] && exit 0
|
|
97
|
+
echo "$ENTRY" | jq . >/dev/null 2>&1 || exit 0
|
|
98
|
+
|
|
99
|
+
MEMORY_DIR="${CLAUDE_PROJECT_DIR:-${CWD:-.}}/.lavra/memory"
|
|
100
|
+
mkdir -p "$MEMORY_DIR"
|
|
101
|
+
KNOWLEDGE_FILE="$MEMORY_DIR/knowledge.jsonl"
|
|
102
|
+
|
|
103
|
+
# SQLite dual-write (graceful fallback if sqlite3 unavailable)
|
|
104
|
+
if command -v sqlite3 &>/dev/null; then
|
|
105
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
106
|
+
if [[ -f "$SCRIPT_DIR/knowledge-db.sh" ]]; then
|
|
107
|
+
source "$SCRIPT_DIR/knowledge-db.sh"
|
|
108
|
+
TAGS_TEXT=$(echo "$TAGS_JSON" | jq -r '.[]' 2>/dev/null | tr '\n' ' ')
|
|
109
|
+
kb_ensure_db "$MEMORY_DIR/knowledge.db"
|
|
110
|
+
kb_insert "$MEMORY_DIR/knowledge.db" "$KEY" "$TYPE" "$CONTENT" "$SOURCE" "$TAGS_TEXT" "$TS" "$BEAD_ID"
|
|
111
|
+
fi
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
# Check for duplicate key before appending to JSONL
|
|
115
|
+
if [[ -f "$KNOWLEDGE_FILE" ]] && grep -qF "\"key\":\"$KEY\"" "$KNOWLEDGE_FILE"; then
|
|
116
|
+
exit 0 # Skip duplicate
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
echo "$ENTRY" >> "$KNOWLEDGE_FILE"
|
|
120
|
+
|
|
121
|
+
# Rotation: archive oldest 2500 when file exceeds 5000 lines
|
|
122
|
+
# High threshold avoids rewriting the file (which breaks merge=union)
|
|
123
|
+
LINE_COUNT=$(wc -l < "$KNOWLEDGE_FILE" 2>/dev/null | tr -d ' ')
|
|
124
|
+
|
|
125
|
+
if [[ "$LINE_COUNT" -gt 5000 ]]; then
|
|
126
|
+
ARCHIVE_FILE="$MEMORY_DIR/knowledge.archive.jsonl"
|
|
127
|
+
head -2500 "$KNOWLEDGE_FILE" >> "$ARCHIVE_FILE"
|
|
128
|
+
tail -n +2501 "$KNOWLEDGE_FILE" > "$KNOWLEDGE_FILE.tmp"
|
|
129
|
+
mv "$KNOWLEDGE_FILE.tmp" "$KNOWLEDGE_FILE"
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
exit 0
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Shared memory provisioning for lavra
|
|
4
|
+
#
|
|
5
|
+
# Provides a single function to set up .lavra/ with knowledge tracking.
|
|
6
|
+
# Used by auto-recall.sh (native plugin), check-memory.sh (global install),
|
|
7
|
+
# and install.sh (manual install) to avoid duplicating setup logic.
|
|
8
|
+
#
|
|
9
|
+
# Usage:
|
|
10
|
+
# source provision-memory.sh
|
|
11
|
+
# provision_memory_dir "/path/to/project" "/path/to/hooks/dir"
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
provision_memory_dir() {
|
|
15
|
+
local PROJECT_DIR="$1"
|
|
16
|
+
local HOOKS_SOURCE_DIR="$2"
|
|
17
|
+
|
|
18
|
+
local MEMORY_DIR="$PROJECT_DIR/.lavra/memory"
|
|
19
|
+
local LAVRA_DIR="$PROJECT_DIR/.lavra"
|
|
20
|
+
|
|
21
|
+
mkdir -p -m 700 "$MEMORY_DIR"
|
|
22
|
+
mkdir -p -m 700 "$PROJECT_DIR/.lavra/config"
|
|
23
|
+
mkdir -p -m 700 "$PROJECT_DIR/.lavra/retros"
|
|
24
|
+
|
|
25
|
+
# Create empty knowledge file if missing
|
|
26
|
+
if [[ ! -f "$MEMORY_DIR/knowledge.jsonl" ]]; then
|
|
27
|
+
touch "$MEMORY_DIR/knowledge.jsonl"
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# Copy recall.sh if available
|
|
31
|
+
if [[ -f "$HOOKS_SOURCE_DIR/recall.sh" ]]; then
|
|
32
|
+
cp "$HOOKS_SOURCE_DIR/recall.sh" "$MEMORY_DIR/recall.sh"
|
|
33
|
+
chmod +x "$MEMORY_DIR/recall.sh"
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Copy knowledge-db.sh if available
|
|
37
|
+
if [[ -f "$HOOKS_SOURCE_DIR/knowledge-db.sh" ]]; then
|
|
38
|
+
cp "$HOOKS_SOURCE_DIR/knowledge-db.sh" "$MEMORY_DIR/knowledge-db.sh"
|
|
39
|
+
chmod +x "$MEMORY_DIR/knowledge-db.sh"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Setup .lavra/.gitattributes for union merge (folder-level, paths use memory/ prefix)
|
|
43
|
+
local GITATTR="$LAVRA_DIR/.gitattributes"
|
|
44
|
+
|
|
45
|
+
if [[ ! -f "$GITATTR" ]] || ! grep -q 'memory/knowledge.jsonl' "$GITATTR" 2>/dev/null; then
|
|
46
|
+
echo "memory/knowledge.jsonl merge=union" > "$GITATTR"
|
|
47
|
+
echo "memory/knowledge.archive.jsonl merge=union" >> "$GITATTR"
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# Write installed version for staleness detection by auto-recall.sh
|
|
51
|
+
# .lavra-version lives at .lavra/ root, not .lavra/memory/
|
|
52
|
+
echo "0.7.0" > "$LAVRA_DIR/.lavra-version"
|
|
53
|
+
|
|
54
|
+
# Create .lavra/.gitignore (folder-level) to ignore SQLite cache and ephemeral state
|
|
55
|
+
# Paths are relative to .lavra/ root, so they use memory/ prefix
|
|
56
|
+
local LAVRA_GITIGNORE="$LAVRA_DIR/.gitignore"
|
|
57
|
+
if [[ ! -f "$LAVRA_GITIGNORE" ]]; then
|
|
58
|
+
cat > "$LAVRA_GITIGNORE" << 'EOF'
|
|
59
|
+
# SQLite FTS cache (rebuilt from knowledge.jsonl on first use)
|
|
60
|
+
memory/knowledge.db
|
|
61
|
+
memory/knowledge.db-journal
|
|
62
|
+
memory/knowledge.db-wal
|
|
63
|
+
memory/knowledge.db-shm
|
|
64
|
+
|
|
65
|
+
# Ephemeral session state (survives compaction, recalled once, then deleted)
|
|
66
|
+
memory/session-state.md
|
|
67
|
+
EOF
|
|
68
|
+
elif ! grep -q 'session-state.md' "$LAVRA_GITIGNORE" 2>/dev/null; then
|
|
69
|
+
# Append session-state.md to existing gitignore if missing
|
|
70
|
+
echo "" >> "$LAVRA_GITIGNORE"
|
|
71
|
+
echo "# Ephemeral session state (survives compaction, recalled once, then deleted)" >> "$LAVRA_GITIGNORE"
|
|
72
|
+
echo "memory/session-state.md" >> "$LAVRA_GITIGNORE"
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# Create default lavra.json config if missing
|
|
76
|
+
local CONFIG_DIR="$PROJECT_DIR/.lavra/config"
|
|
77
|
+
if [[ ! -f "$CONFIG_DIR/lavra.json" ]]; then
|
|
78
|
+
cat > "$CONFIG_DIR/lavra.json" << 'EOF'
|
|
79
|
+
{
|
|
80
|
+
"workflow": {
|
|
81
|
+
"research": true,
|
|
82
|
+
"plan_review": true,
|
|
83
|
+
"goal_verification": true
|
|
84
|
+
},
|
|
85
|
+
"execution": {
|
|
86
|
+
"max_parallel_agents": 3,
|
|
87
|
+
"commit_granularity": "task"
|
|
88
|
+
},
|
|
89
|
+
"model_profile": "balanced"
|
|
90
|
+
}
|
|
91
|
+
EOF
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# Check if project .gitignore contains a .lavra/ pattern, which would cause
|
|
95
|
+
# all Lavra knowledge and config data to be untracked (data loss risk on new clones).
|
|
96
|
+
if git -C "$PROJECT_DIR" rev-parse --git-dir &>/dev/null 2>&1; then
|
|
97
|
+
local GITIGNORE="$PROJECT_DIR/.gitignore"
|
|
98
|
+
if [[ -f "$GITIGNORE" ]] && grep -qE '^\s*\.lavra/?(\s|$)' "$GITIGNORE" 2>/dev/null \
|
|
99
|
+
&& ! grep -qE '^\s*!\.lavra/' "$GITIGNORE" 2>/dev/null; then
|
|
100
|
+
echo ""
|
|
101
|
+
echo "[!] Warning: .lavra/ is listed in your project .gitignore."
|
|
102
|
+
echo " This means your Lavra knowledge and config are not"
|
|
103
|
+
echo " tracked by git. If you lose your local copy, all of this data"
|
|
104
|
+
echo " will be permanently lost."
|
|
105
|
+
echo ""
|
|
106
|
+
echo " To keep .lavra/ invisible to git without data loss, use git's"
|
|
107
|
+
echo " exclude file: echo '.lavra/' >> .git/info/exclude"
|
|
108
|
+
echo ""
|
|
109
|
+
if [[ "${BEADS_AUTO_YES:-false}" == "true" ]] || ! [[ -t 0 ]]; then
|
|
110
|
+
# Non-interactive mode (hook context or --yes flag): warn but don't modify
|
|
111
|
+
echo " [non-interactive] Leaving .gitignore unchanged. Re-run install to fix interactively."
|
|
112
|
+
else
|
|
113
|
+
read -r -p " Remove .lavra/ from .gitignore? [Y/n] " response
|
|
114
|
+
case "${response:-Y}" in
|
|
115
|
+
[nN]|[nN][oO])
|
|
116
|
+
echo " Left unchanged. Your Lavra data may not be committed to git."
|
|
117
|
+
;;
|
|
118
|
+
*)
|
|
119
|
+
# Remove lines matching .lavra/ (with optional trailing slash and whitespace)
|
|
120
|
+
local TMPFILE
|
|
121
|
+
TMPFILE=$(mktemp)
|
|
122
|
+
grep -vE '^\s*\.lavra/?(\s|$)' "$GITIGNORE" > "$TMPFILE"
|
|
123
|
+
mv "$TMPFILE" "$GITIGNORE"
|
|
124
|
+
echo " Removed .lavra/ from .gitignore."
|
|
125
|
+
echo " Run: git add .lavra/ && git commit -m 'track lavra data'"
|
|
126
|
+
;;
|
|
127
|
+
esac
|
|
128
|
+
fi
|
|
129
|
+
echo ""
|
|
130
|
+
fi
|
|
131
|
+
fi
|
|
132
|
+
|
|
133
|
+
# Stage specific known files only (no -f: respect user's .gitignore)
|
|
134
|
+
if git -C "$PROJECT_DIR" rev-parse --git-dir &>/dev/null 2>&1; then
|
|
135
|
+
(cd "$PROJECT_DIR" && git add \
|
|
136
|
+
.lavra/.gitattributes \
|
|
137
|
+
.lavra/.gitignore \
|
|
138
|
+
.lavra/.lavra-version \
|
|
139
|
+
.lavra/memory/knowledge.jsonl \
|
|
140
|
+
.lavra/memory/recall.sh \
|
|
141
|
+
.lavra/memory/knowledge-db.sh \
|
|
142
|
+
2>/dev/null) || true
|
|
143
|
+
fi
|
|
144
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Search the knowledge base (.lavra/memory/knowledge.jsonl)
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# recall.sh "keyword" # Search by keyword
|
|
7
|
+
# recall.sh "keyword" --type learned # Filter by type
|
|
8
|
+
# recall.sh --recent 10 # Show latest N entries
|
|
9
|
+
# recall.sh --stats # Knowledge base stats
|
|
10
|
+
# recall.sh "keyword" --all # Include archive
|
|
11
|
+
# recall.sh --topic BD-005 # Filter by epic parent
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
MEMORY_DIR="${CLAUDE_PROJECT_DIR:-.}/.lavra/memory"
|
|
15
|
+
KNOWLEDGE_FILE="$MEMORY_DIR/knowledge.jsonl"
|
|
16
|
+
ARCHIVE_FILE="$MEMORY_DIR/knowledge.archive.jsonl"
|
|
17
|
+
|
|
18
|
+
if [[ ! -f "$KNOWLEDGE_FILE" ]]; then
|
|
19
|
+
echo "No knowledge base found at $KNOWLEDGE_FILE"
|
|
20
|
+
exit 0
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# Parse args
|
|
24
|
+
QUERY=""
|
|
25
|
+
TYPE_FILTER=""
|
|
26
|
+
RECENT=0
|
|
27
|
+
SHOW_STATS=false
|
|
28
|
+
INCLUDE_ARCHIVE=false
|
|
29
|
+
TOPIC_ID=""
|
|
30
|
+
|
|
31
|
+
while [[ $# -gt 0 ]]; do
|
|
32
|
+
case "$1" in
|
|
33
|
+
--type) TYPE_FILTER="$2"; shift 2 ;;
|
|
34
|
+
--recent) RECENT="$2"; shift 2 ;;
|
|
35
|
+
--stats) SHOW_STATS=true; shift ;;
|
|
36
|
+
--all) INCLUDE_ARCHIVE=true; shift ;;
|
|
37
|
+
--topic) TOPIC_ID="$2"; shift 2 ;;
|
|
38
|
+
*) QUERY="$1"; shift ;;
|
|
39
|
+
esac
|
|
40
|
+
done
|
|
41
|
+
|
|
42
|
+
# Validate numeric parameters
|
|
43
|
+
if ! [[ "$RECENT" =~ ^[0-9]+$ ]]; then
|
|
44
|
+
RECENT=0
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# Stats mode
|
|
48
|
+
if $SHOW_STATS; then
|
|
49
|
+
TOTAL=$(wc -l < "$KNOWLEDGE_FILE" | tr -d ' ')
|
|
50
|
+
ARCHIVE_COUNT=0
|
|
51
|
+
[[ -f "$ARCHIVE_FILE" ]] && ARCHIVE_COUNT=$(wc -l < "$ARCHIVE_FILE" | tr -d ' ')
|
|
52
|
+
|
|
53
|
+
echo "Knowledge base: $KNOWLEDGE_FILE"
|
|
54
|
+
echo "Active entries: $TOTAL"
|
|
55
|
+
echo "Archived: $ARCHIVE_COUNT"
|
|
56
|
+
echo ""
|
|
57
|
+
echo "By type:"
|
|
58
|
+
jq -r '.type' "$KNOWLEDGE_FILE" 2>/dev/null | sort | uniq -c | sort -rn
|
|
59
|
+
echo ""
|
|
60
|
+
echo "Top tags:"
|
|
61
|
+
jq -r '.tags[]' "$KNOWLEDGE_FILE" 2>/dev/null | sort | uniq -c | sort -rn | head -15
|
|
62
|
+
exit 0
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
# Topic mode -- filter by bead parent
|
|
66
|
+
if [[ -n "$TOPIC_ID" ]]; then
|
|
67
|
+
if ! command -v bd &>/dev/null; then
|
|
68
|
+
echo "bd not found -- cannot query topic children"
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
CHILDREN=$(bd list --parent "$TOPIC_ID" --json 2>/dev/null | jq -r '.[].id' 2>/dev/null)
|
|
73
|
+
|
|
74
|
+
if [[ -z "$CHILDREN" ]]; then
|
|
75
|
+
echo "No children found for topic $TOPIC_ID"
|
|
76
|
+
exit 0
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
for CHILD_ID in $CHILDREN; do
|
|
80
|
+
grep "\"bead\":\"$CHILD_ID\"" "$KNOWLEDGE_FILE" 2>/dev/null
|
|
81
|
+
done | jq -r '"\(.type | ascii_upcase): \(.content)"' 2>/dev/null
|
|
82
|
+
exit 0
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# Build input (optionally include archive)
|
|
86
|
+
INPUT_FILES="$KNOWLEDGE_FILE"
|
|
87
|
+
$INCLUDE_ARCHIVE && [[ -f "$ARCHIVE_FILE" ]] && INPUT_FILES="$ARCHIVE_FILE $KNOWLEDGE_FILE"
|
|
88
|
+
|
|
89
|
+
# Recent mode
|
|
90
|
+
if [[ "$RECENT" -gt 0 ]]; then
|
|
91
|
+
cat $INPUT_FILES | tail -"$RECENT" | jq -r '"\(.type | ascii_upcase): \(.content)"' 2>/dev/null
|
|
92
|
+
exit 0
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
# Search mode
|
|
96
|
+
if [[ -z "$QUERY" ]]; then
|
|
97
|
+
echo "Usage: recall.sh \"keyword\" [--type TYPE] [--recent N] [--stats] [--all] [--topic ID]"
|
|
98
|
+
exit 0
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
# FTS5 search if available
|
|
102
|
+
USED_FTS5=false
|
|
103
|
+
|
|
104
|
+
if command -v sqlite3 &>/dev/null; then
|
|
105
|
+
DB_PATH="$MEMORY_DIR/knowledge.db"
|
|
106
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
107
|
+
|
|
108
|
+
if [[ -f "$DB_PATH" ]] && [[ -f "$SCRIPT_DIR/knowledge-db.sh" ]]; then
|
|
109
|
+
source "$SCRIPT_DIR/knowledge-db.sh"
|
|
110
|
+
RAW_RESULTS=$(kb_search "$DB_PATH" "$QUERY" 20)
|
|
111
|
+
|
|
112
|
+
if [[ -n "$RAW_RESULTS" ]]; then
|
|
113
|
+
# Apply type filter and format
|
|
114
|
+
RESULTS=""
|
|
115
|
+
|
|
116
|
+
while IFS='|' read -r type content bead tags; do
|
|
117
|
+
[[ -z "$type" ]] && continue
|
|
118
|
+
|
|
119
|
+
if [[ -n "$TYPE_FILTER" ]] && [[ "$type" != "$TYPE_FILTER" ]]; then
|
|
120
|
+
continue
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
TYPE_UPPER=$(echo "$type" | tr '[:lower:]' '[:upper:]')
|
|
124
|
+
RESULTS="${RESULTS}[$TYPE_UPPER] $content
|
|
125
|
+
bead: $bead | $tags
|
|
126
|
+
"
|
|
127
|
+
done <<< "$RAW_RESULTS"
|
|
128
|
+
|
|
129
|
+
if [[ -n "$RESULTS" ]]; then
|
|
130
|
+
echo "$RESULTS"
|
|
131
|
+
USED_FTS5=true
|
|
132
|
+
fi
|
|
133
|
+
fi
|
|
134
|
+
fi
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
if [[ "$USED_FTS5" = false ]]; then
|
|
138
|
+
# Grep fallback (use -F for fixed-string matching to prevent regex metachar issues)
|
|
139
|
+
RESULTS=$(grep -iF "$QUERY" $INPUT_FILES 2>/dev/null)
|
|
140
|
+
|
|
141
|
+
if [[ -n "$TYPE_FILTER" ]]; then
|
|
142
|
+
RESULTS=$(echo "$RESULTS" | jq -r "select(.type == \"$TYPE_FILTER\")" 2>/dev/null)
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
echo "$RESULTS" | jq -rs '
|
|
146
|
+
[.[] | select(.key != null)] |
|
|
147
|
+
unique_by(.key) |
|
|
148
|
+
sort_by(-.ts) |
|
|
149
|
+
.[] |
|
|
150
|
+
"[\(.type | ascii_upcase)] \(.content)\n bead: \(.bead) | \(.tags | join(", "))"
|
|
151
|
+
' 2>/dev/null
|
|
152
|
+
fi
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# SubagentStop: Auto-capture learnings before subagent exits
|
|
4
|
+
#
|
|
5
|
+
# This hook runs when any subagent completes. It prompts the subagent
|
|
6
|
+
# to log key learnings to the bead before finishing.
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
INPUT=$(cat)
|
|
10
|
+
AGENT_TYPE=$(echo "$INPUT" | jq -r '.agent_type // empty')
|
|
11
|
+
AGENT_ID=$(echo "$INPUT" | jq -r '.agent_id // empty')
|
|
12
|
+
|
|
13
|
+
# Only run for actual subagents (not the main agent)
|
|
14
|
+
[[ -z "$AGENT_ID" ]] && exit 0
|
|
15
|
+
|
|
16
|
+
# Check if there's a BEAD_ID in the agent's context
|
|
17
|
+
TRANSCRIPT_PATH=$(echo "$INPUT" | jq -r '.agent_transcript_path // empty')
|
|
18
|
+
|
|
19
|
+
if [[ -n "$TRANSCRIPT_PATH" ]] && [[ -f "$TRANSCRIPT_PATH" ]]; then
|
|
20
|
+
# Try to extract BEAD_ID from the transcript
|
|
21
|
+
BEAD_ID=$(grep -oE 'BEAD_ID: [A-Za-z0-9._-]+' "$TRANSCRIPT_PATH" 2>/dev/null | head -1 | sed 's/BEAD_ID: //')
|
|
22
|
+
|
|
23
|
+
if [[ -n "$BEAD_ID" ]]; then
|
|
24
|
+
# Subagent is working on a bead - prompt it to log learnings
|
|
25
|
+
cat << EOF
|
|
26
|
+
{
|
|
27
|
+
"decision": "block",
|
|
28
|
+
"reason": "Before completing, please log what you learned to the bead using one or more of these formats:
|
|
29
|
+
|
|
30
|
+
bd comments add $BEAD_ID \"LEARNED: [key technical insight you discovered]\"
|
|
31
|
+
bd comments add $BEAD_ID \"DECISION: [important choice you made and why]\"
|
|
32
|
+
bd comments add $BEAD_ID \"FACT: [constraint, gotcha, or important detail]\"
|
|
33
|
+
bd comments add $BEAD_ID \"PATTERN: [coding pattern or convention you followed]\"
|
|
34
|
+
bd comments add $BEAD_ID \"INVESTIGATION: [root cause or how something works]\"
|
|
35
|
+
|
|
36
|
+
After logging at least one insight, you may complete."
|
|
37
|
+
}
|
|
38
|
+
EOF
|
|
39
|
+
exit 0
|
|
40
|
+
fi
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
# No BEAD_ID found or not working on a bead - allow completion
|
|
44
|
+
exit 0
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# teammate-idle-check.sh
|
|
3
|
+
# Prevents workers from going idle while ready beads remain.
|
|
4
|
+
# Uses JSON decision:block pattern (consistent with subagent-wrapup.sh).
|
|
5
|
+
#
|
|
6
|
+
# TeammateIdle hook -- fires when a teammate tries to go idle.
|
|
7
|
+
|
|
8
|
+
INPUT=$(cat)
|
|
9
|
+
TEAMMATE=$(echo "$INPUT" | jq -r '.teammate_name // empty')
|
|
10
|
+
|
|
11
|
+
# Validate teammate_name against safe pattern
|
|
12
|
+
if [[ ! "$TEAMMATE" =~ ^[a-zA-Z0-9_-]{1,64}$ ]]; then
|
|
13
|
+
TEAMMATE="unknown"
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
READY=$(bd ready --json 2>/dev/null | jq 'length' 2>/dev/null || echo "0")
|
|
17
|
+
|
|
18
|
+
if [ "$READY" -gt 0 ]; then
|
|
19
|
+
cat << EOF
|
|
20
|
+
{
|
|
21
|
+
"decision": "block",
|
|
22
|
+
"reason": "There are $READY beads ready to work on. Run 'bd ready' and pick one."
|
|
23
|
+
}
|
|
24
|
+
EOF
|
|
25
|
+
exit 0
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# No ready beads -- allow idle (remaining beads may be blocked by dependencies)
|
|
29
|
+
exit 0
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<!-- Generated by lavra v0.6.0 -->
|
|
2
|
+
<!-- Source: design/design-implementation-reviewer.md -->
|
|
3
|
+
<!-- DO NOT EDIT - changes will be overwritten on next install -->
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
description: Verifies UI implementations match Figma design specifications. Use after HTML/CSS/React components are created or modified to compare implementation against Figma and identify discrepancies.
|
|
7
|
+
mode: subagent
|
|
8
|
+
model: anthropic/claude-sonnet-4-5-20250929
|
|
9
|
+
---
|
|
10
|
+
<examples>
|
|
11
|
+
<example>
|
|
12
|
+
Context: The user has just implemented a new component based on a Figma design.
|
|
13
|
+
user: "I've finished implementing the hero section based on the Figma design"
|
|
14
|
+
assistant: "I'll review how well your implementation matches the Figma design."
|
|
15
|
+
<commentary>
|
|
16
|
+
Since UI implementation has been completed, use the design-implementation-reviewer agent to compare the live version with Figma.
|
|
17
|
+
</commentary>
|
|
18
|
+
</example>
|
|
19
|
+
|
|
20
|
+
<example>
|
|
21
|
+
Context: After the general code agent has implemented design changes.
|
|
22
|
+
user: "Update the button styles to match the new design system"
|
|
23
|
+
assistant: "I've updated the button styles. Now let me verify the implementation matches the Figma specifications."
|
|
24
|
+
<commentary>
|
|
25
|
+
After implementing design changes, proactively use the design-implementation-reviewer to ensure accuracy.
|
|
26
|
+
</commentary>
|
|
27
|
+
</example>
|
|
28
|
+
</examples>
|
|
29
|
+
|
|
30
|
+
<role>
|
|
31
|
+
You are an expert UI/UX implementation reviewer specializing in ensuring pixel-perfect fidelity between Figma designs and live implementations. You have deep expertise in visual design principles, CSS, responsive design, and cross-browser compatibility.
|
|
32
|
+
</role>
|
|
33
|
+
|
|
34
|
+
<process>
|
|
35
|
+
|
|
36
|
+
1. **Capture Implementation State**
|
|
37
|
+
- Use agent-browser CLI to capture screenshots of the implemented UI
|
|
38
|
+
- Test different viewport sizes if the design includes responsive breakpoints
|
|
39
|
+
- Capture interactive states (hover, focus, active) when relevant
|
|
40
|
+
- Document the URL and selectors of the components being reviewed
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
agent-browser open [url]
|
|
44
|
+
agent-browser snapshot -i
|
|
45
|
+
agent-browser screenshot output.png
|
|
46
|
+
# For hover states:
|
|
47
|
+
agent-browser hover @e1
|
|
48
|
+
agent-browser screenshot hover-state.png
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
2. **Retrieve Design Specifications**
|
|
52
|
+
- Use the Figma MCP to access the corresponding design files
|
|
53
|
+
- Extract design tokens (colors, typography, spacing, shadows)
|
|
54
|
+
- Identify component specifications and design system rules
|
|
55
|
+
- Note any design annotations or developer handoff notes
|
|
56
|
+
|
|
57
|
+
3. **Conduct Systematic Comparison**
|
|
58
|
+
- **Visual Fidelity**: Compare layouts, spacing, alignment, and proportions
|
|
59
|
+
- **Typography**: Verify font families, sizes, weights, line heights, and letter spacing
|
|
60
|
+
- **Colors**: Check background colors, text colors, borders, and gradients
|
|
61
|
+
- **Spacing**: Measure padding, margins, and gaps against design specs
|
|
62
|
+
- **Interactive Elements**: Verify button states, form inputs, and animations
|
|
63
|
+
- **Responsive Behavior**: Ensure breakpoints match design specifications
|
|
64
|
+
- **Accessibility**: Note any WCAG compliance issues visible in the implementation
|
|
65
|
+
|
|
66
|
+
4. **Generate Structured Review**
|
|
67
|
+
Structure your review as follows:
|
|
68
|
+
```
|
|
69
|
+
## Design Implementation Review
|
|
70
|
+
|
|
71
|
+
### Correctly Implemented
|
|
72
|
+
- [List elements that match the design perfectly]
|
|
73
|
+
|
|
74
|
+
### Minor Discrepancies
|
|
75
|
+
- [Issue]: [Current implementation] vs [Expected from Figma]
|
|
76
|
+
- Impact: [Low/Medium]
|
|
77
|
+
- Fix: [Specific CSS/code change needed]
|
|
78
|
+
|
|
79
|
+
### Major Issues
|
|
80
|
+
- [Issue]: [Description of significant deviation]
|
|
81
|
+
- Impact: High
|
|
82
|
+
- Fix: [Detailed correction steps]
|
|
83
|
+
|
|
84
|
+
### Measurements
|
|
85
|
+
- [Component]: Figma: [value] | Implementation: [value]
|
|
86
|
+
|
|
87
|
+
### Recommendations
|
|
88
|
+
- [Suggestions for improving design consistency]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
5. **Provide Actionable Fixes**
|
|
92
|
+
- Include specific CSS properties and values that need adjustment
|
|
93
|
+
- Reference design tokens from the design system when applicable
|
|
94
|
+
- Suggest code snippets for complex fixes
|
|
95
|
+
- Prioritize fixes based on visual impact and user experience
|
|
96
|
+
|
|
97
|
+
</process>
|
|
98
|
+
|
|
99
|
+
## Important Guidelines
|
|
100
|
+
|
|
101
|
+
- **Be Precise**: Use exact pixel values, hex codes, and specific CSS properties
|
|
102
|
+
- **Consider Context**: Some variations might be intentional (e.g., browser rendering differences)
|
|
103
|
+
- **Focus on User Impact**: Prioritize issues that affect usability or brand consistency
|
|
104
|
+
- **Account for Technical Constraints**: Recognize when perfect fidelity might not be technically feasible
|
|
105
|
+
- **Reference Design System**: When available, cite design system documentation
|
|
106
|
+
- **Test Across States**: Don't just review static appearance; consider interactive states
|
|
107
|
+
|
|
108
|
+
## Edge Cases to Consider
|
|
109
|
+
|
|
110
|
+
- Browser-specific rendering differences
|
|
111
|
+
- Font availability and fallbacks
|
|
112
|
+
- Dynamic content that might affect layout
|
|
113
|
+
- Animations and transitions not visible in static designs
|
|
114
|
+
- Accessibility improvements that might deviate from pure visual design
|
|
115
|
+
|
|
116
|
+
When you encounter ambiguity between the design and implementation requirements, clearly note the discrepancy and provide recommendations for both strict design adherence and practical implementation approaches.
|
|
117
|
+
|
|
118
|
+
<success_criteria>
|
|
119
|
+
- Screenshots captured at all relevant viewport sizes and interactive states
|
|
120
|
+
- Design tokens (colors, typography, spacing) compared with exact values
|
|
121
|
+
- Discrepancies categorized by severity (minor vs major) with specific CSS fixes
|
|
122
|
+
- Responsive breakpoints verified against design specifications
|
|
123
|
+
- Accessibility issues noted where implementation deviates from WCAG compliance
|
|
124
|
+
- Review structured with Correctly Implemented, Minor Discrepancies, and Major Issues sections
|
|
125
|
+
</success_criteria>
|
|
126
|
+
|
|
127
|
+
Your goal is to ensure the implementation delivers the intended user experience while maintaining design consistency and technical excellence.
|