soloforge 1.0.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 +203 -0
- package/dist/adapters/claude_code/claude_md.d.ts +3 -0
- package/dist/adapters/claude_code/claude_md.d.ts.map +1 -0
- package/dist/adapters/claude_code/claude_md.js +79 -0
- package/dist/adapters/claude_code/claude_md.js.map +1 -0
- package/dist/adapters/claude_code/hooks.d.ts +3 -0
- package/dist/adapters/claude_code/hooks.d.ts.map +1 -0
- package/dist/adapters/claude_code/hooks.js +30 -0
- package/dist/adapters/claude_code/hooks.js.map +1 -0
- package/dist/adapters/claude_code/server.d.ts +10 -0
- package/dist/adapters/claude_code/server.d.ts.map +1 -0
- package/dist/adapters/claude_code/server.js +75 -0
- package/dist/adapters/claude_code/server.js.map +1 -0
- package/dist/adapters/claude_code/tools.d.ts +15 -0
- package/dist/adapters/claude_code/tools.d.ts.map +1 -0
- package/dist/adapters/claude_code/tools.js +758 -0
- package/dist/adapters/claude_code/tools.js.map +1 -0
- package/dist/adapters/trae/trae_config.d.ts +2 -0
- package/dist/adapters/trae/trae_config.d.ts.map +1 -0
- package/dist/adapters/trae/trae_config.js +22 -0
- package/dist/adapters/trae/trae_config.js.map +1 -0
- package/dist/adapters/trae/trae_rules.d.ts +3 -0
- package/dist/adapters/trae/trae_rules.d.ts.map +1 -0
- package/dist/adapters/trae/trae_rules.js +85 -0
- package/dist/adapters/trae/trae_rules.js.map +1 -0
- package/dist/bin/soloforge.d.ts +3 -0
- package/dist/bin/soloforge.d.ts.map +1 -0
- package/dist/bin/soloforge.js +353 -0
- package/dist/bin/soloforge.js.map +1 -0
- package/dist/engine/adr_recorder.d.ts +13 -0
- package/dist/engine/adr_recorder.d.ts.map +1 -0
- package/dist/engine/adr_recorder.js +132 -0
- package/dist/engine/adr_recorder.js.map +1 -0
- package/dist/engine/change_coordinator.d.ts +17 -0
- package/dist/engine/change_coordinator.d.ts.map +1 -0
- package/dist/engine/change_coordinator.js +138 -0
- package/dist/engine/change_coordinator.js.map +1 -0
- package/dist/engine/classifier.d.ts +7 -0
- package/dist/engine/classifier.d.ts.map +1 -0
- package/dist/engine/classifier.js +135 -0
- package/dist/engine/classifier.js.map +1 -0
- package/dist/engine/code_reviewer.d.ts +15 -0
- package/dist/engine/code_reviewer.d.ts.map +1 -0
- package/dist/engine/code_reviewer.js +371 -0
- package/dist/engine/code_reviewer.js.map +1 -0
- package/dist/engine/confidence_scorer.d.ts +11 -0
- package/dist/engine/confidence_scorer.d.ts.map +1 -0
- package/dist/engine/confidence_scorer.js +30 -0
- package/dist/engine/confidence_scorer.js.map +1 -0
- package/dist/engine/contract_guard.d.ts +10 -0
- package/dist/engine/contract_guard.d.ts.map +1 -0
- package/dist/engine/contract_guard.js +471 -0
- package/dist/engine/contract_guard.js.map +1 -0
- package/dist/engine/convention_detector.d.ts +7 -0
- package/dist/engine/convention_detector.d.ts.map +1 -0
- package/dist/engine/convention_detector.js +93 -0
- package/dist/engine/convention_detector.js.map +1 -0
- package/dist/engine/debt_reporter.d.ts +4 -0
- package/dist/engine/debt_reporter.d.ts.map +1 -0
- package/dist/engine/debt_reporter.js +67 -0
- package/dist/engine/debt_reporter.js.map +1 -0
- package/dist/engine/debt_tracker.d.ts +20 -0
- package/dist/engine/debt_tracker.d.ts.map +1 -0
- package/dist/engine/debt_tracker.js +152 -0
- package/dist/engine/debt_tracker.js.map +1 -0
- package/dist/engine/debugger.d.ts +3 -0
- package/dist/engine/debugger.d.ts.map +1 -0
- package/dist/engine/debugger.js +291 -0
- package/dist/engine/debugger.js.map +1 -0
- package/dist/engine/delivery.d.ts +15 -0
- package/dist/engine/delivery.d.ts.map +1 -0
- package/dist/engine/delivery.js +182 -0
- package/dist/engine/delivery.js.map +1 -0
- package/dist/engine/dependency_scanner.d.ts +13 -0
- package/dist/engine/dependency_scanner.d.ts.map +1 -0
- package/dist/engine/dependency_scanner.js +275 -0
- package/dist/engine/dependency_scanner.js.map +1 -0
- package/dist/engine/evolver.d.ts +15 -0
- package/dist/engine/evolver.d.ts.map +1 -0
- package/dist/engine/evolver.js +167 -0
- package/dist/engine/evolver.js.map +1 -0
- package/dist/engine/failure_classifier.d.ts +11 -0
- package/dist/engine/failure_classifier.d.ts.map +1 -0
- package/dist/engine/failure_classifier.js +120 -0
- package/dist/engine/failure_classifier.js.map +1 -0
- package/dist/engine/feasibility_checker.d.ts +6 -0
- package/dist/engine/feasibility_checker.d.ts.map +1 -0
- package/dist/engine/feasibility_checker.js +88 -0
- package/dist/engine/feasibility_checker.js.map +1 -0
- package/dist/engine/git_deps.d.ts +37 -0
- package/dist/engine/git_deps.d.ts.map +1 -0
- package/dist/engine/git_deps.js +3 -0
- package/dist/engine/git_deps.js.map +1 -0
- package/dist/engine/impact_analyzer.d.ts +10 -0
- package/dist/engine/impact_analyzer.d.ts.map +1 -0
- package/dist/engine/impact_analyzer.js +171 -0
- package/dist/engine/impact_analyzer.js.map +1 -0
- package/dist/engine/intent_expander.d.ts +17 -0
- package/dist/engine/intent_expander.d.ts.map +1 -0
- package/dist/engine/intent_expander.js +447 -0
- package/dist/engine/intent_expander.js.map +1 -0
- package/dist/engine/knowledge_manager.d.ts +76 -0
- package/dist/engine/knowledge_manager.d.ts.map +1 -0
- package/dist/engine/knowledge_manager.js +781 -0
- package/dist/engine/knowledge_manager.js.map +1 -0
- package/dist/engine/migration_guard.d.ts +3 -0
- package/dist/engine/migration_guard.d.ts.map +1 -0
- package/dist/engine/migration_guard.js +235 -0
- package/dist/engine/migration_guard.js.map +1 -0
- package/dist/engine/observability.d.ts +33 -0
- package/dist/engine/observability.d.ts.map +1 -0
- package/dist/engine/observability.js +312 -0
- package/dist/engine/observability.js.map +1 -0
- package/dist/engine/onboarding.d.ts +27 -0
- package/dist/engine/onboarding.d.ts.map +1 -0
- package/dist/engine/onboarding.js +362 -0
- package/dist/engine/onboarding.js.map +1 -0
- package/dist/engine/prompt_experiment.d.ts +18 -0
- package/dist/engine/prompt_experiment.d.ts.map +1 -0
- package/dist/engine/prompt_experiment.js +127 -0
- package/dist/engine/prompt_experiment.js.map +1 -0
- package/dist/engine/resilience.d.ts +20 -0
- package/dist/engine/resilience.d.ts.map +1 -0
- package/dist/engine/resilience.js +210 -0
- package/dist/engine/resilience.js.map +1 -0
- package/dist/engine/scaffolder.d.ts +9 -0
- package/dist/engine/scaffolder.d.ts.map +1 -0
- package/dist/engine/scaffolder.js +222 -0
- package/dist/engine/scaffolder.js.map +1 -0
- package/dist/engine/scope_controller.d.ts +3 -0
- package/dist/engine/scope_controller.d.ts.map +1 -0
- package/dist/engine/scope_controller.js +121 -0
- package/dist/engine/scope_controller.js.map +1 -0
- package/dist/engine/task_context.d.ts +34 -0
- package/dist/engine/task_context.d.ts.map +1 -0
- package/dist/engine/task_context.js +321 -0
- package/dist/engine/task_context.js.map +1 -0
- package/dist/engine/task_planner.d.ts +11 -0
- package/dist/engine/task_planner.d.ts.map +1 -0
- package/dist/engine/task_planner.js +267 -0
- package/dist/engine/task_planner.js.map +1 -0
- package/dist/engine/team_awareness.d.ts +12 -0
- package/dist/engine/team_awareness.d.ts.map +1 -0
- package/dist/engine/team_awareness.js +121 -0
- package/dist/engine/team_awareness.js.map +1 -0
- package/dist/engine/test_generator.d.ts +9 -0
- package/dist/engine/test_generator.d.ts.map +1 -0
- package/dist/engine/test_generator.js +241 -0
- package/dist/engine/test_generator.js.map +1 -0
- package/dist/engine/test_quality.d.ts +9 -0
- package/dist/engine/test_quality.d.ts.map +1 -0
- package/dist/engine/test_quality.js +256 -0
- package/dist/engine/test_quality.js.map +1 -0
- package/dist/engine/traceability.d.ts +3 -0
- package/dist/engine/traceability.d.ts.map +1 -0
- package/dist/engine/traceability.js +137 -0
- package/dist/engine/traceability.js.map +1 -0
- package/dist/engine/verifier.d.ts +3 -0
- package/dist/engine/verifier.d.ts.map +1 -0
- package/dist/engine/verifier.js +202 -0
- package/dist/engine/verifier.js.map +1 -0
- package/dist/engine/workspace_manager.d.ts +29 -0
- package/dist/engine/workspace_manager.d.ts.map +1 -0
- package/dist/engine/workspace_manager.js +77 -0
- package/dist/engine/workspace_manager.js.map +1 -0
- package/dist/git/operations.d.ts +57 -0
- package/dist/git/operations.d.ts.map +1 -0
- package/dist/git/operations.js +215 -0
- package/dist/git/operations.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/conflict_detector.d.ts +6 -0
- package/dist/knowledge/conflict_detector.d.ts.map +1 -0
- package/dist/knowledge/conflict_detector.js +19 -0
- package/dist/knowledge/conflict_detector.js.map +1 -0
- package/dist/knowledge/health_checker.d.ts +10 -0
- package/dist/knowledge/health_checker.d.ts.map +1 -0
- package/dist/knowledge/health_checker.js +61 -0
- package/dist/knowledge/health_checker.js.map +1 -0
- package/dist/knowledge/index_manager.d.ts +35 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -0
- package/dist/knowledge/index_manager.js +209 -0
- package/dist/knowledge/index_manager.js.map +1 -0
- package/dist/knowledge/loader.d.ts +13 -0
- package/dist/knowledge/loader.d.ts.map +1 -0
- package/dist/knowledge/loader.js +161 -0
- package/dist/knowledge/loader.js.map +1 -0
- package/dist/knowledge/writer.d.ts +15 -0
- package/dist/knowledge/writer.d.ts.map +1 -0
- package/dist/knowledge/writer.js +98 -0
- package/dist/knowledge/writer.js.map +1 -0
- package/dist/types.d.ts +724 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
- package/templates/config.yaml +53 -0
- package/templates/knowledge/acceptance_templates/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +39 -0
- package/templates/knowledge/acceptance_templates//345/211/215/347/253/257/351/241/265/351/235/242/351/252/214/346/224/266/346/270/205/345/215/225.md +27 -0
- package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +180 -0
- package/templates/knowledge/acceptance_templates//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
- package/templates/knowledge/acceptance_templates//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +51 -0
- package/templates/knowledge/acceptance_templates//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/350/256/276/350/256/241/346/250/241/347/211/210.md +58 -0
- package/templates/knowledge/acceptance_templates//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +53 -0
- package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
- package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/351/252/214/346/224/266/346/270/205/345/215/225.md +24 -0
- package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +42 -0
- package/templates/knowledge/acceptance_templates//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +39 -0
- package/templates/knowledge/acceptance_templates//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +40 -0
- package/templates/knowledge/acceptance_templates//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +42 -0
- package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
- package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +47 -0
- package/templates/knowledge/acceptance_templates//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +44 -0
- package/templates/knowledge/domain//345/244/232/347/247/237/346/210/267.md +35 -0
- package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +34 -0
- package/templates/knowledge/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +37 -0
- package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +37 -0
- package/templates/knowledge/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +36 -0
- package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +38 -0
- package/templates/knowledge/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +34 -0
- package/templates/knowledge/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +24 -0
- package/templates/knowledge/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +36 -0
- package/templates/knowledge/procedures/Figma/344/272/244/344/273/230/346/265/201/347/250/213.md +35 -0
- package/templates/knowledge/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +28 -0
- package/templates/knowledge/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +33 -0
- package/templates/knowledge/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +31 -0
- package/templates/knowledge/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +37 -0
- package/templates/knowledge/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +43 -0
- package/templates/knowledge/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +46 -0
- package/templates/knowledge/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +38 -0
- package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -0
- package/templates/knowledge/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +24 -0
- package/templates/knowledge/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +40 -0
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +45 -0
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +33 -0
- package/templates/knowledge/procedures//347/274/272/351/231/267/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +28 -0
- package/templates/knowledge/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +29 -0
- package/templates/knowledge/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +43 -0
- package/templates/knowledge/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +45 -0
- package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +27 -0
- package/templates/knowledge/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +36 -0
- package/templates/knowledge/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +32 -0
- package/templates/knowledge/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +40 -0
- package/templates/knowledge/procedures//351/252/214/350/257/201/350/256/241/345/210/222/346/265/201/347/250/213.md +32 -0
- package/templates/knowledge/product_profiles/b2b-internal.yaml +35 -0
- package/templates/knowledge/product_profiles/b2c.yaml +37 -0
- package/templates/knowledge/product_profiles/saas.yaml +35 -0
- package/templates/knowledge/review_rules//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +79 -0
- package/templates/knowledge/review_rules//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
- package/templates/knowledge/review_rules//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +61 -0
- package/templates/knowledge/review_rules//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
- package/templates/knowledge/review_rules//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +62 -0
- package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +80 -0
- package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +31 -0
- package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +32 -0
- package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
- package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
- package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +28 -0
- package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +31 -0
- package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +27 -0
- package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
- package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +25 -0
- package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +39 -0
- package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +34 -0
- package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +27 -0
- package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +35 -0
- package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +30 -0
- package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +33 -0
- package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +29 -0
- package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +31 -0
- package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +28 -0
- package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +30 -0
- package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +32 -0
- package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +24 -0
- package/templates/patterns//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241/350/247/204/350/214/203.md +29 -0
- package/templates/scaffolds/react/Form.tsx.hbs +16 -0
- package/templates/scaffolds/react/List.tsx.hbs +28 -0
- package/templates/scaffolds/react/Page.test.tsx.hbs +10 -0
- package/templates/scaffolds/react/Page.tsx.hbs +14 -0
- package/templates/scaffolds/react/README.md.hbs +44 -0
- package/templates/scaffolds/react/service.ts.hbs +37 -0
- package/templates/scaffolds/react/types.ts.hbs +6 -0
- package/templates/scaffolds/react/use{{ModuleName}}.ts.hbs +88 -0
- package/templates/scaffolds/spring-boot/ApiContract.md.hbs +110 -0
- package/templates/scaffolds/spring-boot/Controller.java.hbs +43 -0
- package/templates/scaffolds/spring-boot/DTO.java.hbs +9 -0
- package/templates/scaffolds/spring-boot/Entity.java.hbs +12 -0
- package/templates/scaffolds/spring-boot/ErrorCode.java.hbs +28 -0
- package/templates/scaffolds/spring-boot/Mapper.java.hbs +9 -0
- package/templates/scaffolds/spring-boot/PageResponse.java.hbs +29 -0
- package/templates/scaffolds/spring-boot/Service.java.hbs +12 -0
- package/templates/scaffolds/spring-boot/ServiceImpl.java.hbs +48 -0
- package/templates/scaffolds/spring-boot/ServiceTest.java.hbs +22 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bug-fix-pipeline
|
|
3
|
+
type: pipeline_procedure
|
|
4
|
+
when: "缺陷修复, Bug修复, 问题修复, 异常修复, 错误修复, bug fix, 缺陷处理"
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 缺陷修复管线
|
|
10
|
+
|
|
11
|
+
### 第1步:问题复现
|
|
12
|
+
获取具体操作步骤、输入数据、环境信息。确认可稳定复现(或记录偶现条件)。确定影响范围(全部用户/特定条件,偶发/必现)。
|
|
13
|
+
模板:Bug分析模版.md
|
|
14
|
+
产出保存到:.soloforge/output/01-Bug分析.md
|
|
15
|
+
工具:sf_classify
|
|
16
|
+
|
|
17
|
+
### 第2步:根因定位
|
|
18
|
+
根据日志 traceId 追踪完整请求链路,查看接口耗时和错误率。根据异常堆栈定位到具体文件和方法。区分代码 Bug/配置错误/数据异常/环境问题。一次只验证一个假设,记录所有结果包括被否定的假设。
|
|
19
|
+
产出保存到:.soloforge/output/02-根因分析.md
|
|
20
|
+
工具:sf_analyze
|
|
21
|
+
|
|
22
|
+
### 第3步:修复实现
|
|
23
|
+
编写最小修复代码,修复范围只覆盖确认的根因,禁止顺手改其他代码。使用 RED-GREEN 验证(回退修复→确认失败→恢复修复→确认通过)。添加回归测试防止同类问题再发生。
|
|
24
|
+
工具:sf_expand, sf_scaffold
|
|
25
|
+
|
|
26
|
+
### 第4步:验证闭环
|
|
27
|
+
执行构建 + 测试验证,代码审查(质量/安全/性能),学习记录(补防御性代码或规则)。
|
|
28
|
+
工具:sf_verify, sf_review, sf_learn
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: detailed-design
|
|
3
|
+
type: procedure
|
|
4
|
+
when: 详细设计, 接口设计, 数据库设计, DDL设计, 类设计, 详细方案, detailed design
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
从架构设计产出实现锚点(数据结构、接口定义、状态机)、DDL 和映射矩阵。适用于编码前的设计阶段。
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
1. 确认架构设计已冻结
|
|
14
|
+
2. 先产出实现锚点(表结构、映射矩阵、菜单/权限映射、自测钩子),再加说明文字
|
|
15
|
+
3. DDL 设计:命名、注释、审计字段、主键、关联策略、兼容窗口、回滚策略
|
|
16
|
+
4. 前后端适配矩阵:关联回 UI 交互设计和接口契约
|
|
17
|
+
5. 接口字段级别的细节留给 API 契约阶段,本阶段不展开
|
|
18
|
+
|
|
19
|
+
## 检查点
|
|
20
|
+
- [ ] DDL 命名/注释/审计字段/主键完备
|
|
21
|
+
- [ ] DDL 有兼容窗口和回滚策略
|
|
22
|
+
- [ ] 页面映射/字段变更/菜单权限/状态机可追溯到 UI 交互设计
|
|
23
|
+
- [ ] 新增/修改菜单的角色授权和权限标识已文档化
|
|
24
|
+
- [ ] 实现锚点可供任务拆解直接消费
|
|
25
|
+
|
|
26
|
+
## 注意事项
|
|
27
|
+
- 禁止先写说明文字再补实现锚点(锚点优先)
|
|
28
|
+
- 禁止在本阶段展开接口字段级定义(属于 API 契约阶段)
|
|
29
|
+
- DDL 必须指定关联策略和审计策略
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug-investigation
|
|
3
|
+
type: procedure
|
|
4
|
+
when: 调试, 排障, 排查问题, bug定位, 问题排查, 线上排查, 异常排查, 错误定位, 日志排查
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
功能异常、性能问题、线上报错等需要定位根因的场景。遵循「先观察后假设再验证」的原则。
|
|
11
|
+
|
|
12
|
+
## 四阶段调试法
|
|
13
|
+
1. **观察阶段**:获取具体操作步骤、输入数据、环境信息,确认可复现
|
|
14
|
+
2. **假设阶段**:根据观察提出一个假设,不要同时提出多个假设
|
|
15
|
+
3. **验证阶段**:设计最小实验验证假设,记录结果(包括被否定的假设)
|
|
16
|
+
4. **修复阶段**:确认根因后编写最小修复 + 回归测试
|
|
17
|
+
|
|
18
|
+
## 步骤
|
|
19
|
+
1. 复现问题:获取具体操作步骤、输入数据、环境信息
|
|
20
|
+
2. 确定影响范围:是全部用户还是特定条件?是偶发还是必现?
|
|
21
|
+
3. 查看日志:根据时间窗口搜索 traceId,查看完整请求链路日志
|
|
22
|
+
4. 查看监控:接口响应时间、错误率、资源使用(CPU/内存/磁盘)
|
|
23
|
+
5. 定位代码:根据日志中的异常堆栈定位到具体文件和方法
|
|
24
|
+
6. 分析根因:区分是代码 Bug、配置错误、数据异常还是环境问题
|
|
25
|
+
7. 验证假设:在本地或测试环境复现并验证根因(一次只验证一个假设)
|
|
26
|
+
8. 编写最小修复:修复范围只覆盖确认的根因,禁止顺手改其他代码
|
|
27
|
+
9. 使用 RED-GREEN 验证:回退修复 → 确认失败 → 恢复修复 → 确认通过
|
|
28
|
+
10. 添加回归测试(防止同类问题再发生)
|
|
29
|
+
|
|
30
|
+
## 检查点
|
|
31
|
+
- [ ] 问题可稳定复现(或记录了偶现条件)
|
|
32
|
+
- [ ] 日志中有 traceId 可追踪完整链路
|
|
33
|
+
- [ ] 调试过程有假设-验证记录
|
|
34
|
+
- [ ] 根因已确认而非停留在表象
|
|
35
|
+
- [ ] 修复范围仅限确认的根因
|
|
36
|
+
- [ ] 修复包含回归测试
|
|
37
|
+
|
|
38
|
+
## 注意事项
|
|
39
|
+
- 不要在没有复现的情况下直接修改代码
|
|
40
|
+
- 日志排查优先使用 traceId,避免大海捞针
|
|
41
|
+
- 性能问题优先看慢查询日志和接口耗时
|
|
42
|
+
- 同一现象修复失败 3 次后停止猜测,重新审视假设,考虑是否为架构问题
|
|
43
|
+
- 禁止通过删除断言、增加 sleep、降低覆盖率、增加 mock 来制造通过
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: migration-pipeline
|
|
3
|
+
type: pipeline_procedure
|
|
4
|
+
when: "技术迁移, 框架升级, 技术栈迁移, 版本升级, 迁移, migration, 系统迁移, 组件替换"
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 技术迁移管线
|
|
10
|
+
|
|
11
|
+
### 第1步:迁移评估
|
|
12
|
+
评估迁移范围和影响(模块数、代码量、依赖链)。评估迁移路径(渐进式/一次性)。评估兼容性风险(API 变更、行为差异、性能差异)。制定回滚方案。
|
|
13
|
+
模板:迁移评估模版.md
|
|
14
|
+
产出保存到:.soloforge/output/01-迁移评估.md
|
|
15
|
+
工具:sf_classify, sf_analyze
|
|
16
|
+
|
|
17
|
+
### 第2步:方案设计
|
|
18
|
+
制定分阶段迁移计划(每阶段可独立验证和回滚)。识别兼容层需求(适配器/Shim/Feature Flag)。定义每个阶段的完成标准和验证方式。
|
|
19
|
+
产出保存到:.soloforge/output/02-迁移方案.md
|
|
20
|
+
|
|
21
|
+
### 第3步:渐进迁移
|
|
22
|
+
按计划逐步迁移,每阶段完成后全量测试。保持双写/双读过渡期(如需要)。记录每阶段发现的行为差异和兼容性问题。
|
|
23
|
+
工具:sf_expand, sf_verify
|
|
24
|
+
|
|
25
|
+
### 第4步:清理验证
|
|
26
|
+
移除兼容层和废弃代码。全量功能验证。性能对比确认无退化。更新文档和依赖配置。
|
|
27
|
+
工具:sf_verify, sf_review, sf_deliver, sf_learn
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deploy-release
|
|
3
|
+
type: procedure
|
|
4
|
+
when: 发布, 上线, 部署, release, 发版, 版本发布, 灰度, 发布上线, 生产部署
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
新功能上线、Bug 修复发版、生产环境部署。适用于经过测试验证后的正式发布流程。
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
1. 确认所有测试通过(单元测试 + 集成测试),检查 CI 绿灯
|
|
14
|
+
2. 更新版本号(package.json / pom.xml),生成 CHANGELOG
|
|
15
|
+
3. 合并代码到 release/main 分支,打 Git tag(v{version})
|
|
16
|
+
4. 触发 CI/CD 构建,确认构建产物生成成功
|
|
17
|
+
5. 在预发环境(staging)验证核心功能流程
|
|
18
|
+
6. 执行数据库迁移(如有 DDL 变更,先备份再执行)
|
|
19
|
+
7. 部署到生产环境(滚动更新或蓝绿部署)
|
|
20
|
+
8. 验证生产环境:健康检查、核心接口冒烟测试
|
|
21
|
+
9. 监控告警观察 30 分钟,确认无异常
|
|
22
|
+
10. 通知团队发布完成,更新发布记录
|
|
23
|
+
11. 部署前确认回滚方案(回滚命令、数据库回滚脚本、配置回滚点)
|
|
24
|
+
12. 灰度/金丝雀发布:先部署到 10% 实例,观察 5 分钟监控指标
|
|
25
|
+
13. 确认监控指标正常后,逐步扩大到 50% → 100%
|
|
26
|
+
14. 部署完成后验证关键业务流程(冒烟测试),确认功能正常
|
|
27
|
+
15. 部署后观察 30 分钟监控(错误率、响应时间、资源使用),异常则触发回滚
|
|
28
|
+
|
|
29
|
+
## 检查点
|
|
30
|
+
- [ ] CI 全部通过,无跳过的测试
|
|
31
|
+
- [ ] 预发环境验证通过
|
|
32
|
+
- [ ] 数据库变更已执行且可回滚
|
|
33
|
+
- [ ] 生产健康检查通过
|
|
34
|
+
- [ ] 回滚方案已确认
|
|
35
|
+
- [ ] 灰度发布监控指标正常
|
|
36
|
+
- [ ] 冒烟测试通过
|
|
37
|
+
- [ ] 部署后 30 分钟监控正常
|
|
38
|
+
|
|
39
|
+
## 注意事项
|
|
40
|
+
- DDL 变更必须向前兼容(新列可为空或有默认值)
|
|
41
|
+
- 发布后保留回滚方案至少 24 小时
|
|
42
|
+
- 避免周五下午发布(无人在岗处理问题)
|
|
43
|
+
- 发布窗口应选择业务低峰期(通常 22:00-06:00)
|
|
44
|
+
- 数据库迁移脚本必须向前兼容,回滚时不执行 DDL 回退
|
|
45
|
+
- 发布后必须通知相关团队(运营、客服),提前告知可能的影响
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refactor-pipeline
|
|
3
|
+
type: pipeline_procedure
|
|
4
|
+
when: "代码重构, 模块拆分, 模式优化, 提取公共方法, 重构, refactor, 代码改善, 结构优化"
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 重构管线
|
|
10
|
+
|
|
11
|
+
### 第1步:现状分析
|
|
12
|
+
识别当前代码的坏味道和重构目标。量化现状(圈复杂度、方法行数、类职责数)。确定重构类型(提取方法/提取类/内联/重命名/搬移/模式替换)。
|
|
13
|
+
模板:重构方案模版.md
|
|
14
|
+
产出保存到:.soloforge/output/01-重构分析.md
|
|
15
|
+
工具:sf_classify, sf_analyze
|
|
16
|
+
|
|
17
|
+
### 第2步:方案设计
|
|
18
|
+
定义重构目标和 Before/After 对比。评估影响范围(哪些模块/接口/测试受影响)。识别风险点(破坏性变更可能性、回归风险)。制定分步执行计划(每步可独立验证)。
|
|
19
|
+
产出保存到:.soloforge/output/02-重构方案.md
|
|
20
|
+
|
|
21
|
+
### 第3步:分步实施
|
|
22
|
+
按计划逐步执行重构,每步完成后运行测试确认无回归。禁止一次改多步再验证。保持测试始终可通过(绿色),如需修改测试先确认测试本身正确。
|
|
23
|
+
工具:sf_expand
|
|
24
|
+
|
|
25
|
+
### 第4步:验证验收
|
|
26
|
+
执行全量构建和测试。代码审查重点关注:行为等价性(重构不改变外部行为)、接口兼容性、性能影响。学习记录(重构模式、发现的设计问题)。
|
|
27
|
+
工具:sf_verify, sf_review, sf_learn
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: integration-verification
|
|
3
|
+
type: procedure
|
|
4
|
+
when: 集成测试, 集成验证, E2E测试, 端到端验证, 联调测试, integration test, E2E
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
跨 API、页面交互和业务流的增量集成测试,要求真实运行时证据。适用于部署后的端到端验证。
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
1. 分析变更影响:哪些接口、页面、DDL、菜单受影响
|
|
14
|
+
2. 发现服务依赖和启动顺序
|
|
15
|
+
3. 构建部署最新代码,验证构建产物新鲜度
|
|
16
|
+
4. 收集运行时证据:API 动态验证、页面快照、控制台、网络请求
|
|
17
|
+
5. 端到端流程验证:从浏览器页面出发,不绕过前端直接调后端
|
|
18
|
+
6. DDL 迁移必须在浏览器/API 测试前应用到运行数据库
|
|
19
|
+
7. 发现缺陷时:先诊断再修复,修复后重新构建再验证
|
|
20
|
+
8. 构建覆盖矩阵:接口 × 页面交互 × 业务流三维覆盖
|
|
21
|
+
9. 产出偏差报告:每个缺口映射到返回阶段
|
|
22
|
+
|
|
23
|
+
## 检查点
|
|
24
|
+
- [ ] 变更影响分析仅覆盖本次变更范围
|
|
25
|
+
- [ ] 构建产物新鲜度已验证
|
|
26
|
+
- [ ] API 动态验证和浏览器运行时验证均完成
|
|
27
|
+
- [ ] 端到端流程从浏览器页面出发完成
|
|
28
|
+
- [ ] 菜单变更验证了角色可见性、路由可达、API 可调
|
|
29
|
+
- [ ] 覆盖矩阵达标,偏差报告指定返回阶段
|
|
30
|
+
|
|
31
|
+
## 注意事项
|
|
32
|
+
- 禁止绕过前端直接调后端 API 做业务流测试
|
|
33
|
+
- 禁止用 SQL 直接写业务测试数据(使用页面操作或业务 API)
|
|
34
|
+
- 禁止在过期构建上测试(新鲜度检查失败必须重新构建)
|
|
35
|
+
- 禁止硬编码测试凭据
|
|
36
|
+
- 禁止接受 dry-run/静态分析/AI 摘要作为通过证据
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: requirement-clarify
|
|
3
|
+
type: procedure
|
|
4
|
+
when: 需求澄清, 需求分析, 需求梳理, 理解需求, 需求确认, requirement, 需求评审
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
从原始需求中提取结构化事实、识别冲突和缺口、产出可追溯的需求基线。适用于编码前的需求理解阶段。
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
1. 提取需求事实:从需求文档/用户描述中提取功能点、页面交互、业务规则
|
|
14
|
+
2. 分离事实与决策:需求事实和架构决策分列记录,禁止将 AI 推论伪装为需求事实
|
|
15
|
+
3. 运行术语一致性检查:识别同一概念不同命名,统一术语
|
|
16
|
+
4. 标记未确认项:无法确认的需求标记为「待确认」,禁止猜测或跳过
|
|
17
|
+
5. 标注冲突和越界项:明确来源和处理方式(冲突标注来源,越界标注排除原因)
|
|
18
|
+
6. 绑定菜单权限:菜单需求必须关联角色、页面、操作权限
|
|
19
|
+
7. 声明写操作的失败反馈:每个用户可见写操作必须有提示文案、重试建议、是否可恢复
|
|
20
|
+
8. 冻结需求基线:按需求 ID 冻结验收信号和重新打开条件
|
|
21
|
+
|
|
22
|
+
## 检查点
|
|
23
|
+
- [ ] 术语一致,无同义混用
|
|
24
|
+
- [ ] 每个来源项映射到唯一目标,无孤立页面交互
|
|
25
|
+
- [ ] 菜单需求绑定角色/权限,无悬空项
|
|
26
|
+
- [ ] 用户可见写操作有失败反馈、删除语义、审计要求
|
|
27
|
+
- [ ] 需求基线按 ID 冻结
|
|
28
|
+
|
|
29
|
+
## 注意事项
|
|
30
|
+
- 禁止将 AI 推论冒充为需求事实
|
|
31
|
+
- 原型缺失不阻塞需求分析
|
|
32
|
+
- 未确认需求必须显式标记,禁止静默跳过
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: acceptance-test-planning
|
|
3
|
+
type: procedure
|
|
4
|
+
when: 验收测试, 验收规划, 验收标准, acceptance test, 验收计划, 测试用例设计
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
基于任务卡片规划验收测试范围、优先级和覆盖策略,确保 P0/P1 功能有明确验收标准。
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
1. 确认任务卡片和交付蓝图已冻结
|
|
14
|
+
2. 识别所有功能点的测试覆盖需求
|
|
15
|
+
3. 创建测试条目,每条追溯到任务卡和需求基线
|
|
16
|
+
4. P0/P1 测试必须覆盖:正常路径 + 至少一个错误路径
|
|
17
|
+
5. L0 紧急修复可使用简化测试但不得完全跳过
|
|
18
|
+
6. 测试框架由技术栈决定
|
|
19
|
+
7. 明确验收标准和验收场景(基于需求文档和验收清单)
|
|
20
|
+
8. 准备测试数据(覆盖正常流、异常流、边界值、权限场景)
|
|
21
|
+
9. 执行验收测试并记录结果(通过/失败/阻塞),失败项关联缺陷
|
|
22
|
+
10. 回归测试:修复缺陷后重新验证相关场景
|
|
23
|
+
11. 输出验收报告(测试覆盖率、通过率、遗留风险),作为上线依据
|
|
24
|
+
|
|
25
|
+
## 检查点
|
|
26
|
+
- [ ] 所有 P0 任务卡有至少 1 个测试条目
|
|
27
|
+
- [ ] 所有 P1 任务卡有至少 1 个测试条目
|
|
28
|
+
- [ ] 覆盖策略包含正常路径、边界场景、错误路径
|
|
29
|
+
- [ ] 测试条目追溯到任务卡和需求基线
|
|
30
|
+
- [ ] 验收场景覆盖所有需求点
|
|
31
|
+
- [ ] 测试数据准备完毕
|
|
32
|
+
- [ ] 验收报告输出并评审
|
|
33
|
+
|
|
34
|
+
## 注意事项
|
|
35
|
+
- 测试必须在实现前生成(先失败后实现)
|
|
36
|
+
- 每个测试至少 1 个断言
|
|
37
|
+
- 纯文档/配置变更不适用本流程
|
|
38
|
+
- 验收测试必须在类生产环境执行,禁止在开发环境验收
|
|
39
|
+
- 验收发现的 P0/P1 问题必须在上线前修复
|
|
40
|
+
- 性能验收必须模拟真实数据量和并发量
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-plan
|
|
3
|
+
type: procedure
|
|
4
|
+
when: 验证计划, 测试计划, 验证策略, verification plan, 测试规划, 集成测试计划
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
基于任务卡片和交付蓝图规划验证范围、优先级和覆盖策略。适用于编码完成后的验证准备阶段。
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
1. 确认任务卡片和交付蓝图已冻结
|
|
14
|
+
2. 读取任务卡片识别所有需要测试覆盖的功能点
|
|
15
|
+
3. 创建测试条目:追溯到任务卡片和需求基线
|
|
16
|
+
4. 定义覆盖策略:正常路径 + 边界场景 + 错误路径
|
|
17
|
+
5. 分配优先级:P0/P1 每个至少有 1 个测试条目
|
|
18
|
+
6. 高风险变更必须有运行时验证步骤
|
|
19
|
+
7. DDL 变更必须有回滚验证步骤
|
|
20
|
+
8. 明确环境要求、数据准备和执行顺序
|
|
21
|
+
|
|
22
|
+
## 检查点
|
|
23
|
+
- [ ] 所有 P0/P1 任务卡有至少 1 个测试条目
|
|
24
|
+
- [ ] 测试覆盖正常路径 + 边界场景 + 错误路径
|
|
25
|
+
- [ ] 高风险变更有运行时验证步骤
|
|
26
|
+
- [ ] DDL 变更有回滚验证步骤
|
|
27
|
+
- [ ] 环境要求、数据准备和执行顺序已明确
|
|
28
|
+
|
|
29
|
+
## 注意事项
|
|
30
|
+
- L0 紧急 hotfix 可使用简化测试(最小复现测试或构建前验证命令),但不得完全跳过
|
|
31
|
+
- 纯文档/配置变更不适用本流程
|
|
32
|
+
- 测试条目必须追溯到任务卡和需求基线
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# B2B 内部产品配置
|
|
2
|
+
name: b2b-internal
|
|
3
|
+
display_name: B2B 内部系统
|
|
4
|
+
|
|
5
|
+
verification:
|
|
6
|
+
build: required
|
|
7
|
+
test:
|
|
8
|
+
coverage_minimum: 60
|
|
9
|
+
required: true
|
|
10
|
+
acceptance:
|
|
11
|
+
automated: suggested
|
|
12
|
+
manual: required
|
|
13
|
+
review:
|
|
14
|
+
quality: true
|
|
15
|
+
security: suggested
|
|
16
|
+
performance: false
|
|
17
|
+
debt: false
|
|
18
|
+
|
|
19
|
+
domain_rules:
|
|
20
|
+
multi_tenancy: disabled
|
|
21
|
+
audit_logging: suggested
|
|
22
|
+
data_permission: required
|
|
23
|
+
notification: enabled
|
|
24
|
+
|
|
25
|
+
delivery:
|
|
26
|
+
auto_push: true
|
|
27
|
+
require_approval: false
|
|
28
|
+
approval_roles: []
|
|
29
|
+
rollback_plan: suggested
|
|
30
|
+
|
|
31
|
+
constraints:
|
|
32
|
+
- 内部用户使用统一身份认证(SSO)
|
|
33
|
+
- 数据权限按部门隔离
|
|
34
|
+
- 简化部署流程,支持快速迭代
|
|
35
|
+
- 文档优先(接口文档、操作手册)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# B2C 产品配置
|
|
2
|
+
name: b2c
|
|
3
|
+
display_name: B2C 消费者产品
|
|
4
|
+
|
|
5
|
+
verification:
|
|
6
|
+
build: required
|
|
7
|
+
test:
|
|
8
|
+
coverage_minimum: 90
|
|
9
|
+
required: true
|
|
10
|
+
acceptance:
|
|
11
|
+
automated: required
|
|
12
|
+
manual: required
|
|
13
|
+
review:
|
|
14
|
+
quality: true
|
|
15
|
+
security: true
|
|
16
|
+
performance: true
|
|
17
|
+
debt: true
|
|
18
|
+
|
|
19
|
+
domain_rules:
|
|
20
|
+
multi_tenancy: disabled
|
|
21
|
+
audit_logging: required
|
|
22
|
+
data_permission: required
|
|
23
|
+
notification: required
|
|
24
|
+
|
|
25
|
+
delivery:
|
|
26
|
+
auto_push: false
|
|
27
|
+
require_approval: true
|
|
28
|
+
approval_roles: [tech_lead, product_owner, business_owner]
|
|
29
|
+
rollback_plan: required
|
|
30
|
+
|
|
31
|
+
constraints:
|
|
32
|
+
- 首屏加载时间 < 3 秒
|
|
33
|
+
- API 响应时间 P99 < 500ms
|
|
34
|
+
- 所有用户输入必须 XSS 防护
|
|
35
|
+
- 敏感操作(支付、修改密码)需二次验证
|
|
36
|
+
- SEO: 页面支持 SSR 或预渲染
|
|
37
|
+
- 支持 CDN 静态资源加速
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# SaaS 产品配置
|
|
2
|
+
name: saas
|
|
3
|
+
display_name: SaaS 产品
|
|
4
|
+
|
|
5
|
+
verification:
|
|
6
|
+
build: required
|
|
7
|
+
test:
|
|
8
|
+
coverage_minimum: 80
|
|
9
|
+
required: true
|
|
10
|
+
acceptance:
|
|
11
|
+
automated: required
|
|
12
|
+
manual: required
|
|
13
|
+
review:
|
|
14
|
+
quality: true
|
|
15
|
+
security: true
|
|
16
|
+
performance: true
|
|
17
|
+
debt: true
|
|
18
|
+
|
|
19
|
+
domain_rules:
|
|
20
|
+
multi_tenancy: required
|
|
21
|
+
audit_logging: required
|
|
22
|
+
data_permission: required
|
|
23
|
+
notification: enabled
|
|
24
|
+
|
|
25
|
+
delivery:
|
|
26
|
+
auto_push: false
|
|
27
|
+
require_approval: true
|
|
28
|
+
approval_roles: [tech_lead, product_owner]
|
|
29
|
+
rollback_plan: required
|
|
30
|
+
|
|
31
|
+
constraints:
|
|
32
|
+
- 所有接口必须支持多租户隔离
|
|
33
|
+
- 审计日志不可删除,保留至少 3 年
|
|
34
|
+
- 数据导出必须异步,禁止同步导出
|
|
35
|
+
- API 必须有版本管理(/api/v1/)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-rules
|
|
3
|
+
type: review_rule
|
|
4
|
+
when: 代码审查, review, 安全部署, 安全检查, 安全审计
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## SEC-01: SQL 字符串拼接导致注入风险
|
|
10
|
+
pattern: /(SELECT|INSERT|UPDATE|DELETE)\b.*[\+${]/
|
|
11
|
+
severity: critical
|
|
12
|
+
scope: backend
|
|
13
|
+
description: 禁止使用字符串拼接构造 SQL,必须使用参数化查询(PreparedStatement / MyBatis #{})
|
|
14
|
+
|
|
15
|
+
## SEC-02: innerHTML 赋值存在 XSS 风险
|
|
16
|
+
pattern: /\.innerHTML\s*=/
|
|
17
|
+
severity: critical
|
|
18
|
+
scope: frontend
|
|
19
|
+
description: 禁止使用 innerHTML 直接插入用户内容,必须使用 textContent 或 DOMPurify 净化
|
|
20
|
+
|
|
21
|
+
## SEC-03: eval 或 Function 构造器执行动态代码
|
|
22
|
+
pattern: /\beval\s*\(|new\s+Function\s*\(/
|
|
23
|
+
severity: critical
|
|
24
|
+
scope: [backend, frontend]
|
|
25
|
+
description: 禁止使用 eval() 和 new Function(),存在任意代码执行风险
|
|
26
|
+
|
|
27
|
+
## SEC-04: 硬编码的密码/密钥/token
|
|
28
|
+
pattern: /password\s*=\s*["'][^"']+["']|secret[_-]?key\s*=\s*["'][^"']+["']|api[_-]?key\s*=\s*["'][^"']+["']/i
|
|
29
|
+
severity: critical
|
|
30
|
+
scope: [backend, frontend]
|
|
31
|
+
description: 敏感凭证禁止硬编码在源码中,必须使用环境变量或密钥管理服务
|
|
32
|
+
|
|
33
|
+
## SEC-05: 日志中打印敏感信息
|
|
34
|
+
pattern: /log\.\w+\(.*(?:password|token|secret|身份证|idcard)/i
|
|
35
|
+
severity: critical
|
|
36
|
+
scope: backend
|
|
37
|
+
description: 禁止在日志中输出密码、token、身份证号等敏感字段,必须脱敏处理
|
|
38
|
+
|
|
39
|
+
## SEC-06: 未验证的外部重定向
|
|
40
|
+
pattern: /redirect\s*\(\s*(?:req|request|ctx)\.\w+/
|
|
41
|
+
severity: warning
|
|
42
|
+
scope: backend
|
|
43
|
+
description: 重定向目标必须校验白名单域名,防止开放重定向攻击
|
|
44
|
+
|
|
45
|
+
## SEC-07: 路径遍历风险
|
|
46
|
+
pattern: /\.\.\/|\.\.\\/
|
|
47
|
+
severity: warning
|
|
48
|
+
scope: [backend, frontend]
|
|
49
|
+
description: 文件路径操作必须校验和规范化,防止通过 ../ 遍历到非授权目录
|
|
50
|
+
|
|
51
|
+
## SEC-08: 不安全的反序列化
|
|
52
|
+
pattern: /ObjectInputStream|unserialize|pickle\.load/
|
|
53
|
+
severity: critical
|
|
54
|
+
scope: backend
|
|
55
|
+
description: 禁止直接反序列化不可信数据,必须使用白名单校验或 JSON 替代方案
|
|
56
|
+
|
|
57
|
+
## SEC-09: SSRF 服务端请求伪造
|
|
58
|
+
pattern: /(?:HttpClient|RestTemplate|WebClient|OkHttp|URLConnection)\s*\(\s*(?:req|request|ctx|param)\./
|
|
59
|
+
severity: critical
|
|
60
|
+
scope: backend
|
|
61
|
+
description: 外部 URL 请求禁止直接使用用户输入,必须校验 IP/域名白名单,防止 SSRF 攻击
|
|
62
|
+
|
|
63
|
+
## SEC-10: CORS 配置过于宽松
|
|
64
|
+
pattern: /allowedOrigins\s*\(\s*"\*"\s*\)|Access-Control-Allow-Origin.*\*/
|
|
65
|
+
severity: warning
|
|
66
|
+
scope: backend
|
|
67
|
+
description: CORS 配置禁止使用通配符 *,必须指定具体域名白名单
|
|
68
|
+
|
|
69
|
+
## SEC-11: 未启用 HTTPS 的 Cookie
|
|
70
|
+
pattern: /cookie.*(?:secure\s*:\s*false|httpOnly\s*:\s*false)/i
|
|
71
|
+
severity: warning
|
|
72
|
+
scope: [backend, frontend]
|
|
73
|
+
description: 敏感 Cookie 必须设置 Secure 和 HttpOnly 标志
|
|
74
|
+
|
|
75
|
+
## SEC-12: JWT 未校验签名算法
|
|
76
|
+
pattern: /JWT|jwt.*verify|jwt.*decode/
|
|
77
|
+
severity: critical
|
|
78
|
+
scope: backend
|
|
79
|
+
description: JWT 必须显式指定签名算法(如 HS256/RS256),禁止接受 none 算法
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: concurrency-rules
|
|
3
|
+
type: review_rule
|
|
4
|
+
when: 代码审查, review, 并发检查, 线程安全检查, 锁检查
|
|
5
|
+
scope: [backend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## CON-01: 共享可变状态无并发保护
|
|
10
|
+
pattern: "synchronized|ReentrantLock|AtomicInteger|volatile"
|
|
11
|
+
severity: warning
|
|
12
|
+
scope: backend
|
|
13
|
+
description: 涉及金额、库存、计数器的操作必须显式声明并发控制策略。若未使用任何并发控制原语,标记为需人工确认
|
|
14
|
+
|
|
15
|
+
## CON-02: 分布式环境使用 JVM 级锁
|
|
16
|
+
pattern: "synchronized\\s*\\(|ReentrantLock"
|
|
17
|
+
severity: warning
|
|
18
|
+
scope: backend
|
|
19
|
+
description: 多实例部署场景下 synchronized/ReentrantLock 无法跨 JVM,必须使用分布式锁(Redis/Redisson)
|
|
20
|
+
|
|
21
|
+
## CON-03: 先查后改未用原子操作
|
|
22
|
+
pattern: "SELECT.*stock|SELECT.*count|SELECT.*amount.*WHERE"
|
|
23
|
+
severity: warning
|
|
24
|
+
scope: backend
|
|
25
|
+
description: 库存/余额/计数器等场景禁止先 SELECT 再 UPDATE,必须使用原子操作(UPDATE SET x = x - 1 WHERE x >= 1)
|
|
26
|
+
|
|
27
|
+
## CON-04: @Transactional 同类内部调用
|
|
28
|
+
pattern: "this\\.|@Transactional"
|
|
29
|
+
severity: warning
|
|
30
|
+
scope: backend
|
|
31
|
+
description: @Transactional 方法被同类内部 this.xxx() 调用时 AOP 代理失效,事务不生效
|
|
32
|
+
|
|
33
|
+
## CON-05: 事务内执行外部调用
|
|
34
|
+
pattern: "RestTemplate|FeignClient|HttpClient|WebClient"
|
|
35
|
+
severity: info
|
|
36
|
+
scope: backend
|
|
37
|
+
description: 事务方法中执行外部 HTTP 调用会延长事务持有时间,建议移到事务外或使用 REQUIRES_NEW 隔离
|
|
38
|
+
|
|
39
|
+
## CON-06: SimpleDateFormat 非线程安全
|
|
40
|
+
pattern: "SimpleDateFormat"
|
|
41
|
+
severity: warning
|
|
42
|
+
scope: backend
|
|
43
|
+
description: SimpleDateFormat 非线程安全,多线程共享会导致日期解析错误,使用 DateTimeFormatter 或 ThreadLocal
|
|
44
|
+
|
|
45
|
+
## CON-07: ThreadLocal 未清理导致内存泄漏
|
|
46
|
+
pattern: /ThreadLocal\s*<|new\s+ThreadLocal/
|
|
47
|
+
severity: warning
|
|
48
|
+
scope: backend
|
|
49
|
+
description: ThreadLocal 必须在请求结束时 remove(),否则线程池复用会导致内存泄漏和数据串线
|
|
50
|
+
|
|
51
|
+
## CON-08: 非线程安全的集合用作类成员变量
|
|
52
|
+
pattern: /private\s+(?:static\s+)?(?:final\s+)?(?:HashMap|ArrayList|LinkedList|HashSet)\s*</
|
|
53
|
+
severity: warning
|
|
54
|
+
scope: backend
|
|
55
|
+
description: 类级别的共享集合必须使用 ConcurrentHashMap/CopyOnWriteArrayList 等线程安全实现
|
|
56
|
+
|
|
57
|
+
## CON-09: CompletableFuture 未处理异常
|
|
58
|
+
pattern: /CompletableFuture.*(?:thenApply|thenAccept|thenCompose)\s*\(/
|
|
59
|
+
severity: warning
|
|
60
|
+
scope: backend
|
|
61
|
+
description: CompletableFuture 链必须以 exceptionally() 或 handle() 结尾,防止异常被静默吞掉
|
|
62
|
+
|
|
63
|
+
## CON-10: 线程池未正确配置拒绝策略
|
|
64
|
+
pattern: /new\s+ThreadPoolExecutor\s*\(/
|
|
65
|
+
severity: warning
|
|
66
|
+
scope: backend
|
|
67
|
+
description: 线程池必须显式配置拒绝策略(CallerRunsPolicy/自定义),禁止使用默认 AbortPolicy
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance-rules
|
|
3
|
+
type: review_rule
|
|
4
|
+
when: 代码审查, review, 性能检查, 性能优化
|
|
5
|
+
scope: [backend, frontend]
|
|
6
|
+
products: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## PER-01: 循环内逐条数据库调用(N+1 问题)
|
|
10
|
+
pattern: /(?:for|while)\s*\(.*\)[\s\S]*?\.(?:save|insert|update|delete|query|select|findBy)\s*\(/
|
|
11
|
+
severity: warning
|
|
12
|
+
scope: backend
|
|
13
|
+
description: 循环内禁止逐条数据库操作,必须使用批量 SQL 或 IN 查询
|
|
14
|
+
|
|
15
|
+
## PER-02: SELECT * 查询未指定字段
|
|
16
|
+
pattern: /SELECT\s+\*\s+FROM/i
|
|
17
|
+
severity: info
|
|
18
|
+
scope: backend
|
|
19
|
+
description: 查询应明确指定所需字段,避免传输不必要的数据
|
|
20
|
+
|
|
21
|
+
## PER-03: 未使用分页的大列表查询
|
|
22
|
+
pattern: /findAll\s*\(\s*\)|\.toList\(\)\s*;|find\s*\(\s*\{\s*\}\s*\)/
|
|
23
|
+
severity: warning
|
|
24
|
+
scope: backend
|
|
25
|
+
description: 列表查询必须分页,禁止一次加载全量数据
|
|
26
|
+
|
|
27
|
+
## PER-04: 大循环内创建对象或字符串拼接
|
|
28
|
+
pattern: /(?:for|while)\s*\(.*\)[\s\S]*?new\s+(?:ArrayList|HashMap|StringBuilder)/
|
|
29
|
+
severity: info
|
|
30
|
+
scope: backend
|
|
31
|
+
description: 大循环内避免重复创建对象,应提前初始化或使用对象池
|
|
32
|
+
|
|
33
|
+
## PER-05: 前端组件不必要的重渲染
|
|
34
|
+
pattern: /onClick=\{\(\).*=>|style=\{\{/
|
|
35
|
+
severity: info
|
|
36
|
+
scope: frontend
|
|
37
|
+
description: 内联函数和对象作为 props 会导致子组件不必要的重渲染,应使用 useCallback/useMemo
|
|
38
|
+
|
|
39
|
+
## PER-06: 未使用 useMemo/useCallback 的高开销计算
|
|
40
|
+
pattern: /(?:\.sort|\.filter|\.map|\.reduce)\s*\(.*=>.*(?:\.sort|\.filter|\.map)/
|
|
41
|
+
severity: info
|
|
42
|
+
scope: frontend
|
|
43
|
+
description: 链式数组操作或高开销计算应使用 useMemo 缓存结果,避免每次渲染重复计算
|
|
44
|
+
|
|
45
|
+
## PER-07: 未使用连接池的数据库连接
|
|
46
|
+
pattern: /DriverManager\.getConnection/
|
|
47
|
+
severity: warning
|
|
48
|
+
scope: backend
|
|
49
|
+
description: 禁止使用 DriverManager 直接创建连接,必须使用连接池(HikariCP/Druid)
|
|
50
|
+
|
|
51
|
+
## PER-08: 大事务包含非必要操作
|
|
52
|
+
pattern: /@Transactional[\s\S]*?(?:log\.|email|send|notify|http)/
|
|
53
|
+
severity: warning
|
|
54
|
+
scope: backend
|
|
55
|
+
description: @Transactional 方法内禁止包含发送邮件、HTTP 调用、MQ 发送等非必要操作,避免长事务
|
|
56
|
+
|
|
57
|
+
## PER-09: 前端图片未压缩或懒加载
|
|
58
|
+
pattern: /<img\s+src=/
|
|
59
|
+
severity: info
|
|
60
|
+
scope: frontend
|
|
61
|
+
description: 图片资源必须使用压缩/懒加载/响应式加载,禁止原始大图直接展示
|