@bovinphang/frontend-craft 2.8.0 → 3.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/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +64 -0
- package/CHANGELOG.zh-CN.md +64 -0
- package/CONTRIBUTING.md +74 -54
- package/CONTRIBUTING.zh-CN.md +75 -53
- package/README.md +150 -38
- package/README.openclaw.md +86 -11
- package/README.openclaw.zh-CN.md +86 -11
- package/README.zh-CN.md +147 -35
- package/agents/fec-code-reviewer.md +24 -3
- package/agents/fec-debugger.md +1 -1
- package/agents/fec-doc-updater.md +1 -1
- package/agents/fec-e2e-runner.md +1 -1
- package/agents/fec-figma-implementer.md +1 -1
- package/agents/fec-performance-optimizer.md +1 -1
- package/agents/fec-refactor-cleaner.md +4 -1
- package/agents/fec-refactoring-expert.md +81 -0
- package/agents/fec-security-reviewer.md +17 -1
- package/agents/fec-test-planner.md +1 -1
- package/agents/fec-typescript-reviewer.md +25 -9
- package/agents/fec-ui-checker.md +11 -11
- package/commands/fec-debug.md +1 -1
- package/commands/fec-refactor-plan.md +17 -0
- package/commands/fec-refactor.md +18 -0
- package/commands/fec-review.md +40 -10
- package/commands/fec-scaffold.md +1 -1
- package/commands/fec-smell.md +17 -0
- package/commands/fec-tdd.md +6 -2
- package/common-content.lock.json +3795 -0
- package/dist/bin/frontend-craft.js +386 -55
- package/dist/hooks/fec-run-tests.js +5 -1
- package/dist/hooks/fec-session-start.js +1 -1
- package/docs/common-migration.md +61 -0
- package/docs/example-prompts.md +29 -12
- package/docs/ja-JP/README.md +129 -34
- package/docs/ko-KR/README.md +129 -34
- package/docs/project-structure.md +49 -14
- package/docs/refactoring/README.md +50 -0
- package/docs/refactoring/catalog.md +105 -0
- package/docs/refactoring/smell-refactoring-matrix.md +41 -0
- package/docs/review-and-diagram-workflows.md +39 -0
- package/docs/runtimes/antigravity.md +13 -5
- package/docs/runtimes/augment.md +13 -5
- package/docs/runtimes/claude.md +26 -10
- package/docs/runtimes/claude.zh-CN.md +26 -10
- package/docs/runtimes/cline.md +13 -5
- package/docs/runtimes/codebuddy.md +13 -5
- package/docs/runtimes/codex.md +13 -5
- package/docs/runtimes/compatibility.md +42 -0
- package/docs/runtimes/copilot.md +13 -5
- package/docs/runtimes/cursor.md +13 -5
- package/docs/runtimes/gemini.md +13 -5
- package/docs/runtimes/kilo.md +13 -5
- package/docs/runtimes/openclaw.md +13 -5
- package/docs/runtimes/opencode.md +13 -5
- package/docs/runtimes/qoder.md +11 -12
- package/docs/runtimes/trae.md +13 -5
- package/docs/runtimes/windsurf.md +13 -5
- package/docs/superpowers/plans/2026-09-26-content-integrity.md +145 -0
- package/docs/superpowers/plans/2026-09-26-diagram-quality.md +170 -0
- package/docs/superpowers/specs/2026-09-26-diagram-quality-design.md +77 -0
- package/docs/superpowers/specs/2026-09-26-project-optimization-design.md +95 -0
- package/docs/zh-CN/common-migration.md +57 -0
- package/docs/zh-CN/example-prompts.md +29 -12
- package/docs/zh-CN/project-structure.md +49 -11
- package/docs/zh-CN/review-and-diagram-workflows.md +39 -0
- package/docs/zh-TW/README.md +129 -34
- package/localized/zh-CN/agents/fec-code-reviewer.md +22 -3
- package/localized/zh-CN/agents/fec-refactor-cleaner.md +3 -0
- package/localized/zh-CN/agents/fec-refactoring-expert.md +53 -0
- package/localized/zh-CN/agents/fec-security-reviewer.md +16 -0
- package/localized/zh-CN/agents/fec-typescript-reviewer.md +24 -8
- package/localized/zh-CN/commands/fec-refactor-plan.md +15 -0
- package/localized/zh-CN/commands/fec-refactor.md +14 -0
- package/localized/zh-CN/commands/fec-review.md +40 -9
- package/localized/zh-CN/commands/fec-smell.md +13 -0
- package/localized/zh-CN/commands/fec-tdd.md +4 -0
- package/localized/zh-CN/skills/cc-c-project-standard/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/README.md +7 -0
- package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary.c +26 -0
- package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary.h +15 -0
- package/localized/zh-CN/skills/cc-c-project-standard/examples/engineering/boundary_test.c +73 -0
- package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-c-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-c-project-standard/references/engineering-practices.md +106 -0
- package/localized/zh-CN/skills/cc-c-project-standard/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/README.md +7 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary.cpp +26 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary.hpp +12 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/examples/engineering/boundary_test.cpp +38 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/references/engineering-practices.md +106 -0
- package/localized/zh-CN/skills/cc-cpp-project-standard/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-debug-methodology/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-debug-methodology/references/method.md +13 -0
- package/localized/zh-CN/skills/cc-doc-sync-core/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-doc-sync-core/references/method.md +12 -0
- package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/SKILL.md +5 -5
- package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/flowchart-quality.md +1 -1
- package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/layout-and-export.md +9 -9
- package/localized/zh-CN/skills/cc-electron-project-standard/SKILL.md +21 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/README.md +7 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.cjs +44 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.test.cjs +44 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/engineering/package.json +8 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/README.md +9 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/boundary.cjs +19 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/boundary.test.cjs +7 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/index.html +1 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/main.cjs +20 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/package.json +9 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/preload.cjs +2 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/examples/minimal/renderer.js +4 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/references/practice.md +19 -0
- package/localized/zh-CN/skills/cc-electron-project-standard/references/verification.md +17 -0
- package/localized/zh-CN/skills/cc-go-concurrency/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-go-concurrency/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-go-concurrency/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/cc-go-concurrency/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-go-project-standard/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/README.md +7 -0
- package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/go.mod +3 -0
- package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/lifecycle.go +71 -0
- package/localized/zh-CN/skills/cc-go-project-standard/examples/engineering/lifecycle_test.go +22 -0
- package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-go-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-go-project-standard/references/engineering-practices.md +106 -0
- package/localized/zh-CN/skills/cc-go-project-standard/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-java-project-standard/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/README.md +5 -0
- package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/ResourceBoundary.java +26 -0
- package/localized/zh-CN/skills/cc-java-project-standard/examples/engineering/ResourceBoundaryTest.java +41 -0
- package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-java-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-java-project-standard/references/engineering-practices.md +106 -0
- package/localized/zh-CN/skills/cc-java-project-standard/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-java-runtime/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-java-runtime/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-java-runtime/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/cc-java-runtime/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-native-memory-safety/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-native-memory-safety/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-native-memory-safety/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/cc-native-memory-safety/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-python-async/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-python-async/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-python-async/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/cc-python-async/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-python-project-standard/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/README.md +7 -0
- package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/resource_boundary.py +37 -0
- package/localized/zh-CN/skills/cc-python-project-standard/examples/engineering/test_resource_boundary.py +49 -0
- package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-python-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-python-project-standard/references/engineering-practices.md +106 -0
- package/localized/zh-CN/skills/cc-python-project-standard/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-refactoring-core/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-refactoring-core/references/method.md +16 -0
- package/localized/zh-CN/skills/cc-rust-async/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-rust-async/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-rust-async/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/cc-rust-async/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/SKILL.md +25 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/Cargo.lock +7 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/Cargo.toml +8 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/README.md +5 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/examples/engineering/src/lib.rs +43 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/references/engineering-practices.md +106 -0
- package/localized/zh-CN/skills/cc-rust-project-standard/references/practice.md +37 -0
- package/localized/zh-CN/skills/cc-source-driven-development/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-source-driven-development/references/method.md +19 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/SKILL.md +21 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/README.md +9 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.lock +5 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.toml +9 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/core/src/lib.rs +46 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/Cargo.toml +12 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/build.rs +5 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/capabilities/main.json +6 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/permissions/documents.toml +4 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/src/main.rs +22 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/src-tauri/tauri.conf.json +13 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/ui/app.js +5 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/examples/minimal/ui/index.html +1 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/references/practice.md +20 -0
- package/localized/zh-CN/skills/cc-tauri-project-standard/references/verification.md +18 -0
- package/localized/zh-CN/skills/cc-tdd-methodology/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-tdd-methodology/references/method.md +13 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/SKILL.md +34 -0
- package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/assets/interactive-diagram.html +371 -371
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/README.md +14 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/architecture.json +121 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/invalid-explicit.json +41 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/sequence.json +53 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/sequence.mmd +21 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/workflow.json +98 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/workflow.mmd +7 -0
- package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/references/diagram-workflows.md +12 -5
- package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/references/html-technical-diagrams.md +14 -7
- package/localized/zh-CN/skills/cc-technical-diagrams/references/png-qa-autofix.md +37 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/diagram-browser.mjs +153 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/diagram-layout.mjs +176 -0
- package/{skills/fec-image-generation → localized/zh-CN/skills/cc-technical-diagrams}/scripts/export-diagram.mjs +48 -80
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/mermaid-render.mjs +64 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/png-qa.mjs +462 -0
- package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/scripts/tech-diagram-render.mjs +193 -53
- package/localized/zh-CN/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/SKILL.md +10 -4
- package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/README.md +7 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/boundary.test.ts +16 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/input.ts +12 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/package.json +12 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/pnpm-lock.yaml +39 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/examples/engineering/tsconfig.json +8 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/cc-typescript-project-standard/references/engineering-practices.md +106 -0
- package/localized/zh-CN/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety-patterns.md +5 -34
- package/localized/zh-CN/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety.md +6 -0
- package/localized/zh-CN/skills/eval_queries.json +738 -72
- package/localized/zh-CN/skills/fec-api-integration/SKILL.md +5 -1
- package/localized/zh-CN/skills/fec-api-integration/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-api-integration/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-api-integration/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-api-integration/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-code-review/SKILL.md +24 -1
- package/localized/zh-CN/skills/fec-code-review/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-code-review/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-code-review/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-code-review/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-code-review/references/report-template.md +11 -1
- package/localized/zh-CN/skills/fec-code-smells/SKILL.md +33 -0
- package/localized/zh-CN/skills/fec-code-smells/references/detection-guide.md +25 -0
- package/localized/zh-CN/skills/fec-code-smells/references/smell-catalog.md +817 -0
- package/localized/zh-CN/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
- package/localized/zh-CN/skills/fec-data-fetching/SKILL.md +4 -0
- package/localized/zh-CN/skills/fec-data-fetching/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-data-fetching/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-data-fetching/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-data-fetching/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-debug-framework/SKILL.md +1 -50
- package/localized/zh-CN/skills/fec-debug-framework/references/common/debug.md +13 -0
- package/localized/zh-CN/skills/fec-dependency-upgrade/SKILL.md +4 -0
- package/localized/zh-CN/skills/fec-dependency-upgrade/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-dependency-upgrade/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-dependency-upgrade/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-dependency-upgrade/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-doc-sync/SKILL.md +7 -28
- package/localized/zh-CN/skills/fec-doc-sync/references/common/doc-sync.md +12 -0
- package/localized/zh-CN/skills/fec-image-generation/SKILL.md +7 -71
- package/localized/zh-CN/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
- package/localized/zh-CN/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
- package/localized/zh-CN/skills/fec-image-generation/scripts/png-qa.mjs +36 -5
- package/localized/zh-CN/skills/fec-react-project-standard/SKILL.md +6 -0
- package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/README.md +7 -0
- package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/package.json +15 -0
- package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/pnpm-lock.yaml +662 -0
- package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
- package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/request-view.mjs +24 -0
- package/localized/zh-CN/skills/fec-react-project-standard/examples/engineering/request-view.test.mjs +33 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/generic-component-types.md +37 -0
- package/localized/zh-CN/skills/fec-react-project-standard/references/react-quality-patterns.md +3 -3
- package/localized/zh-CN/skills/fec-react-project-standard/references/react-runtime-patterns.md +1 -1
- package/localized/zh-CN/skills/fec-refactor-clean/SKILL.md +3 -0
- package/localized/zh-CN/skills/fec-refactoring/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring/references/common/refactoring.md +16 -0
- package/localized/zh-CN/skills/fec-refactoring/references/principles.md +13 -0
- package/localized/zh-CN/skills/fec-refactoring/references/refactoring-vs-feature-change.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring/references/when-to-refactor.md +17 -0
- package/localized/zh-CN/skills/fec-refactoring/references/workflow.md +7 -0
- package/localized/zh-CN/skills/fec-refactoring-api/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/SKILL.md +21 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
- package/localized/zh-CN/skills/fec-refactoring-catalog/references/selection-guide.md +41 -0
- package/localized/zh-CN/skills/fec-refactoring-control/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
- package/localized/zh-CN/skills/fec-refactoring-data/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
- package/localized/zh-CN/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
- package/localized/zh-CN/skills/fec-refactoring-functions/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
- package/localized/zh-CN/skills/fec-refactoring-inheritance/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
- package/localized/zh-CN/skills/fec-refactoring-move-features/SKILL.md +25 -0
- package/localized/zh-CN/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/SKILL.md +52 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/references/behavior-preservation.md +15 -0
- package/localized/zh-CN/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +25 -0
- package/localized/zh-CN/skills/fec-security-review/SKILL.md +20 -0
- package/localized/zh-CN/skills/fec-security-review/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-security-review/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-security-review/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-security-review/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-security-review/references/report-template.md +10 -0
- package/localized/zh-CN/skills/fec-tdd-workflow/SKILL.md +12 -40
- package/localized/zh-CN/skills/fec-tdd-workflow/references/common/tdd.md +13 -0
- package/localized/zh-CN/skills/fec-testing-strategy/SKILL.md +4 -0
- package/localized/zh-CN/skills/fec-testing-strategy/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-testing-strategy/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-testing-strategy/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-testing-strategy/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/SKILL.md +4 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/common/engineering-practices.md +237 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/engineering-practices.md +73 -0
- package/localized/zh-CN/skills/fec-vue3-project-standard/references/vue3-project-structure.md +2 -2
- package/localized/zh-CN/skills/metadata.json +2222 -626
- package/localized/zh-CN/skills/relations.json +472 -75
- package/localized/zh-CN/templates/shared/rules/fec-agent-workflow.md +1 -0
- package/localized/zh-CN/templates/shared/rules/fec-source-driven-development.md +3 -29
- package/localized/zh-CN/templates/shared/rules/fec-typescript.md +4 -4
- package/localized/zh-CN/templates/shared/rules/references/common/source-driven-development.md +19 -0
- package/openclaw.plugin.json +2 -3
- package/package.json +34 -17
- package/skills/cc-c-project-standard/SKILL.md +25 -0
- package/skills/cc-c-project-standard/examples/engineering/README.md +7 -0
- package/skills/cc-c-project-standard/examples/engineering/boundary.c +26 -0
- package/skills/cc-c-project-standard/examples/engineering/boundary.h +15 -0
- package/skills/cc-c-project-standard/examples/engineering/boundary_test.c +73 -0
- package/skills/cc-c-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-c-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-c-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-c-project-standard/references/engineering-practices.md +106 -0
- package/skills/cc-c-project-standard/references/practice.md +37 -0
- package/skills/cc-cpp-project-standard/SKILL.md +25 -0
- package/skills/cc-cpp-project-standard/examples/engineering/README.md +7 -0
- package/skills/cc-cpp-project-standard/examples/engineering/boundary.cpp +26 -0
- package/skills/cc-cpp-project-standard/examples/engineering/boundary.hpp +12 -0
- package/skills/cc-cpp-project-standard/examples/engineering/boundary_test.cpp +38 -0
- package/skills/cc-cpp-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-cpp-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-cpp-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-cpp-project-standard/references/engineering-practices.md +106 -0
- package/skills/cc-cpp-project-standard/references/practice.md +37 -0
- package/skills/cc-debug-methodology/SKILL.md +8 -0
- package/skills/cc-debug-methodology/references/method.md +13 -0
- package/skills/cc-doc-sync-core/SKILL.md +8 -0
- package/skills/cc-doc-sync-core/references/method.md +12 -0
- package/skills/{fec-drawio-studio → cc-drawio-studio}/SKILL.md +5 -5
- package/skills/{fec-drawio-studio → cc-drawio-studio}/references/flowchart-quality.md +1 -1
- package/skills/{fec-drawio-studio → cc-drawio-studio}/references/layout-and-export.md +9 -9
- package/skills/cc-electron-project-standard/SKILL.md +21 -0
- package/skills/cc-electron-project-standard/examples/engineering/README.md +7 -0
- package/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.cjs +44 -0
- package/skills/cc-electron-project-standard/examples/engineering/ipc-lifecycle.test.cjs +44 -0
- package/skills/cc-electron-project-standard/examples/engineering/package.json +8 -0
- package/skills/cc-electron-project-standard/examples/minimal/README.md +9 -0
- package/skills/cc-electron-project-standard/examples/minimal/boundary.cjs +19 -0
- package/skills/cc-electron-project-standard/examples/minimal/boundary.test.cjs +7 -0
- package/skills/cc-electron-project-standard/examples/minimal/index.html +1 -0
- package/skills/cc-electron-project-standard/examples/minimal/main.cjs +20 -0
- package/skills/cc-electron-project-standard/examples/minimal/package.json +9 -0
- package/skills/cc-electron-project-standard/examples/minimal/preload.cjs +2 -0
- package/skills/cc-electron-project-standard/examples/minimal/renderer.js +4 -0
- package/skills/cc-electron-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-electron-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-electron-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-electron-project-standard/references/engineering-practices.md +73 -0
- package/skills/cc-electron-project-standard/references/practice.md +19 -0
- package/skills/cc-electron-project-standard/references/verification.md +17 -0
- package/skills/cc-go-concurrency/SKILL.md +25 -0
- package/skills/cc-go-concurrency/references/common/engineering-practices.md +237 -0
- package/skills/cc-go-concurrency/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-go-concurrency/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-go-concurrency/references/engineering-practices.md +73 -0
- package/skills/cc-go-concurrency/references/practice.md +37 -0
- package/skills/cc-go-project-standard/SKILL.md +25 -0
- package/skills/cc-go-project-standard/examples/engineering/README.md +7 -0
- package/skills/cc-go-project-standard/examples/engineering/go.mod +3 -0
- package/skills/cc-go-project-standard/examples/engineering/lifecycle.go +71 -0
- package/skills/cc-go-project-standard/examples/engineering/lifecycle_test.go +22 -0
- package/skills/cc-go-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-go-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-go-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-go-project-standard/references/engineering-practices.md +106 -0
- package/skills/cc-go-project-standard/references/practice.md +37 -0
- package/skills/cc-java-project-standard/SKILL.md +25 -0
- package/skills/cc-java-project-standard/examples/engineering/README.md +7 -0
- package/skills/cc-java-project-standard/examples/engineering/ResourceBoundary.java +26 -0
- package/skills/cc-java-project-standard/examples/engineering/ResourceBoundaryTest.java +41 -0
- package/skills/cc-java-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-java-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-java-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-java-project-standard/references/engineering-practices.md +106 -0
- package/skills/cc-java-project-standard/references/practice.md +35 -0
- package/skills/cc-java-runtime/SKILL.md +25 -0
- package/skills/cc-java-runtime/references/common/engineering-practices.md +237 -0
- package/skills/cc-java-runtime/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-java-runtime/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-java-runtime/references/engineering-practices.md +73 -0
- package/skills/cc-java-runtime/references/practice.md +37 -0
- package/skills/cc-native-memory-safety/SKILL.md +25 -0
- package/skills/cc-native-memory-safety/references/common/engineering-practices.md +237 -0
- package/skills/cc-native-memory-safety/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-native-memory-safety/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-native-memory-safety/references/engineering-practices.md +73 -0
- package/skills/cc-native-memory-safety/references/practice.md +37 -0
- package/skills/cc-python-async/SKILL.md +25 -0
- package/skills/cc-python-async/references/common/engineering-practices.md +237 -0
- package/skills/cc-python-async/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-python-async/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-python-async/references/engineering-practices.md +73 -0
- package/skills/cc-python-async/references/practice.md +37 -0
- package/skills/cc-python-project-standard/SKILL.md +25 -0
- package/skills/cc-python-project-standard/examples/engineering/README.md +7 -0
- package/skills/cc-python-project-standard/examples/engineering/resource_boundary.py +37 -0
- package/skills/cc-python-project-standard/examples/engineering/test_resource_boundary.py +49 -0
- package/skills/cc-python-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-python-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-python-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-python-project-standard/references/engineering-practices.md +106 -0
- package/skills/cc-python-project-standard/references/practice.md +37 -0
- package/skills/cc-refactoring-core/SKILL.md +8 -0
- package/skills/cc-refactoring-core/references/method.md +16 -0
- package/skills/cc-rust-async/SKILL.md +25 -0
- package/skills/cc-rust-async/references/common/engineering-practices.md +237 -0
- package/skills/cc-rust-async/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-rust-async/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-rust-async/references/engineering-practices.md +73 -0
- package/skills/cc-rust-async/references/practice.md +37 -0
- package/skills/cc-rust-project-standard/SKILL.md +25 -0
- package/skills/cc-rust-project-standard/examples/engineering/Cargo.lock +7 -0
- package/skills/cc-rust-project-standard/examples/engineering/Cargo.toml +8 -0
- package/skills/cc-rust-project-standard/examples/engineering/README.md +5 -0
- package/skills/cc-rust-project-standard/examples/engineering/src/lib.rs +43 -0
- package/skills/cc-rust-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-rust-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-rust-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-rust-project-standard/references/engineering-practices.md +106 -0
- package/skills/cc-rust-project-standard/references/practice.md +37 -0
- package/skills/cc-source-driven-development/SKILL.md +8 -0
- package/skills/cc-source-driven-development/references/method.md +19 -0
- package/skills/cc-tauri-project-standard/SKILL.md +21 -0
- package/skills/cc-tauri-project-standard/examples/minimal/README.md +9 -0
- package/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.lock +5 -0
- package/skills/cc-tauri-project-standard/examples/minimal/core/Cargo.toml +9 -0
- package/skills/cc-tauri-project-standard/examples/minimal/core/src/lib.rs +46 -0
- package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/Cargo.toml +12 -0
- package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/build.rs +5 -0
- package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/capabilities/main.json +6 -0
- package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/permissions/documents.toml +4 -0
- package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/src/main.rs +22 -0
- package/skills/cc-tauri-project-standard/examples/minimal/src-tauri/tauri.conf.json +13 -0
- package/skills/cc-tauri-project-standard/examples/minimal/ui/app.js +5 -0
- package/skills/cc-tauri-project-standard/examples/minimal/ui/index.html +1 -0
- package/skills/cc-tauri-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-tauri-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-tauri-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-tauri-project-standard/references/engineering-practices.md +73 -0
- package/skills/cc-tauri-project-standard/references/practice.md +20 -0
- package/skills/cc-tauri-project-standard/references/verification.md +18 -0
- package/skills/cc-tdd-methodology/SKILL.md +8 -0
- package/skills/cc-tdd-methodology/references/method.md +13 -0
- package/skills/cc-technical-diagrams/SKILL.md +34 -0
- package/skills/{fec-image-generation → cc-technical-diagrams}/assets/interactive-diagram.html +371 -371
- package/skills/cc-technical-diagrams/assets/quality-examples/README.md +14 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/architecture.json +121 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/invalid-explicit.json +41 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/sequence.json +53 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/sequence.mmd +21 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/workflow.json +98 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/workflow.mmd +7 -0
- package/skills/{fec-image-generation → cc-technical-diagrams}/references/diagram-workflows.md +12 -5
- package/skills/{fec-image-generation → cc-technical-diagrams}/references/html-technical-diagrams.md +14 -7
- package/skills/cc-technical-diagrams/references/png-qa-autofix.md +37 -0
- package/skills/cc-technical-diagrams/scripts/diagram-browser.mjs +153 -0
- package/skills/cc-technical-diagrams/scripts/diagram-layout.mjs +176 -0
- package/{localized/zh-CN/skills/fec-image-generation → skills/cc-technical-diagrams}/scripts/export-diagram.mjs +48 -80
- package/skills/cc-technical-diagrams/scripts/mermaid-render.mjs +64 -0
- package/skills/cc-technical-diagrams/scripts/png-qa.mjs +462 -0
- package/skills/{fec-image-generation → cc-technical-diagrams}/scripts/tech-diagram-render.mjs +193 -53
- package/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/SKILL.md +10 -4
- package/skills/cc-typescript-project-standard/examples/engineering/README.md +9 -0
- package/skills/cc-typescript-project-standard/examples/engineering/boundary.test.ts +16 -0
- package/skills/cc-typescript-project-standard/examples/engineering/input.ts +12 -0
- package/skills/cc-typescript-project-standard/examples/engineering/package.json +12 -0
- package/skills/cc-typescript-project-standard/examples/engineering/pnpm-lock.yaml +39 -0
- package/skills/cc-typescript-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
- package/skills/cc-typescript-project-standard/examples/engineering/tsconfig.json +8 -0
- package/skills/cc-typescript-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/cc-typescript-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/cc-typescript-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/cc-typescript-project-standard/references/engineering-practices.md +106 -0
- package/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety-patterns.md +6 -35
- package/skills/{fec-typescript-project-standard → cc-typescript-project-standard}/references/type-safety.md +7 -1
- package/skills/eval_queries.json +738 -72
- package/skills/fec-api-integration/SKILL.md +5 -1
- package/skills/fec-api-integration/references/common/engineering-practices.md +237 -0
- package/skills/fec-api-integration/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-api-integration/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-api-integration/references/engineering-practices.md +73 -0
- package/skills/fec-code-review/SKILL.md +24 -1
- package/skills/fec-code-review/references/common/engineering-practices.md +237 -0
- package/skills/fec-code-review/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-code-review/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-code-review/references/engineering-practices.md +73 -0
- package/skills/fec-code-review/references/report-template.md +11 -1
- package/skills/fec-code-smells/SKILL.md +33 -0
- package/skills/fec-code-smells/references/detection-guide.md +25 -0
- package/skills/fec-code-smells/references/smell-catalog.md +861 -0
- package/skills/fec-code-smells/references/smell-to-refactoring-map.md +265 -0
- package/skills/fec-data-fetching/SKILL.md +5 -1
- package/skills/fec-data-fetching/references/common/engineering-practices.md +237 -0
- package/skills/fec-data-fetching/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-data-fetching/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-data-fetching/references/engineering-practices.md +73 -0
- package/skills/fec-debug-framework/SKILL.md +2 -51
- package/skills/fec-debug-framework/references/common/debug.md +13 -0
- package/skills/fec-dependency-upgrade/SKILL.md +4 -0
- package/skills/fec-dependency-upgrade/references/common/engineering-practices.md +237 -0
- package/skills/fec-dependency-upgrade/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-dependency-upgrade/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-dependency-upgrade/references/engineering-practices.md +73 -0
- package/skills/fec-doc-sync/SKILL.md +7 -28
- package/skills/fec-doc-sync/references/common/doc-sync.md +12 -0
- package/skills/fec-image-generation/SKILL.md +7 -72
- package/skills/fec-image-generation/references/png-qa-autofix.md +9 -2
- package/skills/fec-image-generation/scripts/diagram-layout.mjs +176 -0
- package/skills/fec-image-generation/scripts/png-qa.mjs +36 -5
- package/skills/fec-legacy-web-standard/SKILL.md +1 -1
- package/skills/fec-react-project-standard/SKILL.md +6 -0
- package/skills/fec-react-project-standard/examples/engineering/README.md +7 -0
- package/skills/fec-react-project-standard/examples/engineering/package.json +15 -0
- package/skills/fec-react-project-standard/examples/engineering/pnpm-lock.yaml +662 -0
- package/skills/fec-react-project-standard/examples/engineering/pnpm-workspace.yaml +1 -0
- package/skills/fec-react-project-standard/examples/engineering/request-view.mjs +24 -0
- package/skills/fec-react-project-standard/examples/engineering/request-view.test.mjs +33 -0
- package/skills/fec-react-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/fec-react-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-react-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-react-project-standard/references/engineering-practices.md +73 -0
- package/skills/fec-react-project-standard/references/generic-component-types.md +37 -0
- package/skills/fec-react-project-standard/references/react-quality-patterns.md +3 -3
- package/skills/fec-react-project-standard/references/react-runtime-patterns.md +1 -1
- package/skills/fec-refactor-clean/SKILL.md +3 -0
- package/skills/fec-refactoring/SKILL.md +25 -0
- package/skills/fec-refactoring/references/common/refactoring.md +16 -0
- package/skills/fec-refactoring/references/principles.md +13 -0
- package/skills/fec-refactoring/references/refactoring-vs-feature-change.md +27 -0
- package/skills/fec-refactoring/references/when-to-refactor.md +31 -0
- package/skills/fec-refactoring/references/workflow.md +7 -0
- package/skills/fec-refactoring-api/SKILL.md +25 -0
- package/skills/fec-refactoring-api/references/api-refactorings.md +496 -0
- package/skills/fec-refactoring-catalog/SKILL.md +28 -0
- package/skills/fec-refactoring-catalog/references/catalog-index.md +99 -0
- package/skills/fec-refactoring-catalog/references/composition-guide.md +49 -0
- package/skills/fec-refactoring-catalog/references/selection-guide.md +47 -0
- package/skills/fec-refactoring-control/SKILL.md +25 -0
- package/skills/fec-refactoring-control/references/conditional-refactorings.md +299 -0
- package/skills/fec-refactoring-data/SKILL.md +25 -0
- package/skills/fec-refactoring-data/references/data-refactorings.md +248 -0
- package/skills/fec-refactoring-encapsulation/SKILL.md +25 -0
- package/skills/fec-refactoring-encapsulation/references/encapsulation-refactorings.md +452 -0
- package/skills/fec-refactoring-functions/SKILL.md +25 -0
- package/skills/fec-refactoring-functions/references/function-refactorings.md +567 -0
- package/skills/fec-refactoring-inheritance/SKILL.md +25 -0
- package/skills/fec-refactoring-inheritance/references/inheritance-refactorings.md +550 -0
- package/skills/fec-refactoring-move-features/SKILL.md +25 -0
- package/skills/fec-refactoring-move-features/references/moving-refactorings.md +453 -0
- package/skills/fec-refactoring-validation/SKILL.md +59 -0
- package/skills/fec-refactoring-validation/references/behavior-preservation.md +53 -0
- package/skills/fec-refactoring-validation/references/refactoring-test-checklist.md +42 -0
- package/skills/fec-security-review/SKILL.md +20 -0
- package/skills/fec-security-review/references/common/engineering-practices.md +237 -0
- package/skills/fec-security-review/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-security-review/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-security-review/references/engineering-practices.md +73 -0
- package/skills/fec-security-review/references/report-template.md +10 -0
- package/skills/fec-tdd-workflow/SKILL.md +14 -42
- package/skills/fec-tdd-workflow/references/common/tdd.md +13 -0
- package/skills/fec-testing-strategy/SKILL.md +4 -0
- package/skills/fec-testing-strategy/references/common/engineering-practices.md +237 -0
- package/skills/fec-testing-strategy/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-testing-strategy/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-testing-strategy/references/engineering-practices.md +73 -0
- package/skills/fec-vue3-project-standard/SKILL.md +4 -0
- package/skills/fec-vue3-project-standard/references/common/engineering-practices.md +237 -0
- package/skills/fec-vue3-project-standard/references/common/engineering-practices.rules.json +121 -0
- package/skills/fec-vue3-project-standard/references/common/engineering-practices.sources.json +377 -0
- package/skills/fec-vue3-project-standard/references/engineering-practices.md +73 -0
- package/skills/fec-vue3-project-standard/references/vue3-project-structure.md +2 -2
- package/skills/metadata.json +2230 -629
- package/skills/relations.json +467 -74
- package/templates/shared/rules/fec-agent-workflow.md +1 -0
- package/templates/shared/rules/fec-source-driven-development.md +3 -29
- package/templates/shared/rules/fec-typescript.md +4 -4
- package/templates/shared/rules/references/common/source-driven-development.md +19 -0
- package/docs/superpowers/plans/2026-05-29-fec-debug.md +0 -491
- package/docs/superpowers/specs/2026-05-29-fec-debug-design.md +0 -340
- package/localized/zh-CN/skills/fec-source-driven-development/SKILL.md +0 -87
- package/skills/fec-source-driven-development/SKILL.md +0 -87
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/data/THIRD_PARTY_NOTICES.md +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/data/brand-icons.json +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/data/shape-index.json +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/data-residency.md +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/diagram-patterns.md +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/troubleshooting.md +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/references/xml-and-mermaid.md +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/brand-symbols.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-lint.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-url.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/drawio-export.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/layout-graph.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/png-embed-fix.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-go-packages.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-js-modules.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-classes.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-modules.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-rust-modules.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-ts-modules.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/shape-query.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/studio-core.mjs +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/corporate.json +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/default.json +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/handdrawn.json +0 -0
- /package/localized/zh-CN/skills/{fec-drawio-studio → cc-drawio-studio}/styles/schema.json +0 -0
- /package/localized/zh-CN/skills/{fec-image-generation → cc-technical-diagrams}/scripts/interactive-diagram-server.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/data/THIRD_PARTY_NOTICES.md +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/data/brand-icons.json +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/data/shape-index.json +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/data-residency.md +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/diagram-patterns.md +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/troubleshooting.md +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/references/xml-and-mermaid.md +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/brand-symbols.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-lint.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/diagram-url.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/drawio-export.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/layout-graph.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/png-embed-fix.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-go-packages.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-js-modules.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-classes.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-python-modules.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-rust-modules.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/scan-ts-modules.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/shape-query.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/scripts/studio-core.mjs +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/corporate.json +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/default.json +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/built-in/handdrawn.json +0 -0
- /package/skills/{fec-drawio-studio → cc-drawio-studio}/styles/schema.json +0 -0
- /package/skills/{fec-image-generation → cc-technical-diagrams}/scripts/interactive-diagram-server.mjs +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 重构组合指南
|
|
2
|
+
|
|
3
|
+
这里的关系都有前置条件,不是无条件 pipeline。每个中间状态都必须保持行为并立即验证。
|
|
4
|
+
|
|
5
|
+
## 相反方向 / 权衡
|
|
6
|
+
- `RF-EXTRACT-FUNCTION` ↔ `RF-INLINE-FUNCTION`:建立有意义边界,或移除已经没有价值的间接层。
|
|
7
|
+
- `RF-EXTRACT-VARIABLE` ↔ `RF-INLINE-VARIABLE`:为重要表达式命名,或移除反而遮蔽含义的中间名。
|
|
8
|
+
- `RF-PULL-UP-METHOD` ↔ `RF-PUSH-DOWN-METHOD`:把行为放到真正共享或真正专有的层级。
|
|
9
|
+
- `RF-PULL-UP-FIELD` ↔ `RF-PUSH-DOWN-FIELD`:把数据放到准确且尽量窄的继承层级。
|
|
10
|
+
- `RF-HIDE-DELEGATE` ↔ `RF-REMOVE-MIDDLE-MAN`:在客户端耦合与过度转发之间取舍。
|
|
11
|
+
|
|
12
|
+
## 常见有条件序列
|
|
13
|
+
### 提炼后再搬移
|
|
14
|
+
`RF-EXTRACT-FUNCTION` → `RF-MOVE-FUNCTION`
|
|
15
|
+
|
|
16
|
+
当大函数中只有一部分明显依恋另一个数据所有者时,先提炼成可独立验证的函数,再搬到更合适的位置。
|
|
17
|
+
|
|
18
|
+
### 查询化后更容易提炼
|
|
19
|
+
`RF-REPLACE-TEMP-WITH-QUERY` → `RF-EXTRACT-FUNCTION`
|
|
20
|
+
|
|
21
|
+
临时变量妨碍边界时使用;需要先确认查询可安全重复计算或有正确缓存。
|
|
22
|
+
|
|
23
|
+
### 类型拆分后再做变体分派
|
|
24
|
+
`RF-REPLACE-TYPE-CODE-WITH-SUBCLASSES` → `RF-REPLACE-CONDITIONAL-WITH-POLYMORPHISM`
|
|
25
|
+
|
|
26
|
+
适用于真实 OO/domain hierarchy;现代前端可使用 discriminated union + strategy/component map 表达同一意图。
|
|
27
|
+
|
|
28
|
+
### 先聚拢再重新提炼
|
|
29
|
+
`RF-INLINE-FUNCTION` / `RF-INLINE-CLASS` → 聚拢分散逻辑 → `RF-EXTRACT-FUNCTION` / `RF-EXTRACT-CLASS`
|
|
30
|
+
|
|
31
|
+
适合由不合理小抽象造成的霰弹式修改。暂时变大的中间单元仍必须验证。
|
|
32
|
+
|
|
33
|
+
### 拆分流程并重新安置职责
|
|
34
|
+
`RF-SPLIT-PHASE` → `RF-EXTRACT-FUNCTION` → `RF-MOVE-FUNCTION`
|
|
35
|
+
|
|
36
|
+
流程存在独立阶段,且阶段提炼后拥有更清晰数据所有者时使用。
|
|
37
|
+
|
|
38
|
+
### 先控制共享变量再改结构
|
|
39
|
+
`RF-ENCAPSULATE-VARIABLE` → `RF-RENAME-VARIABLE` / `RF-MOVE-FUNCTION`
|
|
40
|
+
|
|
41
|
+
共享变量需要先形成访问边界,再进行命名或所有权调整时使用。
|
|
42
|
+
|
|
43
|
+
### 先封装记录再封装集合
|
|
44
|
+
`RF-ENCAPSULATE-RECORD` → `RF-ENCAPSULATE-COLLECTION`
|
|
45
|
+
|
|
46
|
+
当调用者同时直接操作记录字段和集合修改时使用。
|
|
47
|
+
|
|
48
|
+
## 停止条件
|
|
49
|
+
当前步骤验证失败、超出差异预算、意外改变公共契约,或下一步前置条件已不成立时,立即停止组合序列并重新评估。
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# 重构选择指南
|
|
2
|
+
|
|
3
|
+
必须按真实成因选择,同一种坏味道可能需要不同手法。
|
|
4
|
+
|
|
5
|
+
## 过长函数(Long Function)
|
|
6
|
+
- 多个可命名意图混在一起 → `RF-EXTRACT-FUNCTION`。
|
|
7
|
+
- 临时变量阻碍提炼 → `RF-REPLACE-TEMP-WITH-QUERY`,但需检查重复计算和副作用。
|
|
8
|
+
- 多个输入总是共同出现 → `RF-INTRODUCE-PARAMETER-OBJECT` 或 `RF-PRESERVE-WHOLE-OBJECT`。
|
|
9
|
+
- 按类型/变体存在大型条件 → 先考虑 `RF-DECOMPOSE-CONDITIONAL`;只有重复变体行为确实需要分派时再考虑 `RF-REPLACE-CONDITIONAL-WITH-POLYMORPHISM`。
|
|
10
|
+
- 单个循环承担多个目的 → 在顺序和性能允许时使用 `RF-SPLIT-LOOP`。
|
|
11
|
+
|
|
12
|
+
## 过长参数列表(Long Parameter List)
|
|
13
|
+
- 参数可由其他稳定输入查询得到 → `RF-REPLACE-PARAMETER-WITH-QUERY`。
|
|
14
|
+
- 调用者从一个现有对象拆出大量字段 → `RF-PRESERVE-WHOLE-OBJECT`。
|
|
15
|
+
- 一组值反复共同出现 → `RF-INTRODUCE-PARAMETER-OBJECT`。
|
|
16
|
+
- boolean/enum 用于选择行为 → `RF-REMOVE-FLAG-ARGUMENT`;普通领域数据不属于这种情况。
|
|
17
|
+
- 多个函数共享同一数据上下文 → `RF-COMBINE-FUNCTIONS-INTO-CLASS`,前端可对应 module/hook/composable/service,并不强制 class。
|
|
18
|
+
|
|
19
|
+
## 可变数据(Mutable Data)
|
|
20
|
+
- 共享写入无边界 → `RF-ENCAPSULATE-VARIABLE`。
|
|
21
|
+
- 一个变量承担多个含义 → `RF-SPLIT-VARIABLE`。
|
|
22
|
+
- 查询同时修改状态 → `RF-SEPARATE-QUERY-FROM-MODIFIER`。
|
|
23
|
+
- 派生值被存储后容易漂移 → `RF-REPLACE-DERIVED-VARIABLE-WITH-QUERY`,同时评估计算成本与 memoization。
|
|
24
|
+
- React/Vue 的引用身份、响应式、订阅和持久化都属于行为验证范围。
|
|
25
|
+
|
|
26
|
+
## 发散式变化(Divergent Change)
|
|
27
|
+
- 一个流程包含可分阶段关注点 → `RF-SPLIT-PHASE` 或 `RF-EXTRACT-FUNCTION`。
|
|
28
|
+
- 行为主要依赖另一数据所有者 → `RF-MOVE-FUNCTION`。
|
|
29
|
+
- 一组状态和规则构成独立职责 → `RF-EXTRACT-CLASS`,在前端可落为 module/service/hook/composable。
|
|
30
|
+
|
|
31
|
+
## 霰弹式修改(Shotgun Surgery)
|
|
32
|
+
- 应共同变化的行为/数据散落各处 → `RF-MOVE-FUNCTION` / `RF-MOVE-FIELD`。
|
|
33
|
+
- 多个函数共享同一上下文 → `RF-COMBINE-FUNCTIONS-INTO-CLASS` / `RF-COMBINE-FUNCTIONS-INTO-TRANSFORM`。
|
|
34
|
+
- 流程阶段可分离 → `RF-SPLIT-PHASE`。
|
|
35
|
+
- 过早的小抽象造成分散 → 可先 `RF-INLINE-FUNCTION` / `RF-INLINE-CLASS` 聚拢,再重新提炼;每个中间状态都必须验证。
|
|
36
|
+
|
|
37
|
+
## 基本类型偏执(Primitive Obsession)
|
|
38
|
+
- 基本类型承载不变量、格式化或领域行为 → `RF-REPLACE-PRIMITIVE-WITH-OBJECT`;仅 TypeScript type alias 不等于运行时封装。
|
|
39
|
+
- 类型码驱动重复变体行为 → `RF-REPLACE-TYPE-CODE-WITH-SUBCLASSES` 或更适合前端的 discriminated union/strategy。
|
|
40
|
+
- 真正问题是重复条件分派 → `RF-REPLACE-CONDITIONAL-WITH-POLYMORPHISM`,选择最符合项目范式的分派方式。
|
|
41
|
+
- 多个基本值共同构成概念 → `RF-EXTRACT-CLASS` 或 `RF-INTRODUCE-PARAMETER-OBJECT`。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactoring-control
|
|
3
|
+
description: 保持行为的前端重构主要涉及条件控制类重构,已经选定或正在评估对应手法,需要查询该 family 的操作步骤、风险与 JavaScript/TypeScript/React/Vue 适配时。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 条件控制类重构
|
|
7
|
+
|
|
8
|
+
## 概览
|
|
9
|
+
只有在证据和前置条件支持时才使用对应手法。一次只执行一个主要结构变换,并在完成后立即验证。
|
|
10
|
+
|
|
11
|
+
## 执行流程
|
|
12
|
+
1. 在[条件控制类重构详细卡片](references/conditional-refactorings.md)确认手法和前置条件。
|
|
13
|
+
2. 记录受影响行为与差异预算。
|
|
14
|
+
3. 只执行该手法最小可行的一步。
|
|
15
|
+
4. 在组合下一手法之前验证当前步骤。
|
|
16
|
+
5. 公共契约、生命周期、状态身份或实际范围超出预期时停止并重新评估。
|
|
17
|
+
|
|
18
|
+
## 快速索引
|
|
19
|
+
详细 Reference 包含本 family 的 6 个标准手法,每项均包括意图、信号、不适用条件、操作步骤、行为保持检查、相关坏味道、组合关系、JS/TS/React/Vue 注意事项、前端适配和原创示例。
|
|
20
|
+
|
|
21
|
+
## 常见错误
|
|
22
|
+
- 只根据手法名称套用,不核对前置条件。
|
|
23
|
+
- 一个 diff 同时混入多个结构目标。
|
|
24
|
+
- 把经典 class 形式机械套进现代 React/Vue。
|
|
25
|
+
- 相关行为没有覆盖时,仅凭“测试通过”就声称行为已得到证明。
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# 条件控制类重构
|
|
2
|
+
|
|
3
|
+
这些卡片以用户提供的标准重构目录为知识基线,转换为面向前端 Agent 的操作指南。保留标准 ID/中英文名称,框架适配和示例为项目原创内容。
|
|
4
|
+
|
|
5
|
+
## RF-DECOMPOSE-CONDITIONAL — 分解条件表达式(Decompose Conditional)
|
|
6
|
+
|
|
7
|
+
### 意图
|
|
8
|
+
把复杂条件、then/else 分支提炼为命名明确的判断和操作。
|
|
9
|
+
|
|
10
|
+
### 典型信号
|
|
11
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
12
|
+
|
|
13
|
+
### 不适用条件
|
|
14
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
15
|
+
|
|
16
|
+
### 前置条件
|
|
17
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
18
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
19
|
+
|
|
20
|
+
### 操作步骤
|
|
21
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
22
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
23
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
24
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
25
|
+
|
|
26
|
+
### 行为保持检查点
|
|
27
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
28
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
29
|
+
|
|
30
|
+
### 相关坏味道
|
|
31
|
+
- `SMELL-LONG-FUNCTION`
|
|
32
|
+
|
|
33
|
+
### 常见组合
|
|
34
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
35
|
+
|
|
36
|
+
### JavaScript 注意事项
|
|
37
|
+
- 保持短路求值、异常时机、副作用顺序和 default/fallthrough 行为。
|
|
38
|
+
|
|
39
|
+
### TypeScript 注意事项
|
|
40
|
+
- discriminated union 与 `never` 可用于清晰表达穷尽性;assertion 不替代运行时校验。
|
|
41
|
+
|
|
42
|
+
### React 注意事项
|
|
43
|
+
- 卫语句不能跳过 loading 清理/effect teardown;变体渲染通常更适合 strategy/component registry。
|
|
44
|
+
|
|
45
|
+
### Vue 注意事项
|
|
46
|
+
- 保持 `finally`、pending/error 状态、watch/effect 行为和组件分支生命周期。
|
|
47
|
+
|
|
48
|
+
### Frontend-Craft 前端适配
|
|
49
|
+
- “多态”包含 strategy、discriminated-union dispatch、handler/component registry 和 delegation;class hierarchy 只是可选形式。
|
|
50
|
+
|
|
51
|
+
### 原创前端变换示例
|
|
52
|
+
- 把“Decompose Conditional”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
53
|
+
|
|
54
|
+
## RF-CONSOLIDATE-CONDITIONAL-EXPRESSION — 合并条件表达式(Consolidate Conditional Expression)
|
|
55
|
+
|
|
56
|
+
### 意图
|
|
57
|
+
把产生相同结果的一组条件合并成一个概念清晰的判断。
|
|
58
|
+
|
|
59
|
+
### 典型信号
|
|
60
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
61
|
+
|
|
62
|
+
### 不适用条件
|
|
63
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
64
|
+
|
|
65
|
+
### 前置条件
|
|
66
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
67
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
68
|
+
|
|
69
|
+
### 操作步骤
|
|
70
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
71
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
72
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
73
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
74
|
+
|
|
75
|
+
### 行为保持检查点
|
|
76
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
77
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
78
|
+
|
|
79
|
+
### 相关坏味道
|
|
80
|
+
- 不要求先存在某一种固定坏味道;以具体结构证据为准。
|
|
81
|
+
|
|
82
|
+
### 常见组合
|
|
83
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
84
|
+
|
|
85
|
+
### JavaScript 注意事项
|
|
86
|
+
- 保持短路求值、异常时机、副作用顺序和 default/fallthrough 行为。
|
|
87
|
+
|
|
88
|
+
### TypeScript 注意事项
|
|
89
|
+
- discriminated union 与 `never` 可用于清晰表达穷尽性;assertion 不替代运行时校验。
|
|
90
|
+
|
|
91
|
+
### React 注意事项
|
|
92
|
+
- 卫语句不能跳过 loading 清理/effect teardown;变体渲染通常更适合 strategy/component registry。
|
|
93
|
+
|
|
94
|
+
### Vue 注意事项
|
|
95
|
+
- 保持 `finally`、pending/error 状态、watch/effect 行为和组件分支生命周期。
|
|
96
|
+
|
|
97
|
+
### Frontend-Craft 前端适配
|
|
98
|
+
- “多态”包含 strategy、discriminated-union dispatch、handler/component registry 和 delegation;class hierarchy 只是可选形式。
|
|
99
|
+
|
|
100
|
+
### 原创前端变换示例
|
|
101
|
+
- 把“Consolidate Conditional Expression”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
102
|
+
|
|
103
|
+
## RF-REPLACE-NESTED-CONDITIONAL-WITH-GUARD-CLAUSES — 以卫语句取代嵌套条件表达式(Replace Nested Conditional with Guard Clauses)
|
|
104
|
+
|
|
105
|
+
### 意图
|
|
106
|
+
用卫语句处理特殊/异常路径,突出正常主流程,同时保证 cleanup/finally/loading 不被跳过。
|
|
107
|
+
|
|
108
|
+
### 典型信号
|
|
109
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
110
|
+
|
|
111
|
+
### 不适用条件
|
|
112
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
113
|
+
|
|
114
|
+
### 前置条件
|
|
115
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
116
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
117
|
+
|
|
118
|
+
### 操作步骤
|
|
119
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
120
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
121
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
122
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
123
|
+
|
|
124
|
+
### 行为保持检查点
|
|
125
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
126
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
127
|
+
|
|
128
|
+
### 相关坏味道
|
|
129
|
+
- 不要求先存在某一种固定坏味道;以具体结构证据为准。
|
|
130
|
+
|
|
131
|
+
### 常见组合
|
|
132
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
133
|
+
|
|
134
|
+
### JavaScript 注意事项
|
|
135
|
+
- 保持短路求值、异常时机、副作用顺序和 default/fallthrough 行为。
|
|
136
|
+
|
|
137
|
+
### TypeScript 注意事项
|
|
138
|
+
- discriminated union 与 `never` 可用于清晰表达穷尽性;assertion 不替代运行时校验。
|
|
139
|
+
|
|
140
|
+
### React 注意事项
|
|
141
|
+
- 卫语句不能跳过 loading 清理/effect teardown;变体渲染通常更适合 strategy/component registry。
|
|
142
|
+
|
|
143
|
+
### Vue 注意事项
|
|
144
|
+
- 保持 `finally`、pending/error 状态、watch/effect 行为和组件分支生命周期。
|
|
145
|
+
|
|
146
|
+
### Frontend-Craft 前端适配
|
|
147
|
+
- “多态”包含 strategy、discriminated-union dispatch、handler/component registry 和 delegation;class hierarchy 只是可选形式。
|
|
148
|
+
|
|
149
|
+
### 原创前端变换示例
|
|
150
|
+
- 提交逻辑从多层 auth/draft/recipient 嵌套改为卫语句,但必须保留 `finally` 中 loading 复位。
|
|
151
|
+
|
|
152
|
+
## RF-REPLACE-CONDITIONAL-WITH-POLYMORPHISM — 以多态取代条件表达式(Replace Conditional with Polymorphism)
|
|
153
|
+
|
|
154
|
+
### 意图
|
|
155
|
+
把重复的变体行为放入分派边界;前端可用 discriminated union、strategy map、handler/component registry、delegation,而非强制类继承。
|
|
156
|
+
|
|
157
|
+
### 典型信号
|
|
158
|
+
- 同一 type/status/variant 在多个位置重复驱动不同处理方式。
|
|
159
|
+
|
|
160
|
+
### 不适用条件
|
|
161
|
+
- 只有一个清晰条件分支时,不为了“多态”强行引入 class hierarchy。
|
|
162
|
+
|
|
163
|
+
### 前置条件
|
|
164
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
165
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
166
|
+
|
|
167
|
+
### 操作步骤
|
|
168
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
169
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
170
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
171
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
172
|
+
|
|
173
|
+
### 行为保持检查点
|
|
174
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
175
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
176
|
+
|
|
177
|
+
### 相关坏味道
|
|
178
|
+
- `SMELL-LONG-FUNCTION`
|
|
179
|
+
- `SMELL-PRIMITIVE-OBSESSION`
|
|
180
|
+
- `SMELL-REPEATED-SWITCHES`
|
|
181
|
+
|
|
182
|
+
### 常见组合
|
|
183
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
184
|
+
|
|
185
|
+
### JavaScript 注意事项
|
|
186
|
+
- 保持短路求值、异常时机、副作用顺序和 default/fallthrough 行为。
|
|
187
|
+
|
|
188
|
+
### TypeScript 注意事项
|
|
189
|
+
- discriminated union 与 `never` 可用于清晰表达穷尽性;assertion 不替代运行时校验。
|
|
190
|
+
|
|
191
|
+
### React 注意事项
|
|
192
|
+
- 卫语句不能跳过 loading 清理/effect teardown;变体渲染通常更适合 strategy/component registry。
|
|
193
|
+
|
|
194
|
+
### Vue 注意事项
|
|
195
|
+
- 保持 `finally`、pending/error 状态、watch/effect 行为和组件分支生命周期。
|
|
196
|
+
|
|
197
|
+
### Frontend-Craft 前端适配
|
|
198
|
+
- “多态”包含 strategy、discriminated-union dispatch、handler/component registry 和 delegation;class hierarchy 只是可选形式。
|
|
199
|
+
|
|
200
|
+
### 原创前端变换示例
|
|
201
|
+
- 邮件类型在渲染和操作中反复 switch,可改为类型安全的 handler/component registry 或 discriminated union 分派。
|
|
202
|
+
|
|
203
|
+
## RF-INTRODUCE-SPECIAL-CASE — 引入特例(Introduce Special Case)
|
|
204
|
+
|
|
205
|
+
### 意图
|
|
206
|
+
为反复出现的 null/unknown/sentinel 情况建立统一特例表示,减少散落检查。
|
|
207
|
+
|
|
208
|
+
### 典型信号
|
|
209
|
+
- 当前结构出现与本手法目标一致的重复、耦合、命名、职责、数据所有权或控制流问题,并有具体代码证据。
|
|
210
|
+
|
|
211
|
+
### 不适用条件
|
|
212
|
+
- 当前结构已经清晰,或该变换会制造更强耦合、隐藏依赖、破坏公共契约且没有兼容方案时,不使用。
|
|
213
|
+
|
|
214
|
+
### 前置条件
|
|
215
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
216
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
217
|
+
|
|
218
|
+
### 操作步骤
|
|
219
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
220
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
221
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
222
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
223
|
+
|
|
224
|
+
### 行为保持检查点
|
|
225
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
226
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
227
|
+
|
|
228
|
+
### 相关坏味道
|
|
229
|
+
- `SMELL-TEMPORARY-FIELD`
|
|
230
|
+
|
|
231
|
+
### 常见组合
|
|
232
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
233
|
+
|
|
234
|
+
### JavaScript 注意事项
|
|
235
|
+
- 保持短路求值、异常时机、副作用顺序和 default/fallthrough 行为。
|
|
236
|
+
|
|
237
|
+
### TypeScript 注意事项
|
|
238
|
+
- discriminated union 与 `never` 可用于清晰表达穷尽性;assertion 不替代运行时校验。
|
|
239
|
+
|
|
240
|
+
### React 注意事项
|
|
241
|
+
- 卫语句不能跳过 loading 清理/effect teardown;变体渲染通常更适合 strategy/component registry。
|
|
242
|
+
|
|
243
|
+
### Vue 注意事项
|
|
244
|
+
- 保持 `finally`、pending/error 状态、watch/effect 行为和组件分支生命周期。
|
|
245
|
+
|
|
246
|
+
### Frontend-Craft 前端适配
|
|
247
|
+
- “多态”包含 strategy、discriminated-union dispatch、handler/component registry 和 delegation;class hierarchy 只是可选形式。
|
|
248
|
+
|
|
249
|
+
### 原创前端变换示例
|
|
250
|
+
- 把“Introduce Special Case”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
251
|
+
|
|
252
|
+
## RF-INTRODUCE-ASSERTION — 引入断言(Introduce Assertion)
|
|
253
|
+
|
|
254
|
+
### 意图
|
|
255
|
+
把只应在程序错误时被违反的内部不变量显式化;不能替代用户输入校验和正常错误处理。
|
|
256
|
+
|
|
257
|
+
### 典型信号
|
|
258
|
+
- 内部流程依赖一个“若违反即代表程序错误”的不变量,但代码未显式表达。
|
|
259
|
+
|
|
260
|
+
### 不适用条件
|
|
261
|
+
- 输入无效、网络失败、权限不足等预期错误不能用 assertion 代替正常校验和错误处理。
|
|
262
|
+
|
|
263
|
+
### 前置条件
|
|
264
|
+
- 已明确当前可观察行为、受影响调用者和公共契约。
|
|
265
|
+
- 目标位于声明的差异预算内,并且这个单一主要变换完成后能够立即验证。
|
|
266
|
+
|
|
267
|
+
### 操作步骤
|
|
268
|
+
1. 确认当前行为、调用者和边界,并锁定本步骤只处理这一项主要结构意图。
|
|
269
|
+
2. 创建最小的新结构/位置/接口,让旧行为可以逐步迁移而不是一次性大改。
|
|
270
|
+
3. 一次迁移一个调用点或职责片段,并保持兼容边界。
|
|
271
|
+
4. 运行窄范围验证;若变红,先回滚本步骤,再缩小变换。
|
|
272
|
+
|
|
273
|
+
### 行为保持检查点
|
|
274
|
+
- 对比输入、输出、异常、副作用、执行顺序和公共契约。
|
|
275
|
+
- 前端还要核对 UI 状态、事件、焦点、网络请求、生命周期/状态迁移,以及相关对象身份语义。
|
|
276
|
+
|
|
277
|
+
### 相关坏味道
|
|
278
|
+
- `SMELL-COMMENTS`
|
|
279
|
+
|
|
280
|
+
### 常见组合
|
|
281
|
+
- 不建立固定流水线;下一步必须重新依据证据选择。
|
|
282
|
+
|
|
283
|
+
### JavaScript 注意事项
|
|
284
|
+
- 保持短路求值、异常时机、副作用顺序和 default/fallthrough 行为。
|
|
285
|
+
|
|
286
|
+
### TypeScript 注意事项
|
|
287
|
+
- discriminated union 与 `never` 可用于清晰表达穷尽性;assertion 不替代运行时校验。
|
|
288
|
+
|
|
289
|
+
### React 注意事项
|
|
290
|
+
- 卫语句不能跳过 loading 清理/effect teardown;变体渲染通常更适合 strategy/component registry。
|
|
291
|
+
|
|
292
|
+
### Vue 注意事项
|
|
293
|
+
- 保持 `finally`、pending/error 状态、watch/effect 行为和组件分支生命周期。
|
|
294
|
+
|
|
295
|
+
### Frontend-Craft 前端适配
|
|
296
|
+
- “多态”包含 strategy、discriminated-union dispatch、handler/component registry 和 delegation;class hierarchy 只是可选形式。
|
|
297
|
+
|
|
298
|
+
### 原创前端变换示例
|
|
299
|
+
- 把“Introduce Assertion”应用到一个局部组件/Hook/Composable/Service 范围内,先记录行为契约,只迁移一个职责片段,并立即验证输出、事件与状态变化保持不变。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactoring-data
|
|
3
|
+
description: 保持行为的前端重构主要涉及数据重组类重构,已经选定或正在评估对应手法,需要查询该 family 的操作步骤、风险与 JavaScript/TypeScript/React/Vue 适配时。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 数据重组类重构
|
|
7
|
+
|
|
8
|
+
## 概览
|
|
9
|
+
只有在证据和前置条件支持时才使用对应手法。一次只执行一个主要结构变换,并在完成后立即验证。
|
|
10
|
+
|
|
11
|
+
## 执行流程
|
|
12
|
+
1. 在[数据重组类重构详细卡片](references/data-refactorings.md)确认手法和前置条件。
|
|
13
|
+
2. 记录受影响行为与差异预算。
|
|
14
|
+
3. 只执行该手法最小可行的一步。
|
|
15
|
+
4. 在组合下一手法之前验证当前步骤。
|
|
16
|
+
5. 公共契约、生命周期、状态身份或实际范围超出预期时停止并重新评估。
|
|
17
|
+
|
|
18
|
+
## 快速索引
|
|
19
|
+
详细 Reference 包含本 family 的 5 个标准手法,每项均包括意图、信号、不适用条件、操作步骤、行为保持检查、相关坏味道、组合关系、JS/TS/React/Vue 注意事项、前端适配和原创示例。
|
|
20
|
+
|
|
21
|
+
## 常见错误
|
|
22
|
+
- 只根据手法名称套用,不核对前置条件。
|
|
23
|
+
- 一个 diff 同时混入多个结构目标。
|
|
24
|
+
- 把经典 class 形式机械套进现代 React/Vue。
|
|
25
|
+
- 相关行为没有覆盖时,仅凭“测试通过”就声称行为已得到证明。
|