@leanspec/ui 0.2.7-dev.20251126090633 → 0.2.7
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/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64 → @img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/README.md +2 -2
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/glib-2.0/include/glibconfig.h +8 -9
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib} +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/package.json +5 -11
- 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/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +59 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +427 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +436 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +10 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +7 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +83 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +8 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +23 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +63 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +51 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +162 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +364 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +531 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +277 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +87 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +27 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +5 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +425 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +283 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +52 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +175 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +96 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +95 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +210 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +180 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +119 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +369 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +372 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-metadata.tsx +136 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +127 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +186 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +561 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +143 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +130 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +11 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +37 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +50 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +110 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +57 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +153 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +122 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +24 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +159 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +31 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +15 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +30 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +32 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +114 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +123 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +156 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +216 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +105 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +120 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +94 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +249 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +152 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +58 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +34 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +14 -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 +306 -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 +287 -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 +825 -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 +501 -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 +421 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +106 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +131 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +65 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +332 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +525 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +387 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +613 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +266 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +100 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +172 -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/package.json +1 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/index.js +0 -0
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/versions.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{gmEkSwWc7AIWzMK9b0WXr → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{gmEkSwWc7AIWzMK9b0WXr → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{gmEkSwWc7AIWzMK9b0WXr → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
- /package/.next/static/{gmEkSwWc7AIWzMK9b0WXr → 6nq7WNafPv5Bf_7mWgRQ-}/_buildManifest.js +0 -0
- /package/.next/static/{gmEkSwWc7AIWzMK9b0WXr → 6nq7WNafPv5Bf_7mWgRQ-}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{gmEkSwWc7AIWzMK9b0WXr → 6nq7WNafPv5Bf_7mWgRQ-}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: planned
|
|
3
|
+
created: '2025-11-02'
|
|
4
|
+
tags: ["feature","ide","vscode"]
|
|
5
|
+
priority: low
|
|
6
|
+
depends_on:
|
|
7
|
+
- 067-monorepo-core-extraction
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# vscode-extension
|
|
11
|
+
|
|
12
|
+
> **Status**: 📅 Planned · **Priority**: Medium · **Created**: 2025-11-02
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Create a VS Code extension that integrates LeanSpec directly into the editor, providing inline spec management, navigation, and AI agent integration.
|
|
17
|
+
|
|
18
|
+
**Developer Pain Points:**
|
|
19
|
+
- Switching between editor and terminal for spec management
|
|
20
|
+
- Finding specs across folder structure
|
|
21
|
+
- No syntax highlighting for spec frontmatter
|
|
22
|
+
- AI agents can't easily reference specs during coding
|
|
23
|
+
- Manual updating of spec status
|
|
24
|
+
|
|
25
|
+
**What Success Looks Like:**
|
|
26
|
+
- Create/edit specs without leaving VS Code
|
|
27
|
+
- Tree view showing all specs with status indicators
|
|
28
|
+
- Quick actions to update spec metadata
|
|
29
|
+
- Frontmatter validation and autocomplete
|
|
30
|
+
- Integration with GitHub Copilot context
|
|
31
|
+
|
|
32
|
+
## Design
|
|
33
|
+
|
|
34
|
+
### 1. Extension Features
|
|
35
|
+
|
|
36
|
+
**Spec Explorer (Tree View)**
|
|
37
|
+
```
|
|
38
|
+
LEANSPEC SPECS
|
|
39
|
+
├── 📅 20251102/
|
|
40
|
+
│ ├── ✅ 001-custom-spec-templates/
|
|
41
|
+
│ ├── 📅 002-complete-custom-frontmatter/
|
|
42
|
+
│ └── 🔨 003-npm-publishing/
|
|
43
|
+
├── ✅ 20251101/
|
|
44
|
+
│ └── ✅ 001-existing-project-integration/
|
|
45
|
+
└── 📅 Planned (3)
|
|
46
|
+
🔨 In Progress (1)
|
|
47
|
+
✅ Complete (9)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Quick Actions:**
|
|
51
|
+
- Right-click spec → Update Status
|
|
52
|
+
- Right-click spec → Archive
|
|
53
|
+
- Right-click spec → Open in Editor
|
|
54
|
+
- Right-click spec → Copy Path
|
|
55
|
+
|
|
56
|
+
**Commands (Ctrl+Shift+P):**
|
|
57
|
+
- `LeanSpec: Create New Spec`
|
|
58
|
+
- `LeanSpec: Update Spec Status`
|
|
59
|
+
- `LeanSpec: Show Stats`
|
|
60
|
+
- `LeanSpec: Show Board`
|
|
61
|
+
- `LeanSpec: Search Specs`
|
|
62
|
+
- `LeanSpec: Validate All Specs`
|
|
63
|
+
|
|
64
|
+
**Status Bar:**
|
|
65
|
+
```
|
|
66
|
+
📋 LeanSpec: 3 planned, 1 in progress, 9 complete
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. Editor Features
|
|
70
|
+
|
|
71
|
+
**Frontmatter Validation:**
|
|
72
|
+
- Syntax highlighting for YAML frontmatter
|
|
73
|
+
- Red squiggles for invalid fields
|
|
74
|
+
- Autocomplete for status, priority, tags
|
|
75
|
+
- Hover tooltips showing field descriptions
|
|
76
|
+
|
|
77
|
+
**Snippets:**
|
|
78
|
+
- `lspec-spec` → Full spec template
|
|
79
|
+
- `lspec-front` → Frontmatter block
|
|
80
|
+
- `lspec-plan` → Plan section with checkboxes
|
|
81
|
+
|
|
82
|
+
**CodeLens:**
|
|
83
|
+
```markdown
|
|
84
|
+
---
|
|
85
|
+
status: planned
|
|
86
|
+
---
|
|
87
|
+
👆 Update Status | 🔄 Sync Metadata
|
|
88
|
+
|
|
89
|
+
# My Feature Spec
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 3. AI Agent Integration
|
|
93
|
+
|
|
94
|
+
**Copilot Context Provider:**
|
|
95
|
+
```typescript
|
|
96
|
+
// Enable Copilot to reference specs
|
|
97
|
+
vscode.lm.registerContextProvider('leanspec', {
|
|
98
|
+
provideContext(query) {
|
|
99
|
+
// Search specs matching query
|
|
100
|
+
// Return relevant spec content
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Usage:**
|
|
106
|
+
```
|
|
107
|
+
@leanspec How should I implement the API endpoints?
|
|
108
|
+
// Copilot gets context from relevant specs
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 4. Extension Architecture
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
// Extension structure
|
|
115
|
+
src/
|
|
116
|
+
├── extension.ts # Activation
|
|
117
|
+
├── commands/
|
|
118
|
+
│ ├── createSpec.ts
|
|
119
|
+
│ ├── updateSpec.ts
|
|
120
|
+
│ └── searchSpecs.ts
|
|
121
|
+
├── providers/
|
|
122
|
+
│ ├── SpecTreeProvider.ts # Tree view
|
|
123
|
+
│ ├── FrontmatterValidator.ts
|
|
124
|
+
│ ├── CompletionProvider.ts # Autocomplete
|
|
125
|
+
│ └── CopilotProvider.ts # AI context
|
|
126
|
+
├── views/
|
|
127
|
+
│ └── statsWebview.ts # Stats dashboard
|
|
128
|
+
└── utils/
|
|
129
|
+
└── lspecClient.ts # Wrap CLI commands
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 5. Configuration
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"leanspec.specsDirectory": "specs",
|
|
137
|
+
"leanspec.autoRefresh": true,
|
|
138
|
+
"leanspec.showStatusBar": true,
|
|
139
|
+
"leanspec.validateOnSave": true,
|
|
140
|
+
"leanspec.copilotIntegration": true
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Plan
|
|
145
|
+
|
|
146
|
+
### Phase 1: Core Extension Setup
|
|
147
|
+
- [ ] Initialize VS Code extension project
|
|
148
|
+
- [ ] Set up TypeScript, webpack bundling
|
|
149
|
+
- [ ] Create extension manifest (package.json)
|
|
150
|
+
- [ ] Set up activation events
|
|
151
|
+
- [ ] Install lean-spec as dependency
|
|
152
|
+
|
|
153
|
+
### Phase 2: Spec Explorer Tree View
|
|
154
|
+
- [ ] Implement SpecTreeProvider
|
|
155
|
+
- [ ] Load specs from workspace
|
|
156
|
+
- [ ] Display folder structure with icons
|
|
157
|
+
- [ ] Show status indicators (icons)
|
|
158
|
+
- [ ] Add click to open spec
|
|
159
|
+
- [ ] Add refresh button
|
|
160
|
+
|
|
161
|
+
### Phase 3: Commands & Quick Actions
|
|
162
|
+
- [ ] Implement `Create New Spec` command
|
|
163
|
+
- [ ] Implement `Update Status` command
|
|
164
|
+
- [ ] Implement `Show Stats` command
|
|
165
|
+
- [ ] Implement `Search Specs` command
|
|
166
|
+
- [ ] Add context menu items to tree view
|
|
167
|
+
- [ ] Add status bar item with spec counts
|
|
168
|
+
|
|
169
|
+
### Phase 4: Editor Features
|
|
170
|
+
- [ ] Add frontmatter syntax highlighting
|
|
171
|
+
- [ ] Implement validation diagnostics
|
|
172
|
+
- [ ] Add autocomplete for frontmatter fields
|
|
173
|
+
- [ ] Create spec snippets
|
|
174
|
+
- [ ] Add CodeLens for quick actions
|
|
175
|
+
- [ ] Add hover tooltips
|
|
176
|
+
|
|
177
|
+
### Phase 5: AI Integration
|
|
178
|
+
- [ ] Research Copilot Context Provider API
|
|
179
|
+
- [ ] Implement context provider
|
|
180
|
+
- [ ] Test with GitHub Copilot
|
|
181
|
+
- [ ] Add configuration toggle
|
|
182
|
+
|
|
183
|
+
### Phase 6: Polish & Publishing
|
|
184
|
+
- [ ] Create extension icon
|
|
185
|
+
- [ ] Write comprehensive README
|
|
186
|
+
- [ ] Add screenshots/GIFs
|
|
187
|
+
- [ ] Test on Windows, macOS, Linux
|
|
188
|
+
- [ ] Publish to VS Code Marketplace
|
|
189
|
+
- [ ] Link from lean-spec README
|
|
190
|
+
|
|
191
|
+
## Test
|
|
192
|
+
|
|
193
|
+
### Tree View Tests
|
|
194
|
+
- [ ] Tree view loads specs correctly
|
|
195
|
+
- [ ] Icons match spec status
|
|
196
|
+
- [ ] Click opens spec file
|
|
197
|
+
- [ ] Refresh updates tree
|
|
198
|
+
- [ ] Works with empty specs directory
|
|
199
|
+
|
|
200
|
+
### Command Tests
|
|
201
|
+
- [ ] Create spec command works
|
|
202
|
+
- [ ] Update status command works
|
|
203
|
+
- [ ] Commands show in palette
|
|
204
|
+
- [ ] Status bar updates on changes
|
|
205
|
+
|
|
206
|
+
### Editor Tests
|
|
207
|
+
- [ ] Frontmatter validation detects errors
|
|
208
|
+
- [ ] Autocomplete suggests valid values
|
|
209
|
+
- [ ] Snippets expand correctly
|
|
210
|
+
- [ ] CodeLens actions work
|
|
211
|
+
|
|
212
|
+
### Integration Tests
|
|
213
|
+
- [ ] Extension activates in workspace with .lean-spec/
|
|
214
|
+
- [ ] Works with all templates
|
|
215
|
+
- [ ] Handles spec creation/deletion
|
|
216
|
+
- [ ] File watcher updates on external changes
|
|
217
|
+
|
|
218
|
+
### Copilot Tests
|
|
219
|
+
- [ ] Context provider registers
|
|
220
|
+
- [ ] Copilot can query specs
|
|
221
|
+
- [ ] Returns relevant spec content
|
|
222
|
+
|
|
223
|
+
## Notes
|
|
224
|
+
|
|
225
|
+
**VS Code Extension API:**
|
|
226
|
+
- TreeDataProvider for tree view
|
|
227
|
+
- DiagnosticCollection for validation
|
|
228
|
+
- CompletionItemProvider for autocomplete
|
|
229
|
+
- CodeLensProvider for inline actions
|
|
230
|
+
- StatusBarItem for status display
|
|
231
|
+
- FileSystemWatcher for auto-refresh
|
|
232
|
+
|
|
233
|
+
**Marketplace Listing:**
|
|
234
|
+
- Name: "LeanSpec"
|
|
235
|
+
- Description: "Lightweight spec management for AI-powered development"
|
|
236
|
+
- Categories: Programming Languages, Other
|
|
237
|
+
- Icon: 📋 or spec document icon
|
|
238
|
+
- Keywords: spec, sdd, documentation, ai, agent
|
|
239
|
+
|
|
240
|
+
**Bundle Size:**
|
|
241
|
+
- Keep extension lightweight (< 5MB)
|
|
242
|
+
- Use webpack to bundle dependencies
|
|
243
|
+
- Consider using CLI as subprocess vs. importing
|
|
244
|
+
|
|
245
|
+
**Future Enhancements:**
|
|
246
|
+
- Spec dependency graph visualization
|
|
247
|
+
- Inline spec preview in hover
|
|
248
|
+
- Spec templates gallery
|
|
249
|
+
- Integration with other AI tools (Cursor, etc.)
|
|
250
|
+
- Spec metrics dashboard (webview)
|
|
251
|
+
- Git blame integration (show who wrote spec)
|
|
252
|
+
|
|
253
|
+
**Alternative Approach:**
|
|
254
|
+
- Could build as Language Server Protocol (LSP)
|
|
255
|
+
- Would enable support for other editors (Neovim, etc.)
|
|
256
|
+
- More complex but more portable
|
|
257
|
+
|
|
258
|
+
**References:**
|
|
259
|
+
- VS Code Extension API: https://code.visualstudio.com/api
|
|
260
|
+
- Tree View Guide: https://code.visualstudio.com/api/extension-guides/tree-view
|
|
261
|
+
- Copilot Context: https://code.visualstudio.com/api/extension-guides/language-model
|
|
@@ -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
|