@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,7 @@
|
|
|
1
|
+
# Frontend refactoring validation
|
|
2
|
+
|
|
3
|
+
Execution order, rollback and proof verdicts follow the [common method](common/refactoring.md).
|
|
4
|
+
|
|
5
|
+
Choose checks by risk: nearest types/static checks → utilities/hooks/components → Router/Provider/Store integration → full lint/types/tests → build and affected SSR, E2E, accessibility, visual or performance checks.
|
|
6
|
+
|
|
7
|
+
Record actual project commands, UI/state/network observations, baseline failures, per-step changes and rollback boundaries. Pure structural refactoring does not invent new behavioral failures or revert unrelated user work.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactoring-api
|
|
3
|
+
description: Use when behavior-preserving frontend refactoring focuses on function API shape, flags, dependencies, mutability, construction, or command/function trade-offs, and the selected technique needs family-specific mechanics, risks, and JavaScript/TypeScript/React/Vue adaptation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# API Refactorings
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
Use this family after evidence identifies a fitting structural transformation. Apply one primary technique at a time and verify immediately.
|
|
10
|
+
|
|
11
|
+
## Procedure
|
|
12
|
+
1. Confirm the selected technique and its preconditions in [API Refactorings](references/api-refactorings.md).
|
|
13
|
+
2. Record affected behavior and a diff budget.
|
|
14
|
+
3. Apply only the selected technique's smallest viable step.
|
|
15
|
+
4. Verify the step before composing another transformation.
|
|
16
|
+
5. Stop and reassess when public contracts, lifecycle, state identity, or actual scope exceed expectations.
|
|
17
|
+
|
|
18
|
+
## Quick Reference
|
|
19
|
+
The family reference contains 10 canonical techniques with intent, signals, avoid conditions, mechanics, preservation checkpoints, smell links, composition hints, JavaScript/TypeScript notes, React/Vue notes, adaptation guidance, and original frontend examples.
|
|
20
|
+
|
|
21
|
+
## Common Mistakes
|
|
22
|
+
- Choosing a technique by name without checking its preconditions.
|
|
23
|
+
- Combining several structural intentions in one diff.
|
|
24
|
+
- Assuming a classical class-based form is mandatory in modern frontend code.
|
|
25
|
+
- Treating passing tests as proof when the relevant behavior is not covered.
|
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
# API Refactorings
|
|
2
|
+
|
|
3
|
+
These cards transform the supplied standard catalog into concise operational guidance for frontend agents. Standard IDs/names are preserved; examples and framework adaptations are original.
|
|
4
|
+
|
|
5
|
+
## RF-SEPARATE-QUERY-FROM-MODIFIER — Separate Query from Modifier
|
|
6
|
+
|
|
7
|
+
### Intent
|
|
8
|
+
Separate a function that returns information from the operation that changes state.
|
|
9
|
+
|
|
10
|
+
### Typical Signals
|
|
11
|
+
- A caller cannot ask for a value without also triggering mutation/effects.
|
|
12
|
+
|
|
13
|
+
### Avoid When
|
|
14
|
+
- Keep an atomic combined operation when separating it would introduce race conditions or break transactional semantics.
|
|
15
|
+
|
|
16
|
+
### Preconditions
|
|
17
|
+
- Current observable behavior and affected callers are understood.
|
|
18
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
19
|
+
|
|
20
|
+
### Mechanics
|
|
21
|
+
1. Identify the returned value and mutation.
|
|
22
|
+
2. Extract a pure/read-only query for the value.
|
|
23
|
+
3. Keep mutation in a command/action.
|
|
24
|
+
4. Migrate callers based on whether they need read, write, or both.
|
|
25
|
+
|
|
26
|
+
### Behavior-Preservation Checkpoints
|
|
27
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
28
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
29
|
+
|
|
30
|
+
### Related Code Smells
|
|
31
|
+
- `SMELL-MUTABLE-DATA`
|
|
32
|
+
|
|
33
|
+
### Composes Well With
|
|
34
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
35
|
+
|
|
36
|
+
### JavaScript Notes
|
|
37
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
38
|
+
|
|
39
|
+
### TypeScript Notes
|
|
40
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
41
|
+
|
|
42
|
+
### React Notes
|
|
43
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
44
|
+
|
|
45
|
+
### Vue Notes
|
|
46
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
47
|
+
|
|
48
|
+
### Frontend-Craft Adaptation
|
|
49
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
50
|
+
|
|
51
|
+
### Example Transformation
|
|
52
|
+
Before: `getUnreadCountAndMarkSeen()` both reads and mutates. After: expose `getUnreadCount()` and `markSeen()` while preserving workflows that intentionally call both.
|
|
53
|
+
|
|
54
|
+
## RF-PARAMETERIZE-FUNCTION — Parameterize Function
|
|
55
|
+
|
|
56
|
+
### Intent
|
|
57
|
+
Replace several near-duplicate functions with one function parameterized by the varying value.
|
|
58
|
+
|
|
59
|
+
### Typical Signals
|
|
60
|
+
- Functions differ only by a literal, threshold, mode, or other explicit data.
|
|
61
|
+
|
|
62
|
+
### Avoid When
|
|
63
|
+
- Avoid when the variants represent distinct business concepts whose names are valuable or behavior will diverge.
|
|
64
|
+
|
|
65
|
+
### Preconditions
|
|
66
|
+
- Current observable behavior and affected callers are understood.
|
|
67
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
68
|
+
|
|
69
|
+
### Mechanics
|
|
70
|
+
1. Compare implementations and isolate the varying value.
|
|
71
|
+
2. Add a parameter for that variation.
|
|
72
|
+
3. Migrate one old function/caller at a time.
|
|
73
|
+
4. Inline/remove wrappers only when names no longer add domain value.
|
|
74
|
+
|
|
75
|
+
### Behavior-Preservation Checkpoints
|
|
76
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
77
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
78
|
+
|
|
79
|
+
### Related Code Smells
|
|
80
|
+
- No single code smell required; select from concrete structural evidence.
|
|
81
|
+
|
|
82
|
+
### Composes Well With
|
|
83
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
84
|
+
|
|
85
|
+
### JavaScript Notes
|
|
86
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
87
|
+
|
|
88
|
+
### TypeScript Notes
|
|
89
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
90
|
+
|
|
91
|
+
### React Notes
|
|
92
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
93
|
+
|
|
94
|
+
### Vue Notes
|
|
95
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
96
|
+
|
|
97
|
+
### Frontend-Craft Adaptation
|
|
98
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
99
|
+
|
|
100
|
+
### Example Transformation
|
|
101
|
+
Before: `loadFirstPage()` and `loadNextPage()` differ only by page index. After: `loadPage(page)` if their policies are truly identical.
|
|
102
|
+
|
|
103
|
+
## RF-REMOVE-FLAG-ARGUMENT — Remove Flag Argument
|
|
104
|
+
|
|
105
|
+
### Intent
|
|
106
|
+
Replace an argument that selects different behavior with explicit operations or a clearer dispatch API.
|
|
107
|
+
|
|
108
|
+
### Typical Signals
|
|
109
|
+
- A boolean/enum flag tells a function which branch of behavior to execute.
|
|
110
|
+
|
|
111
|
+
### Avoid When
|
|
112
|
+
- Do not remove ordinary data booleans that are part of the domain value rather than a control instruction.
|
|
113
|
+
|
|
114
|
+
### Preconditions
|
|
115
|
+
- Current observable behavior and affected callers are understood.
|
|
116
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
117
|
+
|
|
118
|
+
### Mechanics
|
|
119
|
+
1. Identify behavior-selecting flags and affected call sites.
|
|
120
|
+
2. Create explicit functions/entry points for meaningful behaviors.
|
|
121
|
+
3. Migrate callers from magic boolean/enum values.
|
|
122
|
+
4. Remove the flag branch after all callers are clear.
|
|
123
|
+
|
|
124
|
+
### Behavior-Preservation Checkpoints
|
|
125
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
126
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
127
|
+
|
|
128
|
+
### Related Code Smells
|
|
129
|
+
- `SMELL-LONG-PARAMETER-LIST`
|
|
130
|
+
|
|
131
|
+
### Composes Well With
|
|
132
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
133
|
+
|
|
134
|
+
### JavaScript Notes
|
|
135
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
136
|
+
|
|
137
|
+
### TypeScript Notes
|
|
138
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
139
|
+
|
|
140
|
+
### React Notes
|
|
141
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
142
|
+
|
|
143
|
+
### Vue Notes
|
|
144
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
145
|
+
|
|
146
|
+
### Frontend-Craft Adaptation
|
|
147
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
148
|
+
|
|
149
|
+
### Example Transformation
|
|
150
|
+
Before: `send(draft, true)` means schedule. After: `scheduleSend(draft)` and `sendNow(draft)` expose intent.
|
|
151
|
+
|
|
152
|
+
## RF-PRESERVE-WHOLE-OBJECT — Preserve Whole Object
|
|
153
|
+
|
|
154
|
+
### Intent
|
|
155
|
+
Pass the source object when a function needs several of its fields instead of unpacking them into a long parameter list.
|
|
156
|
+
|
|
157
|
+
### Typical Signals
|
|
158
|
+
- Callers extract multiple values from one object solely to pass them together.
|
|
159
|
+
|
|
160
|
+
### Avoid When
|
|
161
|
+
- Avoid when passing the whole object would create an undesirable dependency on a broad mutable/public structure.
|
|
162
|
+
|
|
163
|
+
### Preconditions
|
|
164
|
+
- Current observable behavior and affected callers are understood.
|
|
165
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
166
|
+
|
|
167
|
+
### Mechanics
|
|
168
|
+
1. Identify values originating from one object.
|
|
169
|
+
2. Change the callee to accept the object while keeping calculation unchanged.
|
|
170
|
+
3. Migrate callers.
|
|
171
|
+
4. Narrow to an interface/view if the whole object exposes too much.
|
|
172
|
+
|
|
173
|
+
### Behavior-Preservation Checkpoints
|
|
174
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
175
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
176
|
+
|
|
177
|
+
### Related Code Smells
|
|
178
|
+
- `SMELL-LONG-FUNCTION`
|
|
179
|
+
- `SMELL-LONG-PARAMETER-LIST`
|
|
180
|
+
- `SMELL-DATA-CLUMPS`
|
|
181
|
+
|
|
182
|
+
### Composes Well With
|
|
183
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
184
|
+
|
|
185
|
+
### JavaScript Notes
|
|
186
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
187
|
+
|
|
188
|
+
### TypeScript Notes
|
|
189
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
190
|
+
|
|
191
|
+
### React Notes
|
|
192
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
193
|
+
|
|
194
|
+
### Vue Notes
|
|
195
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
196
|
+
|
|
197
|
+
### Frontend-Craft Adaptation
|
|
198
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
199
|
+
|
|
200
|
+
### Example Transformation
|
|
201
|
+
Before: `withinRange(room.temp.low, room.temp.high, plan)` becomes `withinRange(room.temp, plan)` with a typed narrow range contract.
|
|
202
|
+
|
|
203
|
+
## RF-REPLACE-PARAMETER-WITH-QUERY — Replace Parameter with Query
|
|
204
|
+
|
|
205
|
+
### Intent
|
|
206
|
+
Remove a parameter when the callee can obtain the same value from an appropriate stable source.
|
|
207
|
+
|
|
208
|
+
### Typical Signals
|
|
209
|
+
- Callers repeatedly compute/pass a value that the callee already can derive.
|
|
210
|
+
|
|
211
|
+
### Avoid When
|
|
212
|
+
- Avoid when the query introduces hidden dependency, impurity, nondeterminism, or makes testing harder.
|
|
213
|
+
|
|
214
|
+
### Preconditions
|
|
215
|
+
- Current observable behavior and affected callers are understood.
|
|
216
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
217
|
+
|
|
218
|
+
### Mechanics
|
|
219
|
+
1. Identify the stable query source.
|
|
220
|
+
2. Read the value inside the function.
|
|
221
|
+
3. Migrate callers and remove the redundant parameter.
|
|
222
|
+
4. Verify dependency visibility and testability.
|
|
223
|
+
|
|
224
|
+
### Behavior-Preservation Checkpoints
|
|
225
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
226
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
227
|
+
|
|
228
|
+
### Related Code Smells
|
|
229
|
+
- `SMELL-LONG-PARAMETER-LIST`
|
|
230
|
+
|
|
231
|
+
### Composes Well With
|
|
232
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
233
|
+
|
|
234
|
+
### JavaScript Notes
|
|
235
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
236
|
+
|
|
237
|
+
### TypeScript Notes
|
|
238
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
239
|
+
|
|
240
|
+
### React Notes
|
|
241
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
242
|
+
|
|
243
|
+
### Vue Notes
|
|
244
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
245
|
+
|
|
246
|
+
### Frontend-Craft Adaptation
|
|
247
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
248
|
+
|
|
249
|
+
### Example Transformation
|
|
250
|
+
Before: every caller passes `tenant.locale` into a tenant-owned formatter. After: the formatter queries its explicit tenant context when that dependency is appropriate.
|
|
251
|
+
|
|
252
|
+
## RF-REPLACE-QUERY-WITH-PARAMETER — Replace Query with Parameter
|
|
253
|
+
|
|
254
|
+
### Intent
|
|
255
|
+
Make a hidden dependency explicit by passing the needed value into a function.
|
|
256
|
+
|
|
257
|
+
### Typical Signals
|
|
258
|
+
- A function queries global/context state that reduces purity, reuse, determinism, or testability.
|
|
259
|
+
|
|
260
|
+
### Avoid When
|
|
261
|
+
- Avoid exploding parameter lists or passing values that are truly intrinsic to the receiver’s responsibility.
|
|
262
|
+
|
|
263
|
+
### Preconditions
|
|
264
|
+
- Current observable behavior and affected callers are understood.
|
|
265
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
266
|
+
|
|
267
|
+
### Mechanics
|
|
268
|
+
1. Identify the hidden query/dependency.
|
|
269
|
+
2. Add a parameter for the needed value or narrow interface.
|
|
270
|
+
3. Move the query to callers at the right boundary.
|
|
271
|
+
4. Verify callers and avoid duplicating inconsistent query logic.
|
|
272
|
+
|
|
273
|
+
### Behavior-Preservation Checkpoints
|
|
274
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
275
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
276
|
+
|
|
277
|
+
### Related Code Smells
|
|
278
|
+
- No single code smell required; select from concrete structural evidence.
|
|
279
|
+
|
|
280
|
+
### Composes Well With
|
|
281
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
282
|
+
|
|
283
|
+
### JavaScript Notes
|
|
284
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
285
|
+
|
|
286
|
+
### TypeScript Notes
|
|
287
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
288
|
+
|
|
289
|
+
### React Notes
|
|
290
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
291
|
+
|
|
292
|
+
### Vue Notes
|
|
293
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
294
|
+
|
|
295
|
+
### Frontend-Craft Adaptation
|
|
296
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
297
|
+
|
|
298
|
+
### Example Transformation
|
|
299
|
+
Before: a pure formatter reads global timezone. After: pass the resolved timezone from application context so tests and SSR remain deterministic.
|
|
300
|
+
|
|
301
|
+
## RF-REMOVE-SETTING-METHOD — Remove Setting Method
|
|
302
|
+
|
|
303
|
+
### Intent
|
|
304
|
+
Remove mutation APIs for state that should not change after construction/initialization.
|
|
305
|
+
|
|
306
|
+
### Typical Signals
|
|
307
|
+
- A setter exists but valid usage never changes the value after creation.
|
|
308
|
+
|
|
309
|
+
### Avoid When
|
|
310
|
+
- Do not remove required edit workflows or framework-controlled setters without replacing the legitimate mutation path.
|
|
311
|
+
|
|
312
|
+
### Preconditions
|
|
313
|
+
- Current observable behavior and affected callers are understood.
|
|
314
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
315
|
+
|
|
316
|
+
### Mechanics
|
|
317
|
+
1. Find all writes and establish the intended invariant.
|
|
318
|
+
2. Move required initialization into construction/factory input.
|
|
319
|
+
3. Migrate or reject post-construction writes.
|
|
320
|
+
4. Remove the setter after callers no longer need it.
|
|
321
|
+
|
|
322
|
+
### Behavior-Preservation Checkpoints
|
|
323
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
324
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
325
|
+
|
|
326
|
+
### Related Code Smells
|
|
327
|
+
- `SMELL-MUTABLE-DATA`
|
|
328
|
+
- `SMELL-DATA-CLASS`
|
|
329
|
+
|
|
330
|
+
### Composes Well With
|
|
331
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
332
|
+
|
|
333
|
+
### JavaScript Notes
|
|
334
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
335
|
+
|
|
336
|
+
### TypeScript Notes
|
|
337
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
338
|
+
|
|
339
|
+
### React Notes
|
|
340
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
341
|
+
|
|
342
|
+
### Vue Notes
|
|
343
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
344
|
+
|
|
345
|
+
### Frontend-Craft Adaptation
|
|
346
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
347
|
+
|
|
348
|
+
### Example Transformation
|
|
349
|
+
Before: an immutable account ID exposes `setAccountId`. After: require it at creation and expose only a getter/read-only field.
|
|
350
|
+
|
|
351
|
+
## RF-REPLACE-CONSTRUCTOR-WITH-FACTORY-FUNCTION — Replace Constructor with Factory Function
|
|
352
|
+
|
|
353
|
+
### Intent
|
|
354
|
+
Use a named factory when construction syntax cannot express selection, normalization, caching, or intent clearly.
|
|
355
|
+
|
|
356
|
+
### Typical Signals
|
|
357
|
+
- Creation needs a meaningful name, subtype/strategy choice, normalization, or controlled instance reuse.
|
|
358
|
+
|
|
359
|
+
### Avoid When
|
|
360
|
+
- Avoid adding a factory when `new` is already clear and no creation policy exists.
|
|
361
|
+
|
|
362
|
+
### Preconditions
|
|
363
|
+
- Current observable behavior and affected callers are understood.
|
|
364
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
365
|
+
|
|
366
|
+
### Mechanics
|
|
367
|
+
1. Create a factory that initially delegates to the constructor.
|
|
368
|
+
2. Migrate call sites incrementally.
|
|
369
|
+
3. Move creation policy behind the factory only as needed.
|
|
370
|
+
4. Restrict direct construction only when the abstraction benefits.
|
|
371
|
+
|
|
372
|
+
### Behavior-Preservation Checkpoints
|
|
373
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
374
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
375
|
+
|
|
376
|
+
### Related Code Smells
|
|
377
|
+
- No single code smell required; select from concrete structural evidence.
|
|
378
|
+
|
|
379
|
+
### Composes Well With
|
|
380
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
381
|
+
|
|
382
|
+
### JavaScript Notes
|
|
383
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
384
|
+
|
|
385
|
+
### TypeScript Notes
|
|
386
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
387
|
+
|
|
388
|
+
### React Notes
|
|
389
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
390
|
+
|
|
391
|
+
### Vue Notes
|
|
392
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
393
|
+
|
|
394
|
+
### Frontend-Craft Adaptation
|
|
395
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
396
|
+
|
|
397
|
+
### Example Transformation
|
|
398
|
+
Before: `new Client(config, "readonly")` becomes `createReadonlyClient(config)` when the factory captures real creation policy.
|
|
399
|
+
|
|
400
|
+
## RF-REPLACE-FUNCTION-WITH-COMMAND — Replace Function with Command
|
|
401
|
+
|
|
402
|
+
### Intent
|
|
403
|
+
Represent a complex operation as an object/context when it benefits from state, lifecycle, undo, queueing, retry, audit, or staged calculation.
|
|
404
|
+
|
|
405
|
+
### Typical Signals
|
|
406
|
+
- A function carries many temporaries or needs a reusable execution context.
|
|
407
|
+
|
|
408
|
+
### Avoid When
|
|
409
|
+
- Do not introduce Command objects for simple pure calculations; classes are not inherently superior to functions.
|
|
410
|
+
|
|
411
|
+
### Preconditions
|
|
412
|
+
- Current observable behavior and affected callers are understood.
|
|
413
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
414
|
+
|
|
415
|
+
### Mechanics
|
|
416
|
+
1. Create a command/context that captures inputs.
|
|
417
|
+
2. Move the function body into an execute/calculate operation.
|
|
418
|
+
3. Extract internal steps/state only when they clarify the lifecycle.
|
|
419
|
+
4. Migrate callers and preserve result/error semantics.
|
|
420
|
+
|
|
421
|
+
### Behavior-Preservation Checkpoints
|
|
422
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
423
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
424
|
+
|
|
425
|
+
### Related Code Smells
|
|
426
|
+
- `SMELL-LONG-FUNCTION`
|
|
427
|
+
|
|
428
|
+
### Composes Well With
|
|
429
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
430
|
+
|
|
431
|
+
### JavaScript Notes
|
|
432
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
433
|
+
|
|
434
|
+
### TypeScript Notes
|
|
435
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
436
|
+
|
|
437
|
+
### React Notes
|
|
438
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
439
|
+
|
|
440
|
+
### Vue Notes
|
|
441
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
442
|
+
|
|
443
|
+
### Frontend-Craft Adaptation
|
|
444
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
445
|
+
|
|
446
|
+
### Example Transformation
|
|
447
|
+
Before: a complex upload function manages retry, progress, cancellation, and audit state. After: an UploadCommand/session object owns that lifecycle.
|
|
448
|
+
|
|
449
|
+
## RF-REPLACE-COMMAND-WITH-FUNCTION — Replace Command with Function
|
|
450
|
+
|
|
451
|
+
### Intent
|
|
452
|
+
Collapse a command object to a function when its state/lifecycle no longer justifies the extra abstraction.
|
|
453
|
+
|
|
454
|
+
### Typical Signals
|
|
455
|
+
- A command has one execute method, trivial fields, and no meaningful lifecycle or reuse.
|
|
456
|
+
|
|
457
|
+
### Avoid When
|
|
458
|
+
- Keep commands that genuinely support state, undo, queueing, retry, auditing, or complex staged work.
|
|
459
|
+
|
|
460
|
+
### Preconditions
|
|
461
|
+
- Current observable behavior and affected callers are understood.
|
|
462
|
+
- The target scope is inside a declared diff budget and can be verified after this one primary transformation.
|
|
463
|
+
|
|
464
|
+
### Mechanics
|
|
465
|
+
1. Inline command helpers until the operation is simple.
|
|
466
|
+
2. Convert captured fields to function parameters.
|
|
467
|
+
3. Replace construction + execute with a function call.
|
|
468
|
+
4. Remove the command after callers migrate.
|
|
469
|
+
|
|
470
|
+
### Behavior-Preservation Checkpoints
|
|
471
|
+
- Compare inputs, outputs, exceptions, side effects, ordering, and public contracts before/after the step.
|
|
472
|
+
- For frontend code, also check UI state, events, focus, network behavior, lifecycle/state transitions, and relevant identity semantics.
|
|
473
|
+
|
|
474
|
+
### Related Code Smells
|
|
475
|
+
- No single code smell required; select from concrete structural evidence.
|
|
476
|
+
|
|
477
|
+
### Composes Well With
|
|
478
|
+
- Combine only with a separately justified next transformation; no fixed sequence is required.
|
|
479
|
+
|
|
480
|
+
### JavaScript Notes
|
|
481
|
+
- Preserve arity-sensitive callbacks, `this`, default values, thrown errors, and side-effect timing.
|
|
482
|
+
|
|
483
|
+
### TypeScript Notes
|
|
484
|
+
- Treat exported function signatures, generics, overloads, DTOs, and public types as compatibility contracts.
|
|
485
|
+
|
|
486
|
+
### React Notes
|
|
487
|
+
- Props/callback signatures, hooks, loaders/actions, router contracts, and context APIs may be public boundaries.
|
|
488
|
+
|
|
489
|
+
### Vue Notes
|
|
490
|
+
- Props/emits, composable returns, Pinia actions, route contracts, and injection keys may be public boundaries.
|
|
491
|
+
|
|
492
|
+
### Frontend-Craft Adaptation
|
|
493
|
+
- Prefer explicit, testable dependencies. Command objects earn their cost only when state/lifecycle such as undo, queue, retry, or audit justifies them.
|
|
494
|
+
|
|
495
|
+
### Example Transformation
|
|
496
|
+
Before: a one-shot `TitleFormatterCommand` only stores one string then returns a formatted title. After: use `formatTitle(value)`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fec-refactoring-catalog
|
|
3
|
+
description: Use when selecting or composing behavior-preserving refactoring techniques after structural evidence is known, especially when multiple candidate transformations, preconditions, or ordering choices must be compared.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Refactoring Catalog Selection
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
Use the complete catalog as a decision aid, not as a list of automatic recipes. Select the smallest technique whose preconditions fit the evidence and behavior contract.
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
1. Locate the standard technique in [the catalog index](references/catalog-index.md).
|
|
13
|
+
2. If starting from a smell or symptom, use [the selection guide](references/selection-guide.md) to compare causes and alternatives.
|
|
14
|
+
3. If several transformations are needed, use [the composition guide](references/composition-guide.md) to order only the prerequisites that fit the current code.
|
|
15
|
+
4. Load the referenced family detail only when the technique is selected.
|
|
16
|
+
|
|
17
|
+
## Selection Rules
|
|
18
|
+
- A smell can have several valid candidates; determine the actual cause first.
|
|
19
|
+
- Prefer reversible, local transformations over broad redesign.
|
|
20
|
+
- Check public API, routing, state ownership, async/lifecycle, persistence, and SSR boundaries before execution.
|
|
21
|
+
- Treat composition edges as conditional relationships, never mandatory pipelines.
|
|
22
|
+
|
|
23
|
+
## Quick Reference
|
|
24
|
+
| Need | Reference |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| All 61 techniques | [Catalog index](references/catalog-index.md) |
|
|
27
|
+
| Choose by symptom/cause | [Selection guide](references/selection-guide.md) |
|
|
28
|
+
| Order related techniques | [Composition guide](references/composition-guide.md) |
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Refactoring Catalog Index
|
|
2
|
+
|
|
3
|
+
The 61 stable IDs preserve the supplied Chapters 6–12 catalog. Detailed mechanics live in family references and are loaded only when needed.
|
|
4
|
+
|
|
5
|
+
## Functions — 11
|
|
6
|
+
|
|
7
|
+
| ID | Standard Name | Family | Detail |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| `RF-EXTRACT-FUNCTION` | Extract Function | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
10
|
+
| `RF-INLINE-FUNCTION` | Inline Function | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
11
|
+
| `RF-EXTRACT-VARIABLE` | Extract Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
12
|
+
| `RF-INLINE-VARIABLE` | Inline Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
13
|
+
| `RF-CHANGE-FUNCTION-DECLARATION` | Change Function Declaration | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
14
|
+
| `RF-ENCAPSULATE-VARIABLE` | Encapsulate Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
15
|
+
| `RF-RENAME-VARIABLE` | Rename Variable | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
16
|
+
| `RF-INTRODUCE-PARAMETER-OBJECT` | Introduce Parameter Object | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
17
|
+
| `RF-COMBINE-FUNCTIONS-INTO-CLASS` | Combine Functions into Class | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
18
|
+
| `RF-COMBINE-FUNCTIONS-INTO-TRANSFORM` | Combine Functions into Transform | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
19
|
+
| `RF-SPLIT-PHASE` | Split Phase | `functions` | [Detail](../../fec-refactoring-functions/references/function-refactorings.md) |
|
|
20
|
+
|
|
21
|
+
## Encapsulation — 9
|
|
22
|
+
|
|
23
|
+
| ID | Standard Name | Family | Detail |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| `RF-ENCAPSULATE-RECORD` | Encapsulate Record | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
26
|
+
| `RF-ENCAPSULATE-COLLECTION` | Encapsulate Collection | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
27
|
+
| `RF-REPLACE-PRIMITIVE-WITH-OBJECT` | Replace Primitive with Object | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
28
|
+
| `RF-REPLACE-TEMP-WITH-QUERY` | Replace Temp with Query | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
29
|
+
| `RF-EXTRACT-CLASS` | Extract Class | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
30
|
+
| `RF-INLINE-CLASS` | Inline Class | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
31
|
+
| `RF-HIDE-DELEGATE` | Hide Delegate | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
32
|
+
| `RF-REMOVE-MIDDLE-MAN` | Remove Middle Man | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
33
|
+
| `RF-SUBSTITUTE-ALGORITHM` | Substitute Algorithm | `encapsulation` | [Detail](../../fec-refactoring-encapsulation/references/encapsulation-refactorings.md) |
|
|
34
|
+
|
|
35
|
+
## Moving Features — 9
|
|
36
|
+
|
|
37
|
+
| ID | Standard Name | Family | Detail |
|
|
38
|
+
| --- | --- | --- | --- |
|
|
39
|
+
| `RF-MOVE-FUNCTION` | Move Function | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
40
|
+
| `RF-MOVE-FIELD` | Move Field | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
41
|
+
| `RF-MOVE-STATEMENTS-INTO-FUNCTION` | Move Statements into Function | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
42
|
+
| `RF-MOVE-STATEMENTS-TO-CALLERS` | Move Statements to Callers | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
43
|
+
| `RF-REPLACE-INLINE-CODE-WITH-FUNCTION-CALL` | Replace Inline Code with Function Call | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
44
|
+
| `RF-SLIDE-STATEMENTS` | Slide Statements | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
45
|
+
| `RF-SPLIT-LOOP` | Split Loop | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
46
|
+
| `RF-REPLACE-LOOP-WITH-PIPELINE` | Replace Loop with Pipeline | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
47
|
+
| `RF-REMOVE-DEAD-CODE` | Remove Dead Code | `move-features` | [Detail](../../fec-refactoring-move-features/references/moving-refactorings.md) |
|
|
48
|
+
|
|
49
|
+
## Data — 5
|
|
50
|
+
|
|
51
|
+
| ID | Standard Name | Family | Detail |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| `RF-SPLIT-VARIABLE` | Split Variable | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
|
|
54
|
+
| `RF-RENAME-FIELD` | Rename Field | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
|
|
55
|
+
| `RF-REPLACE-DERIVED-VARIABLE-WITH-QUERY` | Replace Derived Variable with Query | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
|
|
56
|
+
| `RF-CHANGE-REFERENCE-TO-VALUE` | Change Reference to Value | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
|
|
57
|
+
| `RF-CHANGE-VALUE-TO-REFERENCE` | Change Value to Reference | `data` | [Detail](../../fec-refactoring-data/references/data-refactorings.md) |
|
|
58
|
+
|
|
59
|
+
## Conditional Logic — 6
|
|
60
|
+
|
|
61
|
+
| ID | Standard Name | Family | Detail |
|
|
62
|
+
| --- | --- | --- | --- |
|
|
63
|
+
| `RF-DECOMPOSE-CONDITIONAL` | Decompose Conditional | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
|
|
64
|
+
| `RF-CONSOLIDATE-CONDITIONAL-EXPRESSION` | Consolidate Conditional Expression | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
|
|
65
|
+
| `RF-REPLACE-NESTED-CONDITIONAL-WITH-GUARD-CLAUSES` | Replace Nested Conditional with Guard Clauses | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
|
|
66
|
+
| `RF-REPLACE-CONDITIONAL-WITH-POLYMORPHISM` | Replace Conditional with Polymorphism | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
|
|
67
|
+
| `RF-INTRODUCE-SPECIAL-CASE` | Introduce Special Case | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
|
|
68
|
+
| `RF-INTRODUCE-ASSERTION` | Introduce Assertion | `control` | [Detail](../../fec-refactoring-control/references/conditional-refactorings.md) |
|
|
69
|
+
|
|
70
|
+
## API — 10
|
|
71
|
+
|
|
72
|
+
| ID | Standard Name | Family | Detail |
|
|
73
|
+
| --- | --- | --- | --- |
|
|
74
|
+
| `RF-SEPARATE-QUERY-FROM-MODIFIER` | Separate Query from Modifier | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
75
|
+
| `RF-PARAMETERIZE-FUNCTION` | Parameterize Function | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
76
|
+
| `RF-REMOVE-FLAG-ARGUMENT` | Remove Flag Argument | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
77
|
+
| `RF-PRESERVE-WHOLE-OBJECT` | Preserve Whole Object | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
78
|
+
| `RF-REPLACE-PARAMETER-WITH-QUERY` | Replace Parameter with Query | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
79
|
+
| `RF-REPLACE-QUERY-WITH-PARAMETER` | Replace Query with Parameter | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
80
|
+
| `RF-REMOVE-SETTING-METHOD` | Remove Setting Method | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
81
|
+
| `RF-REPLACE-CONSTRUCTOR-WITH-FACTORY-FUNCTION` | Replace Constructor with Factory Function | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
82
|
+
| `RF-REPLACE-FUNCTION-WITH-COMMAND` | Replace Function with Command | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
83
|
+
| `RF-REPLACE-COMMAND-WITH-FUNCTION` | Replace Command with Function | `api` | [Detail](../../fec-refactoring-api/references/api-refactorings.md) |
|
|
84
|
+
|
|
85
|
+
## Inheritance — 11
|
|
86
|
+
|
|
87
|
+
| ID | Standard Name | Family | Detail |
|
|
88
|
+
| --- | --- | --- | --- |
|
|
89
|
+
| `RF-PULL-UP-METHOD` | Pull Up Method | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
90
|
+
| `RF-PULL-UP-FIELD` | Pull Up Field | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
91
|
+
| `RF-PULL-UP-CONSTRUCTOR-BODY` | Pull Up Constructor Body | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
92
|
+
| `RF-PUSH-DOWN-METHOD` | Push Down Method | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
93
|
+
| `RF-PUSH-DOWN-FIELD` | Push Down Field | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
94
|
+
| `RF-REPLACE-TYPE-CODE-WITH-SUBCLASSES` | Replace Type Code with Subclasses | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
95
|
+
| `RF-REMOVE-SUBCLASS` | Remove Subclass | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
96
|
+
| `RF-EXTRACT-SUPERCLASS` | Extract Superclass | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
97
|
+
| `RF-COLLAPSE-HIERARCHY` | Collapse Hierarchy | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
98
|
+
| `RF-REPLACE-SUBCLASS-WITH-DELEGATE` | Replace Subclass with Delegate | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|
|
99
|
+
| `RF-REPLACE-SUPERCLASS-WITH-DELEGATE` | Replace Superclass with Delegate | `inheritance` | [Detail](../../fec-refactoring-inheritance/references/inheritance-refactorings.md) |
|