@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,380 @@
|
|
|
1
|
+
# CLI Design
|
|
2
|
+
|
|
3
|
+
Command-line interface for the `lean-spec validate` command.
|
|
4
|
+
|
|
5
|
+
**Note:** This spec originally proposed expanding `lean-spec check`, but the implementation created a separate `lean-spec validate` command for comprehensive quality validation, while keeping `lean-spec check` focused on sequence conflicts.
|
|
6
|
+
|
|
7
|
+
## Basic Usage
|
|
8
|
+
|
|
9
|
+
### Current Implementation (v0.2.0)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Validate all specs (runs: line count + frontmatter)
|
|
13
|
+
lean-spec validate
|
|
14
|
+
|
|
15
|
+
# Validate specific specs
|
|
16
|
+
lean-spec validate 018
|
|
17
|
+
lean-spec validate 043 048 018 # Multiple specs
|
|
18
|
+
|
|
19
|
+
# Custom line limit
|
|
20
|
+
lean-spec validate --max-lines 500
|
|
21
|
+
lean-spec validate 018 --max-lines 300
|
|
22
|
+
|
|
23
|
+
# For sequence conflicts (separate command)
|
|
24
|
+
lean-spec check
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Planned Enhancements (v0.3.0+)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Validate specific aspects
|
|
31
|
+
lean-spec validate --frontmatter # Only frontmatter validation
|
|
32
|
+
lean-spec validate --structure # Only structure validation
|
|
33
|
+
lean-spec validate --content # Only content validation
|
|
34
|
+
lean-spec validate --corruption # Only corruption detection
|
|
35
|
+
lean-spec validate --staleness # Only staleness detection
|
|
36
|
+
lean-spec validate --sub-specs # Only sub-spec validation
|
|
37
|
+
|
|
38
|
+
# Combine validations
|
|
39
|
+
lean-spec validate --frontmatter --structure
|
|
40
|
+
lean-spec validate --sub-specs --structure # Check sub-specs and main structure
|
|
41
|
+
|
|
42
|
+
# Skip certain checks
|
|
43
|
+
lean-spec validate --no-staleness # Skip staleness warnings
|
|
44
|
+
|
|
45
|
+
# Filter which specs to validate
|
|
46
|
+
lean-spec validate --status=in-progress
|
|
47
|
+
lean-spec validate --tag=api
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Output Options
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Output formatting
|
|
54
|
+
lean-spec validate --format=json # JSON output for CI
|
|
55
|
+
lean-spec validate --quiet # Brief output (errors only)
|
|
56
|
+
lean-spec validate --verbose # Detailed output with explanations
|
|
57
|
+
|
|
58
|
+
# Behavior options
|
|
59
|
+
lean-spec validate --strict # Fail on warnings (not just errors)
|
|
60
|
+
lean-spec validate --fix # Auto-fix issues where possible
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Command Evolution
|
|
64
|
+
|
|
65
|
+
### Current Implementation (v0.2.0+)
|
|
66
|
+
|
|
67
|
+
Two separate commands with distinct purposes:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
lean-spec check # Fast sequence conflict detection
|
|
71
|
+
lean-spec validate # Comprehensive quality validation
|
|
72
|
+
lean-spec validate [specs...] # Validate specific specs
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Planned Enhancements (v0.3.0+)
|
|
76
|
+
|
|
77
|
+
Expand `lean-spec validate` with additional validation rules:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
lean-spec validate --all # All validation rules
|
|
81
|
+
lean-spec validate --frontmatter # Frontmatter validation
|
|
82
|
+
lean-spec validate --structure # Structure validation
|
|
83
|
+
lean-spec validate --corruption # Corruption detection
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Console Output Format
|
|
87
|
+
|
|
88
|
+
### Current Output (v0.2.0)
|
|
89
|
+
|
|
90
|
+
**Actual output format:**
|
|
91
|
+
```
|
|
92
|
+
Validating specs...
|
|
93
|
+
|
|
94
|
+
Line Count:
|
|
95
|
+
✓ 018-spec-validation (255 lines)
|
|
96
|
+
⚠ 051-docs-system-prompt-principles (340 lines - approaching limit)
|
|
97
|
+
→ Consider simplification or splitting
|
|
98
|
+
✗ 048-spec-complexity-analysis (601 lines - exceeds limit!)
|
|
99
|
+
→ Spec exceeds 400 lines (601 lines)
|
|
100
|
+
→ Consider splitting into sub-specs using spec 012 pattern
|
|
101
|
+
|
|
102
|
+
Frontmatter:
|
|
103
|
+
✓ All 25 spec(s) passed
|
|
104
|
+
|
|
105
|
+
Results: 25 specs validated, 3 error(s), 6 warning(s)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Features:**
|
|
109
|
+
- Groups results by validator type (Line Count, Frontmatter, etc.)
|
|
110
|
+
- Clear pass/warn/error indicators (✓ ⚠ ✗)
|
|
111
|
+
- Actionable suggestions for each issue
|
|
112
|
+
- Summary with counts
|
|
113
|
+
|
|
114
|
+
### Planned Output (v0.3.0+)
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
📋 Validating specs...
|
|
118
|
+
|
|
119
|
+
Line Count:
|
|
120
|
+
✓ 10 specs within limits
|
|
121
|
+
⚠ 1 spec approaching limit (300-400 lines)
|
|
122
|
+
✗ 1 spec exceeds limit (>400 lines)
|
|
123
|
+
|
|
124
|
+
Frontmatter:
|
|
125
|
+
✗ 1 spec has errors:
|
|
126
|
+
- specs/044-spec-relationships-clarity/
|
|
127
|
+
• Missing required field: created
|
|
128
|
+
• Invalid status: "wip"
|
|
129
|
+
|
|
130
|
+
Structure:
|
|
131
|
+
✗ 1 spec has errors:
|
|
132
|
+
- specs/044-spec-relationships-clarity/
|
|
133
|
+
• Missing required section: ## Testing
|
|
134
|
+
|
|
135
|
+
Sub-Specs:
|
|
136
|
+
⚠ 2 warnings:
|
|
137
|
+
- specs/018-spec-validation/
|
|
138
|
+
⚠ Sub-spec TESTING.md (421 lines) exceeds 400 line limit
|
|
139
|
+
⚠ Orphaned sub-spec: DEPRECATED.md (not linked from README.md)
|
|
140
|
+
✓ All other specs with sub-specs are valid
|
|
141
|
+
|
|
142
|
+
Corruption:
|
|
143
|
+
✗ 1 spec corrupted:
|
|
144
|
+
- specs/018-spec-validation/
|
|
145
|
+
• Duplicate section: "Auto-Fix Capability" (lines 245, 320)
|
|
146
|
+
• Malformed code block (line 67)
|
|
147
|
+
• Incomplete JSON (line 156)
|
|
148
|
+
|
|
149
|
+
Content:
|
|
150
|
+
⚠ 1 warning:
|
|
151
|
+
- specs/043-official-launch-02/
|
|
152
|
+
⚠ In progress for 45 days
|
|
153
|
+
|
|
154
|
+
Results: 8/12 passed, 2 warnings, 4 errors
|
|
155
|
+
|
|
156
|
+
Note: For sequence conflicts, run `lean-spec check`
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Quiet Output
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
✗ 2 specs with errors
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Verbose Output
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
📋 Validating specs...
|
|
169
|
+
|
|
170
|
+
Line Count:
|
|
171
|
+
✓ 10 specs within limits
|
|
172
|
+
|
|
173
|
+
Checked 12 specs total
|
|
174
|
+
- 10 specs under 300 lines (ideal)
|
|
175
|
+
- 1 spec 300-400 lines (warning zone)
|
|
176
|
+
- 1 spec over 400 lines (should split)
|
|
177
|
+
|
|
178
|
+
Frontmatter:
|
|
179
|
+
✗ 1 spec has errors:
|
|
180
|
+
|
|
181
|
+
specs/044-spec-relationships-clarity/
|
|
182
|
+
• Missing required field: created
|
|
183
|
+
→ Fix: Add 'created: YYYY-MM-DD' to frontmatter
|
|
184
|
+
|
|
185
|
+
• Invalid status: "wip"
|
|
186
|
+
→ Valid values: planned, in-progress, complete, archived
|
|
187
|
+
→ Fix: Change status to one of the valid values
|
|
188
|
+
|
|
189
|
+
... (more detailed explanations)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## JSON Output Format
|
|
193
|
+
|
|
194
|
+
For CI/CD integration:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"summary": {
|
|
199
|
+
"total": 12,
|
|
200
|
+
"passed": 10,
|
|
201
|
+
"failed": 2,
|
|
202
|
+
"warnings": 1,
|
|
203
|
+
"checks": {
|
|
204
|
+
"sequences": {"passed": true, "conflicts": 0},
|
|
205
|
+
"frontmatter": {"passed": false, "errors": 2},
|
|
206
|
+
"structure": {"passed": false, "errors": 1},
|
|
207
|
+
"corruption": {"passed": false, "errors": 3},
|
|
208
|
+
"content": {"passed": true, "warnings": 1}
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"results": [
|
|
212
|
+
{
|
|
213
|
+
"path": "specs/018-spec-validation/",
|
|
214
|
+
"valid": false,
|
|
215
|
+
"checks": {
|
|
216
|
+
"sequences": {"passed": true},
|
|
217
|
+
"frontmatter": {"passed": true},
|
|
218
|
+
"structure": {"passed": true},
|
|
219
|
+
"corruption": {
|
|
220
|
+
"passed": false,
|
|
221
|
+
"errors": [
|
|
222
|
+
{
|
|
223
|
+
"type": "duplicate-section",
|
|
224
|
+
"message": "Duplicate section: 'Auto-Fix Capability'",
|
|
225
|
+
"locations": [245, 320],
|
|
226
|
+
"severity": "error",
|
|
227
|
+
"fixable": true
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"type": "malformed-code-block",
|
|
231
|
+
"message": "Code block not properly closed",
|
|
232
|
+
"line": 67,
|
|
233
|
+
"severity": "error",
|
|
234
|
+
"fixable": false
|
|
235
|
+
}
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Exit Codes
|
|
245
|
+
|
|
246
|
+
- `0` - All checks passed
|
|
247
|
+
- `1` - Errors found (any check failed)
|
|
248
|
+
- `2` - Warnings found (only in --strict mode)
|
|
249
|
+
- `3` - Command error (invalid arguments, etc.)
|
|
250
|
+
|
|
251
|
+
**Note:** `lean-spec check` (sequence conflicts) uses same exit code pattern.
|
|
252
|
+
|
|
253
|
+
## Auto-Fix Mode
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
lean-spec validate --fix
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**What Gets Fixed:**
|
|
260
|
+
- Missing frontmatter fields (adds with defaults)
|
|
261
|
+
- Date formatting (converts to ISO 8601)
|
|
262
|
+
- Duplicate sections (removes duplicates, keeps first)
|
|
263
|
+
- Unclosed code blocks (closes them)
|
|
264
|
+
- Visual badges (updates from frontmatter)
|
|
265
|
+
- Missing sub-spec references in README.md (adds links)
|
|
266
|
+
|
|
267
|
+
**What Doesn't Get Fixed:**
|
|
268
|
+
- Invalid status values (requires decision)
|
|
269
|
+
- Empty sections (requires content)
|
|
270
|
+
- Broken links (requires investigation)
|
|
271
|
+
- Complex corruption (requires judgment)
|
|
272
|
+
- Sub-specs exceeding line limits (requires manual splitting)
|
|
273
|
+
- Orphaned sub-specs (requires decision to keep or remove)
|
|
274
|
+
|
|
275
|
+
**Output:**
|
|
276
|
+
```
|
|
277
|
+
📋 Checking and fixing specs...
|
|
278
|
+
|
|
279
|
+
Fixed 3 issues:
|
|
280
|
+
✓ specs/044-spec-relationships-clarity/
|
|
281
|
+
• Added missing field: created = 2025-11-04
|
|
282
|
+
• Formatted date: 2025/11/04 → 2025-11-04
|
|
283
|
+
|
|
284
|
+
✓ specs/018-spec-validation/
|
|
285
|
+
• Removed duplicate section: "Auto-Fix Capability"
|
|
286
|
+
|
|
287
|
+
Could not auto-fix 2 issues:
|
|
288
|
+
✗ specs/044-spec-relationships-clarity/
|
|
289
|
+
• Invalid status: "wip" - Please use: planned, in-progress, complete, archived
|
|
290
|
+
|
|
291
|
+
Results: Auto-fixed 3/5 issues
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Filtering Specs
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
# By status
|
|
298
|
+
lean-spec validate --status=in-progress
|
|
299
|
+
lean-spec validate --status=planned,in-progress
|
|
300
|
+
|
|
301
|
+
# By tag
|
|
302
|
+
lean-spec validate --tag=api
|
|
303
|
+
lean-spec validate --tag=quality,validation
|
|
304
|
+
|
|
305
|
+
# By priority
|
|
306
|
+
lean-spec validate --priority=high,critical
|
|
307
|
+
|
|
308
|
+
# By path pattern
|
|
309
|
+
lean-spec validate specs/2025*
|
|
310
|
+
lean-spec validate specs/archived/
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## CI/CD Integration
|
|
314
|
+
|
|
315
|
+
### GitHub Actions Example
|
|
316
|
+
|
|
317
|
+
```yaml
|
|
318
|
+
- name: Check spec quality
|
|
319
|
+
run: |
|
|
320
|
+
lean-spec validate --format=json --strict > validate-results.json
|
|
321
|
+
continue-on-error: true
|
|
322
|
+
|
|
323
|
+
- name: Comment PR with results
|
|
324
|
+
uses: actions/github-script@v6
|
|
325
|
+
with:
|
|
326
|
+
script: |
|
|
327
|
+
const results = require('./validate-results.json');
|
|
328
|
+
// Post comment with results
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Pre-Commit Hook
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
#!/bin/sh
|
|
335
|
+
# .git/hooks/pre-commit
|
|
336
|
+
|
|
337
|
+
# Run comprehensive validation
|
|
338
|
+
lean-spec validate --format=json > /dev/null 2>&1
|
|
339
|
+
|
|
340
|
+
if [ $? -ne 0 ]; then
|
|
341
|
+
echo "❌ Spec quality checks failed!"
|
|
342
|
+
echo "Run 'lean-spec validate' to see details"
|
|
343
|
+
echo "Run 'lean-spec validate --fix' to auto-fix issues"
|
|
344
|
+
exit 1
|
|
345
|
+
fi
|
|
346
|
+
|
|
347
|
+
echo "✓ All spec quality checks passed"
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Design Decisions
|
|
351
|
+
|
|
352
|
+
### Why Separate `validate` Command (Implementation Choice)
|
|
353
|
+
|
|
354
|
+
The original spec proposed expanding `lean-spec check`, but the implementation created a separate `lean-spec validate` command:
|
|
355
|
+
|
|
356
|
+
**Rationale:**
|
|
357
|
+
1. **Separation of concerns**: Sequence checking is fast/targeted; validation is comprehensive
|
|
358
|
+
2. **Performance**: Users can run quick sequence checks without validation overhead
|
|
359
|
+
3. **Backwards compatible**: Existing `lean-spec check` behavior unchanged
|
|
360
|
+
4. **Incremental adoption**: Can add validation rules without affecting check command
|
|
361
|
+
5. **Clearer intent**: `validate` explicitly signals quality checking vs. `check` for conflicts
|
|
362
|
+
|
|
363
|
+
**Trade-offs:**
|
|
364
|
+
- Two commands to remember (but both are intuitive)
|
|
365
|
+
- More CLI surface area
|
|
366
|
+
- Better performance and flexibility
|
|
367
|
+
|
|
368
|
+
### Flag Design Philosophy
|
|
369
|
+
|
|
370
|
+
- **Positive flags**: Enable specific validations (`--frontmatter`, `--structure`)
|
|
371
|
+
- **Negative flags**: Disable validations (`--no-staleness`)
|
|
372
|
+
- **Default**: All available validations when no flags specified
|
|
373
|
+
- **Specificity**: Can validate individual specs or filter by status/tags
|
|
374
|
+
|
|
375
|
+
### Performance Considerations
|
|
376
|
+
|
|
377
|
+
- Fast by default (< 1s for 100 specs)
|
|
378
|
+
- Parallel spec loading
|
|
379
|
+
- Incremental checking (only changed specs in auto-check)
|
|
380
|
+
- Caching of check results
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# Configuration Examples
|
|
2
|
+
|
|
3
|
+
> Part of spec: [018-spec-validation](README.md)
|
|
4
|
+
|
|
5
|
+
Configuration examples for different use cases of `lean-spec validate`.
|
|
6
|
+
|
|
7
|
+
## Strict Mode (CI/CD)
|
|
8
|
+
|
|
9
|
+
Use for production/CI environments where you want maximum validation:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"validate": {
|
|
14
|
+
"mode": "comprehensive",
|
|
15
|
+
"autoValidate": false,
|
|
16
|
+
"rules": {
|
|
17
|
+
"frontmatter": {
|
|
18
|
+
"required": ["status", "created", "priority"],
|
|
19
|
+
"allowedStatus": ["planned", "in-progress", "complete", "archived"],
|
|
20
|
+
"allowedPriority": ["low", "medium", "high", "critical"]
|
|
21
|
+
},
|
|
22
|
+
"structure": {
|
|
23
|
+
"requireReadme": true,
|
|
24
|
+
"requiredSections": ["Overview", "Design", "Plan", "Test"],
|
|
25
|
+
"forbidEmptySections": true
|
|
26
|
+
},
|
|
27
|
+
"content": {
|
|
28
|
+
"minLength": 200,
|
|
29
|
+
"forbidTodoInComplete": true,
|
|
30
|
+
"validateLinks": true
|
|
31
|
+
},
|
|
32
|
+
"corruption": {
|
|
33
|
+
"detectDuplicateSections": true,
|
|
34
|
+
"validateCodeBlocks": true,
|
|
35
|
+
"validateJsonYaml": true,
|
|
36
|
+
"detectFragments": true
|
|
37
|
+
},
|
|
38
|
+
"staleness": {
|
|
39
|
+
"inProgressMaxDays": 30,
|
|
40
|
+
"noUpdateMaxDays": 90,
|
|
41
|
+
"plannedMaxDays": 60
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"ignorePaths": [
|
|
46
|
+
"archived/**",
|
|
47
|
+
"drafts/**"
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Relaxed Mode (Early Development)
|
|
53
|
+
|
|
54
|
+
Use for early-stage projects or rapid prototyping:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"validate": {
|
|
59
|
+
"mode": "quick",
|
|
60
|
+
"autoValidate": false,
|
|
61
|
+
"rules": {
|
|
62
|
+
"frontmatter": {
|
|
63
|
+
"required": ["status"],
|
|
64
|
+
"allowedStatus": ["planned", "in-progress", "complete", "archived"]
|
|
65
|
+
},
|
|
66
|
+
"structure": {
|
|
67
|
+
"requireReadme": true,
|
|
68
|
+
"requiredSections": [],
|
|
69
|
+
"forbidEmptySections": false
|
|
70
|
+
},
|
|
71
|
+
"content": {
|
|
72
|
+
"minLength": 50,
|
|
73
|
+
"forbidTodoInComplete": false,
|
|
74
|
+
"validateLinks": false
|
|
75
|
+
},
|
|
76
|
+
"corruption": {
|
|
77
|
+
"detectDuplicateSections": true,
|
|
78
|
+
"validateCodeBlocks": false,
|
|
79
|
+
"validateJsonYaml": false,
|
|
80
|
+
"detectFragments": false
|
|
81
|
+
},
|
|
82
|
+
"staleness": {
|
|
83
|
+
"inProgressMaxDays": 90,
|
|
84
|
+
"noUpdateMaxDays": 180,
|
|
85
|
+
"plannedMaxDays": 120
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Custom Workflow (Sprint-Based)
|
|
93
|
+
|
|
94
|
+
Example for teams using sprint-based workflow:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"validate": {
|
|
99
|
+
"mode": "comprehensive",
|
|
100
|
+
"rules": {
|
|
101
|
+
"frontmatter": {
|
|
102
|
+
"required": ["status", "created", "team", "sprint"],
|
|
103
|
+
"allowedStatus": ["backlog", "sprint", "review", "done"],
|
|
104
|
+
"allowedPriority": ["p0", "p1", "p2", "p3"]
|
|
105
|
+
},
|
|
106
|
+
"structure": {
|
|
107
|
+
"requiredSections": ["Problem", "Solution", "Acceptance Criteria"],
|
|
108
|
+
"forbidEmptySections": true
|
|
109
|
+
},
|
|
110
|
+
"content": {
|
|
111
|
+
"minLength": 150,
|
|
112
|
+
"forbidTodoInComplete": true,
|
|
113
|
+
"validateLinks": true
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"ignorePaths": [
|
|
118
|
+
"archived/**",
|
|
119
|
+
"experiments/**"
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Minimal Configuration
|
|
125
|
+
|
|
126
|
+
Bare minimum for validation (uses most defaults):
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"validate": {
|
|
131
|
+
"mode": "quick"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Feature-Specific Examples
|
|
137
|
+
|
|
138
|
+
### Enforce Custom Fields
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"validate": {
|
|
143
|
+
"rules": {
|
|
144
|
+
"frontmatter": {
|
|
145
|
+
"required": ["status", "created", "owner", "cost_estimate"],
|
|
146
|
+
"customFields": {
|
|
147
|
+
"owner": { "type": "string", "pattern": "^[a-z]+$" },
|
|
148
|
+
"cost_estimate": { "type": "number", "min": 0 }
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Template-Specific Validation
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"validate": {
|
|
161
|
+
"templateRules": {
|
|
162
|
+
"feature": {
|
|
163
|
+
"requiredSections": ["Use Cases", "Technical Design", "Rollout Plan"]
|
|
164
|
+
},
|
|
165
|
+
"bug": {
|
|
166
|
+
"requiredSections": ["Root Cause", "Fix", "Prevention"]
|
|
167
|
+
},
|
|
168
|
+
"spike": {
|
|
169
|
+
"requiredSections": ["Questions", "Findings", "Recommendation"]
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Ignore Patterns
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"validate": {
|
|
181
|
+
"mode": "comprehensive"
|
|
182
|
+
},
|
|
183
|
+
"ignorePaths": [
|
|
184
|
+
"archived/**",
|
|
185
|
+
"drafts/**",
|
|
186
|
+
"experiments/**",
|
|
187
|
+
"**/*.backup.md",
|
|
188
|
+
"temp-*/**"
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Usage with Examples
|
|
194
|
+
|
|
195
|
+
### Apply Strict Mode
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# Add to .lean-spec/config.json, then run:
|
|
199
|
+
lean-spec validate
|
|
200
|
+
|
|
201
|
+
# Or override via CLI:
|
|
202
|
+
lean-spec validate --mode comprehensive
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Apply Relaxed Mode
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Use during early development:
|
|
209
|
+
lean-spec validate --mode quick
|
|
210
|
+
|
|
211
|
+
# Or with specific rules disabled:
|
|
212
|
+
lean-spec validate --no-links --no-staleness
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Custom Workflow
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
# Configure custom status values:
|
|
219
|
+
# .lean-spec/config.json with custom allowedStatus
|
|
220
|
+
# Then validate normally:
|
|
221
|
+
lean-spec validate
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Tips
|
|
225
|
+
|
|
226
|
+
1. **Start relaxed, tighten gradually** - Begin with `quick` mode, add rules as project matures
|
|
227
|
+
2. **Use strict mode in CI** - Catch issues before merge
|
|
228
|
+
3. **Customize for your workflow** - Adapt `allowedStatus` and `requiredSections` to match your process
|
|
229
|
+
4. **Use ignore paths wisely** - Don't validate archived or experimental specs
|
|
230
|
+
5. **Test configuration** - Run `lean-spec validate --dry-run` to preview changes
|