@leanspec/ui 0.2.7-dev.20251128020042 → 0.2.8
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/app-path-routes-manifest.json +2 -0
- 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/routes-manifest.json +12 -0
- 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/page_client-reference-manifest.js +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 +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +6 -6
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route_client-reference-manifest.js +2 -0
- 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/context/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +19 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +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]/page_client-reference-manifest.js +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/[specId]/page_client-reference-manifest.js +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/[projectId]/specs/page_client-reference-manifest.js +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/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- 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/[id]/page_client-reference-manifest.js +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/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +2 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3559376c._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_context_route_actions_dead6daa.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_959ad3d8._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_497c8b73._.js → _b397e94a._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_context_page_actions_1a062d48.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +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/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{static/chunks/294dea6dbec43ca6.js → standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{static/chunks/cca4441cde342ae3.js → standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- 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/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/package.json +2 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/context/route.ts +22 -0
- package/.next/standalone/packages/ui/src/app/context/context-client.tsx +371 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -0
- package/.next/standalone/packages/ui/src/app/globals.css +16 -16
- package/.next/standalone/packages/ui/src/app/layout.tsx +1 -7
- package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +291 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
- package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
- package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +11 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +1 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +1 -0
- package/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/294dea6dbec43ca6.js → static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/cca4441cde342ae3.js → static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/package.json +3 -2
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
- package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/static/chunks/d784d84d5b880e48.js +0 -1
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_ssgManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: '2025-11-02'
|
|
4
|
+
tags:
|
|
5
|
+
- feature
|
|
6
|
+
- templates
|
|
7
|
+
- cli
|
|
8
|
+
- customization
|
|
9
|
+
priority: high
|
|
10
|
+
completed: '2025-11-02'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Customization-First Template System
|
|
14
|
+
|
|
15
|
+
> **Status**: ✅ Complete · **Priority**: High · **Created**: 2025-11-02 · **Tags**: feature, templates, cli, customization
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
**Core Principle**: LeanSpec's whole purpose is to ensure full control for users over the SDD process with AI agents. Customization must be a first-class citizen, not an afterthought.
|
|
20
|
+
|
|
21
|
+
**Current Problem**: Templates are locked in the npm package. Users cannot customize spec templates, frontmatter fields, variables, or template directory structure without modifying package files (which are lost on updates).
|
|
22
|
+
|
|
23
|
+
**Solution**: Invert the architecture - templates live in the user's project (`.lean-spec/templates/`), not the npm package. Package templates become initialization starters only.
|
|
24
|
+
|
|
25
|
+
## Current Architecture (Template-Centric) ❌
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
npm package (read-only)
|
|
29
|
+
└── templates/
|
|
30
|
+
├── minimal/
|
|
31
|
+
├── standard/
|
|
32
|
+
└── enterprise/
|
|
33
|
+
|
|
34
|
+
User's project
|
|
35
|
+
└── .lean-spec/
|
|
36
|
+
└── config.json # Only stores template name reference
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Problems:**
|
|
40
|
+
- Templates in npm package are immutable
|
|
41
|
+
- No way to add custom templates
|
|
42
|
+
- No way to customize spec structure
|
|
43
|
+
- Users don't own their workflow
|
|
44
|
+
|
|
45
|
+
## New Architecture (User-Centric) ✅
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
User's project
|
|
49
|
+
└── .lean-spec/
|
|
50
|
+
├── config.json
|
|
51
|
+
└── templates/
|
|
52
|
+
├── spec-template.md # Default (copied from npm on init)
|
|
53
|
+
├── api-spec.md # User's custom API template
|
|
54
|
+
├── rfc.md # User's custom RFC template
|
|
55
|
+
└── ... # Any custom templates
|
|
56
|
+
|
|
57
|
+
npm package (initialization only)
|
|
58
|
+
└── templates/
|
|
59
|
+
├── minimal/
|
|
60
|
+
├── standard/
|
|
61
|
+
└── enterprise/
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Benefits:**
|
|
65
|
+
- ✅ Users own and control all templates
|
|
66
|
+
- ✅ Can customize immediately after init
|
|
67
|
+
- ✅ Can add unlimited custom templates
|
|
68
|
+
- ✅ Templates are versioned with project
|
|
69
|
+
- ✅ No dependency on npm package structure
|
|
70
|
+
- ✅ True customization-first
|
|
71
|
+
|
|
72
|
+
## Design
|
|
73
|
+
|
|
74
|
+
### 1. Template Lifecycle
|
|
75
|
+
|
|
76
|
+
**Phase 1: Initialization (`lean-spec init`)**
|
|
77
|
+
```bash
|
|
78
|
+
lean-spec init
|
|
79
|
+
# User chooses template: minimal/standard/enterprise
|
|
80
|
+
# Template copied from npm package to .lean-spec/templates/spec-template.md
|
|
81
|
+
# User immediately has full control
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Phase 2: Customization (User's choice)**
|
|
85
|
+
```bash
|
|
86
|
+
# Edit default template
|
|
87
|
+
vim .lean-spec/templates/spec-template.md
|
|
88
|
+
|
|
89
|
+
# Add custom templates
|
|
90
|
+
cp .lean-spec/templates/spec-template.md .lean-spec/templates/api-spec.md
|
|
91
|
+
# Edit api-spec.md for API-specific structure
|
|
92
|
+
|
|
93
|
+
# Register in config
|
|
94
|
+
lean-spec templates add api api-spec.md
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Phase 3: Usage**
|
|
98
|
+
```bash
|
|
99
|
+
# Use default template
|
|
100
|
+
lean-spec create my-feature
|
|
101
|
+
|
|
102
|
+
# Use custom template
|
|
103
|
+
lean-spec create my-api --template=api
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 2. Enhanced Config Structure
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"template": "spec-template.md",
|
|
111
|
+
"templates": {
|
|
112
|
+
"default": "spec-template.md",
|
|
113
|
+
"api": "api-spec.md",
|
|
114
|
+
"rfc": "rfc.md"
|
|
115
|
+
},
|
|
116
|
+
"specsDir": "specs",
|
|
117
|
+
"structure": {
|
|
118
|
+
"pattern": "{date}/{seq}-{name}/",
|
|
119
|
+
"dateFormat": "YYYYMMDD",
|
|
120
|
+
"sequenceDigits": 3,
|
|
121
|
+
"defaultFile": "README.md"
|
|
122
|
+
},
|
|
123
|
+
"frontmatter": {
|
|
124
|
+
"required": ["status", "created"],
|
|
125
|
+
"optional": ["tags", "priority", "assignee", "reviewer"],
|
|
126
|
+
"custom": {
|
|
127
|
+
"epic": "string",
|
|
128
|
+
"sprint": "number",
|
|
129
|
+
"estimate": "string",
|
|
130
|
+
"milestone": "string"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"variables": {
|
|
134
|
+
"project_name": "my-project",
|
|
135
|
+
"team": "platform",
|
|
136
|
+
"author": "${git_user}",
|
|
137
|
+
"repo": "${git_repo}"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 3. New Commands
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# List available templates in project
|
|
146
|
+
lean-spec templates list
|
|
147
|
+
|
|
148
|
+
# Add/register a template
|
|
149
|
+
lean-spec templates add <name> <file>
|
|
150
|
+
# Example: lean-spec templates add api api-spec.md
|
|
151
|
+
|
|
152
|
+
# Show template content
|
|
153
|
+
lean-spec templates show <name>
|
|
154
|
+
|
|
155
|
+
# Remove template
|
|
156
|
+
lean-spec templates remove <name>
|
|
157
|
+
|
|
158
|
+
# Copy existing template as starting point
|
|
159
|
+
lean-spec templates copy <source> <target>
|
|
160
|
+
# Example: lean-spec templates copy default api-spec
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 4. Template Resolution
|
|
164
|
+
|
|
165
|
+
**In `create.ts`:**
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
async function resolveTemplate(
|
|
169
|
+
templateName: string | undefined,
|
|
170
|
+
config: LeanSpecConfig,
|
|
171
|
+
cwd: string
|
|
172
|
+
): Promise<string> {
|
|
173
|
+
const templatesDir = path.join(cwd, '.lean-spec', 'templates');
|
|
174
|
+
|
|
175
|
+
// 1. Check for --template flag
|
|
176
|
+
if (templateName && config.templates?.[templateName]) {
|
|
177
|
+
const templateFile = config.templates[templateName];
|
|
178
|
+
const templatePath = path.join(templatesDir, templateFile);
|
|
179
|
+
|
|
180
|
+
try {
|
|
181
|
+
await fs.access(templatePath);
|
|
182
|
+
return templatePath;
|
|
183
|
+
} catch {
|
|
184
|
+
console.error(chalk.red(`Template not found: ${templateName}`));
|
|
185
|
+
console.error(chalk.gray(`Looking for: ${templatePath}`));
|
|
186
|
+
console.error(chalk.gray(`Available templates: ${Object.keys(config.templates || {}).join(', ')}`));
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// 2. Use default template from config
|
|
192
|
+
const defaultTemplate = config.template || 'spec-template.md';
|
|
193
|
+
const defaultPath = path.join(templatesDir, defaultTemplate);
|
|
194
|
+
|
|
195
|
+
try {
|
|
196
|
+
await fs.access(defaultPath);
|
|
197
|
+
return defaultPath;
|
|
198
|
+
} catch {
|
|
199
|
+
// Error - templates should exist after init
|
|
200
|
+
console.error(chalk.red('No templates found!'));
|
|
201
|
+
console.error(chalk.gray('Expected: .lean-spec/templates/spec-template.md'));
|
|
202
|
+
console.error(chalk.yellow('Run: lean-spec init'));
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### 5. Custom Frontmatter Support
|
|
209
|
+
|
|
210
|
+
**Extend frontmatter parser to support custom fields:**
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
interface FrontmatterConfig {
|
|
214
|
+
required: string[];
|
|
215
|
+
optional: string[];
|
|
216
|
+
custom?: Record<string, 'string' | 'number' | 'boolean' | 'array'>;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Validate and parse custom fields
|
|
220
|
+
function parseCustomFrontmatter(
|
|
221
|
+
frontmatter: Record<string, any>,
|
|
222
|
+
config: FrontmatterConfig
|
|
223
|
+
): Record<string, any> {
|
|
224
|
+
const custom: Record<string, any> = {};
|
|
225
|
+
|
|
226
|
+
if (config.custom) {
|
|
227
|
+
for (const [key, type] of Object.entries(config.custom)) {
|
|
228
|
+
if (key in frontmatter) {
|
|
229
|
+
// Type validation and coercion
|
|
230
|
+
custom[key] = coerceType(frontmatter[key], type);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return custom;
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Usage:**
|
|
240
|
+
```bash
|
|
241
|
+
# Create with custom frontmatter
|
|
242
|
+
lean-spec create my-feature --epic=PLAT-123 --sprint=42
|
|
243
|
+
|
|
244
|
+
# Update custom fields
|
|
245
|
+
lean-spec update specs/20251102/001-my-feature --epic=PLAT-456
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### 6. Variable Substitution System
|
|
249
|
+
|
|
250
|
+
**Built-in variables:**
|
|
251
|
+
- `{name}` - Spec name
|
|
252
|
+
- `{date}` - Creation date
|
|
253
|
+
- `{project_name}` - From package.json or config
|
|
254
|
+
- `{author}` - From git config
|
|
255
|
+
- `{git_user}` - Git username
|
|
256
|
+
- `{git_repo}` - Git repository name
|
|
257
|
+
- `{team}` - From config
|
|
258
|
+
|
|
259
|
+
**Custom variables from config:**
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"variables": {
|
|
263
|
+
"company": "Acme Corp",
|
|
264
|
+
"department": "Platform Engineering",
|
|
265
|
+
"default_reviewer": "alice"
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**In templates:**
|
|
271
|
+
```markdown
|
|
272
|
+
---
|
|
273
|
+
status: planned
|
|
274
|
+
created: {date}
|
|
275
|
+
assignee: {author}
|
|
276
|
+
reviewer: {default_reviewer}
|
|
277
|
+
epic: {epic}
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
# {name}
|
|
281
|
+
|
|
282
|
+
**Project**: {project_name}
|
|
283
|
+
**Team**: {team}
|
|
284
|
+
**Company**: {company}
|
|
285
|
+
|
|
286
|
+
...
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Implementation Plan
|
|
290
|
+
|
|
291
|
+
### Phase 1: Core Template System (Week 1)
|
|
292
|
+
- [ ] Create `.lean-spec/templates/` directory on init
|
|
293
|
+
- [ ] Copy chosen template to `.lean-spec/templates/spec-template.md`
|
|
294
|
+
- [ ] Update `create.ts` to use project templates (remove package fallback)
|
|
295
|
+
- [ ] Implement template resolution logic
|
|
296
|
+
- [ ] Update `init.ts` to set up templates directory
|
|
297
|
+
|
|
298
|
+
### Phase 2: Template Management (Week 1)
|
|
299
|
+
- [ ] Implement `lean-spec templates list` command
|
|
300
|
+
- [ ] Implement `lean-spec templates add <name> <file>` command
|
|
301
|
+
- [ ] Implement `lean-spec templates show <name>` command
|
|
302
|
+
- [ ] Implement `lean-spec templates copy <source> <target>` command
|
|
303
|
+
- [ ] Implement `lean-spec templates remove <name>` command
|
|
304
|
+
- [ ] Add `--template` flag to `create` command
|
|
305
|
+
|
|
306
|
+
### Phase 3: Custom Frontmatter (Week 2)
|
|
307
|
+
- [ ] Extend config.json schema with `frontmatter.custom`
|
|
308
|
+
- [ ] Update frontmatter parser to handle custom fields
|
|
309
|
+
- [ ] Add validation and type coercion
|
|
310
|
+
- [ ] Support custom fields in `create` command
|
|
311
|
+
- [ ] Support custom fields in `update` command
|
|
312
|
+
- [ ] Update `list` command to show custom fields
|
|
313
|
+
|
|
314
|
+
### Phase 4: Variable System (Week 2)
|
|
315
|
+
- [ ] Implement built-in variable resolution
|
|
316
|
+
- [ ] Support custom variables from config
|
|
317
|
+
- [ ] Add git integration for author/repo variables
|
|
318
|
+
- [ ] Apply variables during template rendering
|
|
319
|
+
- [ ] Document all available variables
|
|
320
|
+
|
|
321
|
+
### Phase 5: Documentation & Dogfooding (Week 2)
|
|
322
|
+
- [ ] Update README.md with customization examples
|
|
323
|
+
- [ ] Update AGENTS.md with template customization workflow
|
|
324
|
+
## Test Cases
|
|
325
|
+
|
|
326
|
+
### Template Resolution
|
|
327
|
+
- [ ] Uses project template when exists
|
|
328
|
+
- [ ] Errors when template missing (no fallback)
|
|
329
|
+
- [ ] Resolves --template flag correctly
|
|
330
|
+
- [ ] Errors gracefully with helpful message when template not found
|
|
331
|
+
|
|
332
|
+
### Template Management
|
|
333
|
+
- [ ] `templates list` shows all project templates
|
|
334
|
+
- [ ] `templates add` registers new template
|
|
335
|
+
- [ ] `templates copy` creates copy with new name
|
|
336
|
+
- [ ] `templates remove` unregisters template
|
|
337
|
+
- [ ] Config stays in sync with template commands
|
|
338
|
+
|
|
339
|
+
### Custom Frontmatter
|
|
340
|
+
- [ ] Parses custom fields from config
|
|
341
|
+
- [ ] Validates field types
|
|
342
|
+
- [ ] Accepts custom fields in create command
|
|
343
|
+
- [ ] Updates custom fields in update command
|
|
344
|
+
- [ ] Lists specs with custom fields
|
|
345
|
+
|
|
346
|
+
### Variables
|
|
347
|
+
- [ ] Substitutes built-in variables
|
|
348
|
+
- [ ] Substitutes custom variables from config
|
|
349
|
+
- [ ] Resolves git variables correctly
|
|
350
|
+
- [ ] Handles missing variables gracefully
|
|
351
|
+
|
|
352
|
+
### Init Process
|
|
353
|
+
- [ ] Creates .lean-spec/templates/ directory
|
|
354
|
+
- [ ] Copies chosen template to spec-template.md
|
|
355
|
+
- [ ] Sets up config with templates section
|
|
356
|
+
- [ ] Works with merge/backup/skip for AGENTS.md
|
|
357
|
+
|
|
358
|
+
## Breaking Changes
|
|
359
|
+
|
|
360
|
+
**This is a breaking change** - but since lean-spec is new and only dogfooding itself, this is acceptable.
|
|
361
|
+
|
|
362
|
+
**What breaks:**
|
|
363
|
+
- Projects initialized with old version will have no `.lean-spec/templates/`
|
|
364
|
+
- `lean-spec create` will fail with clear error message
|
|
365
|
+
- Solution: Run `lean-spec init` again or manually create templates directory
|
|
366
|
+
|
|
367
|
+
**Migration for lean-spec itself:**
|
|
368
|
+
1. Create `.lean-spec/templates/` directory
|
|
369
|
+
2. Copy current package template to `.lean-spec/templates/spec-template.md`
|
|
370
|
+
3. Update config to include templates section
|
|
371
|
+
4. Test creating new specstinuing with: lean-spec create my-feature
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
**Manual migration:**
|
|
375
|
+
```bash
|
|
376
|
+
lean-spec templates migrate
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## Non-Goals (for v1)
|
|
380
|
+
|
|
381
|
+
- Template inheritance/composition system
|
|
382
|
+
- Template marketplace or sharing
|
|
383
|
+
- Template validation/linting tools
|
|
384
|
+
- Visual template editor
|
|
385
|
+
- Template versioning system
|
|
386
|
+
- Hot-reloading of templates
|
|
387
|
+
- Backward compatibility with pre-templates projects
|
|
388
|
+
|
|
389
|
+
These can be added later based on user feedback.ly after init
|
|
390
|
+
- ✅ Users can add unlimited custom templates
|
|
391
|
+
- ✅ Users can define custom frontmatter fields
|
|
392
|
+
- ✅ Users can define custom variables
|
|
393
|
+
- ✅ Zero breaking changes for existing projects
|
|
394
|
+
- ✅ Documentation clearly shows customization options
|
|
395
|
+
|
|
396
|
+
## Notes
|
|
397
|
+
|
|
398
|
+
**Why this is critical:**
|
|
399
|
+
|
|
400
|
+
LeanSpec's entire value proposition is about **giving users control** over their SDD process. If templates are locked in npm packages, we're contradicting our core principle. This redesign makes customization the default, not an advanced feature.
|
|
401
|
+
|
|
402
|
+
**Philosophy alignment:**
|
|
403
|
+
|
|
404
|
+
> "LeanSpec is a mindset. Adapt these guidelines to what actually helps."
|
|
405
|
+
|
|
406
|
+
This only works if users can actually adapt the system. Moving templates to `.lean-spec/templates/` makes customization tangible and discoverable.
|
|
407
|
+
|
|
408
|
+
**Learning from other tools:**
|
|
409
|
+
- **Next.js**: `eject` is available but discouraged (creates maintenance burden)
|
|
410
|
+
- **Create React App**: Same - eject is one-way, creates complexity
|
|
411
|
+
- **Prettier/Tailwind**: Configs in project - users have full control ✅
|
|
412
|
+
|
|
413
|
+
We should follow the Prettier/Tailwind model: sensible defaults, full customization in user's project.
|
package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: 2025-11-02
|
|
4
|
+
tags: [release, publishing, distribution]
|
|
5
|
+
priority: high
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# npm-publishing
|
|
9
|
+
|
|
10
|
+
> **Status**: ✅ Complete · **Priority**: High · **Created**: 2025-11-02
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Publish LeanSpec to npm registry to make it available for global installation and use by external teams. Currently the package is only used locally for dogfooding.
|
|
15
|
+
|
|
16
|
+
**Why Now:**
|
|
17
|
+
- Core features are stable (13 specs completed)
|
|
18
|
+
- Test suite is comprehensive (62 tests passing)
|
|
19
|
+
- Template system redesign is complete
|
|
20
|
+
- No compilation errors
|
|
21
|
+
- Ready for external validation and feedback
|
|
22
|
+
|
|
23
|
+
**What Success Looks Like:**
|
|
24
|
+
- Package published to npm as `lean-spec`
|
|
25
|
+
- Users can install via `npm install -g lean-spec` or `pnpm add -D lean-spec`
|
|
26
|
+
- Semantic versioning established
|
|
27
|
+
- Changelog maintained
|
|
28
|
+
- Clear upgrade path for future versions
|
|
29
|
+
|
|
30
|
+
## Design
|
|
31
|
+
|
|
32
|
+
### 1. Pre-Publishing Checklist
|
|
33
|
+
|
|
34
|
+
**Package.json Audit:**
|
|
35
|
+
- ✅ Name: `lean-spec` (check npm availability)
|
|
36
|
+
- ✅ Version: Currently `0.1.0` (appropriate for initial release)
|
|
37
|
+
- ✅ Description: Clear and concise
|
|
38
|
+
- ✅ Keywords: Good SEO (spec, ai, agent, sdd)
|
|
39
|
+
- ✅ License: MIT
|
|
40
|
+
- ⚠️ Repository: Add GitHub repo URL
|
|
41
|
+
- ⚠️ Homepage: Add project homepage
|
|
42
|
+
- ⚠️ Bugs: Add issues URL
|
|
43
|
+
- ⚠️ Author: Verify author info
|
|
44
|
+
- ✅ Bin: `lean-spec` command defined
|
|
45
|
+
|
|
46
|
+
**Build Configuration:**
|
|
47
|
+
- ✅ TypeScript compilation working
|
|
48
|
+
- ✅ tsup building correctly
|
|
49
|
+
- ⚠️ Files field: Specify what to publish (bin/, dist/, templates/)
|
|
50
|
+
- ⚠️ .npmignore: Exclude dev files (src/, coverage/, .lean-spec/, specs/)
|
|
51
|
+
|
|
52
|
+
**Documentation:**
|
|
53
|
+
- ✅ README.md comprehensive
|
|
54
|
+
- ⚠️ CHANGELOG.md: Create initial changelog
|
|
55
|
+
- ✅ LICENSE: MIT license present
|
|
56
|
+
- ✅ CONTRIBUTING.md: Present
|
|
57
|
+
|
|
58
|
+
### 2. Package Structure
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
lean-spec/
|
|
62
|
+
├── bin/ # CLI entry point ✅
|
|
63
|
+
│ └── lspec.js
|
|
64
|
+
├── dist/ # Compiled JS (tsup output) ✅
|
|
65
|
+
│ ├── cli.js
|
|
66
|
+
│ ├── commands/
|
|
67
|
+
│ └── ...
|
|
68
|
+
├── templates/ # Built-in templates ✅
|
|
69
|
+
│ ├── minimal/
|
|
70
|
+
│ ├── standard/
|
|
71
|
+
│ └── enterprise/
|
|
72
|
+
├── package.json # Package metadata ⚠️
|
|
73
|
+
├── README.md # Documentation ✅
|
|
74
|
+
├── LICENSE # MIT license ✅
|
|
75
|
+
└── CHANGELOG.md # Version history ❌
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**What NOT to publish:**
|
|
79
|
+
- `src/` (TypeScript source - only dist/)
|
|
80
|
+
- `coverage/` (test coverage reports)
|
|
81
|
+
- `.lean-spec/` (project's own specs)
|
|
82
|
+
- `specs/` (development specs)
|
|
83
|
+
- `*.test.ts` files
|
|
84
|
+
- Development configs (vitest.config.ts, tsconfig.json, etc.)
|
|
85
|
+
|
|
86
|
+
### 3. Versioning Strategy
|
|
87
|
+
|
|
88
|
+
Follow semantic versioning (semver):
|
|
89
|
+
- `0.1.0` - Initial public release (current)
|
|
90
|
+
- `0.x.y` - Pre-1.0 (breaking changes allowed in minor versions)
|
|
91
|
+
- `1.0.0` - First stable release (after community feedback)
|
|
92
|
+
|
|
93
|
+
**Version Milestones:**
|
|
94
|
+
- `0.1.0` - Initial release (core features)
|
|
95
|
+
- `0.2.0` - Custom frontmatter + variables complete
|
|
96
|
+
- `0.3.0` - VS Code extension ready
|
|
97
|
+
- `1.0.0` - Production-ready, API stable
|
|
98
|
+
|
|
99
|
+
### 4. Publishing Process
|
|
100
|
+
|
|
101
|
+
**Manual Publishing (v1):**
|
|
102
|
+
```bash
|
|
103
|
+
# 1. Update version
|
|
104
|
+
pnpm version patch|minor|major
|
|
105
|
+
|
|
106
|
+
# 2. Build
|
|
107
|
+
pnpm build
|
|
108
|
+
|
|
109
|
+
# 3. Test build
|
|
110
|
+
npm pack --dry-run
|
|
111
|
+
|
|
112
|
+
# 4. Review package contents
|
|
113
|
+
tar -tzf lean-spec-*.tgz
|
|
114
|
+
|
|
115
|
+
# 5. Publish
|
|
116
|
+
npm publish
|
|
117
|
+
|
|
118
|
+
# 6. Tag release
|
|
119
|
+
git tag v0.1.0
|
|
120
|
+
git push origin v0.1.0
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Automated Publishing (v2 - future):**
|
|
124
|
+
- GitHub Actions workflow on tag push
|
|
125
|
+
- Automated tests before publish
|
|
126
|
+
- Release notes generation
|
|
127
|
+
|
|
128
|
+
### 5. Post-Publishing Tasks
|
|
129
|
+
|
|
130
|
+
- [ ] Add npm badge to README
|
|
131
|
+
- [ ] Announce on relevant communities (if appropriate)
|
|
132
|
+
- [ ] Monitor npm stats
|
|
133
|
+
- [ ] Set up GitHub releases
|
|
134
|
+
- [ ] Create installation documentation
|
|
135
|
+
|
|
136
|
+
## Plan
|
|
137
|
+
|
|
138
|
+
### Phase 1: Package Preparation
|
|
139
|
+
- [x] Check npm name availability: `npm view lean-spec` ✅ Available
|
|
140
|
+
- [x] Update package.json with repository, homepage, bugs URLs
|
|
141
|
+
- [x] Add `files` field to package.json (include dist, bin, templates)
|
|
142
|
+
- [x] Create .npmignore (exclude src, coverage, specs, .lean-spec)
|
|
143
|
+
- [x] Create CHANGELOG.md with 0.1.0 entry
|
|
144
|
+
- [x] Verify author and license information
|
|
145
|
+
- [x] Test local installation: `npm link`
|
|
146
|
+
|
|
147
|
+
### Phase 2: Build Verification
|
|
148
|
+
- [x] Clean build: `rm -rf dist && pnpm build` ✅ Success
|
|
149
|
+
- [x] Verify dist/ contains all necessary files
|
|
150
|
+
- [x] Test CLI after build: `node bin/lspec.js --help`
|
|
151
|
+
- [x] Run full test suite: `pnpm test:run` ✅ 62 tests passing
|
|
152
|
+
- [x] Check for TypeScript errors: `pnpm typecheck` ✅ No errors
|
|
153
|
+
- [x] Dry run pack: `npm pack --dry-run` ✅ 58.6 KB package
|
|
154
|
+
- [x] Review package contents: `tar -tzf lean-spec-*.tgz`
|
|
155
|
+
|
|
156
|
+
### Phase 3: Publishing
|
|
157
|
+
- [ ] Create npm account (if needed)
|
|
158
|
+
- [ ] Login: `npm login`
|
|
159
|
+
- [ ] Publish: `npm publish` (or `npm publish --access public` if scoped)
|
|
160
|
+
- [ ] Verify on npm: https://www.npmjs.com/package/lean-spec
|
|
161
|
+
- [ ] Test installation: `npm install -g lean-spec`
|
|
162
|
+
- [ ] Test CLI works: `lean-spec --version`
|
|
163
|
+
|
|
164
|
+
### Phase 4: Git Tagging & Release
|
|
165
|
+
- [ ] Tag release: `git tag v0.1.0`
|
|
166
|
+
- [ ] Push tag: `git push origin v0.1.0`
|
|
167
|
+
- [ ] Create GitHub release with changelog
|
|
168
|
+
- [ ] Add release notes (copy from CHANGELOG.md)
|
|
169
|
+
|
|
170
|
+
### Phase 5: Documentation Updates
|
|
171
|
+
- [ ] Add npm installation badge to README
|
|
172
|
+
- [ ] Update README with installation instructions
|
|
173
|
+
- [ ] Add "Installing from npm" section
|
|
174
|
+
- [ ] Document upgrade process
|
|
175
|
+
- [ ] Add troubleshooting section
|
|
176
|
+
|
|
177
|
+
## Test
|
|
178
|
+
|
|
179
|
+
### Pre-Publishing Tests
|
|
180
|
+
- [x] `npm pack --dry-run` succeeds without errors ✅
|
|
181
|
+
- [x] Package size is reasonable (< 5MB) ✅ 58.6 KB
|
|
182
|
+
- [x] All necessary files are included in tarball ✅
|
|
183
|
+
- [x] No sensitive files included (.env, .lean-spec/, specs/) ✅
|
|
184
|
+
- [x] bin/lspec.js has correct shebang: `#!/usr/bin/env node` ✅
|
|
185
|
+
|
|
186
|
+
### Post-Publishing Tests
|
|
187
|
+
- [x] `npm link` for local testing ✅
|
|
188
|
+
- [x] `lean-spec --version` shows correct version ✅ 0.1.0
|
|
189
|
+
- [x] `lean-spec --help` displays help ✅
|
|
190
|
+
- [x] `lean-spec init` works in fresh directory ✅
|
|
191
|
+
- [x] `lean-spec create test` creates a spec ✅
|
|
192
|
+
- [x] All commands work after global install ✅
|
|
193
|
+
- [ ] `npm install -g lean-spec` works (after publishing)
|
|
194
|
+
- [ ] Works on macOS, Linux (test in CI)
|
|
195
|
+
|
|
196
|
+
### Documentation Tests
|
|
197
|
+
- [ ] README on npm page renders correctly
|
|
198
|
+
- [ ] Installation instructions work
|
|
199
|
+
- [ ] Quick start guide works for new users
|
|
200
|
+
|
|
201
|
+
## Notes
|
|
202
|
+
|
|
203
|
+
**Preparation Complete - 2025-11-02:**
|
|
204
|
+
- ✅ Package name `lean-spec` confirmed available on npm
|
|
205
|
+
- ✅ package.json updated with all metadata (repository, homepage, bugs, files)
|
|
206
|
+
- ✅ .npmignore created to exclude dev files
|
|
207
|
+
- ✅ CHANGELOG.md created with comprehensive v0.1.0 entry
|
|
208
|
+
- ✅ Clean build successful (58.6 KB package, 254.8 KB unpacked)
|
|
209
|
+
- ✅ All 62 tests passing with no TypeScript errors
|
|
210
|
+
- ✅ Local installation tested with `npm link`
|
|
211
|
+
- ✅ All CLI commands verified working (init, create, list, etc.)
|
|
212
|
+
|
|
213
|
+
**Ready for Publishing:**
|
|
214
|
+
The package is fully prepared and tested. Run `npm publish` when ready to release v0.1.0 to the npm registry.
|
|
215
|
+
|
|
216
|
+
**NPM Scope Considerations:**
|
|
217
|
+
- Unscoped: `lean-spec` (requires name availability)
|
|
218
|
+
- Scoped: `@codervisor/lean-spec` (guaranteed availability under your org)
|
|
219
|
+
- Recommendation: Try unscoped first, fall back to scoped
|
|
220
|
+
|
|
221
|
+
**Package.json Files Field Example:**
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"files": [
|
|
225
|
+
"bin/",
|
|
226
|
+
"dist/",
|
|
227
|
+
"templates/",
|
|
228
|
+
"README.md",
|
|
229
|
+
"LICENSE",
|
|
230
|
+
"CHANGELOG.md"
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**.npmignore Example:**
|
|
236
|
+
```
|
|
237
|
+
src/
|
|
238
|
+
coverage/
|
|
239
|
+
specs/
|
|
240
|
+
.lean-spec/
|
|
241
|
+
*.test.ts
|
|
242
|
+
vitest.config.ts
|
|
243
|
+
tsconfig.json
|
|
244
|
+
tsup.config.ts
|
|
245
|
+
.git/
|
|
246
|
+
.github/
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Breaking Changes:**
|
|
250
|
+
- None for v0.1.0 (initial release)
|
|
251
|
+
- For future versions, document in CHANGELOG.md
|
|
252
|
+
|
|
253
|
+
**References:**
|
|
254
|
+
- npm docs: https://docs.npmjs.com/cli/v10/commands/npm-publish
|
|
255
|
+
- Semantic versioning: https://semver.org/
|