javi-forge 0.1.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/.gitignore.template +105 -0
- package/.releaserc +44 -0
- package/README.md +45 -0
- package/ai-config/.skillignore +15 -0
- package/ai-config/AUTO_INVOKE.md +300 -0
- package/ai-config/agents/_TEMPLATE.md +93 -0
- package/ai-config/agents/business/api-designer.md +1657 -0
- package/ai-config/agents/business/business-analyst.md +1331 -0
- package/ai-config/agents/business/product-strategist.md +206 -0
- package/ai-config/agents/business/project-manager.md +178 -0
- package/ai-config/agents/business/requirements-analyst.md +1277 -0
- package/ai-config/agents/business/technical-writer.md +1679 -0
- package/ai-config/agents/creative/ux-designer.md +205 -0
- package/ai-config/agents/data-ai/ai-engineer.md +487 -0
- package/ai-config/agents/data-ai/analytics-engineer.md +953 -0
- package/ai-config/agents/data-ai/data-engineer.md +173 -0
- package/ai-config/agents/data-ai/data-scientist.md +672 -0
- package/ai-config/agents/data-ai/mlops-engineer.md +814 -0
- package/ai-config/agents/data-ai/prompt-engineer.md +772 -0
- package/ai-config/agents/development/angular-expert.md +620 -0
- package/ai-config/agents/development/backend-architect.md +795 -0
- package/ai-config/agents/development/database-specialist.md +212 -0
- package/ai-config/agents/development/frontend-specialist.md +686 -0
- package/ai-config/agents/development/fullstack-engineer.md +668 -0
- package/ai-config/agents/development/golang-pro.md +338 -0
- package/ai-config/agents/development/java-enterprise.md +400 -0
- package/ai-config/agents/development/javascript-pro.md +422 -0
- package/ai-config/agents/development/nextjs-pro.md +474 -0
- package/ai-config/agents/development/python-pro.md +570 -0
- package/ai-config/agents/development/react-pro.md +487 -0
- package/ai-config/agents/development/rust-pro.md +246 -0
- package/ai-config/agents/development/spring-boot-4-expert.md +326 -0
- package/ai-config/agents/development/typescript-pro.md +336 -0
- package/ai-config/agents/development/vue-specialist.md +605 -0
- package/ai-config/agents/infrastructure/cloud-architect.md +472 -0
- package/ai-config/agents/infrastructure/deployment-manager.md +358 -0
- package/ai-config/agents/infrastructure/devops-engineer.md +455 -0
- package/ai-config/agents/infrastructure/incident-responder.md +519 -0
- package/ai-config/agents/infrastructure/kubernetes-expert.md +705 -0
- package/ai-config/agents/infrastructure/monitoring-specialist.md +674 -0
- package/ai-config/agents/infrastructure/performance-engineer.md +658 -0
- package/ai-config/agents/orchestrator.md +241 -0
- package/ai-config/agents/quality/accessibility-auditor.md +1204 -0
- package/ai-config/agents/quality/code-reviewer-compact.md +123 -0
- package/ai-config/agents/quality/code-reviewer.md +363 -0
- package/ai-config/agents/quality/dependency-manager.md +743 -0
- package/ai-config/agents/quality/e2e-test-specialist.md +1005 -0
- package/ai-config/agents/quality/performance-tester.md +1086 -0
- package/ai-config/agents/quality/security-auditor.md +133 -0
- package/ai-config/agents/quality/test-engineer.md +453 -0
- package/ai-config/agents/specialists/api-designer.md +87 -0
- package/ai-config/agents/specialists/backend-architect.md +73 -0
- package/ai-config/agents/specialists/code-reviewer.md +77 -0
- package/ai-config/agents/specialists/db-optimizer.md +75 -0
- package/ai-config/agents/specialists/devops-engineer.md +83 -0
- package/ai-config/agents/specialists/documentation-writer.md +78 -0
- package/ai-config/agents/specialists/frontend-developer.md +75 -0
- package/ai-config/agents/specialists/performance-analyst.md +82 -0
- package/ai-config/agents/specialists/refactor-specialist.md +74 -0
- package/ai-config/agents/specialists/security-auditor.md +74 -0
- package/ai-config/agents/specialists/test-engineer.md +81 -0
- package/ai-config/agents/specialists/ux-consultant.md +76 -0
- package/ai-config/agents/specialized/agent-generator.md +1190 -0
- package/ai-config/agents/specialized/blockchain-developer.md +149 -0
- package/ai-config/agents/specialized/code-migrator.md +892 -0
- package/ai-config/agents/specialized/context-manager.md +978 -0
- package/ai-config/agents/specialized/documentation-writer.md +1078 -0
- package/ai-config/agents/specialized/ecommerce-expert.md +1756 -0
- package/ai-config/agents/specialized/embedded-engineer.md +1714 -0
- package/ai-config/agents/specialized/error-detective.md +1034 -0
- package/ai-config/agents/specialized/fintech-specialist.md +1659 -0
- package/ai-config/agents/specialized/freelance-project-planner-v2.md +1988 -0
- package/ai-config/agents/specialized/freelance-project-planner-v3.md +2136 -0
- package/ai-config/agents/specialized/freelance-project-planner-v4.md +4503 -0
- package/ai-config/agents/specialized/freelance-project-planner.md +722 -0
- package/ai-config/agents/specialized/game-developer.md +1963 -0
- package/ai-config/agents/specialized/healthcare-dev.md +1620 -0
- package/ai-config/agents/specialized/mobile-developer.md +188 -0
- package/ai-config/agents/specialized/parallel-plan-executor.md +506 -0
- package/ai-config/agents/specialized/plan-executor.md +485 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/00-INDEX.md +485 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/01-CORE.md +3493 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/02-SELF-CORRECTION.md +778 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/03-PROGRESSIVE-SETUP.md +918 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/04-DEPLOYMENT.md +1537 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/05-TESTING.md +2633 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/06-OPERATIONS.md +5610 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/INSTALL.md +335 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/QUICK-REFERENCE.txt +215 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/README.md +260 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/START-HERE.md +379 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/WORKFLOW-DIAGRAM.md +355 -0
- package/ai-config/agents/specialized/solo-dev-planner-modular/solo-dev-planner.md +279 -0
- package/ai-config/agents/specialized/template-writer.md +347 -0
- package/ai-config/agents/specialized/test-runner.md +99 -0
- package/ai-config/agents/specialized/vibekanban-smart-worker.md +244 -0
- package/ai-config/agents/specialized/wave-executor.md +138 -0
- package/ai-config/agents/specialized/workflow-optimizer.md +1114 -0
- package/ai-config/commands/git/changelog.md +32 -0
- package/ai-config/commands/git/ci-local.md +70 -0
- package/ai-config/commands/git/commit.md +35 -0
- package/ai-config/commands/git/fix-issue.md +23 -0
- package/ai-config/commands/git/pr-create.md +42 -0
- package/ai-config/commands/git/pr-review.md +50 -0
- package/ai-config/commands/git/worktree.md +39 -0
- package/ai-config/commands/refactoring/cleanup.md +24 -0
- package/ai-config/commands/refactoring/dead-code.md +40 -0
- package/ai-config/commands/refactoring/extract.md +31 -0
- package/ai-config/commands/testing/e2e.md +30 -0
- package/ai-config/commands/testing/tdd.md +36 -0
- package/ai-config/commands/testing/test-coverage.md +30 -0
- package/ai-config/commands/testing/test-fix.md +24 -0
- package/ai-config/commands/workflow/generate-agents-md.md +85 -0
- package/ai-config/commands/workflow/planning.md +47 -0
- package/ai-config/commands/workflows/compound.md +89 -0
- package/ai-config/commands/workflows/plan.md +77 -0
- package/ai-config/commands/workflows/review.md +78 -0
- package/ai-config/commands/workflows/work.md +75 -0
- package/ai-config/config.yaml +18 -0
- package/ai-config/hooks/_TEMPLATE.md +96 -0
- package/ai-config/hooks/block-dangerous-commands.md +75 -0
- package/ai-config/hooks/commit-guard.md +90 -0
- package/ai-config/hooks/context-loader.md +73 -0
- package/ai-config/hooks/improve-prompt.md +91 -0
- package/ai-config/hooks/learning-log.md +72 -0
- package/ai-config/hooks/model-router.md +86 -0
- package/ai-config/hooks/secret-scanner.md +64 -0
- package/ai-config/hooks/skill-validator.md +102 -0
- package/ai-config/hooks/task-artifact.md +114 -0
- package/ai-config/hooks/validate-workflow.md +100 -0
- package/ai-config/prompts/base.md +71 -0
- package/ai-config/prompts/modes/debug.md +34 -0
- package/ai-config/prompts/modes/deploy.md +40 -0
- package/ai-config/prompts/modes/research.md +32 -0
- package/ai-config/prompts/modes/review.md +33 -0
- package/ai-config/prompts/review-policy.md +79 -0
- package/ai-config/skills/_TEMPLATE.md +157 -0
- package/ai-config/skills/backend/api-gateway/SKILL.md +254 -0
- package/ai-config/skills/backend/bff-concepts/SKILL.md +239 -0
- package/ai-config/skills/backend/bff-spring/SKILL.md +364 -0
- package/ai-config/skills/backend/chi-router/SKILL.md +396 -0
- package/ai-config/skills/backend/error-handling/SKILL.md +255 -0
- package/ai-config/skills/backend/exceptions-spring/SKILL.md +323 -0
- package/ai-config/skills/backend/fastapi/SKILL.md +302 -0
- package/ai-config/skills/backend/gateway-spring/SKILL.md +390 -0
- package/ai-config/skills/backend/go-backend/SKILL.md +457 -0
- package/ai-config/skills/backend/gradle-multimodule/SKILL.md +274 -0
- package/ai-config/skills/backend/graphql-concepts/SKILL.md +352 -0
- package/ai-config/skills/backend/graphql-spring/SKILL.md +398 -0
- package/ai-config/skills/backend/grpc-concepts/SKILL.md +283 -0
- package/ai-config/skills/backend/grpc-spring/SKILL.md +445 -0
- package/ai-config/skills/backend/jwt-auth/SKILL.md +412 -0
- package/ai-config/skills/backend/notifications-concepts/SKILL.md +259 -0
- package/ai-config/skills/backend/recommendations-concepts/SKILL.md +261 -0
- package/ai-config/skills/backend/search-concepts/SKILL.md +263 -0
- package/ai-config/skills/backend/search-spring/SKILL.md +375 -0
- package/ai-config/skills/backend/spring-boot-4/SKILL.md +172 -0
- package/ai-config/skills/backend/websockets/SKILL.md +532 -0
- package/ai-config/skills/data-ai/ai-ml/SKILL.md +423 -0
- package/ai-config/skills/data-ai/analytics-concepts/SKILL.md +195 -0
- package/ai-config/skills/data-ai/analytics-spring/SKILL.md +340 -0
- package/ai-config/skills/data-ai/duckdb-analytics/SKILL.md +440 -0
- package/ai-config/skills/data-ai/langchain/SKILL.md +238 -0
- package/ai-config/skills/data-ai/mlflow/SKILL.md +302 -0
- package/ai-config/skills/data-ai/onnx-inference/SKILL.md +290 -0
- package/ai-config/skills/data-ai/powerbi/SKILL.md +352 -0
- package/ai-config/skills/data-ai/pytorch/SKILL.md +274 -0
- package/ai-config/skills/data-ai/scikit-learn/SKILL.md +321 -0
- package/ai-config/skills/data-ai/vector-db/SKILL.md +301 -0
- package/ai-config/skills/database/graph-databases/SKILL.md +218 -0
- package/ai-config/skills/database/graph-spring/SKILL.md +361 -0
- package/ai-config/skills/database/pgx-postgres/SKILL.md +512 -0
- package/ai-config/skills/database/redis-cache/SKILL.md +343 -0
- package/ai-config/skills/database/sqlite-embedded/SKILL.md +388 -0
- package/ai-config/skills/database/timescaledb/SKILL.md +320 -0
- package/ai-config/skills/docs/api-documentation/SKILL.md +293 -0
- package/ai-config/skills/docs/docs-spring/SKILL.md +377 -0
- package/ai-config/skills/docs/mustache-templates/SKILL.md +190 -0
- package/ai-config/skills/docs/technical-docs/SKILL.md +447 -0
- package/ai-config/skills/frontend/astro-ssr/SKILL.md +441 -0
- package/ai-config/skills/frontend/frontend-design/SKILL.md +54 -0
- package/ai-config/skills/frontend/frontend-web/SKILL.md +368 -0
- package/ai-config/skills/frontend/mantine-ui/SKILL.md +396 -0
- package/ai-config/skills/frontend/tanstack-query/SKILL.md +439 -0
- package/ai-config/skills/frontend/zod-validation/SKILL.md +417 -0
- package/ai-config/skills/frontend/zustand-state/SKILL.md +350 -0
- package/ai-config/skills/infrastructure/chaos-engineering/SKILL.md +244 -0
- package/ai-config/skills/infrastructure/chaos-spring/SKILL.md +378 -0
- package/ai-config/skills/infrastructure/devops-infra/SKILL.md +435 -0
- package/ai-config/skills/infrastructure/docker-containers/SKILL.md +420 -0
- package/ai-config/skills/infrastructure/kubernetes/SKILL.md +456 -0
- package/ai-config/skills/infrastructure/opentelemetry/SKILL.md +546 -0
- package/ai-config/skills/infrastructure/traefik-proxy/SKILL.md +474 -0
- package/ai-config/skills/infrastructure/woodpecker-ci/SKILL.md +315 -0
- package/ai-config/skills/mobile/ionic-capacitor/SKILL.md +504 -0
- package/ai-config/skills/mobile/mobile-ionic/SKILL.md +448 -0
- package/ai-config/skills/prompt-improver/SKILL.md +125 -0
- package/ai-config/skills/quality/ghagga-review/SKILL.md +216 -0
- package/ai-config/skills/references/hooks-patterns/SKILL.md +238 -0
- package/ai-config/skills/references/mcp-servers/SKILL.md +275 -0
- package/ai-config/skills/references/plugins-reference/SKILL.md +110 -0
- package/ai-config/skills/references/skills-reference/SKILL.md +420 -0
- package/ai-config/skills/references/subagent-templates/SKILL.md +193 -0
- package/ai-config/skills/systems-iot/modbus-protocol/SKILL.md +410 -0
- package/ai-config/skills/systems-iot/mqtt-rumqttc/SKILL.md +408 -0
- package/ai-config/skills/systems-iot/rust-systems/SKILL.md +386 -0
- package/ai-config/skills/systems-iot/tokio-async/SKILL.md +324 -0
- package/ai-config/skills/testing/playwright-e2e/SKILL.md +289 -0
- package/ai-config/skills/testing/testcontainers/SKILL.md +299 -0
- package/ai-config/skills/testing/vitest-testing/SKILL.md +381 -0
- package/ai-config/skills/workflow/ci-local-guide/SKILL.md +118 -0
- package/ai-config/skills/workflow/claude-automation-recommender/SKILL.md +299 -0
- package/ai-config/skills/workflow/claude-md-improver/SKILL.md +158 -0
- package/ai-config/skills/workflow/finishing-a-development-branch/SKILL.md +117 -0
- package/ai-config/skills/workflow/git-github/SKILL.md +334 -0
- package/ai-config/skills/workflow/git-github/references/examples.md +160 -0
- package/ai-config/skills/workflow/git-workflow/SKILL.md +214 -0
- package/ai-config/skills/workflow/ide-plugins/SKILL.md +277 -0
- package/ai-config/skills/workflow/ide-plugins-intellij/SKILL.md +401 -0
- package/ai-config/skills/workflow/obsidian-brain-workflow/SKILL.md +199 -0
- package/ai-config/skills/workflow/using-git-worktrees/SKILL.md +100 -0
- package/ai-config/skills/workflow/verification-before-completion/SKILL.md +73 -0
- package/ai-config/skills/workflow/wave-workflow/SKILL.md +178 -0
- package/ci-local/README.md +170 -0
- package/ci-local/ci-local.sh +297 -0
- package/ci-local/hooks/commit-msg +74 -0
- package/ci-local/hooks/pre-commit +162 -0
- package/ci-local/hooks/pre-push +41 -0
- package/ci-local/install.sh +49 -0
- package/ci-local/semgrep.yml +214 -0
- package/dist/commands/analyze.d.ts +9 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +55 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/analyze.test.d.ts +2 -0
- package/dist/commands/analyze.test.d.ts.map +1 -0
- package/dist/commands/analyze.test.js +145 -0
- package/dist/commands/analyze.test.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +158 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/doctor.test.d.ts +2 -0
- package/dist/commands/doctor.test.d.ts.map +1 -0
- package/dist/commands/doctor.test.js +200 -0
- package/dist/commands/doctor.test.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +283 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.test.d.ts +2 -0
- package/dist/commands/init.test.d.ts.map +1 -0
- package/dist/commands/init.test.js +271 -0
- package/dist/commands/init.test.js.map +1 -0
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +201 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +57 -0
- package/dist/constants.js.map +1 -0
- package/dist/e2e/aggressive.e2e.test.d.ts +2 -0
- package/dist/e2e/aggressive.e2e.test.d.ts.map +1 -0
- package/dist/e2e/aggressive.e2e.test.js +350 -0
- package/dist/e2e/aggressive.e2e.test.js.map +1 -0
- package/dist/e2e/commands.e2e.test.d.ts +2 -0
- package/dist/e2e/commands.e2e.test.d.ts.map +1 -0
- package/dist/e2e/commands.e2e.test.js +213 -0
- package/dist/e2e/commands.e2e.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/common.d.ts +17 -0
- package/dist/lib/common.d.ts.map +1 -0
- package/dist/lib/common.js +111 -0
- package/dist/lib/common.js.map +1 -0
- package/dist/lib/common.test.d.ts +2 -0
- package/dist/lib/common.test.d.ts.map +1 -0
- package/dist/lib/common.test.js +316 -0
- package/dist/lib/common.test.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +18 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +61 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/frontmatter.test.d.ts +2 -0
- package/dist/lib/frontmatter.test.d.ts.map +1 -0
- package/dist/lib/frontmatter.test.js +257 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/template.d.ts +24 -0
- package/dist/lib/template.d.ts.map +1 -0
- package/dist/lib/template.js +78 -0
- package/dist/lib/template.js.map +1 -0
- package/dist/lib/template.test.d.ts +2 -0
- package/dist/lib/template.test.d.ts.map +1 -0
- package/dist/lib/template.test.js +201 -0
- package/dist/lib/template.test.js.map +1 -0
- package/dist/types/index.d.ts +48 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/AnalyzeUI.d.ts +7 -0
- package/dist/ui/AnalyzeUI.d.ts.map +1 -0
- package/dist/ui/AnalyzeUI.js +100 -0
- package/dist/ui/AnalyzeUI.js.map +1 -0
- package/dist/ui/App.d.ts +13 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +100 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/CIContext.d.ts +9 -0
- package/dist/ui/CIContext.d.ts.map +1 -0
- package/dist/ui/CIContext.js +9 -0
- package/dist/ui/CIContext.js.map +1 -0
- package/dist/ui/CISelector.d.ts +8 -0
- package/dist/ui/CISelector.d.ts.map +1 -0
- package/dist/ui/CISelector.js +45 -0
- package/dist/ui/CISelector.js.map +1 -0
- package/dist/ui/Doctor.d.ts +3 -0
- package/dist/ui/Doctor.d.ts.map +1 -0
- package/dist/ui/Doctor.js +89 -0
- package/dist/ui/Doctor.js.map +1 -0
- package/dist/ui/Header.d.ts +8 -0
- package/dist/ui/Header.d.ts.map +1 -0
- package/dist/ui/Header.js +30 -0
- package/dist/ui/Header.js.map +1 -0
- package/dist/ui/MemorySelector.d.ts +8 -0
- package/dist/ui/MemorySelector.d.ts.map +1 -0
- package/dist/ui/MemorySelector.js +46 -0
- package/dist/ui/MemorySelector.js.map +1 -0
- package/dist/ui/NameInput.d.ts +8 -0
- package/dist/ui/NameInput.d.ts.map +1 -0
- package/dist/ui/NameInput.js +69 -0
- package/dist/ui/NameInput.js.map +1 -0
- package/dist/ui/OptionSelector.d.ts +12 -0
- package/dist/ui/OptionSelector.d.ts.map +1 -0
- package/dist/ui/OptionSelector.js +69 -0
- package/dist/ui/OptionSelector.js.map +1 -0
- package/dist/ui/Progress.d.ts +11 -0
- package/dist/ui/Progress.d.ts.map +1 -0
- package/dist/ui/Progress.js +58 -0
- package/dist/ui/Progress.js.map +1 -0
- package/dist/ui/StackSelector.d.ts +9 -0
- package/dist/ui/StackSelector.d.ts.map +1 -0
- package/dist/ui/StackSelector.js +65 -0
- package/dist/ui/StackSelector.js.map +1 -0
- package/dist/ui/Summary.d.ts +12 -0
- package/dist/ui/Summary.d.ts.map +1 -0
- package/dist/ui/Summary.js +114 -0
- package/dist/ui/Summary.js.map +1 -0
- package/dist/ui/SyncUI.d.ts +10 -0
- package/dist/ui/SyncUI.d.ts.map +1 -0
- package/dist/ui/SyncUI.js +64 -0
- package/dist/ui/SyncUI.js.map +1 -0
- package/dist/ui/Welcome.d.ts +7 -0
- package/dist/ui/Welcome.d.ts.map +1 -0
- package/dist/ui/Welcome.js +45 -0
- package/dist/ui/Welcome.js.map +1 -0
- package/dist/ui/theme.d.ts +10 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +9 -0
- package/dist/ui/theme.js.map +1 -0
- package/modules/engram/.gitignore-snippet.txt +6 -0
- package/modules/engram/.mcp-config-snippet.json +11 -0
- package/modules/engram/README.md +146 -0
- package/modules/engram/install-engram.sh +216 -0
- package/modules/ghagga/.env.example +43 -0
- package/modules/ghagga/README.md +153 -0
- package/modules/ghagga/docker-compose.yml +80 -0
- package/modules/ghagga/setup-ghagga.sh +139 -0
- package/modules/memory-simple/.project/NOTES.md +22 -0
- package/modules/memory-simple/README.md +23 -0
- package/modules/obsidian-brain/.obsidian/app.json +23 -0
- package/modules/obsidian-brain/.obsidian/appearance.json +5 -0
- package/modules/obsidian-brain/.obsidian/bookmarks.json +34 -0
- package/modules/obsidian-brain/.obsidian/community-plugins.json +1 -0
- package/modules/obsidian-brain/.obsidian/core-plugins-migration.json +21 -0
- package/modules/obsidian-brain/.obsidian/core-plugins.json +18 -0
- package/modules/obsidian-brain/.obsidian/daily-notes.json +5 -0
- package/modules/obsidian-brain/.obsidian/graph.json +37 -0
- package/modules/obsidian-brain/.obsidian/hotkeys.json +14 -0
- package/modules/obsidian-brain/.obsidian/plugins/dataview/data.json +25 -0
- package/modules/obsidian-brain/.obsidian/plugins/obsidian-kanban/data.json +29 -0
- package/modules/obsidian-brain/.obsidian/plugins/templater-obsidian/data.json +18 -0
- package/modules/obsidian-brain/.obsidian/snippets/project-memory.css +71 -0
- package/modules/obsidian-brain/.obsidian-gitignore-snippet.txt +8 -0
- package/modules/obsidian-brain/.project/Attachments/.gitkeep +0 -0
- package/modules/obsidian-brain/.project/Memory/BLOCKERS.md +78 -0
- package/modules/obsidian-brain/.project/Memory/CONTEXT.md +102 -0
- package/modules/obsidian-brain/.project/Memory/DASHBOARD.md +73 -0
- package/modules/obsidian-brain/.project/Memory/DECISIONS.md +87 -0
- package/modules/obsidian-brain/.project/Memory/KANBAN.md +15 -0
- package/modules/obsidian-brain/.project/Memory/README.md +61 -0
- package/modules/obsidian-brain/.project/Memory/WAVES.md +78 -0
- package/modules/obsidian-brain/.project/Sessions/TEMPLATE.md +99 -0
- package/modules/obsidian-brain/.project/Templates/ADR.md +33 -0
- package/modules/obsidian-brain/.project/Templates/Blocker.md +21 -0
- package/modules/obsidian-brain/.project/Templates/Session.md +88 -0
- package/modules/obsidian-brain/README.md +268 -0
- package/modules/obsidian-brain/new-wave.sh +182 -0
- package/package.json +51 -0
- package/schemas/agent.schema.json +34 -0
- package/schemas/ai-config.schema.json +28 -0
- package/schemas/skill.schema.json +44 -0
- package/src/commands/analyze.test.ts +145 -0
- package/src/commands/analyze.ts +69 -0
- package/src/commands/doctor.test.ts +208 -0
- package/src/commands/doctor.ts +163 -0
- package/src/commands/init.test.ts +298 -0
- package/src/commands/init.ts +285 -0
- package/src/constants.ts +69 -0
- package/src/e2e/aggressive.e2e.test.ts +557 -0
- package/src/e2e/commands.e2e.test.ts +298 -0
- package/src/index.tsx +106 -0
- package/src/lib/common.test.ts +318 -0
- package/src/lib/common.ts +127 -0
- package/src/lib/frontmatter.test.ts +291 -0
- package/src/lib/frontmatter.ts +77 -0
- package/src/lib/template.test.ts +226 -0
- package/src/lib/template.ts +99 -0
- package/src/types/index.ts +53 -0
- package/src/ui/AnalyzeUI.tsx +133 -0
- package/src/ui/App.tsx +175 -0
- package/src/ui/CIContext.tsx +25 -0
- package/src/ui/CISelector.tsx +72 -0
- package/src/ui/Doctor.tsx +122 -0
- package/src/ui/Header.tsx +48 -0
- package/src/ui/MemorySelector.tsx +73 -0
- package/src/ui/NameInput.tsx +82 -0
- package/src/ui/OptionSelector.tsx +100 -0
- package/src/ui/Progress.tsx +88 -0
- package/src/ui/StackSelector.tsx +101 -0
- package/src/ui/Summary.tsx +134 -0
- package/src/ui/Welcome.tsx +54 -0
- package/src/ui/theme.ts +10 -0
- package/stryker.config.json +19 -0
- package/tasks/_TEMPLATE/files-edited.md +3 -0
- package/tasks/_TEMPLATE/plan.md +3 -0
- package/tasks/_TEMPLATE/research.md +3 -0
- package/tasks/_TEMPLATE/verification.md +5 -0
- package/templates/common/dependabot/cargo.yml +11 -0
- package/templates/common/dependabot/github-actions.yml +16 -0
- package/templates/common/dependabot/gomod.yml +15 -0
- package/templates/common/dependabot/gradle.yml +15 -0
- package/templates/common/dependabot/header.yml +3 -0
- package/templates/common/dependabot/maven.yml +15 -0
- package/templates/common/dependabot/npm.yml +20 -0
- package/templates/common/dependabot/pip.yml +11 -0
- package/templates/dependabot.yml +162 -0
- package/templates/github/ci-go.yml +41 -0
- package/templates/github/ci-java.yml +45 -0
- package/templates/github/ci-monorepo.yml +150 -0
- package/templates/github/ci-node.yml +42 -0
- package/templates/github/ci-python.yml +42 -0
- package/templates/github/ci-rust.yml +42 -0
- package/templates/github/dependabot-automerge.yml +40 -0
- package/templates/gitlab/gitlab-ci-go.yml +88 -0
- package/templates/gitlab/gitlab-ci-java.yml +79 -0
- package/templates/gitlab/gitlab-ci-monorepo.yml +126 -0
- package/templates/gitlab/gitlab-ci-node.yml +63 -0
- package/templates/gitlab/gitlab-ci-python.yml +147 -0
- package/templates/gitlab/gitlab-ci-rust.yml +67 -0
- package/templates/global/claude-settings.json +98 -0
- package/templates/global/codex-config.toml +8 -0
- package/templates/global/copilot-instructions/base-rules.instructions.md +13 -0
- package/templates/global/copilot-instructions/sdd-orchestrator.instructions.md +37 -0
- package/templates/global/gemini-commands/cleanup.toml +20 -0
- package/templates/global/gemini-commands/commit.toml +15 -0
- package/templates/global/gemini-commands/dead-code.toml +22 -0
- package/templates/global/gemini-commands/plan.toml +30 -0
- package/templates/global/gemini-commands/review.toml +17 -0
- package/templates/global/gemini-commands/sdd-apply.toml +22 -0
- package/templates/global/gemini-commands/sdd-ff.toml +14 -0
- package/templates/global/gemini-commands/sdd-new.toml +21 -0
- package/templates/global/gemini-commands/sdd-verify.toml +21 -0
- package/templates/global/gemini-commands/tdd.toml +26 -0
- package/templates/global/gemini-settings.json +8 -0
- package/templates/global/opencode-config.json +44 -0
- package/templates/global/sdd-instructions.md +47 -0
- package/templates/global/sdd-orchestrator-claude.md +46 -0
- package/templates/global/sdd-orchestrator-copilot.md +34 -0
- package/templates/renovate.json +69 -0
- package/templates/woodpecker/monorepo/backend.yml +34 -0
- package/templates/woodpecker/monorepo/frontend.yml +34 -0
- package/templates/woodpecker/monorepo/summary.yml +25 -0
- package/templates/woodpecker/woodpecker-go.yml +51 -0
- package/templates/woodpecker/woodpecker-java.yml +67 -0
- package/templates/woodpecker/woodpecker-node.yml +47 -0
- package/templates/woodpecker/woodpecker-python.yml +108 -0
- package/templates/woodpecker/woodpecker-rust.yml +57 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +16 -0
- package/workflows/reusable-build-go.yml +111 -0
- package/workflows/reusable-build-java.yml +120 -0
- package/workflows/reusable-build-node.yml +145 -0
- package/workflows/reusable-build-python.yml +159 -0
- package/workflows/reusable-build-rust.yml +135 -0
- package/workflows/reusable-docker.yml +120 -0
- package/workflows/reusable-ghagga-review.yml +165 -0
- package/workflows/reusable-release.yml +91 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: recommendations-concepts
|
|
3
|
+
description: >
|
|
4
|
+
Recommendation engine concepts. Collaborative filtering, content-based, hybrid systems.
|
|
5
|
+
Trigger: recommendations, collaborative filtering, content-based, ML, personalization
|
|
6
|
+
tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Edit
|
|
10
|
+
- Grep
|
|
11
|
+
metadata:
|
|
12
|
+
author: apigen-team
|
|
13
|
+
version: "1.0"
|
|
14
|
+
tags: [recommendations, ml, personalization, algorithms]
|
|
15
|
+
scope: ["**/recommendation/**"]
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Recommendation System Concepts
|
|
19
|
+
|
|
20
|
+
## Types of Recommendation Systems
|
|
21
|
+
|
|
22
|
+
### Collaborative Filtering
|
|
23
|
+
```
|
|
24
|
+
"Users who liked X also liked Y"
|
|
25
|
+
|
|
26
|
+
User-based CF:
|
|
27
|
+
1. Find users similar to target user
|
|
28
|
+
2. Recommend items those users liked
|
|
29
|
+
3. Weight by similarity score
|
|
30
|
+
|
|
31
|
+
Item-based CF:
|
|
32
|
+
1. Find items similar to items user liked
|
|
33
|
+
2. Recommend similar items
|
|
34
|
+
3. More scalable than user-based
|
|
35
|
+
|
|
36
|
+
Matrix Factorization:
|
|
37
|
+
- Decompose user-item matrix
|
|
38
|
+
- Learn latent factors
|
|
39
|
+
- SVD, ALS algorithms
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Content-Based Filtering
|
|
43
|
+
```
|
|
44
|
+
"Items similar to what you've liked"
|
|
45
|
+
|
|
46
|
+
Process:
|
|
47
|
+
1. Extract item features (TF-IDF, embeddings)
|
|
48
|
+
2. Build user profile from liked items
|
|
49
|
+
3. Match new items to user profile
|
|
50
|
+
|
|
51
|
+
Features:
|
|
52
|
+
- Text (descriptions, tags)
|
|
53
|
+
- Categories
|
|
54
|
+
- Attributes (color, size, brand)
|
|
55
|
+
- Embeddings (deep learning)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Hybrid Systems
|
|
59
|
+
```
|
|
60
|
+
Combine multiple approaches:
|
|
61
|
+
|
|
62
|
+
Weighted:
|
|
63
|
+
score = α * CF_score + β * CB_score
|
|
64
|
+
|
|
65
|
+
Switching:
|
|
66
|
+
IF cold_start THEN content_based
|
|
67
|
+
ELSE collaborative
|
|
68
|
+
|
|
69
|
+
Feature Combination:
|
|
70
|
+
Use CF scores as features in ML model
|
|
71
|
+
|
|
72
|
+
Cascade:
|
|
73
|
+
1. Filter with content-based
|
|
74
|
+
2. Rank with collaborative
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Cold Start Problem
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
New User Cold Start:
|
|
81
|
+
- No interaction history
|
|
82
|
+
- Solutions:
|
|
83
|
+
• Ask preferences on signup
|
|
84
|
+
• Use demographic data
|
|
85
|
+
• Popular items fallback
|
|
86
|
+
• Content-based until enough data
|
|
87
|
+
|
|
88
|
+
New Item Cold Start:
|
|
89
|
+
- No user interactions
|
|
90
|
+
- Solutions:
|
|
91
|
+
• Content-based similarity
|
|
92
|
+
• Boost in exploration
|
|
93
|
+
• Editorial placement
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Recommendation Scenarios
|
|
97
|
+
|
|
98
|
+
### E-commerce
|
|
99
|
+
```
|
|
100
|
+
Homepage:
|
|
101
|
+
- Trending products
|
|
102
|
+
- Personalized picks
|
|
103
|
+
- Recently viewed
|
|
104
|
+
|
|
105
|
+
Product Page:
|
|
106
|
+
- "Frequently bought together"
|
|
107
|
+
- "Customers also viewed"
|
|
108
|
+
- "Complete the look"
|
|
109
|
+
|
|
110
|
+
Cart:
|
|
111
|
+
- Cross-sell recommendations
|
|
112
|
+
- Bundle suggestions
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Content Platforms
|
|
116
|
+
```
|
|
117
|
+
Feed:
|
|
118
|
+
- Personalized content stream
|
|
119
|
+
- Explore/discover section
|
|
120
|
+
|
|
121
|
+
After consumption:
|
|
122
|
+
- "Up next"
|
|
123
|
+
- "More like this"
|
|
124
|
+
- Related content
|
|
125
|
+
|
|
126
|
+
Search:
|
|
127
|
+
- Personalized search results
|
|
128
|
+
- "You might also search for"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Social Networks
|
|
132
|
+
```
|
|
133
|
+
People:
|
|
134
|
+
- "People you may know"
|
|
135
|
+
- "Follow suggestions"
|
|
136
|
+
|
|
137
|
+
Content:
|
|
138
|
+
- Personalized feed ranking
|
|
139
|
+
- Trending in your network
|
|
140
|
+
|
|
141
|
+
Groups:
|
|
142
|
+
- "Groups you might like"
|
|
143
|
+
- Activity suggestions
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Evaluation Metrics
|
|
147
|
+
|
|
148
|
+
### Offline Metrics
|
|
149
|
+
```
|
|
150
|
+
Accuracy:
|
|
151
|
+
- Precision@K: % of recommended items that are relevant
|
|
152
|
+
- Recall@K: % of relevant items that are recommended
|
|
153
|
+
- NDCG: Normalized discounted cumulative gain
|
|
154
|
+
|
|
155
|
+
Error:
|
|
156
|
+
- RMSE: Root mean square error (ratings)
|
|
157
|
+
- MAE: Mean absolute error
|
|
158
|
+
|
|
159
|
+
Ranking:
|
|
160
|
+
- MRR: Mean reciprocal rank
|
|
161
|
+
- AUC: Area under ROC curve
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Online Metrics
|
|
165
|
+
```
|
|
166
|
+
Engagement:
|
|
167
|
+
- Click-through rate (CTR)
|
|
168
|
+
- Conversion rate
|
|
169
|
+
- Time spent
|
|
170
|
+
|
|
171
|
+
Business:
|
|
172
|
+
- Revenue per user
|
|
173
|
+
- Items per order
|
|
174
|
+
- Return rate
|
|
175
|
+
|
|
176
|
+
Long-term:
|
|
177
|
+
- User retention
|
|
178
|
+
- Diversity of consumption
|
|
179
|
+
- Filter bubble effects
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## A/B Testing Recommendations
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
Test design:
|
|
186
|
+
- Control: Existing algorithm
|
|
187
|
+
- Treatment: New algorithm
|
|
188
|
+
- Split: Random user assignment
|
|
189
|
+
|
|
190
|
+
Metrics to track:
|
|
191
|
+
- Primary: CTR or conversion
|
|
192
|
+
- Secondary: Revenue, engagement
|
|
193
|
+
- Guardrails: Page load time
|
|
194
|
+
|
|
195
|
+
Statistical considerations:
|
|
196
|
+
- Sample size for power
|
|
197
|
+
- Duration for effects
|
|
198
|
+
- Novelty effects
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Architecture Patterns
|
|
202
|
+
|
|
203
|
+
### Real-time vs Batch
|
|
204
|
+
```
|
|
205
|
+
Batch (pre-computed):
|
|
206
|
+
- Generate recommendations offline
|
|
207
|
+
- Store in cache/database
|
|
208
|
+
- Fast serving
|
|
209
|
+
- Updated periodically
|
|
210
|
+
|
|
211
|
+
Real-time:
|
|
212
|
+
- Compute on request
|
|
213
|
+
- Uses latest interactions
|
|
214
|
+
- More resource intensive
|
|
215
|
+
- Better personalization
|
|
216
|
+
|
|
217
|
+
Hybrid:
|
|
218
|
+
- Batch for base recommendations
|
|
219
|
+
- Real-time for re-ranking
|
|
220
|
+
- Periodic refresh
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Feature Store
|
|
224
|
+
```
|
|
225
|
+
Store and serve ML features:
|
|
226
|
+
- User features (preferences, history)
|
|
227
|
+
- Item features (attributes, embeddings)
|
|
228
|
+
- Context features (time, location)
|
|
229
|
+
|
|
230
|
+
Benefits:
|
|
231
|
+
- Consistency between training/serving
|
|
232
|
+
- Feature reuse across models
|
|
233
|
+
- Point-in-time correctness
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Data Requirements
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
Implicit feedback:
|
|
240
|
+
- Views, clicks, purchases
|
|
241
|
+
- Time spent
|
|
242
|
+
- Saves/bookmarks
|
|
243
|
+
|
|
244
|
+
Explicit feedback:
|
|
245
|
+
- Ratings
|
|
246
|
+
- Reviews
|
|
247
|
+
- Likes/dislikes
|
|
248
|
+
|
|
249
|
+
Context:
|
|
250
|
+
- Timestamp
|
|
251
|
+
- Device
|
|
252
|
+
- Location
|
|
253
|
+
- Session data
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Related Skills
|
|
257
|
+
|
|
258
|
+
- `recommendations-spring`: Spring Boot recommendation implementation
|
|
259
|
+
- `analytics-concepts`: Analytics for tracking interactions
|
|
260
|
+
|
|
261
|
+
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: search-concepts
|
|
3
|
+
description: >
|
|
4
|
+
Search engine concepts. Full-text search, indexing, relevance, facets, autocomplete.
|
|
5
|
+
Trigger: search, Elasticsearch, Meilisearch, Algolia, full-text, indexing
|
|
6
|
+
tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Edit
|
|
10
|
+
- Grep
|
|
11
|
+
metadata:
|
|
12
|
+
author: apigen-team
|
|
13
|
+
version: "1.0"
|
|
14
|
+
tags: [search, elasticsearch, full-text, indexing]
|
|
15
|
+
scope: ["**/search/**"]
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Search Engine Concepts
|
|
19
|
+
|
|
20
|
+
## Core Concepts
|
|
21
|
+
|
|
22
|
+
### Indexing
|
|
23
|
+
```
|
|
24
|
+
Document: Unit of data (product, article, user)
|
|
25
|
+
Field: Attribute within document (title, description)
|
|
26
|
+
Index: Collection of documents with same structure
|
|
27
|
+
Mapping: Schema defining field types and analyzers
|
|
28
|
+
|
|
29
|
+
Process:
|
|
30
|
+
1. Extract text content
|
|
31
|
+
2. Tokenize (split into terms)
|
|
32
|
+
3. Normalize (lowercase, stemming)
|
|
33
|
+
4. Build inverted index
|
|
34
|
+
5. Store for retrieval
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Inverted Index
|
|
38
|
+
```
|
|
39
|
+
Forward index:
|
|
40
|
+
Doc1 → ["quick", "brown", "fox"]
|
|
41
|
+
Doc2 → ["lazy", "brown", "dog"]
|
|
42
|
+
|
|
43
|
+
Inverted index:
|
|
44
|
+
"brown" → [Doc1, Doc2]
|
|
45
|
+
"quick" → [Doc1]
|
|
46
|
+
"fox" → [Doc1]
|
|
47
|
+
"lazy" → [Doc2]
|
|
48
|
+
"dog" → [Doc2]
|
|
49
|
+
|
|
50
|
+
Enables O(1) term lookup
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Text Analysis
|
|
54
|
+
```
|
|
55
|
+
Analyzer pipeline:
|
|
56
|
+
Input → Character Filter → Tokenizer → Token Filter → Tokens
|
|
57
|
+
|
|
58
|
+
Character filters:
|
|
59
|
+
- Strip HTML tags
|
|
60
|
+
- Replace patterns
|
|
61
|
+
|
|
62
|
+
Tokenizers:
|
|
63
|
+
- Standard (split on whitespace/punctuation)
|
|
64
|
+
- Whitespace (split on whitespace only)
|
|
65
|
+
- N-gram (sliding window)
|
|
66
|
+
|
|
67
|
+
Token filters:
|
|
68
|
+
- Lowercase
|
|
69
|
+
- Stemming (running → run)
|
|
70
|
+
- Synonyms (couch → sofa)
|
|
71
|
+
- Stop words removal
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Search Types
|
|
75
|
+
|
|
76
|
+
### Full-Text Search
|
|
77
|
+
```
|
|
78
|
+
Query: "quick brown fox"
|
|
79
|
+
|
|
80
|
+
Match:
|
|
81
|
+
- Documents containing any term
|
|
82
|
+
- Scored by relevance
|
|
83
|
+
|
|
84
|
+
Phrase match:
|
|
85
|
+
- Documents with exact phrase
|
|
86
|
+
- Term order matters
|
|
87
|
+
|
|
88
|
+
Multi-match:
|
|
89
|
+
- Search across multiple fields
|
|
90
|
+
- Weighted by field importance
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Fuzzy Search
|
|
94
|
+
```
|
|
95
|
+
Query: "qiuck" (typo)
|
|
96
|
+
Match: "quick" (edit distance 1)
|
|
97
|
+
|
|
98
|
+
Edit distance:
|
|
99
|
+
- Insert: quic → quick
|
|
100
|
+
- Delete: quiick → quick
|
|
101
|
+
- Replace: quack → quick
|
|
102
|
+
- Transpose: qiuck → quick
|
|
103
|
+
|
|
104
|
+
Useful for typo tolerance
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Semantic Search
|
|
108
|
+
```
|
|
109
|
+
Traditional: Keyword matching
|
|
110
|
+
Semantic: Meaning understanding
|
|
111
|
+
|
|
112
|
+
Uses embeddings (vectors):
|
|
113
|
+
1. Convert query to embedding
|
|
114
|
+
2. Find similar document embeddings
|
|
115
|
+
3. Return nearest neighbors
|
|
116
|
+
|
|
117
|
+
Requires ML model (BERT, etc.)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Relevance Scoring
|
|
121
|
+
|
|
122
|
+
### TF-IDF
|
|
123
|
+
```
|
|
124
|
+
TF (Term Frequency):
|
|
125
|
+
How often term appears in document
|
|
126
|
+
tf(t,d) = count(t in d) / count(all terms in d)
|
|
127
|
+
|
|
128
|
+
IDF (Inverse Document Frequency):
|
|
129
|
+
How rare term is across all documents
|
|
130
|
+
idf(t) = log(N / df(t))
|
|
131
|
+
N = total documents
|
|
132
|
+
df(t) = documents containing term
|
|
133
|
+
|
|
134
|
+
Score = TF × IDF
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### BM25
|
|
138
|
+
```
|
|
139
|
+
Improved TF-IDF:
|
|
140
|
+
- Saturation: diminishing returns for high TF
|
|
141
|
+
- Document length normalization
|
|
142
|
+
|
|
143
|
+
BM25(t,d) = IDF(t) × (TF(t,d) × (k1 + 1)) /
|
|
144
|
+
(TF(t,d) + k1 × (1 - b + b × |d|/avgdl))
|
|
145
|
+
|
|
146
|
+
k1, b: tuning parameters
|
|
147
|
+
|d|: document length
|
|
148
|
+
avgdl: average document length
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Boosting
|
|
152
|
+
```
|
|
153
|
+
Field boosting:
|
|
154
|
+
title^3 description^1
|
|
155
|
+
(title matches worth 3x)
|
|
156
|
+
|
|
157
|
+
Query boosting:
|
|
158
|
+
"laptop"^2 OR "computer"
|
|
159
|
+
(laptop matches worth 2x)
|
|
160
|
+
|
|
161
|
+
Function scoring:
|
|
162
|
+
base_score * popularity_boost * recency_boost
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Search Features
|
|
166
|
+
|
|
167
|
+
### Faceted Search
|
|
168
|
+
```
|
|
169
|
+
Facets = aggregations for filtering
|
|
170
|
+
|
|
171
|
+
Example (e-commerce):
|
|
172
|
+
Category: Electronics (150), Clothing (89)
|
|
173
|
+
Price: $0-50 (45), $50-100 (78), $100+ (116)
|
|
174
|
+
Brand: Apple (34), Samsung (28), Sony (21)
|
|
175
|
+
Rating: 4+ stars (89), 3+ stars (156)
|
|
176
|
+
|
|
177
|
+
User clicks "Electronics" → refines results
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Autocomplete
|
|
181
|
+
```
|
|
182
|
+
Types:
|
|
183
|
+
- Prefix matching: "app" → "apple", "application"
|
|
184
|
+
- Fuzzy prefix: "apl" → "apple"
|
|
185
|
+
- Query suggestions: based on popular searches
|
|
186
|
+
- Completion: "new york" → "new york city"
|
|
187
|
+
|
|
188
|
+
Implementation:
|
|
189
|
+
- Edge n-grams at index time
|
|
190
|
+
- Completion suggester
|
|
191
|
+
- Separate autocomplete index
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Highlighting
|
|
195
|
+
```
|
|
196
|
+
Query: "quick brown fox"
|
|
197
|
+
|
|
198
|
+
Result with highlighting:
|
|
199
|
+
"The <em>quick</em> <em>brown</em> <em>fox</em> jumps..."
|
|
200
|
+
|
|
201
|
+
Options:
|
|
202
|
+
- Fragment size
|
|
203
|
+
- Number of fragments
|
|
204
|
+
- Pre/post tags
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Pagination
|
|
208
|
+
```
|
|
209
|
+
Offset-based:
|
|
210
|
+
from=0, size=10 (page 1)
|
|
211
|
+
from=10, size=10 (page 2)
|
|
212
|
+
Problem: deep pagination expensive
|
|
213
|
+
|
|
214
|
+
Search-after (cursor):
|
|
215
|
+
Use sort values from last result
|
|
216
|
+
Better for deep pagination
|
|
217
|
+
|
|
218
|
+
Scroll:
|
|
219
|
+
For large exports
|
|
220
|
+
Not for real-time search
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Search Provider Comparison
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
| Feature | Elasticsearch | Meilisearch | Algolia | Typesense |
|
|
227
|
+
|---------|--------------|-------------|---------|-----------|
|
|
228
|
+
| Hosting | Self/Cloud | Self/Cloud | SaaS | Self/Cloud |
|
|
229
|
+
| Speed | Fast | Very fast | Very fast | Very fast |
|
|
230
|
+
| Typo tolerance | Config | Built-in | Built-in | Built-in |
|
|
231
|
+
| Facets | Yes | Yes | Yes | Yes |
|
|
232
|
+
| Vectors | Yes (8.x) | Yes | No | Yes |
|
|
233
|
+
| Pricing | Open source | Open source | Per search | Open source |
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Best Practices
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
Indexing:
|
|
240
|
+
✅ Define explicit mappings
|
|
241
|
+
✅ Use appropriate analyzers per field
|
|
242
|
+
✅ Denormalize for search performance
|
|
243
|
+
✅ Index only searchable fields
|
|
244
|
+
|
|
245
|
+
Querying:
|
|
246
|
+
✅ Use filters for exact matches (cached)
|
|
247
|
+
✅ Limit returned fields
|
|
248
|
+
✅ Implement pagination properly
|
|
249
|
+
✅ Track search analytics
|
|
250
|
+
|
|
251
|
+
Operations:
|
|
252
|
+
✅ Monitor index size
|
|
253
|
+
✅ Plan for reindexing
|
|
254
|
+
✅ Set up aliases for zero-downtime
|
|
255
|
+
✅ Test relevance with query sets
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Related Skills
|
|
259
|
+
|
|
260
|
+
- `search-spring`: Spring Boot search implementation
|
|
261
|
+
- `apigen-architecture`: Overall system architecture
|
|
262
|
+
|
|
263
|
+
|