@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,376 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: developer-onboarding
|
|
3
|
+
description: What an effective onboarding guide covers — repo setup, architecture overview, key patterns
|
|
4
|
+
topics: [onboarding, documentation, getting-started, developer-experience]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Developer Onboarding
|
|
8
|
+
|
|
9
|
+
A developer onboarding guide is the first document a new developer (human or AI agent) reads when joining the project. Its purpose is to take someone from "I just cloned the repo" to "I can find things, understand the architecture, and start contributing" in the shortest possible time.
|
|
10
|
+
|
|
11
|
+
This document covers what an effective onboarding guide should contain, how to structure it, and what to avoid.
|
|
12
|
+
|
|
13
|
+
## Guide Structure
|
|
14
|
+
|
|
15
|
+
The onboarding guide follows a deliberate progression from purpose to productivity:
|
|
16
|
+
|
|
17
|
+
1. **Purpose** — What this project does and why it exists.
|
|
18
|
+
2. **Architecture Overview** — How the system is structured at a high level.
|
|
19
|
+
3. **Key Patterns** — The recurring patterns a developer must understand.
|
|
20
|
+
4. **Getting Started** — How to set up and run the project locally.
|
|
21
|
+
5. **Common Tasks** — Step-by-step guides for frequent activities.
|
|
22
|
+
6. **Where to Find Things** — A map of the codebase and key files.
|
|
23
|
+
7. **Troubleshooting** — Known issues and their solutions.
|
|
24
|
+
|
|
25
|
+
Each section serves a distinct purpose. Do not merge them or skip any.
|
|
26
|
+
|
|
27
|
+
## 1. Purpose
|
|
28
|
+
|
|
29
|
+
### What to Include
|
|
30
|
+
|
|
31
|
+
A concise explanation (3-5 sentences) answering:
|
|
32
|
+
- What problem does this project solve?
|
|
33
|
+
- Who are the users?
|
|
34
|
+
- What is the core value proposition?
|
|
35
|
+
|
|
36
|
+
This is not the full PRD — it is the elevator pitch. A developer who reads this section should understand why the project exists and what matters.
|
|
37
|
+
|
|
38
|
+
### Example
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
## Purpose
|
|
42
|
+
|
|
43
|
+
InvoiceFlow aggregates invoices from multiple payment processors (Stripe,
|
|
44
|
+
PayPal, Square) into a single reconciliation dashboard for small business
|
|
45
|
+
owners. The primary pain point is manual data entry — users currently spend
|
|
46
|
+
6+ hours per week reconciling invoices across platforms. Our solution pulls
|
|
47
|
+
data automatically and highlights discrepancies for review.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### What NOT to Include
|
|
51
|
+
|
|
52
|
+
- Marketing language ("revolutionary," "best-in-class")
|
|
53
|
+
- Full feature lists (that is the PRD)
|
|
54
|
+
- Business metrics or revenue goals (irrelevant to contributors)
|
|
55
|
+
- History of the project (unless it explains current technical decisions)
|
|
56
|
+
|
|
57
|
+
## 2. Architecture Overview
|
|
58
|
+
|
|
59
|
+
### What to Include
|
|
60
|
+
|
|
61
|
+
A high-level diagram (described in text or ASCII art) showing the major components and how they interact. The goal is mental model, not complete specification.
|
|
62
|
+
|
|
63
|
+
**Cover:**
|
|
64
|
+
- **Component inventory** — What are the 3-7 major components? (API server, database, frontend, background workers, external services)
|
|
65
|
+
- **Communication patterns** — How do components talk to each other? (HTTP REST, WebSocket, message queue, shared database)
|
|
66
|
+
- **Data flow** — Where does data enter the system, how does it flow, where does it get stored?
|
|
67
|
+
- **External dependencies** — What third-party services does the project use? (Payment processors, email services, cloud storage)
|
|
68
|
+
- **Key architectural decisions** — Summarize the 3-5 most important ADRs with one sentence each. Link to the full ADRs for detail.
|
|
69
|
+
|
|
70
|
+
### Example
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
## Architecture Overview
|
|
74
|
+
|
|
75
|
+
InvoiceFlow is a monolithic TypeScript application with three layers:
|
|
76
|
+
|
|
77
|
+
- **API Layer** (Express.js) — REST endpoints for frontend and webhook
|
|
78
|
+
receivers for payment processors.
|
|
79
|
+
- **Service Layer** — Business logic for invoice reconciliation, matching,
|
|
80
|
+
and discrepancy detection.
|
|
81
|
+
- **Data Layer** (PostgreSQL via Prisma) — Invoice records, user accounts,
|
|
82
|
+
reconciliation results.
|
|
83
|
+
|
|
84
|
+
Background jobs (BullMQ + Redis) handle payment processor data sync on
|
|
85
|
+
a configurable schedule (default: every 15 minutes).
|
|
86
|
+
|
|
87
|
+
The frontend is a React SPA served by the same Express server in production.
|
|
88
|
+
|
|
89
|
+
Key decisions:
|
|
90
|
+
- Monolith over microservices (ADR-001): Simpler operations for small team
|
|
91
|
+
- PostgreSQL over MongoDB (ADR-003): Strong consistency for financial data
|
|
92
|
+
- Server-side reconciliation (ADR-007): Heavy matching runs as background
|
|
93
|
+
jobs, not in the API request path
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Architecture Narrative Style
|
|
97
|
+
|
|
98
|
+
Use a narrative walkthrough rather than a dry specification. Walk through a single user request end-to-end:
|
|
99
|
+
|
|
100
|
+
"When a user opens the reconciliation dashboard, the React frontend calls `GET /api/reconciliations?status=pending`. The API layer validates the JWT token, calls `ReconciliationService.getPending(userId)`, which queries PostgreSQL for reconciliations with status 'pending' joined to their invoice line items. The response is serialized and returned as JSON."
|
|
101
|
+
|
|
102
|
+
This narrative style gives developers an immediate mental model they can generalize from.
|
|
103
|
+
|
|
104
|
+
## 3. Key Patterns
|
|
105
|
+
|
|
106
|
+
### What to Include
|
|
107
|
+
|
|
108
|
+
Document the 5-10 patterns that repeat throughout the codebase. A developer who understands these patterns can read any part of the codebase.
|
|
109
|
+
|
|
110
|
+
**Common patterns to document:**
|
|
111
|
+
|
|
112
|
+
**Error handling pattern:**
|
|
113
|
+
- How are errors represented? (Custom error classes? Error codes? Result types?)
|
|
114
|
+
- How do errors propagate? (Thrown exceptions? Returned errors? Global handler?)
|
|
115
|
+
- Where are errors logged? What format?
|
|
116
|
+
- How are errors returned to clients? (Error response shape, HTTP status code mapping)
|
|
117
|
+
|
|
118
|
+
**Request lifecycle pattern:**
|
|
119
|
+
- What happens from HTTP request to response?
|
|
120
|
+
- Middleware order (auth, validation, rate limiting, logging)
|
|
121
|
+
- How request validation works
|
|
122
|
+
- How response serialization works
|
|
123
|
+
|
|
124
|
+
**Database access pattern:**
|
|
125
|
+
- ORM or query builder usage patterns
|
|
126
|
+
- Transaction management
|
|
127
|
+
- How to write migrations
|
|
128
|
+
- How repositories are structured
|
|
129
|
+
|
|
130
|
+
**Testing pattern:**
|
|
131
|
+
- Test file naming and location
|
|
132
|
+
- Test structure (describe/it, arrange/act/assert)
|
|
133
|
+
- What to mock and what to test with real dependencies
|
|
134
|
+
- How to set up test data (fixtures, factories, seeding)
|
|
135
|
+
|
|
136
|
+
**Authentication pattern:**
|
|
137
|
+
- How auth tokens work
|
|
138
|
+
- How to protect an endpoint
|
|
139
|
+
- How to get the current user in a handler
|
|
140
|
+
|
|
141
|
+
### Example
|
|
142
|
+
|
|
143
|
+
```markdown
|
|
144
|
+
## Key Patterns
|
|
145
|
+
|
|
146
|
+
### Error Handling
|
|
147
|
+
All business errors extend `AppError` (src/errors/app-error.ts). Throw
|
|
148
|
+
errors from services; the global error handler (src/middleware/error-handler.ts)
|
|
149
|
+
catches and serializes them.
|
|
150
|
+
|
|
151
|
+
Throw: `throw new NotFoundError('Invoice', invoiceId)`
|
|
152
|
+
Client sees: `{ "error": { "code": "NOT_FOUND", "message": "Invoice abc123 not found" } }`
|
|
153
|
+
|
|
154
|
+
### Database Access
|
|
155
|
+
Use Prisma Client. All queries go through repository classes in
|
|
156
|
+
src/repositories/. Never call Prisma directly from services or handlers.
|
|
157
|
+
|
|
158
|
+
Creating a new query: add a method to the repository, write a test that
|
|
159
|
+
uses the test database.
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## 4. Getting Started
|
|
163
|
+
|
|
164
|
+
### Requirements
|
|
165
|
+
|
|
166
|
+
This section must be **copy-paste executable**. A developer should be able to follow it literally, command by command, and end up with a running system.
|
|
167
|
+
|
|
168
|
+
**Include:**
|
|
169
|
+
- Prerequisites (with specific versions)
|
|
170
|
+
- Clone/install commands
|
|
171
|
+
- Environment configuration (what .env vars are needed, how to get them)
|
|
172
|
+
- Database setup (migrations, seed data)
|
|
173
|
+
- How to start the development server
|
|
174
|
+
- How to verify everything works (a specific URL to visit or command to run)
|
|
175
|
+
|
|
176
|
+
### Example
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
## Getting Started
|
|
180
|
+
|
|
181
|
+
### Prerequisites
|
|
182
|
+
- Node.js 20+ (`node --version` to check)
|
|
183
|
+
- PostgreSQL 16+ (running locally on default port 5432)
|
|
184
|
+
- Redis 7+ (running locally on default port 6379)
|
|
185
|
+
|
|
186
|
+
### Setup
|
|
187
|
+
git clone git@github.com:org/invoiceflow.git
|
|
188
|
+
cd invoiceflow
|
|
189
|
+
cp .env.example .env # Edit .env with your database credentials
|
|
190
|
+
npm install
|
|
191
|
+
npm run db:migrate # Create database tables
|
|
192
|
+
npm run db:seed # Load sample data for development
|
|
193
|
+
npm run dev # Start development server
|
|
194
|
+
|
|
195
|
+
### Verify
|
|
196
|
+
Open http://localhost:3000 in your browser. You should see the login page.
|
|
197
|
+
Log in with: demo@example.com / password123 (from seed data).
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Common Pitfalls
|
|
201
|
+
|
|
202
|
+
- **Assumed dependencies** — Do not assume `brew`, `nvm`, `docker` are installed. List prerequisites explicitly.
|
|
203
|
+
- **Missing env vars** — Provide a `.env.example` file. List every required variable with a description.
|
|
204
|
+
- **Platform differences** — If setup differs between macOS and Linux, say so.
|
|
205
|
+
- **Seed data** — Always provide seed data for development. Developers cannot use the app with an empty database.
|
|
206
|
+
- **Verification step** — Always end with "how to know it worked." Without this, developers do not know if a silent startup is success or failure.
|
|
207
|
+
|
|
208
|
+
## 5. Common Tasks
|
|
209
|
+
|
|
210
|
+
### What to Include
|
|
211
|
+
|
|
212
|
+
Step-by-step guides for the tasks a developer does repeatedly:
|
|
213
|
+
|
|
214
|
+
**Adding a feature:**
|
|
215
|
+
1. Where to create new files (directory conventions)
|
|
216
|
+
2. What files to modify (routes, services, repositories)
|
|
217
|
+
3. How to add database migrations
|
|
218
|
+
4. How to add tests
|
|
219
|
+
5. How to verify the feature works
|
|
220
|
+
|
|
221
|
+
**Fixing a bug:**
|
|
222
|
+
1. How to reproduce (test setup)
|
|
223
|
+
2. Where to look first (logs, error handlers)
|
|
224
|
+
3. How to add a regression test
|
|
225
|
+
4. How to submit the fix
|
|
226
|
+
|
|
227
|
+
**Running tests:**
|
|
228
|
+
1. Full test suite command
|
|
229
|
+
2. Single test file command
|
|
230
|
+
3. Watch mode command
|
|
231
|
+
4. How to run only unit / integration / E2E tests
|
|
232
|
+
|
|
233
|
+
**Creating a PR:**
|
|
234
|
+
1. Branch naming convention
|
|
235
|
+
2. Commit message format
|
|
236
|
+
3. What checks must pass
|
|
237
|
+
4. How to request review
|
|
238
|
+
5. Merge process (squash, rebase, merge commit)
|
|
239
|
+
|
|
240
|
+
**Deploying:**
|
|
241
|
+
1. How deployments are triggered
|
|
242
|
+
2. How to monitor a deployment
|
|
243
|
+
3. How to roll back
|
|
244
|
+
|
|
245
|
+
### Format
|
|
246
|
+
|
|
247
|
+
Each task should follow a consistent format:
|
|
248
|
+
|
|
249
|
+
```markdown
|
|
250
|
+
### Adding a New API Endpoint
|
|
251
|
+
|
|
252
|
+
1. Create route handler in `src/handlers/<resource>.handler.ts`
|
|
253
|
+
2. Add route to `src/routes/<resource>.routes.ts`
|
|
254
|
+
3. Create or update service in `src/services/<resource>.service.ts`
|
|
255
|
+
4. Create or update repository in `src/repositories/<resource>.repository.ts`
|
|
256
|
+
5. Add migration if schema changes: `npm run db:migrate:create <name>`
|
|
257
|
+
6. Add handler test: `src/handlers/__tests__/<resource>.handler.test.ts`
|
|
258
|
+
7. Add service test: `src/services/__tests__/<resource>.service.test.ts`
|
|
259
|
+
8. Run tests: `npm test`
|
|
260
|
+
9. Start dev server and test manually: `npm run dev`
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## 6. Where to Find Things
|
|
264
|
+
|
|
265
|
+
### What to Include
|
|
266
|
+
|
|
267
|
+
A directory map showing what lives where:
|
|
268
|
+
|
|
269
|
+
```markdown
|
|
270
|
+
## Where to Find Things
|
|
271
|
+
|
|
272
|
+
src/
|
|
273
|
+
handlers/ # HTTP request handlers (one per resource)
|
|
274
|
+
services/ # Business logic (one per domain concept)
|
|
275
|
+
repositories/ # Database access (one per entity)
|
|
276
|
+
middleware/ # Express middleware (auth, validation, errors)
|
|
277
|
+
models/ # TypeScript types and interfaces
|
|
278
|
+
errors/ # Custom error classes
|
|
279
|
+
utils/ # Shared utility functions
|
|
280
|
+
config/ # Configuration loading and validation
|
|
281
|
+
jobs/ # Background job definitions (BullMQ)
|
|
282
|
+
prisma/
|
|
283
|
+
schema.prisma # Database schema
|
|
284
|
+
migrations/ # Migration files (auto-generated)
|
|
285
|
+
seed.ts # Development seed data
|
|
286
|
+
tests/
|
|
287
|
+
integration/ # Tests that use real database
|
|
288
|
+
e2e/ # End-to-end tests (Playwright)
|
|
289
|
+
fixtures/ # Shared test data
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Also document key files specifically:
|
|
293
|
+
|
|
294
|
+
```markdown
|
|
295
|
+
### Key Files
|
|
296
|
+
- `.env.example` — All environment variables with descriptions
|
|
297
|
+
- `src/config/index.ts` — Configuration loading, validation, and defaults
|
|
298
|
+
- `src/middleware/error-handler.ts` — Global error handler (how errors become HTTP responses)
|
|
299
|
+
- `src/middleware/auth.ts` — Authentication middleware (JWT validation)
|
|
300
|
+
- `prisma/schema.prisma` — Database schema (source of truth for data model)
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Entry Points
|
|
304
|
+
|
|
305
|
+
Tell developers where execution starts:
|
|
306
|
+
|
|
307
|
+
```markdown
|
|
308
|
+
### Entry Points
|
|
309
|
+
- `src/server.ts` — Application startup (Express initialization, middleware registration, route mounting)
|
|
310
|
+
- `src/jobs/worker.ts` — Background job worker startup
|
|
311
|
+
- `prisma/seed.ts` — Seed data script
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## 7. Troubleshooting
|
|
315
|
+
|
|
316
|
+
### What to Include
|
|
317
|
+
|
|
318
|
+
Known issues, common mistakes, and their solutions:
|
|
319
|
+
|
|
320
|
+
```markdown
|
|
321
|
+
## Troubleshooting
|
|
322
|
+
|
|
323
|
+
### "Connection refused" on startup
|
|
324
|
+
PostgreSQL is not running. Start it: `brew services start postgresql@16`
|
|
325
|
+
|
|
326
|
+
### Tests fail with "relation does not exist"
|
|
327
|
+
Test database needs migrations. Run: `npm run db:migrate:test`
|
|
328
|
+
|
|
329
|
+
### "JWT_SECRET must be defined" error
|
|
330
|
+
Missing .env file. Copy from example: `cp .env.example .env`
|
|
331
|
+
|
|
332
|
+
### Hot reload not working
|
|
333
|
+
Kill stale processes: `lsof -ti:3000 | xargs kill -9`
|
|
334
|
+
Then restart: `npm run dev`
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
List the top 5-10 issues that new developers encounter. If you do not know them yet, add them as they are reported.
|
|
338
|
+
|
|
339
|
+
## What to Avoid
|
|
340
|
+
|
|
341
|
+
### Do Not Write a Tutorial
|
|
342
|
+
|
|
343
|
+
The onboarding guide is not a tutorial about the technology stack. Do not explain what React is or how Express middleware works. Assume developers know the stack; teach them the PROJECT.
|
|
344
|
+
|
|
345
|
+
### Do Not Duplicate Specifications
|
|
346
|
+
|
|
347
|
+
The onboarding guide summarizes architecture — it does not reproduce the architecture document. Use links ("See docs/system-architecture.md for the full component design").
|
|
348
|
+
|
|
349
|
+
### Do Not Include Aspirational Content
|
|
350
|
+
|
|
351
|
+
Document what the project IS, not what it WILL BE. Planned features, future migrations, and "we should really" items belong in the backlog, not the onboarding guide.
|
|
352
|
+
|
|
353
|
+
### Do Not Make It a Policy Document
|
|
354
|
+
|
|
355
|
+
Coding standards, PR review policies, and team processes belong in their respective documents (implementation playbook, git workflow). The onboarding guide links to them but does not contain them.
|
|
356
|
+
|
|
357
|
+
## Onboarding Guide Quality Criteria
|
|
358
|
+
|
|
359
|
+
A good onboarding guide passes the "cold start test": give it to someone who has never seen the project, provide no additional help, and they should be able to:
|
|
360
|
+
|
|
361
|
+
1. Understand what the project does (within 2 minutes)
|
|
362
|
+
2. Have a mental model of the architecture (within 5 minutes)
|
|
363
|
+
3. Have a running dev environment (within 15 minutes)
|
|
364
|
+
4. Know where to find a specific piece of code (within 1 minute of looking)
|
|
365
|
+
5. Complete their first simple task (within 30 minutes)
|
|
366
|
+
|
|
367
|
+
If any of these fail, the guide has a gap.
|
|
368
|
+
|
|
369
|
+
## Keeping the Guide Current
|
|
370
|
+
|
|
371
|
+
The onboarding guide is a living document. It must be updated when:
|
|
372
|
+
- A new key dependency is added
|
|
373
|
+
- The project structure changes significantly
|
|
374
|
+
- The setup process changes (new env vars, new services, new tools)
|
|
375
|
+
- A troubleshooting scenario is reported more than once
|
|
376
|
+
- An architectural decision changes the mental model
|