@leanspec/ui 0.2.6-dev.20251125010539 → 0.2.6
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/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/leanspec.db +0 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
- package/.next/standalone/packages/ui/leanspec.db +0 -0
- package/.next/standalone/packages/ui/package.json +1 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/T_KGFP0pHt_xSaaYUJa3L/_buildManifest.js +11 -0
- package/.next/static/T_KGFP0pHt_xSaaYUJa3L/_clientMiddlewareManifest.json +1 -0
- package/.next/static/T_KGFP0pHt_xSaaYUJa3L/_ssgManifest.js +1 -0
- package/package.json +2 -2
- /package/.next/standalone/packages/ui/.next/static/{WJi9opx4ShY8zt8yBFo4r → T_KGFP0pHt_xSaaYUJa3L}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{WJi9opx4ShY8zt8yBFo4r → T_KGFP0pHt_xSaaYUJa3L}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{WJi9opx4ShY8zt8yBFo4r → T_KGFP0pHt_xSaaYUJa3L}/_ssgManifest.js +0 -0
- /package/.next/{static/WJi9opx4ShY8zt8yBFo4r → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/WJi9opx4ShY8zt8yBFo4r → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/WJi9opx4ShY8zt8yBFo4r → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: planned
|
|
3
|
+
created: '2025-11-13'
|
|
4
|
+
tags:
|
|
5
|
+
- cli
|
|
6
|
+
- dx
|
|
7
|
+
priority: medium
|
|
8
|
+
created_at: '2025-11-13T08:40:40.882Z'
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Pass Content Directly to lean-spec create
|
|
12
|
+
|
|
13
|
+
> **Status**: 📅 Planned · **Priority**: Medium · **Created**: 2025-11-13
|
|
14
|
+
|
|
15
|
+
**Project**: lean-spec
|
|
16
|
+
**Team**: Core Development
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
|
|
20
|
+
Enable passing spec content directly during creation instead of requiring post-creation editing. Supports AI agents and automation workflows that generate complete specs.
|
|
21
|
+
|
|
22
|
+
## Design
|
|
23
|
+
|
|
24
|
+
### Current State
|
|
25
|
+
|
|
26
|
+
`lean-spec create` currently supports:
|
|
27
|
+
- `--description <text>` - Populates Overview section only
|
|
28
|
+
- Post-creation editing required for full content
|
|
29
|
+
|
|
30
|
+
### Problem
|
|
31
|
+
|
|
32
|
+
**AI agents and automation scripts** often generate complete spec content but must:
|
|
33
|
+
1. Create the spec with minimal metadata
|
|
34
|
+
2. Write full content in a separate step
|
|
35
|
+
3. Handle file paths and parsing
|
|
36
|
+
|
|
37
|
+
This is inefficient for programmatic spec creation.
|
|
38
|
+
|
|
39
|
+
### Proposed Solution: Hybrid Approach
|
|
40
|
+
|
|
41
|
+
**Option 1: Keep `--description`** (existing)
|
|
42
|
+
- Quick Overview text for CLI users
|
|
43
|
+
- Current behavior: replaces `<!-- What are we solving? Why now? -->` placeholder
|
|
44
|
+
|
|
45
|
+
**Option 2: Add `--content <text>`**
|
|
46
|
+
- Pass full markdown body content
|
|
47
|
+
- Replaces template body (after frontmatter)
|
|
48
|
+
- Good for AI agents generating entire specs
|
|
49
|
+
|
|
50
|
+
**Option 3: Add `--file <path>`**
|
|
51
|
+
- Read content from file
|
|
52
|
+
- Shorthand for: `--content "$(cat spec.md)"`
|
|
53
|
+
- Better DX than shell escaping
|
|
54
|
+
|
|
55
|
+
**Option 4: Support stdin**
|
|
56
|
+
- Detect piped input: `echo "..." | lean-spec create my-spec`
|
|
57
|
+
- Unix-philosophy friendly
|
|
58
|
+
- Works with script output
|
|
59
|
+
|
|
60
|
+
### Design Questions
|
|
61
|
+
|
|
62
|
+
1. **Precedence**: What if multiple content sources specified?
|
|
63
|
+
- Suggestion: `--file` > `--content` > stdin > `--description` > template
|
|
64
|
+
|
|
65
|
+
2. **Merge or Replace**: Does `--content` replace entire body or append sections?
|
|
66
|
+
- Suggestion: Replace entire body (full control for generators)
|
|
67
|
+
- `--description` remains section-specific (backward compat)
|
|
68
|
+
|
|
69
|
+
3. **Frontmatter Handling**: How do `--priority`, `--tags` interact with content frontmatter?
|
|
70
|
+
- Suggestion: CLI options override content frontmatter
|
|
71
|
+
- Ensures command-line control
|
|
72
|
+
|
|
73
|
+
### Alternative Considered
|
|
74
|
+
|
|
75
|
+
**Section-specific options** (`--overview`, `--design`, `--implementation`):
|
|
76
|
+
- ❌ Too many options to maintain
|
|
77
|
+
- ❌ Still awkward for multi-line content
|
|
78
|
+
- ❌ Complex CLI interface
|
|
79
|
+
|
|
80
|
+
## Plan
|
|
81
|
+
|
|
82
|
+
- [ ] Decide on design approach (hybrid vs single method)
|
|
83
|
+
- [ ] Determine precedence rules for multiple content sources
|
|
84
|
+
- [ ] Implement `--content <text>` option
|
|
85
|
+
- [ ] Implement `--file <path>` option
|
|
86
|
+
- [ ] Implement stdin detection and handling
|
|
87
|
+
- [ ] Update tests for all content input methods
|
|
88
|
+
- [ ] Update CLI documentation
|
|
89
|
+
- [ ] Add examples for AI agent workflows
|
|
90
|
+
|
|
91
|
+
## Test
|
|
92
|
+
|
|
93
|
+
**Content Input Methods:**
|
|
94
|
+
- [ ] `--description` populates Overview only (existing behavior)
|
|
95
|
+
- [ ] `--content` replaces template body with provided markdown
|
|
96
|
+
- [ ] `--file` reads and uses file content
|
|
97
|
+
- [ ] stdin input works when content is piped
|
|
98
|
+
- [ ] Precedence rules work correctly when multiple sources provided
|
|
99
|
+
|
|
100
|
+
**Frontmatter Interaction:**
|
|
101
|
+
- [ ] CLI options (`--priority`, `--tags`) override content frontmatter
|
|
102
|
+
- [ ] Template variables resolve correctly with provided content
|
|
103
|
+
- [ ] Timestamps auto-generated regardless of content source
|
|
104
|
+
|
|
105
|
+
**Edge Cases:**
|
|
106
|
+
- [ ] Empty content handled gracefully
|
|
107
|
+
- [ ] Invalid markdown doesn't break creation
|
|
108
|
+
- [ ] Large content (>10KB) works without issues
|
|
109
|
+
- [ ] Binary file rejected with clear error message
|
|
110
|
+
|
|
111
|
+
## Notes
|
|
112
|
+
|
|
113
|
+
### Use Cases
|
|
114
|
+
|
|
115
|
+
**AI Agent Workflow:**
|
|
116
|
+
```bash
|
|
117
|
+
# Generate spec content programmatically
|
|
118
|
+
lean-spec create my-feature --content "$generated_markdown" --priority high
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**File-based Workflow:**
|
|
122
|
+
```bash
|
|
123
|
+
# Import from existing markdown
|
|
124
|
+
lean-spec create imported-spec --file ./docs/design.md --tags migration
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Pipeline Workflow:**
|
|
128
|
+
```bash
|
|
129
|
+
# Process and pipe content
|
|
130
|
+
cat template.md | envsubst | lean-spec create processed-spec
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Related
|
|
134
|
+
|
|
135
|
+
- Current implementation: `packages/cli/src/commands/create.ts`
|
|
136
|
+
- Similar feature in other tools: ADR tools often support `--from-file`
|
package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md
ADDED
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: '2025-11-13'
|
|
4
|
+
tags:
|
|
5
|
+
- search
|
|
6
|
+
- mcp
|
|
7
|
+
- cli
|
|
8
|
+
- core
|
|
9
|
+
- ranking
|
|
10
|
+
- v0.3.0
|
|
11
|
+
priority: critical
|
|
12
|
+
created_at: '2025-11-13T09:01:46.579Z'
|
|
13
|
+
updated_at: '2025-11-13T09:32:09.405Z'
|
|
14
|
+
related:
|
|
15
|
+
- 065-v03-planning
|
|
16
|
+
- 059-programmatic-spec-management
|
|
17
|
+
completed_at: '2025-11-13T09:32:09.405Z'
|
|
18
|
+
completed: '2025-11-13'
|
|
19
|
+
transitions:
|
|
20
|
+
- status: complete
|
|
21
|
+
at: '2025-11-13T09:32:09.405Z'
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Intelligent Search Engine
|
|
25
|
+
|
|
26
|
+
> **Status**: ✅ Complete · **Priority**: Critical · **Created**: 2025-11-13 · **Tags**: search, mcp, cli, core, ranking, v0.3.0
|
|
27
|
+
|
|
28
|
+
**Project**: lean-spec
|
|
29
|
+
**Team**: Core Development
|
|
30
|
+
|
|
31
|
+
## Overview
|
|
32
|
+
|
|
33
|
+
**Problem**: Current search is primitive - simple case-insensitive substring matching with no ranking, relevance scoring, or intelligent query interpretation. Both CLI and MCP use identical basic logic that returns poor results when multiple specs match.
|
|
34
|
+
|
|
35
|
+
**Why Now**: Search is foundational for AI agents and human users to discover relevant specs. As projects grow (60+ specs in our own repo), poor search becomes a bottleneck. AI agents need intelligent search to provide better context. **Included in v0.3 release** - critical for AI agent performance optimization theme.
|
|
36
|
+
|
|
37
|
+
**Current Limitations**:
|
|
38
|
+
- No relevance ranking (first match = best match)
|
|
39
|
+
- No fuzzy matching (typos fail completely)
|
|
40
|
+
- No phrase/proximity search
|
|
41
|
+
- No field-weighted scoring (title matches = body matches)
|
|
42
|
+
- No multi-word query intelligence (AND/OR logic)
|
|
43
|
+
- Limited context (shows 3 matches max, often mid-paragraph)
|
|
44
|
+
- No search result metadata (match count, relevance score)
|
|
45
|
+
- Duplicate code between CLI and MCP implementations
|
|
46
|
+
|
|
47
|
+
**Impact**: Users miss relevant specs, AI agents get poor context, search feels broken compared to modern expectations (GitHub, VSCode, etc.).
|
|
48
|
+
|
|
49
|
+
## Design
|
|
50
|
+
|
|
51
|
+
### Core Principles
|
|
52
|
+
|
|
53
|
+
1. **Relevance Over Speed**: Better results matter more than millisecond latency
|
|
54
|
+
2. **Context Economy**: Show enough context to decide without reading full spec
|
|
55
|
+
3. **Progressive Enhancement**: Start with better ranking, add features incrementally
|
|
56
|
+
4. **Shared Implementation**: One search engine for CLI, MCP, and future web UI
|
|
57
|
+
|
|
58
|
+
### Search Engine Architecture
|
|
59
|
+
|
|
60
|
+
**Phase 1: Core Search Engine (packages/core/src/search/)**
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
// Core search result with scoring
|
|
64
|
+
export interface SearchResult {
|
|
65
|
+
spec: SpecInfo;
|
|
66
|
+
score: number; // 0-100 relevance score
|
|
67
|
+
matches: SearchMatch[]; // Detailed match information
|
|
68
|
+
totalMatches: number; // Total matches found
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface SearchMatch {
|
|
72
|
+
field: 'title' | 'description' | 'content' | 'tags' | 'name';
|
|
73
|
+
text: string; // Matched text with context
|
|
74
|
+
lineNumber?: number; // For content matches
|
|
75
|
+
score: number; // Match-level score
|
|
76
|
+
highlights: [number, number][]; // Character ranges to highlight
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface SearchOptions {
|
|
80
|
+
query: string;
|
|
81
|
+
filters?: SpecFilterOptions;
|
|
82
|
+
maxResults?: number; // Default: 50
|
|
83
|
+
minScore?: number; // Default: 10 (0-100 scale)
|
|
84
|
+
includeArchived?: boolean;
|
|
85
|
+
// Future: fuzzyThreshold, fieldWeights, etc.
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Scoring Algorithm (Research-Backed)**:
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// Field weights based on importance
|
|
93
|
+
const FIELD_WEIGHTS = {
|
|
94
|
+
title: 10.0, // Title match = highest relevance
|
|
95
|
+
name: 8.0, // Spec name match
|
|
96
|
+
tags: 7.0, // Tag match
|
|
97
|
+
description: 5.0, // Description match
|
|
98
|
+
content: 1.0, // Body content match (baseline)
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// Scoring factors (multiplicative)
|
|
102
|
+
function calculateScore(match: RawMatch): number {
|
|
103
|
+
let score = FIELD_WEIGHTS[match.field];
|
|
104
|
+
|
|
105
|
+
// Exact word boundary match bonus (2x)
|
|
106
|
+
if (isExactWordMatch(match)) score *= 2.0;
|
|
107
|
+
|
|
108
|
+
// Early position bonus (matches near start = more relevant)
|
|
109
|
+
if (match.position < 100) score *= 1.5;
|
|
110
|
+
|
|
111
|
+
// Frequency penalty (many matches = less specific)
|
|
112
|
+
score *= Math.min(1.0, 3.0 / match.occurrences);
|
|
113
|
+
|
|
114
|
+
// Normalize to 0-100 scale
|
|
115
|
+
return Math.min(100, score * 10);
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Query Processing**:
|
|
120
|
+
- Split on whitespace → implicit AND logic
|
|
121
|
+
- Quote detection → phrase search (future)
|
|
122
|
+
- Operator support → AND/OR/NOT (future)
|
|
123
|
+
- Case-insensitive by default
|
|
124
|
+
|
|
125
|
+
**Match Context**:
|
|
126
|
+
- Show 80 chars before/after match (not 1 line)
|
|
127
|
+
- Smart boundary detection (sentence/paragraph)
|
|
128
|
+
- Deduplicate nearby matches
|
|
129
|
+
- Limit to 5 best matches per spec (not first 3)
|
|
130
|
+
|
|
131
|
+
### Future Enhancements
|
|
132
|
+
|
|
133
|
+
- **Fuzzy Matching**: Levenshtein distance for typos
|
|
134
|
+
- **Phrase Search**: "authentication flow" as single unit
|
|
135
|
+
- **Boolean Operators**: `api AND (auth OR jwt)`
|
|
136
|
+
- **Field-Specific Search**: `title:api`, `tag:security`
|
|
137
|
+
- **Stemming**: "implement" matches "implementation"
|
|
138
|
+
- **Synonym Expansion**: "auth" → "authentication"
|
|
139
|
+
|
|
140
|
+
### Implementation Structure
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
packages/core/src/search/
|
|
144
|
+
index.ts # Public API
|
|
145
|
+
engine.ts # Core search engine
|
|
146
|
+
scoring.ts # Relevance scoring algorithms
|
|
147
|
+
context.ts # Match context extraction
|
|
148
|
+
query-parser.ts # Query string parsing (future)
|
|
149
|
+
types.ts # TypeScript interfaces
|
|
150
|
+
|
|
151
|
+
packages/cli/src/commands/
|
|
152
|
+
search.ts # CLI command (thin wrapper)
|
|
153
|
+
|
|
154
|
+
packages/cli/src/
|
|
155
|
+
mcp-server.ts # MCP tool (thin wrapper)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### CLI Output Redesign
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
$ lean-spec search "authentication flow"
|
|
162
|
+
|
|
163
|
+
🔍 Found 4 specs (searched 68 specs in 45ms)
|
|
164
|
+
|
|
165
|
+
1. 042-oauth2-implementation (95% match) [in-progress]
|
|
166
|
+
🟡 high · [api, security, auth]
|
|
167
|
+
|
|
168
|
+
Title: "OAuth2 Authentication Flow"
|
|
169
|
+
|
|
170
|
+
Content (3 matches):
|
|
171
|
+
"...implement the complete authentication flow including token refresh..."
|
|
172
|
+
"...OAuth2 flow supports authorization code grant with PKCE..."
|
|
173
|
+
|
|
174
|
+
More: +1 match in description
|
|
175
|
+
|
|
176
|
+
2. 038-jwt-token-service (78% match) [complete]
|
|
177
|
+
🟢 medium · [api, auth]
|
|
178
|
+
|
|
179
|
+
Tags: auth
|
|
180
|
+
|
|
181
|
+
Content (2 matches):
|
|
182
|
+
"...JWT authentication flow with RS256 signing..."
|
|
183
|
+
|
|
184
|
+
3. 051-user-session-management (62% match) [planned]
|
|
185
|
+
...
|
|
186
|
+
|
|
187
|
+
View full spec: lean-spec view 042
|
|
188
|
+
Search in spec: lean-spec view 042 | grep -i "authentication"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### MCP Response Format
|
|
192
|
+
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"results": [
|
|
196
|
+
{
|
|
197
|
+
"spec": {
|
|
198
|
+
"name": "042-oauth2-implementation",
|
|
199
|
+
"path": "042-oauth2-implementation",
|
|
200
|
+
"status": "in-progress",
|
|
201
|
+
"priority": "high",
|
|
202
|
+
"tags": ["api", "security", "auth"]
|
|
203
|
+
},
|
|
204
|
+
"score": 95,
|
|
205
|
+
"totalMatches": 4,
|
|
206
|
+
"matches": [
|
|
207
|
+
{
|
|
208
|
+
"field": "title",
|
|
209
|
+
"text": "OAuth2 Authentication Flow",
|
|
210
|
+
"score": 100,
|
|
211
|
+
"highlights": [[7, 21]]
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"field": "content",
|
|
215
|
+
"text": "implement the complete authentication flow including...",
|
|
216
|
+
"lineNumber": 42,
|
|
217
|
+
"score": 85,
|
|
218
|
+
"highlights": [[23, 37], [38, 42]]
|
|
219
|
+
}
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"metadata": {
|
|
224
|
+
"totalResults": 4,
|
|
225
|
+
"searchTime": 45,
|
|
226
|
+
"query": "authentication flow",
|
|
227
|
+
"filters": {}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Plan
|
|
233
|
+
|
|
234
|
+
### Phase 1: Core Search Engine (MVP) - Target: 2-4 hours
|
|
235
|
+
|
|
236
|
+
- [ ] **Create search engine module** (`packages/core/src/search/`)
|
|
237
|
+
- [ ] Define TypeScript interfaces (SearchResult, SearchMatch, SearchOptions)
|
|
238
|
+
- [ ] Implement core search engine with scoring
|
|
239
|
+
- [ ] Write comprehensive unit tests (>90% coverage)
|
|
240
|
+
|
|
241
|
+
- [ ] **Implement scoring algorithm**
|
|
242
|
+
- [ ] Field-weighted scoring (title > name > tags > description > content)
|
|
243
|
+
- [ ] Exact word boundary detection
|
|
244
|
+
- [ ] Position-based relevance
|
|
245
|
+
- [ ] Frequency normalization
|
|
246
|
+
|
|
247
|
+
- [ ] **Build context extraction**
|
|
248
|
+
- [ ] Smart context boundaries (80 chars, sentence-aware)
|
|
249
|
+
- [ ] Highlight calculation (character ranges)
|
|
250
|
+
- [ ] Deduplication of nearby matches
|
|
251
|
+
- [ ] Limit to 5 best matches per spec
|
|
252
|
+
|
|
253
|
+
- [ ] **Refactor CLI command**
|
|
254
|
+
- [ ] Use new search engine
|
|
255
|
+
- [ ] Improved output format with scores
|
|
256
|
+
- [ ] Show search metadata (time, total results)
|
|
257
|
+
- [ ] Better error messages
|
|
258
|
+
|
|
259
|
+
- [ ] **Refactor MCP tool**
|
|
260
|
+
- [ ] Use new search engine
|
|
261
|
+
- [ ] Return structured results with scoring
|
|
262
|
+
- [ ] Include search metadata
|
|
263
|
+
- [ ] Consistent error handling
|
|
264
|
+
|
|
265
|
+
- [ ] **Documentation**
|
|
266
|
+
- [ ] Update CLI reference with examples
|
|
267
|
+
- [ ] Update MCP documentation
|
|
268
|
+
- [ ] Add search algorithm documentation
|
|
269
|
+
- [ ] Update finding-specs guide
|
|
270
|
+
|
|
271
|
+
### Phase 2: Enhanced Features - Target: 2-3 hours
|
|
272
|
+
|
|
273
|
+
- [ ] Fuzzy matching for typo tolerance (Levenshtein distance ≤2)
|
|
274
|
+
- [ ] Phrase search with quotes ("exact phrase")
|
|
275
|
+
- [ ] Boolean operators (AND, OR, NOT)
|
|
276
|
+
- [ ] Field-specific search syntax (title:, tag:, content:)
|
|
277
|
+
- [ ] Query suggestions/autocomplete (defer to post-v0.3)
|
|
278
|
+
- [ ] Search history and analytics (defer to post-v0.3)
|
|
279
|
+
|
|
280
|
+
### Phase 3: Performance Optimization (If Needed)
|
|
281
|
+
|
|
282
|
+
- [ ] Search index caching
|
|
283
|
+
- [ ] Incremental index updates
|
|
284
|
+
- [ ] Parallel spec processing
|
|
285
|
+
- [ ] Benchmark and profile
|
|
286
|
+
|
|
287
|
+
## Test
|
|
288
|
+
|
|
289
|
+
### Unit Tests (Core Engine)
|
|
290
|
+
|
|
291
|
+
- [ ] **Scoring algorithm**
|
|
292
|
+
- Title matches score highest (100 points)
|
|
293
|
+
- Tag matches score higher than content (70 vs 10)
|
|
294
|
+
- Exact word match gets 2x bonus
|
|
295
|
+
- Position bonus for early matches
|
|
296
|
+
- Frequency penalty for common terms
|
|
297
|
+
|
|
298
|
+
- [ ] **Query processing**
|
|
299
|
+
- Multi-word queries use AND logic
|
|
300
|
+
- Case-insensitive matching
|
|
301
|
+
- Special characters handled correctly
|
|
302
|
+
- Empty query returns error
|
|
303
|
+
|
|
304
|
+
- [ ] **Context extraction**
|
|
305
|
+
- Shows 80 chars before/after match
|
|
306
|
+
- Respects sentence boundaries
|
|
307
|
+
- Deduplicates nearby matches
|
|
308
|
+
- Limits to 5 matches per spec
|
|
309
|
+
|
|
310
|
+
- [ ] **Filtering**
|
|
311
|
+
- Combines filters with search query
|
|
312
|
+
- Filters applied before scoring
|
|
313
|
+
- Empty results handled gracefully
|
|
314
|
+
|
|
315
|
+
### Integration Tests
|
|
316
|
+
|
|
317
|
+
- [ ] **CLI command**
|
|
318
|
+
- Search returns ranked results
|
|
319
|
+
- Output format is readable
|
|
320
|
+
- Filters work correctly
|
|
321
|
+
- No results message shown
|
|
322
|
+
- Error handling works
|
|
323
|
+
|
|
324
|
+
- [ ] **MCP tool**
|
|
325
|
+
- Returns valid JSON structure
|
|
326
|
+
- Includes all required fields
|
|
327
|
+
- Scoring consistent with CLI
|
|
328
|
+
- Metadata accurate
|
|
329
|
+
|
|
330
|
+
### Real-World Tests (Dogfooding)
|
|
331
|
+
|
|
332
|
+
Test on lean-spec repo with 68+ specs:
|
|
333
|
+
|
|
334
|
+
- [ ] "authentication" finds OAuth2 spec first (not random match)
|
|
335
|
+
- [ ] "token count" finds token-counting specs, not specs mentioning "tokens"
|
|
336
|
+
- [ ] Typo "athentication" finds nothing (fuzzy matching not implemented)
|
|
337
|
+
- [ ] "api AND security" returns intersection (when OR implemented)
|
|
338
|
+
- [ ] Search completes in <100ms for 68 specs
|
|
339
|
+
|
|
340
|
+
### Performance Criteria
|
|
341
|
+
|
|
342
|
+
- **Latency**: <100ms for 100 specs on typical machine
|
|
343
|
+
- **Accuracy**: Subjective "top result is correct" >80% of test queries
|
|
344
|
+
- **Coverage**: Unit test coverage >90%
|
|
345
|
+
|
|
346
|
+
## Notes
|
|
347
|
+
|
|
348
|
+
### Research Findings
|
|
349
|
+
|
|
350
|
+
**Modern Search Expectations** (from GitHub, VSCode, etc.):
|
|
351
|
+
- Relevance ranking is non-negotiable
|
|
352
|
+
- Field-weighted scoring (title > body)
|
|
353
|
+
- Fuzzy matching for typos
|
|
354
|
+
- Query suggestions
|
|
355
|
+
- Fast (<100ms)
|
|
356
|
+
|
|
357
|
+
**LeanSpec Context** (from spec 066, 069, 071):
|
|
358
|
+
- Projects typically have 20-100 specs
|
|
359
|
+
- Specs average 1,500 tokens (6,000 chars)
|
|
360
|
+
- Search needs to work for AI agents (structured results)
|
|
361
|
+
- No need for full-text index (linear scan is fine for <1000 specs)
|
|
362
|
+
|
|
363
|
+
### Alternatives Considered
|
|
364
|
+
|
|
365
|
+
**Full-Text Search Libraries**:
|
|
366
|
+
- ❌ **Lunr.js**: 7KB minified, overkill for small datasets, adds dependency
|
|
367
|
+
- ❌ **FlexSearch**: Fastest, but complex API, harder to customize scoring
|
|
368
|
+
- ❌ **Fuse.js**: Fuzzy search focused, weak relevance ranking
|
|
369
|
+
- ✅ **Custom Engine**: Full control, no dependencies, optimized for LeanSpec
|
|
370
|
+
|
|
371
|
+
**Why Custom**:
|
|
372
|
+
- Simple algorithm (200 LOC)
|
|
373
|
+
- No external dependencies
|
|
374
|
+
- Perfect control over scoring
|
|
375
|
+
- Can optimize for spec structure
|
|
376
|
+
- Easy to maintain and extend
|
|
377
|
+
|
|
378
|
+
### Open Questions
|
|
379
|
+
|
|
380
|
+
1. **Fuzzy matching threshold**: How many typos to tolerate? (Levenshtein distance ≤2?)
|
|
381
|
+
2. **Should archived specs rank lower?** (Currently same as active)
|
|
382
|
+
3. **Should we cache search results?** (Probably not - specs change frequently)
|
|
383
|
+
4. **Field-specific search syntax priority?** (Can wait for user demand)
|
|
384
|
+
|
|
385
|
+
### Dependencies
|
|
386
|
+
|
|
387
|
+
- **Part of**: v0.3 release (spec 065)
|
|
388
|
+
- **Depends on**: None (new core module)
|
|
389
|
+
- **Related**: 059 (programmatic spec management), 070 (MCP token counting), 072 (AI agent workflow)
|
|
390
|
+
- **Blocks**: Future web UI search (will use same engine)
|
|
391
|
+
|
|
392
|
+
### Migration Notes
|
|
393
|
+
|
|
394
|
+
**Breaking Changes**: None (additive feature, existing search still works)
|
|
395
|
+
|
|
396
|
+
**Backward Compatibility**:
|
|
397
|
+
- CLI command interface unchanged
|
|
398
|
+
- MCP tool returns superset of current fields
|
|
399
|
+
- Existing scripts/integrations continue working
|