@zigrivers/scaffold 2.1.0
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/LICENSE +21 -0
- package/README.md +477 -0
- package/dist/cli/commands/adopt.d.ts +12 -0
- package/dist/cli/commands/adopt.d.ts.map +1 -0
- package/dist/cli/commands/adopt.js +107 -0
- package/dist/cli/commands/adopt.js.map +1 -0
- package/dist/cli/commands/adopt.test.d.ts +2 -0
- package/dist/cli/commands/adopt.test.d.ts.map +1 -0
- package/dist/cli/commands/adopt.test.js +277 -0
- package/dist/cli/commands/adopt.test.js.map +1 -0
- package/dist/cli/commands/build.d.ts +12 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +105 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/build.test.d.ts +2 -0
- package/dist/cli/commands/build.test.d.ts.map +1 -0
- package/dist/cli/commands/build.test.js +272 -0
- package/dist/cli/commands/build.test.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +14 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +102 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/dashboard.test.d.ts +2 -0
- package/dist/cli/commands/dashboard.test.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.test.js +142 -0
- package/dist/cli/commands/dashboard.test.js.map +1 -0
- package/dist/cli/commands/decisions.d.ts +13 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -0
- package/dist/cli/commands/decisions.js +62 -0
- package/dist/cli/commands/decisions.js.map +1 -0
- package/dist/cli/commands/decisions.test.d.ts +2 -0
- package/dist/cli/commands/decisions.test.d.ts.map +1 -0
- package/dist/cli/commands/decisions.test.js +154 -0
- package/dist/cli/commands/decisions.test.js.map +1 -0
- package/dist/cli/commands/info.d.ts +12 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/info.js +110 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/info.test.d.ts +2 -0
- package/dist/cli/commands/info.test.d.ts.map +1 -0
- package/dist/cli/commands/info.test.js +392 -0
- package/dist/cli/commands/info.test.js.map +1 -0
- package/dist/cli/commands/init.d.ts +13 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +46 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/init.test.d.ts +2 -0
- package/dist/cli/commands/init.test.d.ts.map +1 -0
- package/dist/cli/commands/init.test.js +156 -0
- package/dist/cli/commands/init.test.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +4 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +346 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/knowledge.test.d.ts +2 -0
- package/dist/cli/commands/knowledge.test.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.test.js +293 -0
- package/dist/cli/commands/knowledge.test.js.map +1 -0
- package/dist/cli/commands/list.d.ts +12 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +73 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/list.test.d.ts +2 -0
- package/dist/cli/commands/list.test.d.ts.map +1 -0
- package/dist/cli/commands/list.test.js +166 -0
- package/dist/cli/commands/list.test.js.map +1 -0
- package/dist/cli/commands/next.d.ts +12 -0
- package/dist/cli/commands/next.d.ts.map +1 -0
- package/dist/cli/commands/next.js +75 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/next.test.d.ts +2 -0
- package/dist/cli/commands/next.test.d.ts.map +1 -0
- package/dist/cli/commands/next.test.js +236 -0
- package/dist/cli/commands/next.test.js.map +1 -0
- package/dist/cli/commands/reset.d.ts +13 -0
- package/dist/cli/commands/reset.d.ts.map +1 -0
- package/dist/cli/commands/reset.js +105 -0
- package/dist/cli/commands/reset.js.map +1 -0
- package/dist/cli/commands/reset.test.d.ts +2 -0
- package/dist/cli/commands/reset.test.d.ts.map +1 -0
- package/dist/cli/commands/reset.test.js +211 -0
- package/dist/cli/commands/reset.test.js.map +1 -0
- package/dist/cli/commands/run.d.ts +14 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +379 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/run.test.d.ts +2 -0
- package/dist/cli/commands/run.test.d.ts.map +1 -0
- package/dist/cli/commands/run.test.js +535 -0
- package/dist/cli/commands/run.test.js.map +1 -0
- package/dist/cli/commands/skip.d.ts +13 -0
- package/dist/cli/commands/skip.d.ts.map +1 -0
- package/dist/cli/commands/skip.js +123 -0
- package/dist/cli/commands/skip.js.map +1 -0
- package/dist/cli/commands/skip.test.d.ts +2 -0
- package/dist/cli/commands/skip.test.d.ts.map +1 -0
- package/dist/cli/commands/skip.test.js +339 -0
- package/dist/cli/commands/skip.test.js.map +1 -0
- package/dist/cli/commands/status.d.ts +12 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +79 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/status.test.d.ts +2 -0
- package/dist/cli/commands/status.test.d.ts.map +1 -0
- package/dist/cli/commands/status.test.js +245 -0
- package/dist/cli/commands/status.test.js.map +1 -0
- package/dist/cli/commands/update.d.ts +11 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +159 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/update.test.d.ts +2 -0
- package/dist/cli/commands/update.test.d.ts.map +1 -0
- package/dist/cli/commands/update.test.js +140 -0
- package/dist/cli/commands/update.test.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +12 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +65 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/validate.test.d.ts +2 -0
- package/dist/cli/commands/validate.test.d.ts.map +1 -0
- package/dist/cli/commands/validate.test.js +159 -0
- package/dist/cli/commands/validate.test.js.map +1 -0
- package/dist/cli/commands/version.d.ts +13 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +89 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/version.test.d.ts +2 -0
- package/dist/cli/commands/version.test.d.ts.map +1 -0
- package/dist/cli/commands/version.test.js +63 -0
- package/dist/cli/commands/version.test.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +72 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.test.d.ts +2 -0
- package/dist/cli/index.test.d.ts.map +1 -0
- package/dist/cli/index.test.js +8 -0
- package/dist/cli/index.test.js.map +1 -0
- package/dist/cli/middleware/output-mode.d.ts +21 -0
- package/dist/cli/middleware/output-mode.d.ts.map +1 -0
- package/dist/cli/middleware/output-mode.js +27 -0
- package/dist/cli/middleware/output-mode.js.map +1 -0
- package/dist/cli/middleware/output-mode.test.d.ts +2 -0
- package/dist/cli/middleware/output-mode.test.d.ts.map +1 -0
- package/dist/cli/middleware/output-mode.test.js +41 -0
- package/dist/cli/middleware/output-mode.test.js.map +1 -0
- package/dist/cli/middleware/project-root.d.ts +21 -0
- package/dist/cli/middleware/project-root.d.ts.map +1 -0
- package/dist/cli/middleware/project-root.js +54 -0
- package/dist/cli/middleware/project-root.js.map +1 -0
- package/dist/cli/middleware/project-root.test.d.ts +2 -0
- package/dist/cli/middleware/project-root.test.d.ts.map +1 -0
- package/dist/cli/middleware/project-root.test.js +112 -0
- package/dist/cli/middleware/project-root.test.js.map +1 -0
- package/dist/cli/output/auto.d.ts +18 -0
- package/dist/cli/output/auto.d.ts.map +1 -0
- package/dist/cli/output/auto.js +43 -0
- package/dist/cli/output/auto.js.map +1 -0
- package/dist/cli/output/context.d.ts +19 -0
- package/dist/cli/output/context.d.ts.map +1 -0
- package/dist/cli/output/context.js +15 -0
- package/dist/cli/output/context.js.map +1 -0
- package/dist/cli/output/context.test.d.ts +2 -0
- package/dist/cli/output/context.test.d.ts.map +1 -0
- package/dist/cli/output/context.test.js +335 -0
- package/dist/cli/output/context.test.js.map +1 -0
- package/dist/cli/output/error-display.d.ts +31 -0
- package/dist/cli/output/error-display.d.ts.map +1 -0
- package/dist/cli/output/error-display.js +79 -0
- package/dist/cli/output/error-display.js.map +1 -0
- package/dist/cli/output/error-display.test.d.ts +2 -0
- package/dist/cli/output/error-display.test.d.ts.map +1 -0
- package/dist/cli/output/error-display.test.js +230 -0
- package/dist/cli/output/error-display.test.js.map +1 -0
- package/dist/cli/output/interactive.d.ts +22 -0
- package/dist/cli/output/interactive.d.ts.map +1 -0
- package/dist/cli/output/interactive.js +126 -0
- package/dist/cli/output/interactive.js.map +1 -0
- package/dist/cli/output/json.d.ts +17 -0
- package/dist/cli/output/json.d.ts.map +1 -0
- package/dist/cli/output/json.js +62 -0
- package/dist/cli/output/json.js.map +1 -0
- package/dist/cli/types.d.ts +11 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/config/loader.d.ts +22 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +159 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/loader.test.d.ts +2 -0
- package/dist/config/loader.test.d.ts.map +1 -0
- package/dist/config/loader.test.js +226 -0
- package/dist/config/loader.test.js.map +1 -0
- package/dist/config/migration.d.ts +15 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +39 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/migration.test.d.ts +2 -0
- package/dist/config/migration.test.d.ts.map +1 -0
- package/dist/config/migration.test.js +44 -0
- package/dist/config/migration.test.js.map +1 -0
- package/dist/config/schema.d.ts +121 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +22 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/schema.test.d.ts +2 -0
- package/dist/config/schema.test.d.ts.map +1 -0
- package/dist/config/schema.test.js +126 -0
- package/dist/config/schema.test.js.map +1 -0
- package/dist/core/adapters/adapter.d.ts +64 -0
- package/dist/core/adapters/adapter.d.ts.map +1 -0
- package/dist/core/adapters/adapter.js +25 -0
- package/dist/core/adapters/adapter.js.map +1 -0
- package/dist/core/adapters/adapter.test.d.ts +2 -0
- package/dist/core/adapters/adapter.test.d.ts.map +1 -0
- package/dist/core/adapters/adapter.test.js +175 -0
- package/dist/core/adapters/adapter.test.js.map +1 -0
- package/dist/core/adapters/claude-code.d.ts +9 -0
- package/dist/core/adapters/claude-code.d.ts.map +1 -0
- package/dist/core/adapters/claude-code.js +34 -0
- package/dist/core/adapters/claude-code.js.map +1 -0
- package/dist/core/adapters/claude-code.test.d.ts +2 -0
- package/dist/core/adapters/claude-code.test.d.ts.map +1 -0
- package/dist/core/adapters/claude-code.test.js +100 -0
- package/dist/core/adapters/claude-code.test.js.map +1 -0
- package/dist/core/adapters/codex.d.ts +10 -0
- package/dist/core/adapters/codex.d.ts.map +1 -0
- package/dist/core/adapters/codex.js +61 -0
- package/dist/core/adapters/codex.js.map +1 -0
- package/dist/core/adapters/codex.test.d.ts +2 -0
- package/dist/core/adapters/codex.test.d.ts.map +1 -0
- package/dist/core/adapters/codex.test.js +122 -0
- package/dist/core/adapters/codex.test.js.map +1 -0
- package/dist/core/adapters/universal.d.ts +10 -0
- package/dist/core/adapters/universal.d.ts.map +1 -0
- package/dist/core/adapters/universal.js +45 -0
- package/dist/core/adapters/universal.js.map +1 -0
- package/dist/core/adapters/universal.test.d.ts +2 -0
- package/dist/core/adapters/universal.test.d.ts.map +1 -0
- package/dist/core/adapters/universal.test.js +121 -0
- package/dist/core/adapters/universal.test.js.map +1 -0
- package/dist/core/assembly/context-gatherer.d.ts +17 -0
- package/dist/core/assembly/context-gatherer.d.ts.map +1 -0
- package/dist/core/assembly/context-gatherer.js +49 -0
- package/dist/core/assembly/context-gatherer.js.map +1 -0
- package/dist/core/assembly/context-gatherer.test.d.ts +2 -0
- package/dist/core/assembly/context-gatherer.test.d.ts.map +1 -0
- package/dist/core/assembly/context-gatherer.test.js +252 -0
- package/dist/core/assembly/context-gatherer.test.js.map +1 -0
- package/dist/core/assembly/depth-resolver.d.ts +11 -0
- package/dist/core/assembly/depth-resolver.d.ts.map +1 -0
- package/dist/core/assembly/depth-resolver.js +23 -0
- package/dist/core/assembly/depth-resolver.js.map +1 -0
- package/dist/core/assembly/depth-resolver.test.d.ts +2 -0
- package/dist/core/assembly/depth-resolver.test.d.ts.map +1 -0
- package/dist/core/assembly/depth-resolver.test.js +100 -0
- package/dist/core/assembly/depth-resolver.test.js.map +1 -0
- package/dist/core/assembly/engine.d.ts +22 -0
- package/dist/core/assembly/engine.d.ts.map +1 -0
- package/dist/core/assembly/engine.js +215 -0
- package/dist/core/assembly/engine.js.map +1 -0
- package/dist/core/assembly/engine.test.d.ts +2 -0
- package/dist/core/assembly/engine.test.d.ts.map +1 -0
- package/dist/core/assembly/engine.test.js +462 -0
- package/dist/core/assembly/engine.test.js.map +1 -0
- package/dist/core/assembly/instruction-loader.d.ts +16 -0
- package/dist/core/assembly/instruction-loader.d.ts.map +1 -0
- package/dist/core/assembly/instruction-loader.js +40 -0
- package/dist/core/assembly/instruction-loader.js.map +1 -0
- package/dist/core/assembly/instruction-loader.test.d.ts +2 -0
- package/dist/core/assembly/instruction-loader.test.d.ts.map +1 -0
- package/dist/core/assembly/instruction-loader.test.js +109 -0
- package/dist/core/assembly/instruction-loader.test.js.map +1 -0
- package/dist/core/assembly/knowledge-loader.d.ts +34 -0
- package/dist/core/assembly/knowledge-loader.d.ts.map +1 -0
- package/dist/core/assembly/knowledge-loader.js +204 -0
- package/dist/core/assembly/knowledge-loader.js.map +1 -0
- package/dist/core/assembly/knowledge-loader.test.d.ts +2 -0
- package/dist/core/assembly/knowledge-loader.test.d.ts.map +1 -0
- package/dist/core/assembly/knowledge-loader.test.js +205 -0
- package/dist/core/assembly/knowledge-loader.test.js.map +1 -0
- package/dist/core/assembly/meta-prompt-loader.d.ts +13 -0
- package/dist/core/assembly/meta-prompt-loader.d.ts.map +1 -0
- package/dist/core/assembly/meta-prompt-loader.js +91 -0
- package/dist/core/assembly/meta-prompt-loader.js.map +1 -0
- package/dist/core/assembly/meta-prompt-loader.test.d.ts +2 -0
- package/dist/core/assembly/meta-prompt-loader.test.d.ts.map +1 -0
- package/dist/core/assembly/meta-prompt-loader.test.js +232 -0
- package/dist/core/assembly/meta-prompt-loader.test.js.map +1 -0
- package/dist/core/assembly/methodology-change.d.ts +27 -0
- package/dist/core/assembly/methodology-change.d.ts.map +1 -0
- package/dist/core/assembly/methodology-change.js +41 -0
- package/dist/core/assembly/methodology-change.js.map +1 -0
- package/dist/core/assembly/methodology-change.test.d.ts +2 -0
- package/dist/core/assembly/methodology-change.test.d.ts.map +1 -0
- package/dist/core/assembly/methodology-change.test.js +145 -0
- package/dist/core/assembly/methodology-change.test.js.map +1 -0
- package/dist/core/assembly/methodology-resolver.d.ts +11 -0
- package/dist/core/assembly/methodology-resolver.d.ts.map +1 -0
- package/dist/core/assembly/methodology-resolver.js +19 -0
- package/dist/core/assembly/methodology-resolver.js.map +1 -0
- package/dist/core/assembly/methodology-resolver.test.d.ts +2 -0
- package/dist/core/assembly/methodology-resolver.test.d.ts.map +1 -0
- package/dist/core/assembly/methodology-resolver.test.js +87 -0
- package/dist/core/assembly/methodology-resolver.test.js.map +1 -0
- package/dist/core/assembly/preset-loader.d.ts +26 -0
- package/dist/core/assembly/preset-loader.d.ts.map +1 -0
- package/dist/core/assembly/preset-loader.js +146 -0
- package/dist/core/assembly/preset-loader.js.map +1 -0
- package/dist/core/assembly/preset-loader.test.d.ts +2 -0
- package/dist/core/assembly/preset-loader.test.d.ts.map +1 -0
- package/dist/core/assembly/preset-loader.test.js +107 -0
- package/dist/core/assembly/preset-loader.test.js.map +1 -0
- package/dist/core/assembly/update-mode.d.ts +25 -0
- package/dist/core/assembly/update-mode.d.ts.map +1 -0
- package/dist/core/assembly/update-mode.js +70 -0
- package/dist/core/assembly/update-mode.js.map +1 -0
- package/dist/core/assembly/update-mode.test.d.ts +2 -0
- package/dist/core/assembly/update-mode.test.d.ts.map +1 -0
- package/dist/core/assembly/update-mode.test.js +235 -0
- package/dist/core/assembly/update-mode.test.js.map +1 -0
- package/dist/core/dependency/dependency.d.ts +20 -0
- package/dist/core/dependency/dependency.d.ts.map +1 -0
- package/dist/core/dependency/dependency.js +104 -0
- package/dist/core/dependency/dependency.js.map +1 -0
- package/dist/core/dependency/dependency.test.d.ts +2 -0
- package/dist/core/dependency/dependency.test.d.ts.map +1 -0
- package/dist/core/dependency/dependency.test.js +166 -0
- package/dist/core/dependency/dependency.test.js.map +1 -0
- package/dist/core/dependency/eligibility.d.ts +17 -0
- package/dist/core/dependency/eligibility.d.ts.map +1 -0
- package/dist/core/dependency/eligibility.js +60 -0
- package/dist/core/dependency/eligibility.js.map +1 -0
- package/dist/core/dependency/eligibility.test.d.ts +2 -0
- package/dist/core/dependency/eligibility.test.d.ts.map +1 -0
- package/dist/core/dependency/eligibility.test.js +198 -0
- package/dist/core/dependency/eligibility.test.js.map +1 -0
- package/dist/core/dependency/graph.d.ts +12 -0
- package/dist/core/dependency/graph.d.ts.map +1 -0
- package/dist/core/dependency/graph.js +34 -0
- package/dist/core/dependency/graph.js.map +1 -0
- package/dist/core/knowledge/knowledge-update-assembler.d.ts +24 -0
- package/dist/core/knowledge/knowledge-update-assembler.d.ts.map +1 -0
- package/dist/core/knowledge/knowledge-update-assembler.js +46 -0
- package/dist/core/knowledge/knowledge-update-assembler.js.map +1 -0
- package/dist/core/knowledge/knowledge-update-assembler.test.d.ts +2 -0
- package/dist/core/knowledge/knowledge-update-assembler.test.d.ts.map +1 -0
- package/dist/core/knowledge/knowledge-update-assembler.test.js +93 -0
- package/dist/core/knowledge/knowledge-update-assembler.test.js.map +1 -0
- package/dist/core/knowledge/knowledge-update-template.md +55 -0
- package/dist/dashboard/generator.d.ts +37 -0
- package/dist/dashboard/generator.d.ts.map +1 -0
- package/dist/dashboard/generator.js +42 -0
- package/dist/dashboard/generator.js.map +1 -0
- package/dist/dashboard/generator.test.d.ts +2 -0
- package/dist/dashboard/generator.test.d.ts.map +1 -0
- package/dist/dashboard/generator.test.js +186 -0
- package/dist/dashboard/generator.test.js.map +1 -0
- package/dist/dashboard/template.d.ts +4 -0
- package/dist/dashboard/template.d.ts.map +1 -0
- package/dist/dashboard/template.js +190 -0
- package/dist/dashboard/template.js.map +1 -0
- package/dist/e2e/commands.test.d.ts +9 -0
- package/dist/e2e/commands.test.d.ts.map +1 -0
- package/dist/e2e/commands.test.js +499 -0
- package/dist/e2e/commands.test.js.map +1 -0
- package/dist/e2e/init.test.d.ts +10 -0
- package/dist/e2e/init.test.d.ts.map +1 -0
- package/dist/e2e/init.test.js +180 -0
- package/dist/e2e/init.test.js.map +1 -0
- package/dist/e2e/knowledge.test.d.ts +2 -0
- package/dist/e2e/knowledge.test.d.ts.map +1 -0
- package/dist/e2e/knowledge.test.js +103 -0
- package/dist/e2e/knowledge.test.js.map +1 -0
- package/dist/e2e/pipeline.test.d.ts +8 -0
- package/dist/e2e/pipeline.test.d.ts.map +1 -0
- package/dist/e2e/pipeline.test.js +295 -0
- package/dist/e2e/pipeline.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/project/adopt.d.ts +28 -0
- package/dist/project/adopt.d.ts.map +1 -0
- package/dist/project/adopt.js +49 -0
- package/dist/project/adopt.js.map +1 -0
- package/dist/project/adopt.test.d.ts +2 -0
- package/dist/project/adopt.test.d.ts.map +1 -0
- package/dist/project/adopt.test.js +220 -0
- package/dist/project/adopt.test.js.map +1 -0
- package/dist/project/claude-md.d.ts +33 -0
- package/dist/project/claude-md.d.ts.map +1 -0
- package/dist/project/claude-md.js +112 -0
- package/dist/project/claude-md.js.map +1 -0
- package/dist/project/claude-md.test.d.ts +2 -0
- package/dist/project/claude-md.test.d.ts.map +1 -0
- package/dist/project/claude-md.test.js +151 -0
- package/dist/project/claude-md.test.js.map +1 -0
- package/dist/project/detector.d.ts +7 -0
- package/dist/project/detector.d.ts.map +1 -0
- package/dist/project/detector.js +78 -0
- package/dist/project/detector.js.map +1 -0
- package/dist/project/detector.test.d.ts +2 -0
- package/dist/project/detector.test.d.ts.map +1 -0
- package/dist/project/detector.test.js +137 -0
- package/dist/project/detector.test.js.map +1 -0
- package/dist/project/frontmatter.d.ts +17 -0
- package/dist/project/frontmatter.d.ts.map +1 -0
- package/dist/project/frontmatter.js +236 -0
- package/dist/project/frontmatter.js.map +1 -0
- package/dist/project/frontmatter.test.d.ts +2 -0
- package/dist/project/frontmatter.test.d.ts.map +1 -0
- package/dist/project/frontmatter.test.js +218 -0
- package/dist/project/frontmatter.test.js.map +1 -0
- package/dist/project/signals.d.ts +12 -0
- package/dist/project/signals.d.ts.map +1 -0
- package/dist/project/signals.js +2 -0
- package/dist/project/signals.js.map +1 -0
- package/dist/state/completion.d.ts +22 -0
- package/dist/state/completion.d.ts.map +1 -0
- package/dist/state/completion.js +82 -0
- package/dist/state/completion.js.map +1 -0
- package/dist/state/completion.test.d.ts +2 -0
- package/dist/state/completion.test.d.ts.map +1 -0
- package/dist/state/completion.test.js +246 -0
- package/dist/state/completion.test.js.map +1 -0
- package/dist/state/decision-logger.d.ts +16 -0
- package/dist/state/decision-logger.d.ts.map +1 -0
- package/dist/state/decision-logger.js +80 -0
- package/dist/state/decision-logger.js.map +1 -0
- package/dist/state/decision-logger.test.d.ts +2 -0
- package/dist/state/decision-logger.test.d.ts.map +1 -0
- package/dist/state/decision-logger.test.js +182 -0
- package/dist/state/decision-logger.test.js.map +1 -0
- package/dist/state/lock-manager.d.ts +18 -0
- package/dist/state/lock-manager.d.ts.map +1 -0
- package/dist/state/lock-manager.js +134 -0
- package/dist/state/lock-manager.js.map +1 -0
- package/dist/state/lock-manager.test.d.ts +2 -0
- package/dist/state/lock-manager.test.d.ts.map +1 -0
- package/dist/state/lock-manager.test.js +190 -0
- package/dist/state/lock-manager.test.js.map +1 -0
- package/dist/state/state-manager.d.ts +37 -0
- package/dist/state/state-manager.d.ts.map +1 -0
- package/dist/state/state-manager.js +125 -0
- package/dist/state/state-manager.js.map +1 -0
- package/dist/state/state-manager.test.d.ts +2 -0
- package/dist/state/state-manager.test.d.ts.map +1 -0
- package/dist/state/state-manager.test.js +240 -0
- package/dist/state/state-manager.test.js.map +1 -0
- package/dist/types/adapter.d.ts +24 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +2 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/assembly.d.ts +89 -0
- package/dist/types/assembly.d.ts.map +1 -0
- package/dist/types/assembly.js +2 -0
- package/dist/types/assembly.js.map +1 -0
- package/dist/types/claude-md.d.ts +11 -0
- package/dist/types/claude-md.d.ts.map +1 -0
- package/dist/types/claude-md.js +2 -0
- package/dist/types/claude-md.js.map +1 -0
- package/dist/types/cli.d.ts +15 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +2 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +40 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/decision.d.ts +14 -0
- package/dist/types/decision.d.ts.map +1 -0
- package/dist/types/decision.js +2 -0
- package/dist/types/decision.js.map +1 -0
- package/dist/types/dependency.d.ts +12 -0
- package/dist/types/dependency.d.ts.map +1 -0
- package/dist/types/dependency.js +2 -0
- package/dist/types/dependency.js.map +1 -0
- package/dist/types/enums.d.ts +23 -0
- package/dist/types/enums.d.ts.map +1 -0
- package/dist/types/enums.js +11 -0
- package/dist/types/enums.js.map +1 -0
- package/dist/types/enums.test.d.ts +2 -0
- package/dist/types/enums.test.d.ts.map +1 -0
- package/dist/types/enums.test.js +13 -0
- package/dist/types/enums.test.js.map +1 -0
- package/dist/types/errors.d.ts +24 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +2 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/frontmatter.d.ts +43 -0
- package/dist/types/frontmatter.d.ts.map +1 -0
- package/dist/types/frontmatter.js +2 -0
- package/dist/types/frontmatter.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lock.d.ts +10 -0
- package/dist/types/lock.d.ts.map +1 -0
- package/dist/types/lock.js +2 -0
- package/dist/types/lock.js.map +1 -0
- package/dist/types/state.d.ts +49 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +2 -0
- package/dist/types/state.js.map +1 -0
- package/dist/types/wizard.d.ts +14 -0
- package/dist/types/wizard.d.ts.map +1 -0
- package/dist/types/wizard.js +2 -0
- package/dist/types/wizard.js.map +1 -0
- package/dist/utils/errors.d.ts +42 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +232 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/errors.test.d.ts +2 -0
- package/dist/utils/errors.test.d.ts.map +1 -0
- package/dist/utils/errors.test.js +91 -0
- package/dist/utils/errors.test.js.map +1 -0
- package/dist/utils/fs.d.ts +11 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +20 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/fs.test.d.ts +2 -0
- package/dist/utils/fs.test.d.ts.map +1 -0
- package/dist/utils/fs.test.js +93 -0
- package/dist/utils/fs.test.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/levenshtein.d.ts +11 -0
- package/dist/utils/levenshtein.d.ts.map +1 -0
- package/dist/utils/levenshtein.js +37 -0
- package/dist/utils/levenshtein.js.map +1 -0
- package/dist/utils/levenshtein.test.d.ts +2 -0
- package/dist/utils/levenshtein.test.d.ts.map +1 -0
- package/dist/utils/levenshtein.test.js +34 -0
- package/dist/utils/levenshtein.test.js.map +1 -0
- package/dist/validation/config-validator.d.ts +10 -0
- package/dist/validation/config-validator.d.ts.map +1 -0
- package/dist/validation/config-validator.js +11 -0
- package/dist/validation/config-validator.js.map +1 -0
- package/dist/validation/dependency-validator.d.ts +10 -0
- package/dist/validation/dependency-validator.d.ts.map +1 -0
- package/dist/validation/dependency-validator.js +34 -0
- package/dist/validation/dependency-validator.js.map +1 -0
- package/dist/validation/frontmatter-validator.d.ts +12 -0
- package/dist/validation/frontmatter-validator.d.ts.map +1 -0
- package/dist/validation/frontmatter-validator.js +50 -0
- package/dist/validation/frontmatter-validator.js.map +1 -0
- package/dist/validation/index.d.ts +19 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +64 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/index.test.d.ts +2 -0
- package/dist/validation/index.test.d.ts.map +1 -0
- package/dist/validation/index.test.js +241 -0
- package/dist/validation/index.test.js.map +1 -0
- package/dist/validation/state-validator.d.ts +15 -0
- package/dist/validation/state-validator.d.ts.map +1 -0
- package/dist/validation/state-validator.js +104 -0
- package/dist/validation/state-validator.js.map +1 -0
- package/dist/wizard/questions.d.ts +18 -0
- package/dist/wizard/questions.d.ts.map +1 -0
- package/dist/wizard/questions.js +46 -0
- package/dist/wizard/questions.js.map +1 -0
- package/dist/wizard/suggestion.d.ts +10 -0
- package/dist/wizard/suggestion.d.ts.map +1 -0
- package/dist/wizard/suggestion.js +17 -0
- package/dist/wizard/suggestion.js.map +1 -0
- package/dist/wizard/wizard.d.ts +19 -0
- package/dist/wizard/wizard.d.ts.map +1 -0
- package/dist/wizard/wizard.js +104 -0
- package/dist/wizard/wizard.js.map +1 -0
- package/dist/wizard/wizard.test.d.ts +2 -0
- package/dist/wizard/wizard.test.d.ts.map +1 -0
- package/dist/wizard/wizard.test.js +167 -0
- package/dist/wizard/wizard.test.js.map +1 -0
- package/knowledge/core/adr-craft.md +281 -0
- package/knowledge/core/api-design.md +501 -0
- package/knowledge/core/database-design.md +380 -0
- package/knowledge/core/domain-modeling.md +317 -0
- package/knowledge/core/operations-runbook.md +513 -0
- package/knowledge/core/security-review.md +523 -0
- package/knowledge/core/system-architecture.md +402 -0
- package/knowledge/core/task-decomposition.md +372 -0
- package/knowledge/core/testing-strategy.md +409 -0
- package/knowledge/core/user-stories.md +337 -0
- package/knowledge/core/user-story-innovation.md +171 -0
- package/knowledge/core/ux-specification.md +380 -0
- package/knowledge/finalization/apply-fixes-and-freeze.md +93 -0
- package/knowledge/finalization/developer-onboarding.md +376 -0
- package/knowledge/finalization/implementation-playbook.md +404 -0
- package/knowledge/product/gap-analysis.md +305 -0
- package/knowledge/product/prd-craft.md +324 -0
- package/knowledge/product/prd-innovation.md +204 -0
- package/knowledge/review/review-adr.md +203 -0
- package/knowledge/review/review-api-contracts.md +233 -0
- package/knowledge/review/review-database-schema.md +229 -0
- package/knowledge/review/review-domain-modeling.md +288 -0
- package/knowledge/review/review-implementation-tasks.md +202 -0
- package/knowledge/review/review-methodology.md +215 -0
- package/knowledge/review/review-operations.md +212 -0
- package/knowledge/review/review-prd.md +235 -0
- package/knowledge/review/review-security.md +213 -0
- package/knowledge/review/review-system-architecture.md +296 -0
- package/knowledge/review/review-testing-strategy.md +176 -0
- package/knowledge/review/review-user-stories.md +172 -0
- package/knowledge/review/review-ux-spec.md +208 -0
- package/knowledge/validation/critical-path-analysis.md +203 -0
- package/knowledge/validation/cross-phase-consistency.md +181 -0
- package/knowledge/validation/decision-completeness.md +218 -0
- package/knowledge/validation/dependency-validation.md +233 -0
- package/knowledge/validation/implementability-review.md +252 -0
- package/knowledge/validation/scope-management.md +223 -0
- package/knowledge/validation/traceability.md +198 -0
- package/methodology/custom-defaults.yml +43 -0
- package/methodology/deep.yml +42 -0
- package/methodology/mvp.yml +42 -0
- package/package.json +58 -0
- package/pipeline/architecture/review-architecture.md +44 -0
- package/pipeline/architecture/system-architecture.md +45 -0
- package/pipeline/decisions/adrs.md +45 -0
- package/pipeline/decisions/review-adrs.md +39 -0
- package/pipeline/finalization/apply-fixes-and-freeze.md +39 -0
- package/pipeline/finalization/developer-onboarding-guide.md +36 -0
- package/pipeline/finalization/implementation-playbook.md +45 -0
- package/pipeline/modeling/domain-modeling.md +57 -0
- package/pipeline/modeling/review-domain-modeling.md +41 -0
- package/pipeline/planning/implementation-tasks.md +57 -0
- package/pipeline/planning/review-tasks.md +38 -0
- package/pipeline/pre/create-prd.md +45 -0
- package/pipeline/pre/innovate-prd.md +47 -0
- package/pipeline/pre/innovate-user-stories.md +47 -0
- package/pipeline/pre/review-prd.md +44 -0
- package/pipeline/pre/review-user-stories.md +43 -0
- package/pipeline/pre/user-stories.md +48 -0
- package/pipeline/quality/operations.md +42 -0
- package/pipeline/quality/review-operations.md +37 -0
- package/pipeline/quality/review-security.md +40 -0
- package/pipeline/quality/review-testing.md +39 -0
- package/pipeline/quality/security.md +44 -0
- package/pipeline/quality/testing-strategy.md +42 -0
- package/pipeline/specification/api-contracts.md +44 -0
- package/pipeline/specification/database-schema.md +41 -0
- package/pipeline/specification/review-api.md +40 -0
- package/pipeline/specification/review-database.md +39 -0
- package/pipeline/specification/review-ux.md +38 -0
- package/pipeline/specification/ux-spec.md +43 -0
- package/pipeline/validation/critical-path-walkthrough.md +37 -0
- package/pipeline/validation/cross-phase-consistency.md +35 -0
- package/pipeline/validation/decision-completeness.md +36 -0
- package/pipeline/validation/dependency-graph-validation.md +36 -0
- package/pipeline/validation/implementability-dry-run.md +36 -0
- package/pipeline/validation/scope-creep-check.md +38 -0
- package/pipeline/validation/traceability-matrix.md +36 -0
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-specification
|
|
3
|
+
description: UX documentation patterns, design systems, accessibility, and component architecture
|
|
4
|
+
topics: [ux, design-system, accessibility, wireframes, user-flows, responsive-design, components]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## User Flow Documentation
|
|
8
|
+
|
|
9
|
+
### Journey Mapping
|
|
10
|
+
|
|
11
|
+
User stories (`docs/user-stories.md`) define what users do — each story's acceptance criteria describe a user journey. UX specification defines what users see and how they interact while performing those journeys. Map each story's Given/When/Then scenarios to screen states and transitions.
|
|
12
|
+
|
|
13
|
+
A user flow documents every step a user takes to accomplish a goal, including all decision points, error states, and alternative paths. User flows are the bridge between user stories and implementable UI specifications.
|
|
14
|
+
|
|
15
|
+
**Structure of a user flow:**
|
|
16
|
+
|
|
17
|
+
1. **Entry point** — How the user arrives (direct URL, navigation click, redirect, deep link)
|
|
18
|
+
2. **Preconditions** — What must be true before this flow starts (authenticated? specific role? data exists?)
|
|
19
|
+
3. **Happy path** — The primary sequence of steps from start to goal completion
|
|
20
|
+
4. **Decision points** — Where the flow branches based on user choice or system state
|
|
21
|
+
5. **Error paths** — What happens when validation fails, network errors occur, or the user enters invalid data
|
|
22
|
+
6. **Empty states** — What the user sees when there's no data yet (first-time use, no search results, no activity)
|
|
23
|
+
7. **Exit points** — How the flow ends (success confirmation, redirect, return to previous screen)
|
|
24
|
+
|
|
25
|
+
**Example: User Registration Flow**
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Entry: /register page (from landing page CTA or direct URL)
|
|
29
|
+
Preconditions: User is NOT authenticated
|
|
30
|
+
|
|
31
|
+
1. User sees registration form (email, password, confirm password)
|
|
32
|
+
2. User fills in fields
|
|
33
|
+
-> Inline validation:
|
|
34
|
+
- Email: valid format check on blur
|
|
35
|
+
- Password: strength indicator updates on keypress
|
|
36
|
+
- Confirm password: match check on blur
|
|
37
|
+
3. User clicks "Create Account"
|
|
38
|
+
4. Client-side validation
|
|
39
|
+
-> FAIL: highlight invalid fields, show specific error messages, focus first error
|
|
40
|
+
-> PASS: submit to API
|
|
41
|
+
5. Server-side validation
|
|
42
|
+
-> Email already exists: show error "An account with this email already exists" with link to login
|
|
43
|
+
-> Rate limited: show error "Too many attempts. Please try again in X minutes."
|
|
44
|
+
-> PASS: create account, send verification email
|
|
45
|
+
6. Redirect to /verify-email with message "Check your email for a verification link"
|
|
46
|
+
7. User clicks verification link in email
|
|
47
|
+
-> Token expired: show error with "Resend verification" button
|
|
48
|
+
-> Token valid: activate account, redirect to /onboarding
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### State Diagrams for Interactions
|
|
52
|
+
|
|
53
|
+
Complex UI interactions benefit from state diagrams that show all possible states and transitions:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Form States:
|
|
57
|
+
IDLE -> DIRTY (user types)
|
|
58
|
+
DIRTY -> VALIDATING (user triggers validation)
|
|
59
|
+
VALIDATING -> VALID (all fields pass)
|
|
60
|
+
VALIDATING -> INVALID (one or more fields fail)
|
|
61
|
+
VALID -> SUBMITTING (user clicks submit)
|
|
62
|
+
SUBMITTING -> SUCCESS (server accepts)
|
|
63
|
+
SUBMITTING -> ERROR (server rejects)
|
|
64
|
+
ERROR -> DIRTY (user modifies input)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
State diagrams prevent missed states. Common missed states include:
|
|
68
|
+
- Loading/submitting states (user clicks button twice)
|
|
69
|
+
- Partial data states (some fields loaded, others still fetching)
|
|
70
|
+
- Stale data states (data on screen is outdated)
|
|
71
|
+
- Offline/reconnecting states (network drops mid-operation)
|
|
72
|
+
|
|
73
|
+
### Documenting Error Paths
|
|
74
|
+
|
|
75
|
+
Every error that can occur must have a specified user experience:
|
|
76
|
+
|
|
77
|
+
| Error Type | User Sees | User Can Do |
|
|
78
|
+
|------------|-----------|-------------|
|
|
79
|
+
| Validation error | Inline error message next to field | Fix the field and resubmit |
|
|
80
|
+
| Auth error (401) | Redirect to login with return URL | Log in and return to where they were |
|
|
81
|
+
| Permission error (403) | "You don't have permission" message | Contact admin or navigate away |
|
|
82
|
+
| Not found (404) | Custom 404 page with navigation | Go home or search |
|
|
83
|
+
| Server error (500) | "Something went wrong" with retry | Retry the action |
|
|
84
|
+
| Network error | "Connection lost" banner | Wait for reconnection or refresh |
|
|
85
|
+
| Rate limit (429) | "Too many attempts" with countdown | Wait and retry |
|
|
86
|
+
|
|
87
|
+
## Component Architecture
|
|
88
|
+
|
|
89
|
+
### Component Hierarchy
|
|
90
|
+
|
|
91
|
+
Organize components in a hierarchy from primitive to composed:
|
|
92
|
+
|
|
93
|
+
**Atoms (base components):** The smallest reusable UI elements. Button, Input, Label, Icon, Badge, Avatar. These implement the design system tokens directly.
|
|
94
|
+
|
|
95
|
+
**Molecules (composite components):** Combinations of atoms that function as a unit. FormField (Label + Input + ErrorMessage), SearchBar (Input + Button + Suggestions), UserCard (Avatar + Text + Badge).
|
|
96
|
+
|
|
97
|
+
**Organisms (feature components):** Complex UI sections composed of molecules and atoms. NavigationBar, OrderSummary, UserProfile, DataTable with pagination.
|
|
98
|
+
|
|
99
|
+
**Templates (page layouts):** Structural layouts that arrange organisms on a page. DashboardLayout (sidebar + header + content area), AuthLayout (centered card), SettingsLayout (nav tabs + content).
|
|
100
|
+
|
|
101
|
+
**Pages:** Specific instances of templates filled with real data and connected to state management.
|
|
102
|
+
|
|
103
|
+
### Prop and Data Flow
|
|
104
|
+
|
|
105
|
+
Define how data flows through the component tree:
|
|
106
|
+
|
|
107
|
+
**Top-down data flow (props):** Parent components pass data to children via props. Children never modify props directly.
|
|
108
|
+
|
|
109
|
+
**Events/callbacks up:** Children communicate to parents via callback functions passed as props. A child input field calls `onChange` to notify the parent of new values.
|
|
110
|
+
|
|
111
|
+
**Shared state:** When multiple components at different levels of the tree need the same data, lift state to their nearest common ancestor or use a state management solution (Context, Zustand, Redux).
|
|
112
|
+
|
|
113
|
+
**Server state vs. client state:** Server state (user data, orders, products) comes from API calls and should be managed with data-fetching tools (React Query, SWR, Apollo). Client state (UI toggles, form inputs, modal visibility) is managed locally.
|
|
114
|
+
|
|
115
|
+
### Composition Patterns
|
|
116
|
+
|
|
117
|
+
**Slot/children pattern:** Components accept children to render in designated areas, allowing flexible composition without prop explosion.
|
|
118
|
+
|
|
119
|
+
**Compound components:** Related components that share state implicitly. A `Tabs` component with `TabList`, `Tab`, and `TabPanel` children that coordinate active state internally.
|
|
120
|
+
|
|
121
|
+
**Render props/hooks:** When component logic needs to be shared without coupling to specific UI. Extract the logic into a hook; multiple components can use the same hook with different UIs.
|
|
122
|
+
|
|
123
|
+
### Shared vs. Page-Specific Components
|
|
124
|
+
|
|
125
|
+
**Shared components** (design system components): reusable across the entire application. Must be generic, well-tested, accessible, and documented. Live in a `components/shared/` or `components/ui/` directory.
|
|
126
|
+
|
|
127
|
+
**Page-specific components:** Used only within a single page or feature. Can be more specialized and less generic. Live within the feature directory (e.g., `features/orders/components/`).
|
|
128
|
+
|
|
129
|
+
**Promotion rule:** A component starts as page-specific. When a second feature needs the same component, promote it to shared. Don't pre-optimize by making everything shared from the start.
|
|
130
|
+
|
|
131
|
+
## Design System
|
|
132
|
+
|
|
133
|
+
A design system is the set of constraints and building blocks that ensure visual consistency across the entire application. It includes design tokens, base components, and usage patterns.
|
|
134
|
+
|
|
135
|
+
### Design Tokens
|
|
136
|
+
|
|
137
|
+
Design tokens are the atomic values that define the visual language. They are variables, not hard-coded values. Every visual property in the application references a token.
|
|
138
|
+
|
|
139
|
+
**Color tokens:**
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
--color-primary: #2563EB // Main brand/action color
|
|
143
|
+
--color-primary-hover: #1D4ED8 // Interactive state
|
|
144
|
+
--color-primary-light: #DBEAFE // Backgrounds, subtle highlights
|
|
145
|
+
|
|
146
|
+
--color-secondary: #7C3AED // Supporting brand color
|
|
147
|
+
|
|
148
|
+
--color-neutral-50: #FAFAFA // Lightest background
|
|
149
|
+
--color-neutral-100: #F5F5F5 // Card backgrounds
|
|
150
|
+
--color-neutral-200: #E5E5E5 // Borders
|
|
151
|
+
--color-neutral-400: #A3A3A3 // Muted text, placeholders
|
|
152
|
+
--color-neutral-700: #404040 // Secondary text
|
|
153
|
+
--color-neutral-900: #171717 // Primary text
|
|
154
|
+
|
|
155
|
+
--color-success: #16A34A // Success states, positive actions
|
|
156
|
+
--color-warning: #CA8A04 // Warning states, caution
|
|
157
|
+
--color-error: #DC2626 // Error states, destructive actions
|
|
158
|
+
--color-info: #2563EB // Informational states
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Typography tokens:**
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
--font-family: 'Inter', system-ui, sans-serif
|
|
165
|
+
|
|
166
|
+
--text-xs: 0.75rem // 12px — fine print, labels
|
|
167
|
+
--text-sm: 0.875rem // 14px — secondary text, table cells
|
|
168
|
+
--text-base: 1rem // 16px — body text
|
|
169
|
+
--text-lg: 1.125rem // 18px — subheadings
|
|
170
|
+
--text-xl: 1.25rem // 20px — section titles
|
|
171
|
+
--text-2xl: 1.5rem // 24px — page titles
|
|
172
|
+
--text-3xl: 1.875rem // 30px — hero text
|
|
173
|
+
|
|
174
|
+
--font-weight-normal: 400
|
|
175
|
+
--font-weight-medium: 500
|
|
176
|
+
--font-weight-semibold: 600
|
|
177
|
+
--font-weight-bold: 700
|
|
178
|
+
|
|
179
|
+
--line-height-tight: 1.25
|
|
180
|
+
--line-height-normal: 1.5
|
|
181
|
+
--line-height-relaxed: 1.75
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Spacing tokens:**
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
--space-1: 0.25rem // 4px — tight gaps (icon to label)
|
|
188
|
+
--space-2: 0.5rem // 8px — compact spacing (list items)
|
|
189
|
+
--space-3: 0.75rem // 12px — default padding (buttons, inputs)
|
|
190
|
+
--space-4: 1rem // 16px — standard spacing (form fields)
|
|
191
|
+
--space-6: 1.5rem // 24px — section padding
|
|
192
|
+
--space-8: 2rem // 32px — large gaps
|
|
193
|
+
--space-12: 3rem // 48px — section separators
|
|
194
|
+
--space-16: 4rem // 64px — page-level spacing
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Border and shadow tokens:**
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
--radius-sm: 0.25rem // 4px — subtle rounding (tags, badges)
|
|
201
|
+
--radius-md: 0.5rem // 8px — standard rounding (cards, inputs, buttons)
|
|
202
|
+
--radius-lg: 0.75rem // 12px — prominent rounding (modals, panels)
|
|
203
|
+
--radius-full: 9999px // Pill shapes, avatars
|
|
204
|
+
|
|
205
|
+
--shadow-sm: 0 1px 2px rgba(0,0,0,0.05)
|
|
206
|
+
--shadow-md: 0 4px 6px rgba(0,0,0,0.07)
|
|
207
|
+
--shadow-lg: 0 10px 15px rgba(0,0,0,0.1)
|
|
208
|
+
--shadow-xl: 0 20px 25px rgba(0,0,0,0.1)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Dark Mode
|
|
212
|
+
|
|
213
|
+
When dark mode is required, define a parallel set of semantic tokens that switch based on the color scheme:
|
|
214
|
+
|
|
215
|
+
```css
|
|
216
|
+
:root {
|
|
217
|
+
--bg-primary: var(--color-neutral-50);
|
|
218
|
+
--bg-card: white;
|
|
219
|
+
--text-primary: var(--color-neutral-900);
|
|
220
|
+
--text-secondary: var(--color-neutral-700);
|
|
221
|
+
--border-default: var(--color-neutral-200);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@media (prefers-color-scheme: dark) {
|
|
225
|
+
:root {
|
|
226
|
+
--bg-primary: var(--color-neutral-900);
|
|
227
|
+
--bg-card: var(--color-neutral-800);
|
|
228
|
+
--text-primary: var(--color-neutral-50);
|
|
229
|
+
--text-secondary: var(--color-neutral-400);
|
|
230
|
+
--border-default: var(--color-neutral-700);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Use semantic tokens (`--bg-primary`, `--text-primary`) in components, not raw color tokens. This makes dark mode automatic.
|
|
236
|
+
|
|
237
|
+
### Base Components
|
|
238
|
+
|
|
239
|
+
Define the standard appearance and behavior for every common component:
|
|
240
|
+
|
|
241
|
+
**Buttons:**
|
|
242
|
+
- Variants: Primary (solid fill), Secondary (subtle fill), Outline (border only), Ghost (no border), Destructive (red/danger)
|
|
243
|
+
- Sizes: sm (28px height), md (36px height), lg (44px height)
|
|
244
|
+
- States: default, hover, active, focused, disabled, loading
|
|
245
|
+
- Loading state replaces label with spinner, disables interaction
|
|
246
|
+
|
|
247
|
+
**Form elements:**
|
|
248
|
+
- All inputs: border, focus ring, error state (red border + error message below), disabled state (reduced opacity)
|
|
249
|
+
- Labels: always visible (never placeholder-only), required indicator (asterisk or "(required)")
|
|
250
|
+
- Help text: below input, muted color, explains what the field expects
|
|
251
|
+
- Error messages: below input, error color, describes what went wrong and how to fix it
|
|
252
|
+
|
|
253
|
+
**Cards:**
|
|
254
|
+
- Default: white/card background, subtle shadow or border, rounded corners
|
|
255
|
+
- Interactive: hover state (shadow increase or border color change), cursor pointer
|
|
256
|
+
- Header/footer sections: visually separated, structured content areas
|
|
257
|
+
|
|
258
|
+
**Feedback:**
|
|
259
|
+
- Toast notifications: temporary, non-blocking, auto-dismiss (with manual dismiss option)
|
|
260
|
+
- Alert banners: persistent until dismissed, full-width or contained within a section
|
|
261
|
+
- Empty states: illustration or icon, explanatory text, call-to-action button
|
|
262
|
+
- Loading: skeleton loaders (preferred over spinners for content areas), spinner for actions
|
|
263
|
+
|
|
264
|
+
### Pattern Library
|
|
265
|
+
|
|
266
|
+
Document recurring UI patterns with implementation guidance:
|
|
267
|
+
|
|
268
|
+
- **Search with autocomplete:** Debounced input, dropdown results, keyboard navigation, "no results" state
|
|
269
|
+
- **Confirmation dialogs:** Before destructive actions, clearly state what will happen, "Cancel" as primary action (preventing accidents)
|
|
270
|
+
- **Inline editing:** Click to edit, Enter to save, Escape to cancel, loading indicator during save
|
|
271
|
+
- **Bulk actions:** Select all, individual select, action toolbar appears when items selected
|
|
272
|
+
- **Wizard/stepper:** Progress indicator, back/next navigation, save progress between steps
|
|
273
|
+
|
|
274
|
+
## Accessibility
|
|
275
|
+
|
|
276
|
+
### WCAG Compliance Levels
|
|
277
|
+
|
|
278
|
+
- **Level A (minimum):** All images have alt text. All form fields have labels. Content is navigable by keyboard. No content causes seizures.
|
|
279
|
+
- **Level AA (standard target):** Color contrast ratio of 4.5:1 for normal text, 3:1 for large text. Text can be resized to 200% without loss of functionality. Focus indicators are visible.
|
|
280
|
+
- **Level AAA (enhanced):** Color contrast ratio of 7:1. Sign language interpretation for audio. Extended audio descriptions.
|
|
281
|
+
|
|
282
|
+
Target Level AA as the baseline. Specific critical interactions (login, payment, emergency) should meet Level AAA.
|
|
283
|
+
|
|
284
|
+
### Keyboard Navigation
|
|
285
|
+
|
|
286
|
+
Every interactive element must be reachable and operable by keyboard:
|
|
287
|
+
|
|
288
|
+
- **Tab order** follows the visual reading order (left to right, top to bottom)
|
|
289
|
+
- **Focus indicators** are visible and distinct (not just browser default — enhance it)
|
|
290
|
+
- **Modal dialogs** trap focus within the modal when open
|
|
291
|
+
- **Escape** closes modals, dropdowns, and popovers
|
|
292
|
+
- **Enter/Space** activates buttons and links
|
|
293
|
+
- **Arrow keys** navigate within composite widgets (tabs, menus, radio groups)
|
|
294
|
+
- **Skip links** allow keyboard users to skip repetitive navigation
|
|
295
|
+
|
|
296
|
+
### Screen Reader Support
|
|
297
|
+
|
|
298
|
+
- Use semantic HTML elements (`nav`, `main`, `aside`, `header`, `footer`, `article`, `section`, `button`)
|
|
299
|
+
- All images have descriptive `alt` text (decorative images use `alt=""`)
|
|
300
|
+
- Form fields have associated `<label>` elements (or `aria-label` when a visible label isn't feasible)
|
|
301
|
+
- Dynamic content updates use `aria-live` regions to announce changes
|
|
302
|
+
- Custom interactive components use appropriate ARIA roles and properties
|
|
303
|
+
- Tables have headers (`<th>`) with proper scope
|
|
304
|
+
|
|
305
|
+
### Color Contrast
|
|
306
|
+
|
|
307
|
+
- Text on backgrounds must meet 4.5:1 contrast ratio (3:1 for large text, 18px+ or 14px+ bold)
|
|
308
|
+
- Interactive elements must be distinguishable by more than color alone (add icons, underlines, or patterns)
|
|
309
|
+
- Error states must use more than red color — add an icon, bold text, or border
|
|
310
|
+
- Verify contrast with tools like axe, Lighthouse, or the WebAIM contrast checker
|
|
311
|
+
|
|
312
|
+
### Focus Management
|
|
313
|
+
|
|
314
|
+
- When a modal opens, move focus to the first interactive element inside it
|
|
315
|
+
- When a modal closes, return focus to the element that triggered it
|
|
316
|
+
- When an item is deleted from a list, move focus to the next item (or the previous if it was the last)
|
|
317
|
+
- When navigating to a new page section, move focus to the heading of that section
|
|
318
|
+
- Never remove focus outlines unless you replace them with a better indicator
|
|
319
|
+
|
|
320
|
+
## Responsive Design
|
|
321
|
+
|
|
322
|
+
### Breakpoint Strategy
|
|
323
|
+
|
|
324
|
+
Define breakpoints that match actual device usage patterns:
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
Mobile: < 640px (phones in portrait)
|
|
328
|
+
Tablet: 640-1024px (tablets, phones in landscape)
|
|
329
|
+
Desktop: 1024-1280px (laptops)
|
|
330
|
+
Large Desktop: > 1280px (external monitors)
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Mobile-first vs. desktop-first:**
|
|
334
|
+
|
|
335
|
+
- **Mobile-first (recommended):** Write base styles for mobile, then add complexity with `min-width` media queries. Forces prioritization of essential content. Produces less CSS.
|
|
336
|
+
- **Desktop-first:** Write base styles for desktop, then simplify with `max-width` media queries. Appropriate when the primary audience is desktop users and mobile is secondary.
|
|
337
|
+
|
|
338
|
+
### Layout Behavior Per Breakpoint
|
|
339
|
+
|
|
340
|
+
Document how each major layout component adapts:
|
|
341
|
+
|
|
342
|
+
| Component | Mobile | Tablet | Desktop |
|
|
343
|
+
|-----------|--------|--------|---------|
|
|
344
|
+
| Navigation | Hamburger menu | Collapsed sidebar | Full sidebar |
|
|
345
|
+
| Content grid | 1 column | 2 columns | 3-4 columns |
|
|
346
|
+
| Data tables | Card view (stacked) | Scrollable table | Full table |
|
|
347
|
+
| Modals | Full screen | Centered, 80% width | Centered, fixed width |
|
|
348
|
+
| Form layout | Single column | Single column | Two-column for long forms |
|
|
349
|
+
|
|
350
|
+
### Touch Targets
|
|
351
|
+
|
|
352
|
+
Mobile touch targets must be at least 44x44px (Apple) or 48x48px (Material). Ensure:
|
|
353
|
+
- Buttons and links are large enough to tap accurately
|
|
354
|
+
- Spacing between interactive elements prevents accidental taps
|
|
355
|
+
- Form inputs are tall enough for comfortable finger input
|
|
356
|
+
|
|
357
|
+
### Responsive Images
|
|
358
|
+
|
|
359
|
+
- Use `srcset` and `sizes` attributes for responsive image loading
|
|
360
|
+
- Serve appropriate image formats (WebP with JPEG fallback)
|
|
361
|
+
- Lazy load images below the fold
|
|
362
|
+
- Define aspect ratios to prevent layout shift during loading
|
|
363
|
+
|
|
364
|
+
## Common Pitfalls
|
|
365
|
+
|
|
366
|
+
**Designing for the happy path only.** A spec that shows what the screen looks like with data but not without data, not during loading, not after an error, and not when the user's name is 47 characters long. Fix: document every state — loading, empty, error, edge-case content lengths, and permission-limited views.
|
|
367
|
+
|
|
368
|
+
**Accessibility as afterthought.** Building the entire UI first, then trying to add accessibility. Results in ARIA hacks layered on top of inaccessible markup. Fix: use semantic HTML from the start. Test keyboard navigation during development, not after.
|
|
369
|
+
|
|
370
|
+
**Inconsistent spacing and typography.** Five different font sizes that are all "kind of like body text." Spacing that varies randomly between 12px and 17px with no system. Fix: define a spacing scale and type scale in the design system. Only use values from the scale.
|
|
371
|
+
|
|
372
|
+
**Placeholder text as labels.** Using placeholder text instead of labels for form fields. Placeholders disappear when the user starts typing, leaving them with no indication of what the field expects. Fix: always use visible labels. Placeholders are supplementary hints, not replacements for labels.
|
|
373
|
+
|
|
374
|
+
**Missing loading states.** The page shows nothing (white screen) while data loads, then content pops in. Users think the app is broken. Fix: use skeleton loaders that match the shape of the content being loaded.
|
|
375
|
+
|
|
376
|
+
**Ignoring touch targets on mobile.** Tiny links and buttons that require precise finger tapping. Fix: ensure all interactive elements meet minimum 44x44px touch target size on mobile.
|
|
377
|
+
|
|
378
|
+
**Breaking text on resize.** Content that looks fine at the design width but overflows, truncates, or overlaps at other widths. Fix: test with variable-length content and multiple viewport widths. Use CSS that handles overflow gracefully (truncation with ellipsis, wrapping, or scrolling).
|
|
379
|
+
|
|
380
|
+
**Modal abuse.** Using modals for content that should be a page (long forms, complex workflows, multi-step processes). Modals are for brief, focused interactions. Fix: if the modal content would benefit from a back button or URL, it should be a page.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apply-fixes-and-freeze
|
|
3
|
+
description: Guidance on prioritizing validation fixes, applying them safely, and freezing documentation for implementation
|
|
4
|
+
topics: [finalization, fixes, freeze, validation, documentation-quality]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Apply Fixes and Freeze
|
|
8
|
+
|
|
9
|
+
The apply-fixes-and-freeze step is the last gate before implementation begins. Its purpose is to resolve all actionable validation findings, verify the fixes don't introduce new issues, and mark the documentation as frozen. After this step, documents change only if implementation reveals a genuine gap.
|
|
10
|
+
|
|
11
|
+
## Fix Prioritization
|
|
12
|
+
|
|
13
|
+
Validation phases produce findings at three priority levels. Address them in strict order:
|
|
14
|
+
|
|
15
|
+
### P0 — Blocking
|
|
16
|
+
|
|
17
|
+
Cross-document inconsistencies, broken traceability links, missing requirements, dependency cycles, and any finding that would cause an implementing agent to produce incorrect output. P0 findings must all be resolved before proceeding.
|
|
18
|
+
|
|
19
|
+
**Examples**: Stale counts that contradict the pipeline definition, terminology drift between schemas and API contracts, missing domain model references in architecture, broken cross-references between ADRs.
|
|
20
|
+
|
|
21
|
+
### P1 — Important
|
|
22
|
+
|
|
23
|
+
Ambiguity, underspecified error handling, vague acceptance criteria, and findings that would force an implementing agent to guess. P1 findings should be resolved unless the fix introduces more risk than the ambiguity.
|
|
24
|
+
|
|
25
|
+
**Examples**: Missing error response formats, unspecified concurrency behavior, vague NFR targets, incomplete state transition definitions.
|
|
26
|
+
|
|
27
|
+
### P2 — Deferred
|
|
28
|
+
|
|
29
|
+
Minor polish, documentation gaps that don't affect implementation correctness, and findings that are real but low-impact. P2 findings are logged with rationale for deferral.
|
|
30
|
+
|
|
31
|
+
**Examples**: Missing UX specs for secondary flows, incomplete examples in knowledge base entries, editorial inconsistencies in prose.
|
|
32
|
+
|
|
33
|
+
## Fix Application Process
|
|
34
|
+
|
|
35
|
+
### Step 1: Build the Fix Plan
|
|
36
|
+
|
|
37
|
+
1. Collect all findings from validation phase outputs (cross-phase-consistency, traceability-matrix, decision-completeness, critical-path-walkthrough, implementability-dry-run, dependency-graph-validation, scope-creep-check).
|
|
38
|
+
2. Deduplicate — the same root cause often appears in multiple validation reports.
|
|
39
|
+
3. Group by affected document — batch fixes to minimize file churn.
|
|
40
|
+
4. Order by priority (P0 first), then by document (reduce context switching).
|
|
41
|
+
|
|
42
|
+
### Step 2: Apply Fixes
|
|
43
|
+
|
|
44
|
+
For each fix:
|
|
45
|
+
1. Read the finding and the affected document section.
|
|
46
|
+
2. Make the minimal change that resolves the finding.
|
|
47
|
+
3. Check whether the fix affects other documents (e.g., changing a field name in the schema requires updating API contracts and state documentation).
|
|
48
|
+
4. Log the fix in `docs/validation/fix-log.md` with: finding ID, affected files, what changed, why.
|
|
49
|
+
|
|
50
|
+
### Step 3: Verify No Regressions
|
|
51
|
+
|
|
52
|
+
After all fixes are applied:
|
|
53
|
+
1. Re-run cross-phase consistency checks on modified documents.
|
|
54
|
+
2. Verify traceability links still resolve (no broken references introduced by renames).
|
|
55
|
+
3. Spot-check that counts, terminology, and cross-references are internally consistent.
|
|
56
|
+
4. If a fix introduced a new issue, treat it as a P0 and resolve before proceeding.
|
|
57
|
+
|
|
58
|
+
## Documentation Freeze
|
|
59
|
+
|
|
60
|
+
Once all P0 and P1 findings are resolved:
|
|
61
|
+
|
|
62
|
+
1. Add a freeze marker (tracking comment) to each phase artifact indicating the document is implementation-ready.
|
|
63
|
+
2. Record the freeze timestamp and the validation findings that were addressed.
|
|
64
|
+
3. P2 deferrals are logged in the fix log with rationale — these become backlog items for post-implementation polish.
|
|
65
|
+
|
|
66
|
+
### What Freeze Means
|
|
67
|
+
|
|
68
|
+
- **No further content changes** unless implementation reveals a genuine gap (not a preference).
|
|
69
|
+
- **Formatting and typo fixes** are allowed — they don't affect implementation.
|
|
70
|
+
- **If a gap is found during implementation**, the fix goes through the same prioritization process: update the document, log the change, re-verify consistency.
|
|
71
|
+
|
|
72
|
+
## Fix Log Format
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
## Fix Log
|
|
76
|
+
|
|
77
|
+
| # | Finding | Priority | Files Changed | What Changed | Why |
|
|
78
|
+
|---|---------|----------|---------------|--------------|-----|
|
|
79
|
+
| 1 | TM-003: Stale step count in architecture | P0 | system-architecture.md | "32 steps" → "36 steps" | Pipeline expanded with user stories phase |
|
|
80
|
+
| 2 | CPC-007: Terminology drift in state schema | P0 | state-json-schema.md, cli-contract.md | "prompts" → "steps" | PRD canonical term is "step" |
|
|
81
|
+
|
|
82
|
+
### Deferred (P2)
|
|
83
|
+
| # | Finding | Rationale |
|
|
84
|
+
|---|---------|-----------|
|
|
85
|
+
| 1 | IR-012: Missing adopt-flow UX spec | Low implementation impact; adopt is secondary flow |
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Common Pitfalls
|
|
89
|
+
|
|
90
|
+
1. **Fixing symptoms instead of root causes.** If the same stale count appears in 15 files, the root cause is a single pipeline change that wasn't propagated. Fix the source and sweep all references.
|
|
91
|
+
2. **Introducing new inconsistencies.** Renaming a field in one document but missing it in another. Always search for all references before changing a term.
|
|
92
|
+
3. **Over-fixing.** The goal is implementation readiness, not perfection. If a P2 finding doesn't affect an implementing agent's ability to produce correct code, defer it.
|
|
93
|
+
4. **Skipping verification.** A fix that breaks a cross-reference is worse than the original finding. Always re-verify after applying fixes.
|