@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
package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: complete
|
|
3
|
+
created: '2025-11-02'
|
|
4
|
+
tags:
|
|
5
|
+
- enhancement
|
|
6
|
+
- frontmatter
|
|
7
|
+
- customization
|
|
8
|
+
priority: high
|
|
9
|
+
milestone: v0.2.0
|
|
10
|
+
completed: '2025-11-04'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# complete-custom-frontmatter
|
|
14
|
+
|
|
15
|
+
> **Status**: ✅ Complete · **Priority**: High · **Created**: 2025-11-02 · **Tags**: enhancement, frontmatter, customization
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Complete the custom frontmatter and variable substitution system outlined in spec 001-custom-spec-templates. The template system foundation is done, but the advanced customization features (custom fields, variables) are not yet implemented.
|
|
20
|
+
|
|
21
|
+
**Current State:**
|
|
22
|
+
- ✅ Templates moved to `.lean-spec/templates/`
|
|
23
|
+
- ✅ Template management commands implemented
|
|
24
|
+
- ❌ Custom frontmatter fields from config not implemented
|
|
25
|
+
- ❌ Variable substitution system not implemented
|
|
26
|
+
- ❌ Git-based variables not implemented
|
|
27
|
+
|
|
28
|
+
**Why Now:**
|
|
29
|
+
This was the core promise of the customization-first redesign. Without these features, users can customize templates manually but lose metadata filtering and dynamic content generation.
|
|
30
|
+
|
|
31
|
+
## Design
|
|
32
|
+
|
|
33
|
+
### 1. Custom Frontmatter Fields
|
|
34
|
+
|
|
35
|
+
Extend `.lean-spec/config.json`:
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"frontmatter": {
|
|
39
|
+
"required": ["status", "created"],
|
|
40
|
+
"optional": ["tags", "priority", "assignee"],
|
|
41
|
+
"custom": {
|
|
42
|
+
"epic": "string",
|
|
43
|
+
"sprint": "number",
|
|
44
|
+
"estimate": "string",
|
|
45
|
+
"issue": "string",
|
|
46
|
+
"reviewer": "string"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Implementation:**
|
|
53
|
+
- Parse `custom` fields from config
|
|
54
|
+
- Validate types during spec creation/update
|
|
55
|
+
- Support in `list` and `search` commands for filtering
|
|
56
|
+
- Display custom fields in output
|
|
57
|
+
|
|
58
|
+
### 2. Variable Substitution System
|
|
59
|
+
|
|
60
|
+
Support variables in templates:
|
|
61
|
+
```markdown
|
|
62
|
+
---
|
|
63
|
+
status: planned
|
|
64
|
+
created: {date}
|
|
65
|
+
assignee: {author}
|
|
66
|
+
reviewer: {default_reviewer}
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
# {name}
|
|
70
|
+
|
|
71
|
+
**Project**: {project_name}
|
|
72
|
+
**Author**: {git_user}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Built-in Variables:**
|
|
76
|
+
- `{name}` - Spec name
|
|
77
|
+
- `{date}` - Creation date (ISO format)
|
|
78
|
+
- `{project_name}` - From package.json or config
|
|
79
|
+
- `{author}` - From git config user.name
|
|
80
|
+
- `{git_user}` - Git username
|
|
81
|
+
- `{git_repo}` - Repository name
|
|
82
|
+
|
|
83
|
+
**Custom Variables (from config):**
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"variables": {
|
|
87
|
+
"team": "Platform Engineering",
|
|
88
|
+
"default_reviewer": "alice",
|
|
89
|
+
"company": "Acme Corp"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 3. Git Integration
|
|
95
|
+
|
|
96
|
+
Add utility to extract git information:
|
|
97
|
+
```typescript
|
|
98
|
+
async function getGitInfo(): Promise<{
|
|
99
|
+
user: string;
|
|
100
|
+
email: string;
|
|
101
|
+
repo: string;
|
|
102
|
+
}> {
|
|
103
|
+
// Execute git commands to get user.name, user.email, remote.origin.url
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Plan
|
|
108
|
+
|
|
109
|
+
### Phase 1: Custom Frontmatter (Week 1)
|
|
110
|
+
- [ ] Update config schema with `frontmatter.custom` support
|
|
111
|
+
- [ ] Extend frontmatter parser to handle custom fields
|
|
112
|
+
- [ ] Add type validation and coercion (string, number, boolean, array)
|
|
113
|
+
- [ ] Update `create` command to accept custom fields via flags
|
|
114
|
+
- [ ] Update `update` command to modify custom fields
|
|
115
|
+
- [ ] Update `list` command to display custom fields
|
|
116
|
+
- [ ] Update `search` command to filter by custom fields
|
|
117
|
+
- [ ] Add tests for custom frontmatter parsing and validation
|
|
118
|
+
|
|
119
|
+
### Phase 2: Variable System (Week 1)
|
|
120
|
+
- [ ] Create variable resolver utility
|
|
121
|
+
- [ ] Implement built-in variables (`name`, `date`, `project_name`)
|
|
122
|
+
- [ ] Add git integration for `author`, `git_user`, `git_repo`
|
|
123
|
+
- [ ] Support custom variables from config
|
|
124
|
+
- [ ] Apply variable substitution during template rendering
|
|
125
|
+
- [ ] Add tests for variable resolution
|
|
126
|
+
- [ ] Handle missing variables gracefully (warning, not error)
|
|
127
|
+
|
|
128
|
+
### Phase 3: Integration & Polish (Week 1)
|
|
129
|
+
- [ ] Test custom frontmatter + variables together
|
|
130
|
+
- [ ] Update documentation (README, examples)
|
|
131
|
+
- [ ] Update AGENTS.md with customization instructions
|
|
132
|
+
- [ ] Create example configs for common use cases
|
|
133
|
+
- [ ] Dogfood on lean-spec itself (add epic, issue fields)
|
|
134
|
+
- [ ] Update init templates to show example custom fields
|
|
135
|
+
|
|
136
|
+
## Test
|
|
137
|
+
|
|
138
|
+
### Custom Frontmatter
|
|
139
|
+
- [ ] Parse custom fields from config correctly
|
|
140
|
+
- [ ] Validate field types (reject invalid types)
|
|
141
|
+
- [ ] Accept custom fields in `create --epic=FOO-123`
|
|
142
|
+
- [ ] Update custom fields via `update --issue=GH-456`
|
|
143
|
+
- [ ] Filter by custom fields in `list --epic=FOO-123`
|
|
144
|
+
- [ ] Display custom fields in list output
|
|
145
|
+
- [ ] Handle missing custom fields gracefully
|
|
146
|
+
|
|
147
|
+
### Variable Substitution
|
|
148
|
+
- [ ] Substitute `{name}` correctly in templates
|
|
149
|
+
- [ ] Substitute `{date}` with ISO format
|
|
150
|
+
- [ ] Load `{project_name}` from package.json
|
|
151
|
+
- [ ] Extract `{author}` from git config
|
|
152
|
+
- [ ] Extract `{git_repo}` from git remote
|
|
153
|
+
- [ ] Apply custom variables from config
|
|
154
|
+
- [ ] Handle missing variables without crashing
|
|
155
|
+
- [ ] Nested variable references work (or explicitly not supported)
|
|
156
|
+
|
|
157
|
+
### Integration
|
|
158
|
+
- [ ] Custom frontmatter + variables work together
|
|
159
|
+
- [ ] Init process creates example config with custom fields
|
|
160
|
+
- [ ] Works with all templates (minimal, standard, enterprise)
|
|
161
|
+
|
|
162
|
+
## Notes
|
|
163
|
+
|
|
164
|
+
**Dependencies:**
|
|
165
|
+
- Builds on spec 001-custom-spec-templates foundation
|
|
166
|
+
- Requires no changes to core architecture
|
|
167
|
+
|
|
168
|
+
**Breaking Changes:**
|
|
169
|
+
- None - this is purely additive
|
|
170
|
+
|
|
171
|
+
**Reference Implementation:**
|
|
172
|
+
See spec 001-custom-spec-templates Phase 3 & 4 for detailed design.
|
|
173
|
+
|
|
174
|
+
**Priority Justification:**
|
|
175
|
+
High priority because this completes the customization promise. Without it, the template system redesign feels incomplete.
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: planned
|
|
3
|
+
created: '2025-11-02'
|
|
4
|
+
tags: ["feature","ci","automation"]
|
|
5
|
+
priority: low
|
|
6
|
+
depends_on:
|
|
7
|
+
- 067-monorepo-core-extraction
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# github-action
|
|
11
|
+
|
|
12
|
+
> **Status**: 📅 Planned · **Priority**: Medium · **Created**: 2025-11-02
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Create a GitHub Action to automate LeanSpec workflows in CI/CD pipelines. Enable teams to validate specs, check status, and enforce spec requirements as part of their development process.
|
|
17
|
+
|
|
18
|
+
**Use Cases:**
|
|
19
|
+
1. **Spec Validation** - Ensure all specs have required frontmatter
|
|
20
|
+
2. **Status Checks** - Block PRs if planned specs aren't complete
|
|
21
|
+
3. **Documentation Generation** - Auto-generate spec summaries in PR comments
|
|
22
|
+
4. **Metrics Collection** - Track spec completion over time
|
|
23
|
+
5. **Template Compliance** - Validate specs follow template structure
|
|
24
|
+
|
|
25
|
+
**Why Now:**
|
|
26
|
+
- Core CLI is stable and tested
|
|
27
|
+
- Common use case for teams adopting LeanSpec
|
|
28
|
+
- Differentiator for AI-powered development workflows
|
|
29
|
+
|
|
30
|
+
## Design
|
|
31
|
+
|
|
32
|
+
### 1. Action Types
|
|
33
|
+
|
|
34
|
+
**Option A: Single Flexible Action**
|
|
35
|
+
```yaml
|
|
36
|
+
- uses: codervisor/lspec-action@v1
|
|
37
|
+
with:
|
|
38
|
+
command: validate # or: stats, board, search, check-status
|
|
39
|
+
filters: '--status=in-progress'
|
|
40
|
+
fail-on-error: true
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Option B: Multiple Specific Actions**
|
|
44
|
+
```yaml
|
|
45
|
+
- uses: codervisor/lspec-validate@v1
|
|
46
|
+
- uses: codervisor/lspec-stats@v1
|
|
47
|
+
- uses: codervisor/lspec-check-status@v1
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Recommendation**: Option A (single flexible action) for v1, easier to maintain.
|
|
51
|
+
|
|
52
|
+
### 2. Core Features
|
|
53
|
+
|
|
54
|
+
**1. Spec Validation**
|
|
55
|
+
```yaml
|
|
56
|
+
- uses: codervisor/lspec-action@v1
|
|
57
|
+
with:
|
|
58
|
+
command: validate
|
|
59
|
+
rules: |
|
|
60
|
+
- required: [status, created]
|
|
61
|
+
- no-empty-sections: true
|
|
62
|
+
- max-age-days: 90
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**2. Status Checks**
|
|
66
|
+
```yaml
|
|
67
|
+
- uses: codervisor/lspec-action@v1
|
|
68
|
+
with:
|
|
69
|
+
command: check-status
|
|
70
|
+
fail-if: 'in-progress'
|
|
71
|
+
message: 'Cannot merge with in-progress specs'
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**3. PR Comments**
|
|
75
|
+
```yaml
|
|
76
|
+
- uses: codervisor/lspec-action@v1
|
|
77
|
+
with:
|
|
78
|
+
command: stats
|
|
79
|
+
output: pr-comment
|
|
80
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**4. Metrics Export**
|
|
84
|
+
```yaml
|
|
85
|
+
- uses: codervisor/lspec-action@v1
|
|
86
|
+
with:
|
|
87
|
+
command: export-metrics
|
|
88
|
+
format: json
|
|
89
|
+
output-file: specs-metrics.json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 3. Action Structure
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
lspec-action/
|
|
96
|
+
├── action.yml # Action metadata
|
|
97
|
+
├── dist/
|
|
98
|
+
│ └── index.js # Bundled action code (ncc)
|
|
99
|
+
├── src/
|
|
100
|
+
│ ├── main.ts # Entry point
|
|
101
|
+
│ ├── commands/ # Command implementations
|
|
102
|
+
│ │ ├── validate.ts
|
|
103
|
+
│ │ ├── check-status.ts
|
|
104
|
+
│ │ ├── stats.ts
|
|
105
|
+
│ │ └── export.ts
|
|
106
|
+
│ └── utils/
|
|
107
|
+
│ ├── github.ts # GitHub API helpers
|
|
108
|
+
│ └── formatting.ts
|
|
109
|
+
├── package.json
|
|
110
|
+
├── tsconfig.json
|
|
111
|
+
└── README.md
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 4. Example Workflows
|
|
115
|
+
|
|
116
|
+
**Validate on PR:**
|
|
117
|
+
```yaml
|
|
118
|
+
name: Validate Specs
|
|
119
|
+
on: pull_request
|
|
120
|
+
|
|
121
|
+
jobs:
|
|
122
|
+
validate:
|
|
123
|
+
runs-on: ubuntu-latest
|
|
124
|
+
steps:
|
|
125
|
+
- uses: actions/checkout@v4
|
|
126
|
+
- uses: codervisor/lspec-action@v1
|
|
127
|
+
with:
|
|
128
|
+
command: validate
|
|
129
|
+
fail-on-error: true
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Block Merge with In-Progress Specs:**
|
|
133
|
+
```yaml
|
|
134
|
+
name: Check Spec Status
|
|
135
|
+
on: pull_request
|
|
136
|
+
|
|
137
|
+
jobs:
|
|
138
|
+
check-status:
|
|
139
|
+
runs-on: ubuntu-latest
|
|
140
|
+
steps:
|
|
141
|
+
- uses: actions/checkout@v4
|
|
142
|
+
- uses: codervisor/lspec-action@v1
|
|
143
|
+
with:
|
|
144
|
+
command: check-status
|
|
145
|
+
allow-status: 'planned,complete'
|
|
146
|
+
fail-if: 'in-progress'
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Post Stats to PR:**
|
|
150
|
+
```yaml
|
|
151
|
+
name: Spec Stats
|
|
152
|
+
on: pull_request
|
|
153
|
+
|
|
154
|
+
jobs:
|
|
155
|
+
stats:
|
|
156
|
+
runs-on: ubuntu-latest
|
|
157
|
+
steps:
|
|
158
|
+
- uses: actions/checkout@v4
|
|
159
|
+
- uses: codervisor/lspec-action@v1
|
|
160
|
+
with:
|
|
161
|
+
command: stats
|
|
162
|
+
output: pr-comment
|
|
163
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 5. Action Inputs
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
inputs:
|
|
170
|
+
command:
|
|
171
|
+
description: 'Command to run (validate, check-status, stats, export-metrics)'
|
|
172
|
+
required: true
|
|
173
|
+
|
|
174
|
+
fail-on-error:
|
|
175
|
+
description: 'Fail action if validation fails'
|
|
176
|
+
default: 'true'
|
|
177
|
+
|
|
178
|
+
filters:
|
|
179
|
+
description: 'CLI filter flags (--status, --tag, --priority)'
|
|
180
|
+
required: false
|
|
181
|
+
|
|
182
|
+
output:
|
|
183
|
+
description: 'Output type (console, pr-comment, file, json)'
|
|
184
|
+
default: 'console'
|
|
185
|
+
|
|
186
|
+
output-file:
|
|
187
|
+
description: 'Output file path (for file/json output)'
|
|
188
|
+
required: false
|
|
189
|
+
|
|
190
|
+
github-token:
|
|
191
|
+
description: 'GitHub token for PR comments'
|
|
192
|
+
required: false
|
|
193
|
+
|
|
194
|
+
working-directory:
|
|
195
|
+
description: 'Directory containing .lean-spec/ (defaults to repo root)'
|
|
196
|
+
default: '.'
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### 6. Action Outputs
|
|
200
|
+
|
|
201
|
+
```yaml
|
|
202
|
+
outputs:
|
|
203
|
+
result:
|
|
204
|
+
description: 'Command result (success/failure)'
|
|
205
|
+
|
|
206
|
+
stats:
|
|
207
|
+
description: 'Spec statistics (JSON)'
|
|
208
|
+
|
|
209
|
+
validation-errors:
|
|
210
|
+
description: 'List of validation errors (JSON array)'
|
|
211
|
+
|
|
212
|
+
comment-url:
|
|
213
|
+
description: 'URL of posted PR comment'
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Plan
|
|
217
|
+
|
|
218
|
+
### Phase 1: Setup & Core Infrastructure
|
|
219
|
+
- [ ] Create `lspec-action` repository
|
|
220
|
+
- [ ] Set up TypeScript build with @vercel/ncc for bundling
|
|
221
|
+
- [ ] Create action.yml with inputs/outputs
|
|
222
|
+
- [ ] Set up GitHub Actions workflow for testing action itself
|
|
223
|
+
- [ ] Install lean-spec as dependency
|
|
224
|
+
|
|
225
|
+
### Phase 2: Core Commands
|
|
226
|
+
- [ ] Implement `validate` command (check frontmatter, structure)
|
|
227
|
+
- [ ] Implement `check-status` command (fail on specific statuses)
|
|
228
|
+
- [ ] Implement `stats` command (gather metrics)
|
|
229
|
+
- [ ] Implement `export-metrics` command (JSON output)
|
|
230
|
+
- [ ] Add formatting utilities for console/PR output
|
|
231
|
+
|
|
232
|
+
### Phase 3: GitHub Integration
|
|
233
|
+
- [ ] Add PR comment posting (using @actions/github)
|
|
234
|
+
- [ ] Add commit status updates
|
|
235
|
+
- [ ] Add annotations for validation errors
|
|
236
|
+
- [ ] Test with sample repository
|
|
237
|
+
|
|
238
|
+
### Phase 4: Documentation & Examples
|
|
239
|
+
- [ ] Write comprehensive README
|
|
240
|
+
- [ ] Add example workflows for common use cases
|
|
241
|
+
- [ ] Create action marketplace listing
|
|
242
|
+
- [ ] Document all inputs/outputs
|
|
243
|
+
|
|
244
|
+
### Phase 5: Publishing
|
|
245
|
+
- [ ] Tag v1.0.0 release
|
|
246
|
+
- [ ] Publish to GitHub Marketplace
|
|
247
|
+
- [ ] Link from lean-spec README
|
|
248
|
+
- [ ] Create demo repository showing usage
|
|
249
|
+
|
|
250
|
+
## Test
|
|
251
|
+
|
|
252
|
+
### Action Tests
|
|
253
|
+
- [ ] Action builds and bundles correctly
|
|
254
|
+
- [ ] All commands execute without errors
|
|
255
|
+
- [ ] Exit codes are correct (0 for success, 1 for failure)
|
|
256
|
+
- [ ] Inputs are parsed correctly
|
|
257
|
+
- [ ] Outputs are set correctly
|
|
258
|
+
|
|
259
|
+
### Command Tests
|
|
260
|
+
- [ ] `validate` detects missing frontmatter
|
|
261
|
+
- [ ] `validate` passes for valid specs
|
|
262
|
+
- [ ] `check-status` fails on disallowed statuses
|
|
263
|
+
- [ ] `stats` generates correct metrics
|
|
264
|
+
- [ ] `export-metrics` produces valid JSON
|
|
265
|
+
|
|
266
|
+
### GitHub Integration Tests
|
|
267
|
+
- [ ] PR comments are posted correctly
|
|
268
|
+
- [ ] Comments include formatted tables
|
|
269
|
+
- [ ] Annotations appear on correct files/lines
|
|
270
|
+
- [ ] Works with GITHUB_TOKEN
|
|
271
|
+
|
|
272
|
+
### End-to-End Tests
|
|
273
|
+
- [ ] Run action in test repository
|
|
274
|
+
- [ ] Validate specs workflow works
|
|
275
|
+
- [ ] PR comment workflow works
|
|
276
|
+
- [ ] Metrics export workflow works
|
|
277
|
+
|
|
278
|
+
## Notes
|
|
279
|
+
|
|
280
|
+
**Dependencies:**
|
|
281
|
+
- lean-spec CLI (core dependency)
|
|
282
|
+
- @actions/core (GitHub Actions SDK)
|
|
283
|
+
- @actions/github (GitHub API)
|
|
284
|
+
- @vercel/ncc (bundle for distribution)
|
|
285
|
+
|
|
286
|
+
**Marketplace Listing:**
|
|
287
|
+
- Name: "LeanSpec Action"
|
|
288
|
+
- Description: "Validate and manage LeanSpec documents in CI/CD"
|
|
289
|
+
- Categories: Code Quality, Continuous Integration
|
|
290
|
+
- Icon: 📋 or 📝
|
|
291
|
+
- Color: Blue
|
|
292
|
+
|
|
293
|
+
**Future Enhancements:**
|
|
294
|
+
- Spec coverage reports (% of code with specs)
|
|
295
|
+
- Spec drift detection (specs out of sync with code)
|
|
296
|
+
- Auto-create specs from PR descriptions
|
|
297
|
+
- Integration with Linear, Jira for issue linking
|
|
298
|
+
- Spec dependency graph visualization in PR
|
|
299
|
+
|
|
300
|
+
**Alternative: Reusable Workflow**
|
|
301
|
+
Instead of GitHub Action, could provide reusable workflow:
|
|
302
|
+
```yaml
|
|
303
|
+
# .github/workflows/lspec-validate.yml
|
|
304
|
+
on:
|
|
305
|
+
workflow_call:
|
|
306
|
+
inputs:
|
|
307
|
+
command:
|
|
308
|
+
required: true
|
|
309
|
+
type: string
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
But GitHub Action is more flexible and easier for users to adopt.
|
|
313
|
+
|
|
314
|
+
**References:**
|
|
315
|
+
- GitHub Actions docs: https://docs.github.com/en/actions
|
|
316
|
+
- Action toolkit: https://github.com/actions/toolkit
|
|
317
|
+
- Marketplace: https://github.com/marketplace?type=actions
|