@alanwang-merit/meritdata-platform-skill-package 1.0.9 → 1.0.10
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/package.json +1 -1
- package/rules/api-design-rules.md +0 -7
- package/rules/code-dev-rules.md +0 -70
- package/rules/coding-standards-rules.md +0 -99
- package/rules/data-boundary-rules.md +32 -0
- package/rules/frontend-coding-rules.md +0 -6
- package/rules/frontend-component-rules.md +0 -6
- package/rules/git-workflow-rules.md +0 -6
- package/rules/nacos-rules.md +0 -6
- package/rules/naming-conventions-rules.md +0 -6
- package/rules/performance-rules.md +0 -6
- package/rules/security-rules.md +0 -6
- package/rules/sql-naming-rules.md +0 -6
- package/rules/sql-script-rules.md +0 -6
- package/skills/api-design/SKILL.md +523 -0
- package/skills/architecture-readiness-check/SKILL.md +80 -0
- package/skills/architecture-readiness-check/references//346/236/266/346/236/204/350/256/276/350/256/241/345/207/206/345/244/207/345/272/246/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +129 -0
- package/skills/architecture-readiness-check/references//346/236/266/346/236/204/350/256/276/350/256/241/345/207/206/345/244/207/345/272/246/346/243/200/346/237/245/346/270/205/345/215/225.md +251 -0
- package/skills/ask-matt/SKILL.md +78 -0
- package/skills/ask-matt/agents/openai.yaml +5 -0
- package/skills/backend-code-review/SKILL.md +168 -0
- package/skills/backend-code-review/references/architecture-rule.md +91 -0
- package/skills/backend-code-review/references/db-schema-rule.md +157 -0
- package/skills/backend-code-review/references/repositories-rule.md +61 -0
- package/skills/backend-code-review/references/sqlalchemy-rule.md +139 -0
- package/skills/backend-patterns/SKILL.md +597 -0
- package/skills/backend-patterns/agents/openai.yaml +7 -0
- package/skills/brainstorming/SKILL.md +151 -0
- package/skills/brainstorming/scripts/frame-template.html +213 -0
- package/skills/brainstorming/scripts/helper.js +167 -0
- package/skills/brainstorming/scripts/server.cjs +723 -0
- package/skills/brainstorming/scripts/server.js +338 -0
- package/skills/brainstorming/scripts/start-server.sh +209 -0
- package/skills/brainstorming/scripts/stop-server.sh +120 -0
- package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/brainstorming/visual-companion.md +298 -0
- package/skills/code-design-consistency-check/SKILL.md +142 -0
- package/skills/code-design-consistency-check/references//344/273/243/347/240/201/344/270/216/350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +242 -0
- package/skills/code-design-consistency-check/references//344/273/243/347/240/201/344/270/216/350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/346/243/200/346/237/245/346/270/205/345/215/225.md +314 -0
- package/skills/code-low-level-check/SKILL.md +159 -0
- package/skills/code-low-level-check/references//344/273/243/347/240/201/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +242 -0
- package/skills/code-low-level-check/references//344/273/243/347/240/201/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +353 -0
- package/skills/code-low-level-check/references//345/211/215/347/253/257UI/345/212/237/350/203/275/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +338 -0
- package/skills/code-review/SKILL.md +89 -0
- package/skills/code-review/agents/openai.yaml +3 -0
- package/skills/codebase-design/DEEPENING.md +37 -0
- package/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/skills/codebase-design/SKILL.md +114 -0
- package/skills/codebase-design/agents/openai.yaml +3 -0
- package/skills/design-architect-review/SKILL.md +81 -0
- package/skills/design-architect-review/references//346/236/266/346/236/204/345/270/210/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +264 -0
- package/skills/design-low-level-check/SKILL.md +95 -0
- package/skills/design-low-level-check/references//346/212/200/346/234/257/350/256/276/350/256/241/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +125 -0
- package/skills/design-low-level-check/references//346/212/200/346/234/257/350/256/276/350/256/241/344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +342 -0
- package/skills/design-review/SKILL.md +225 -0
- package/skills/design-review/references//350/256/276/350/256/241/350/257/204/345/256/241/346/243/200/346/237/245/345/215/225.md +64 -0
- package/skills/design-review-report/SKILL.md +150 -0
- package/skills/design-review-report/references//350/256/276/350/256/241/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +224 -0
- package/skills/design-taste-frontend/SKILL.md +226 -0
- package/skills/developer-testcase-review/SKILL.md +191 -0
- package/skills/developer-testcase-review/references//345/274/200/345/217/221/350/200/205/346/265/213/350/257/225/347/224/250/344/276/213/346/243/200/346/237/245/345/215/225.md +40 -0
- package/skills/development-code-review/SKILL.md +138 -0
- package/skills/development-code-review/references//345/274/200/345/217/221/344/273/243/347/240/201/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +260 -0
- package/skills/development-code-review/references//345/274/200/345/217/221/344/273/243/347/240/201/350/257/204/345/256/241/346/243/200/346/237/245/345/215/225.md +82 -0
- package/skills/development-expert-review/SKILL.md +150 -0
- package/skills/development-expert-review/references//345/211/215/345/220/216/347/253/257/344/270/223/345/256/266/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +338 -0
- package/skills/diagnosing-bugs/SKILL.md +134 -0
- package/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/skills/dispatching-parallel-agents/SKILL.md +167 -0
- package/skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/skills/domain-modeling/SKILL.md +74 -0
- package/skills/domain-modeling/agents/openai.yaml +3 -0
- package/skills/executing-plans/SKILL.md +64 -0
- package/skills/finishing-a-development-branch/SKILL.md +201 -0
- package/skills/frontend-patterns/SKILL.md +642 -0
- package/skills/generate-developer-testcase/SKILL.md +70 -0
- package/skills/generate-developer-testcase/references//345/274/200/345/217/221/350/200/205/346/265/213/350/257/225/347/224/250/344/276/213/346/250/241/346/235/277.md +157 -0
- package/skills/git-guardrails-claude-code/SKILL.md +95 -0
- package/skills/git-guardrails-claude-code/agents/openai.yaml +3 -0
- package/skills/git-guardrails-claude-code/scripts/block-dangerous-git.sh +25 -0
- package/skills/grill-me/SKILL.md +7 -0
- package/skills/grill-me/agents/openai.yaml +5 -0
- package/skills/grill-with-docs/SKILL.md +7 -0
- package/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/skills/grilling/SKILL.md +12 -0
- package/skills/grilling/agents/openai.yaml +3 -0
- package/skills/handoff/SKILL.md +16 -0
- package/skills/handoff/agents/openai.yaml +5 -0
- package/skills/implement/SKILL.md +15 -0
- package/skills/implement/agents/openai.yaml +5 -0
- package/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/skills/improve-codebase-architecture/SKILL.md +71 -0
- package/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/skills/init-deep-claude/SKILL.md +270 -0
- package/skills/init-deep-claude/_meta.json +14 -0
- package/skills/init-deep-claude/evals/evals.json +60 -0
- package/skills/init-deep-claude/references/code-project-template.md +57 -0
- package/skills/init-deep-claude/references/error-handling.md +118 -0
- package/skills/init-deep-claude/references/monorepo-strategy.md +100 -0
- package/skills/init-deep-claude/references/plain-directory-template.md +62 -0
- package/skills/java-architect/SKILL.md +132 -0
- package/skills/java-architect/references/jpa-optimization.md +393 -0
- package/skills/java-architect/references/reactive-webflux.md +356 -0
- package/skills/java-architect/references/spring-boot-setup.md +269 -0
- package/skills/java-architect/references/spring-security.md +445 -0
- package/skills/java-architect/references/testing-patterns.md +500 -0
- package/skills/java-coding-standards/SKILL.md +147 -0
- package/skills/java-testing/SKILL.md +34 -0
- package/skills/java-testing/evals/evals.json +46 -0
- package/skills/java-testing/references/junit-template.md +58 -0
- package/skills/meritdata-platform-2nd-dev-check/README.md +196 -0
- package/skills/meritdata-platform-2nd-dev-check/SKILL.md +209 -23
- package/skills/meritdata-platform-2nd-dev-check/agents/openai.yaml +33 -0
- package/skills/meritdata-platform-2nd-dev-check/checklists/checks.schema.json +22 -0
- package/skills/meritdata-platform-2nd-dev-check/checklists/dependency.chk.json +96 -0
- package/skills/meritdata-platform-2nd-dev-check/checklists/frontend.chk.json +69 -0
- package/skills/meritdata-platform-2nd-dev-check/checklists/integration.chk.json +78 -0
- package/skills/meritdata-platform-2nd-dev-check/checklists/naming.chk.json +78 -0
- package/skills/meritdata-platform-2nd-dev-check/checklists/package-structure.chk.json +87 -0
- package/skills/meritdata-platform-2nd-dev-check/checklists/security.chk.json +87 -0
- package/skills/meritdata-platform-2nd-dev-check/references/checklist.md +322 -0
- package/skills/meritdata-platform-2nd-dev-check/references/env-vars.md +232 -0
- package/skills/meritdata-platform-2nd-dev-check/references/fix-guide.md +433 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/apply-to-files.sh +238 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/check-backend.sh +171 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/check-conventions.sh +188 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/check-database.sh +128 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/check-frontend.sh +225 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/check-lib-version.sh +289 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/check-platform.sh +212 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/load-config.sh +189 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/run-all.sh +168 -0
- package/skills/meritdata-platform-2nd-dev-check/scripts/write-env.sh +147 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/SKILL.md +77 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/agents/openai.yaml +23 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/application.java.vm +32 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/banner.txt.vm +9 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/bootstrap.properties.vm +20 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end/pom.xml.vm +202 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/entity/ProcTrackDTOApproval.java +36 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/Checker.java +39 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/LengthChecker.java +51 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/NumberChecker.java +49 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/RequiredChecker.java +39 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/SortNoChecker.java +31 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/SpecialCharChecker.java +47 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/checker/impl/UniqueChecker.java +30 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/config/Column.java +81 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/config/ImpConfig.java +126 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/config/RowData.java +68 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/Converter.java +28 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/converter/DateConverter.java +31 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/converter/LookUpConverter.java +53 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/converter/converter/SexConverter.java +45 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/dataloader/RowDataLoader.java +158 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/dataloader/impl/BeanRowDataLoader.java +18 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/dataloader/impl/MapRowDataLoader.java +41 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/feign/MangeFeignClient.java +21 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/IImportHandler.java +24 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/impl/AbstractImportHandler.java +172 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/impl/BaseImportHandler.java +50 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/handler/impl/ImpCallable.java +53 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/importcommon/config/ConfigLoader.java +97 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/back-end-common/common/imp/importcommon/util/ImportUtils.java +46 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/App.vue +12 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/Index.vue +18 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/i18n/i18n.js +13 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/i18n/langs/en_US.js +36 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/i18n/langs/zh_CN.js +36 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/index.js +14 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/main.js +21 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/router.js +16 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/store.js +20 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/view/Add.vue +43 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/view/Detail.vue +31 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/bundled/front-end/yourapp/view/Grid.vue +44 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/references/README.md +9 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/scripts/bootstrap.ps1 +353 -0
- package/skills/meritdata-platform-bootstrap-2nd-dev/scripts/bootstrap.sh +350 -0
- package/skills/meritdata-platform-bpm/SKILL.md +94 -30
- package/skills/meritdata-platform-bpm/agents/openai.yaml +36 -0
- package/skills/meritdata-platform-bpm/examples/leave-flow/README.md +151 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20201_/345/211/215/347/275/256/346/235/241/344/273/266.md +11 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20202_/350/247/204/345/210/231/345/274/225/346/223/216/345/210/235/345/247/213/345/214/226/346/216/245/345/217/243.md +263 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20203_/345/220/257/345/212/250/346/265/201/347/250/213/345/256/236/344/276/213/346/216/245/345/217/243.md +187 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20204_/350/277/220/350/241/214/350/247/204/345/210/231/345/274/225/346/223/216.md +449 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20205_/345/256/214/346/210/220/344/273/273/345/212/241/346/216/245/345/217/243.md +232 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20206_/345/241/253/345/206/231/346/204/217/350/247/201/346/216/245/345/217/243.md +192 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20207_/346/240/271/346/215/256/344/273/273/345/212/241/350/212/202/347/202/271/350/216/267/345/217/226/346/204/217/350/247/201/345/206/205/345/256/271.md +212 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20208_/346/237/245/347/234/213/350/277/275/350/270/252/346/216/245/345/217/243.md +492 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20209_/351/200/200/345/233/236/346/213/237/347/250/277/344/272/272/346/216/245/345/217/243.md +187 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20210_/351/200/200/345/233/236/344/270/212/344/270/200/347/216/257/350/212/202/345/244/204/347/220/206/344/272/272/346/216/245/345/217/243.md +183 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20211_/346/265/201/347/250/213/350/256/276/350/256/241/345/231/250/345/210/227/350/241/250/346/237/245/350/257/242.md +314 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20212_/344/270/252/344/272/272/345/276/205/345/212/236.md +261 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20213_/351/230/205/347/237/245.md +306 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20214_/346/265/201/347/250/213/346/234/200/346/226/260/345/256/232/344/271/211ID.md +100 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20215_/344/270/232/345/212/241/347/233/270/345/205/263/346/216/245/345/217/243.md +637 -0
- package/skills/meritdata-platform-bpm/references/api//346/224/273/347/225/245-01-/346/265/201/347/250/213API-/347/253/240/350/212/20216_/346/265/201/347/250/213/345/210/206/347/261/273/347/233/270/345/205/263.md +176 -0
- package/skills/meritdata-platform-bpm/references/api-reference.md +2779 -0
- package/skills/meritdata-platform-bpm/references/bpm-engine-complete-methods.md +150 -0
- package/skills/meritdata-platform-bpm/references/bpm-engine-detail/12_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.1/345/267/245/344/275/234/346/265/201BpmEngine.md +86 -0
- package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-00_/346/200/273/350/247/210.md +66 -0
- package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20201_/346/246/202/350/277/260.md +165 -0
- package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20202_/347/273/204/344/273/266/344/270/216/346/226/271/346/263/225/346/246/202/350/247/210/350/241/250.md +45 -0
- package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20203_BpmFormTools_-_BPM/350/241/250/345/215/225/345/267/245/345/205/267/347/273/204/344/273/266.md +145 -0
- package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20204_BpmGridButtonsNew_-_BPM/350/241/250/346/240/274/346/214/211/351/222/256/347/273/204/344/273/266.md +239 -0
- package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20205_/345/220/216/347/253/257BpmEngine/346/240/270/345/277/203/346/216/245/345/217/243.md +135 -0
- package/skills/meritdata-platform-bpm/references/components-ref//346/224/273/347/225/245-08-/346/265/201/347/250/213/345/211/215/347/253/257/347/273/204/344/273/266-/347/253/240/350/212/20206_/351/231/204/345/275/225.md +43 -0
- package/skills/meritdata-platform-bpm/references/components.md +618 -0
- package/skills/meritdata-platform-bpm/references/custom-assignee.md +28 -0
- package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-00_/346/200/273/350/247/210.md +51 -0
- package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20201_/345/256/236/347/216/260/347/255/226/347/225/245.md +30 -0
- package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20202_/350/207/252/345/256/232/344/271/211_jar_/345/214/205/347/232/204/345/256/236/347/216/260/346/265/201/347/250/213.md +242 -0
- package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20203_/350/207/252/345/256/232/344/271/211/346/234/215/345/212/241/346/220/255/345/273/272/357/274/210/350/213/245/345/267/262/345/255/230/345/234/250/345/267/245/347/250/213/345/222/214/346/216/245/345/217/243/357/274/214/346/255/244/346/255/245/351/252/244/345/217/257/347/234/201/347/225/245/357/274/211.md +150 -0
- package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20204_/346/265/201/347/250/213/350/256/276/350/256/241/344/270/255/350/256/276/347/275/256_listener_/345/217/202/346/225/260.md +44 -0
- package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20205_/346/265/213/350/257/225/350/247/246/345/217/221/346/265/201/347/250/213/347/233/221/345/220/254/344/272/213/344/273/266/346/230/257/345/220/246/347/224/237/346/225/210.md +42 -0
- package/skills/meritdata-platform-bpm/references/listener//346/224/273/347/225/245-03-/347/233/221/345/220/254/350/241/250/350/276/276/345/274/217-/347/253/240/350/212/20206_/345/244/207/346/263/250/357/274/232.md +26 -0
- package/skills/meritdata-platform-bpm/references/listener-expression.md +304 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-00_/346/200/273/350/247/210.md +25 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20201_/350/203/214/346/231/257.md +12 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20202_/345/267/245/344/275/234/346/265/201/347/233/270/345/205/263/344/273/213/347/273/215.md +28 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20203_/345/272/224/347/224/250/345/274/200/345/217/221/345/271/263/345/217/260/346/265/201/347/250/213/345/214/205/345/220/253/346/250/241/345/235/227.md +18 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20204_/346/265/201/347/250/213/345/212/237/350/203/275/346/250/241/345/235/227/344/273/213/347/273/215.md +284 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20205_/346/265/201/347/250/213/345/220/216/347/253/257/350/256/276/350/256/241.md +226 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20206_/346/265/201/347/250/213/345/211/215/347/253/257/350/256/276/350/256/241.md +80 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20207_/344/272/214/346/254/241/345/274/200/345/217/221.md +38 -0
- package/skills/meritdata-platform-bpm/references/module-design-ref//346/224/273/347/225/245-07-/346/265/201/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/347/253/240/350/212/20208_/344/270/252/344/272/272/346/240/267/344/276/213/346/265/201/347/250/213/347/232/204/351/205/215/347/275/256.md +92 -0
- package/skills/meritdata-platform-bpm/references/module-design.md +342 -0
- package/skills/meritdata-platform-bpm/references/process-track.md +172 -0
- package/skills/meritdata-platform-bpm/references/todo-portal.md +239 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-00_/346/200/273/350/247/210.md +84 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20201_/346/240/267/344/276/213/350/257/264/346/230/216.md +37 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20202_/345/220/216/347/253/257/345/267/245/347/250/213/345/210/233/345/273/272.md +39 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20203_/345/220/216/347/253/257/345/267/245/347/250/213/351/205/215/347/275/256.md +234 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20204_/345/220/216/347/253/257/345/267/245/347/250/213/344/270/232/345/212/241/347/261/273/345/210/233/345/273/272.md +549 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20205_/345/220/257/345/212/250/345/220/216/347/253/257/345/272/224/347/224/250/345/267/245/347/250/213.md +49 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20206_/346/265/201/347/250/213/345/272/224/347/224/250/345/211/215/347/253/257/345/274/200/345/217/221.md +1443 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20207_/345/220/257/345/212/250/345/211/215/347/253/257/345/272/224/347/224/250/345/267/245/347/250/213.md +78 -0
- package/skills/meritdata-platform-bpm/references/workflow//346/224/273/347/225/245-02-/345/267/245/344/275/234/346/265/201/347/250/213-/347/253/240/350/212/20208_/346/265/201/347/250/213/350/256/276/350/256/241.md +98 -0
- package/skills/meritdata-platform-bpm/references/workflow-dev.md +2037 -0
- package/skills/meritdata-platform-cache/SKILL.md +47 -36
- package/skills/meritdata-platform-cache/agents/openai.yaml +21 -0
- package/skills/meritdata-platform-cache/references/api-quick-ref.md +69 -0
- package/skills/meritdata-platform-cache/references/cache.md +226 -0
- package/skills/meritdata-platform-cloud-dev/SKILL.md +192 -74
- package/skills/meritdata-platform-cloud-dev/agents/openai.yaml +40 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/bpm.md +39 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/cache.md +28 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/config.md +31 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/data-boundary.md +44 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/datasource.md +30 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/domain-model.md +40 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/feign-api.md +41 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/file.md +30 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/gen.md +215 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/governance.md +51 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/http-client.md +40 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/impexp.md +26 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/logging.md +29 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/masterdata-sync.md +36 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/msg-job.md +27 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/platform-entities.md +40 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/platform.md +62 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/services.md +37 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/spec.md +47 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/ui.md +51 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/utils.md +31 -0
- package/skills/meritdata-platform-cloud-dev/references/modules/webapi.md +35 -0
- package/skills/meritdata-platform-code-review-by-rules/SKILL.md +174 -0
- package/skills/meritdata-platform-code-review-by-rules/agents/openai.yaml +13 -0
- package/skills/meritdata-platform-config-item/SKILL.md +55 -0
- package/skills/meritdata-platform-config-item/agents/openai.yaml +14 -0
- package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-00_/346/200/273/350/247/210.md +49 -0
- package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20201_/345/272/224/347/224/250/351/205/215/347/275/256/351/241/271/347/233/270/345/205/263.md +28 -0
- package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20202_/351/205/215/347/275/256/344/270/255/345/277/203/351/205/215/347/275/256/351/241/271/350/257/264/346/230/216.md +876 -0
- package/skills/meritdata-platform-config-item/references/nacos-config//346/224/273/347/225/245-11-/351/205/215/347/275/256/351/241/271-/347/253/240/350/212/20203_/351/205/215/347/275/256/351/241/271/347/232/204/344/275/277/347/224/250.md +45 -0
- package/skills/meritdata-platform-config-item/references/nacos-utils-api.md +76 -0
- package/skills/meritdata-platform-config-item/references/nacos.md +140 -0
- package/skills/meritdata-platform-core/SKILL.md +77 -0
- package/skills/meritdata-platform-core/agents/openai.yaml +37 -0
- package/skills/meritdata-platform-core/references/assets/02_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.1/347/274/223/345/255/230/346/223/215/344/275/234-SysCacheServiceFacade.md +423 -0
- package/skills/meritdata-platform-core/references/assets/03_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.1/347/274/223/345/255/230/346/223/215/344/275/234-StringCacheFacade.md +78 -0
- package/skills/meritdata-platform-core/references/assets/04_/344/270/200/345/237/272/347/241/200/350/256/276/346/226/275-1.2/351/205/215/347/275/256/344/270/255/345/277/203-NacosUtils.md +193 -0
- package/skills/meritdata-platform-core/references/assets/17_/351/231/204/345/275/225-/347/273/237/350/256/241/346/261/207/346/200/273-Maven/344/276/235/350/265/226-/346/263/250/346/204/217/344/272/213/351/241/271.md +131 -0
- package/skills/meritdata-platform-core/references/cache.md +237 -0
- package/skills/meritdata-platform-core/references/crypto.md +82 -0
- package/skills/meritdata-platform-core/references/data-secret.md +49 -0
- package/skills/meritdata-platform-core/references/logging.md +256 -0
- package/skills/meritdata-platform-core/references/nacos.md +140 -0
- package/skills/meritdata-platform-core/references/session.md +125 -0
- package/skills/meritdata-platform-crypto-gm/SKILL.md +62 -0
- package/skills/meritdata-platform-crypto-gm/agents/openai.yaml +15 -0
- package/skills/meritdata-platform-crypto-gm/references/api-quick-ref.md +39 -0
- package/skills/meritdata-platform-crypto-gm/references/assets/05_/344/272/214/351/200/232/347/224/250/345/267/245/345/205/267-2.1/345/212/240/350/247/243/345/257/206-SM2-SM3-SM4.md +176 -0
- package/skills/meritdata-platform-crypto-gm/references/contract-signing.md +60 -0
- package/skills/meritdata-platform-crypto-gm/references/crypto.md +144 -0
- package/skills/meritdata-platform-crypto-gm/references/key-management.md +48 -0
- package/skills/meritdata-platform-data-secret/SKILL.md +49 -0
- package/skills/meritdata-platform-data-secret/agents/openai.yaml +13 -0
- package/skills/meritdata-platform-data-secret/references/assets/10_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.4/345/244/232/347/263/273/347/273/237/351/233/206/346/210/220+3.5/346/225/260/346/215/256/345/257/206/347/272/247.md +91 -0
- package/skills/meritdata-platform-data-secret/references/data-secret.md +89 -0
- package/skills/meritdata-platform-data-secret/references/secret-api.md +35 -0
- package/skills/meritdata-platform-data-secret/references/secret-level-spec.md +231 -0
- package/skills/meritdata-platform-deploy/SKILL.md +73 -0
- package/skills/meritdata-platform-deploy/agents/openai.yaml +27 -0
- package/skills/meritdata-platform-entities/SKILL.md +81 -0
- package/skills/meritdata-platform-entities/agents/openai.yaml +34 -0
- package/skills/meritdata-platform-entities/references/entity-catalog.md +194 -0
- package/skills/meritdata-platform-frontend/SKILL.md +73 -38
- package/skills/meritdata-platform-frontend/agents/openai.yaml +31 -0
- package/skills/meritdata-platform-frontend/examples/user-list-page/README.md +331 -0
- package/skills/meritdata-platform-frontend/references/components.md +424 -283
- package/skills/meritdata-platform-frontend/references/utils.md +176 -0
- package/skills/meritdata-platform-impexp/SKILL.md +65 -30
- package/skills/meritdata-platform-impexp/agents/openai.yaml +33 -0
- package/skills/meritdata-platform-impexp/examples/excel-export/README.md +146 -0
- package/skills/meritdata-platform-impexp/examples/excel-import/README.md +246 -0
- package/skills/meritdata-platform-integration/SKILL.md +102 -0
- package/skills/meritdata-platform-integration/agents/openai.yaml +33 -0
- package/skills/meritdata-platform-integration/references/external-api/full/19_1.1-1.6/345/237/272/347/241/200/351/205/215/347/275/256-/345/271/263/345/217/260/344/277/241/346/201/257/347/261/273.md +371 -0
- package/skills/meritdata-platform-integration/references/external-api/full/20_1.7-1.10/345/237/272/347/241/200/351/205/215/347/275/256-/351/241/265/351/235/242/344/270/216/346/266/210/346/201/257/347/261/273.md +344 -0
- package/skills/meritdata-platform-integration/references/external-api/full/21_1.11-1.15/345/237/272/347/241/200/351/205/215/347/275/256-/346/266/210/346/201/257/344/270/216/351/205/215/347/275/256/347/261/273.md +302 -0
- package/skills/meritdata-platform-integration/references/external-api/full/22_1.16/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245.md +326 -0
- package/skills/meritdata-platform-integration/references/external-api/full/23_1.17/350/265/204/346/272/220/346/225/260/346/215/256/345/257/206/347/272/247-/344/270/212/345/215/212.md +303 -0
- package/skills/meritdata-platform-integration/references/external-api/full/24_1.17/350/265/204/346/272/220/346/225/260/346/215/256/345/257/206/347/272/247-/344/270/213/345/215/212.md +355 -0
- package/skills/meritdata-platform-integration/references/external-api/full/25_2.1/347/273/204/347/273/207/347/273/264/346/212/244-/344/270/212/345/215/212.md +459 -0
- package/skills/meritdata-platform-integration/references/external-api/full/26_2.1/347/273/204/347/273/207/347/273/264/346/212/244-/344/270/213/345/215/212.md +567 -0
- package/skills/meritdata-platform-integration/references/external-api/full/27_2.2/344/272/272/345/221/230/347/273/264/346/212/244-/344/270/212/345/215/212.md +838 -0
- package/skills/meritdata-platform-integration/references/external-api/full/28_2.2/344/272/272/345/221/230/347/273/264/346/212/244-/344/270/213/345/215/212.md +585 -0
- package/skills/meritdata-platform-integration/references/external-api/full/29_2.3/350/247/222/350/211/262/347/273/264/346/212/244-/344/270/212/345/215/212.md +576 -0
- package/skills/meritdata-platform-integration/references/external-api/full/30_2.3/350/247/222/350/211/262/347/273/264/346/212/244-/344/270/213/345/215/212.md +597 -0
- package/skills/meritdata-platform-integration/references/external-api/full/31_2.4/347/224/250/346/210/267/347/273/264/346/212/244-/344/270/212/345/215/212.md +490 -0
- package/skills/meritdata-platform-integration/references/external-api/full/32_2.4/347/224/250/346/210/267/347/273/264/346/212/244-/344/270/213/345/215/212.md +560 -0
- package/skills/meritdata-platform-integration/references/external-api/full/33_2.5/345/267/245/344/275/234/347/273/204/347/273/264/346/212/244.md +209 -0
- package/skills/meritdata-platform-integration/references/external-api/full/34_2.6/345/205/266/344/273/226/346/216/245/345/217/243-/344/270/212/345/215/212.md +653 -0
- package/skills/meritdata-platform-integration/references/external-api/full/35_2.6/345/205/266/344/273/226/346/216/245/345/217/243-/344/270/213/345/215/212.md +591 -0
- package/skills/meritdata-platform-integration/references/external-api/full/36_3.1-3.7/350/265/204/346/272/220/346/216/210/346/235/203/345/237/272/347/241/200.md +827 -0
- package/skills/meritdata-platform-integration/references/external-api/full/37_3.8-3.10/350/265/204/346/272/220/346/216/210/346/235/203/350/277/233/351/230/266.md +458 -0
- package/skills/meritdata-platform-integration/references/external-api/full/38_3.11/345/237/272/347/241/200/346/225/260/346/215/256.md +210 -0
- package/skills/meritdata-platform-integration/references/external-api/full/39_3.12/346/225/260/346/215/256/346/272/220/347/273/264/346/212/244.md +281 -0
- package/skills/meritdata-platform-integration/references/external-api/full/40_3.13/347/254/254/344/270/211/346/226/271/350/265/204/346/272/220/347/273/264/346/212/244.md +310 -0
- package/skills/meritdata-platform-integration/references/external-api/full/41_3.14/346/234/215/345/212/241/347/256/241/347/220/206.md +521 -0
- package/skills/meritdata-platform-integration/references/external-api/full/42_3.15/350/265/204/346/272/220/347/273/264/346/212/244-/344/270/212/345/215/212.md +767 -0
- package/skills/meritdata-platform-integration/references/external-api/full/43_3.15/350/265/204/346/272/220/347/273/264/346/212/244-/344/270/213/345/215/212.md +378 -0
- package/skills/meritdata-platform-integration/references/external-api/full/44_3.16/344/272/272/345/221/230/351/200/211/346/213/251/345/231/250-/344/270/212/345/215/212.md +311 -0
- package/skills/meritdata-platform-integration/references/external-api/full/45_3.16/344/272/272/345/221/230/351/200/211/346/213/251/345/231/250-/344/270/213/345/215/212.md +242 -0
- package/skills/meritdata-platform-integration/references/external-api/full/46_3.17/345/241/253/346/212/245/346/212/245/350/241/250+3.18/351/252/214/350/257/201/347/240/201.md +178 -0
- package/skills/meritdata-platform-integration/references/external-api/full/47_3.19/345/267/245/344/275/234/345/217/260/347/273/264/346/212/244.md +196 -0
- package/skills/meritdata-platform-integration/references/external-api/full/48_3.20/350/260/203/345/272/246/347/274/226/346/216/222.md +106 -0
- package/skills/meritdata-platform-integration/references/external-api/full/49_/351/231/204/345/275/225-4.1-4.3/350/277/224/345/233/236/347/240/201/344/270/216/347/211/210/346/234/254/346/270/205/345/215/225.md +43 -0
- package/skills/meritdata-platform-integration/references/external-api.md +260 -0
- package/skills/meritdata-platform-integration/references/notification-detail/11_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.6/346/234/215/345/212/241/351/200/232/347/237/245-CloudFeignMessageClient.md +467 -0
- package/skills/meritdata-platform-integration/references/org-user-sync.md +121 -0
- package/skills/meritdata-platform-integration/references/service-notification.md +168 -0
- package/skills/meritdata-platform-job/SKILL.md +76 -30
- package/skills/meritdata-platform-job/agents/openai.yaml +30 -0
- package/skills/meritdata-platform-job/references/iclient-detail/13_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.2/350/260/203/345/272/246/347/273/204/344/273/266ICloudClient.md +92 -0
- package/skills/meritdata-platform-job/references/ijobapi-detail/14_/345/233/233/344/270/232/345/212/241/347/273/204/344/273/266-4.3/345/256/232/346/227/266/344/273/273/345/212/241IJobApi.md +59 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-00_/346/200/273/350/247/210.md +49 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20201_/344/275/277/347/224/250/350/203/214/346/231/257.md +12 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20202_/346/233/264/346/226/260/350/256/260/345/275/225.md +14 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20203_/350/260/203/345/272/246/347/233/270/345/205/263/345/272/224/347/224/250/345/214/205.md +15 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20204_/351/205/215/347/275/256/351/241/271/347/233/270/345/205/263.md +23 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20205_/350/260/203/345/272/246/345/212/237/350/203/275/344/275/277/347/224/250.md +132 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20206_/350/260/203/345/272/246/344/273/273/345/212/241_API_/346/216/245/345/217/243.md +14 -0
- package/skills/meritdata-platform-job/references/scheduler-ref//346/224/273/347/225/245-10-/345/256/232/346/227/266/350/260/203/345/272/246-/347/253/240/350/212/20207_/345/257/271/345/244/226/350/260/203/345/272/246/344/273/273/345/212/241_API_/346/216/245/345/217/243.md +245 -0
- package/skills/meritdata-platform-job/references/scheduler.md +13 -0
- package/skills/meritdata-platform-job/references/xxl-job.md +30 -0
- package/skills/meritdata-platform-logging/SKILL.md +54 -0
- package/skills/meritdata-platform-logging/agents/openai.yaml +16 -0
- package/skills/meritdata-platform-logging/references/api-quick-ref.md +90 -0
- package/skills/meritdata-platform-logging/references/assets/06_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.1/346/227/245/345/277/227/346/234/215/345/212/241-ILogPostService.md +323 -0
- package/skills/meritdata-platform-logging/references/assets/07_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.1/346/227/245/345/277/227/346/263/250/350/247/243-LogDesc-LogOperation.md +210 -0
- package/skills/meritdata-platform-logging/references/logging.md +256 -0
- package/skills/meritdata-platform-menu-config/SKILL.md +218 -39
- package/skills/meritdata-platform-menu-config/agents/openai.yaml +22 -0
- package/skills/meritdata-platform-menu-config/references/README.md +10 -0
- package/skills/meritdata-platform-menu-config/references/environment.md +32 -0
- package/skills/meritdata-platform-menu-config/references/field-mapping.md +64 -0
- package/skills/meritdata-platform-menu-config/references/insert-menu-template.sql +89 -0
- package/skills/meritdata-platform-menu-config/references/troubleshooting.md +177 -0
- package/skills/meritdata-platform-messaging/SKILL.md +56 -0
- package/skills/meritdata-platform-messaging/agents/openai.yaml +15 -0
- package/skills/meritdata-platform-messaging/references/announcement-api.md +258 -0
- package/skills/meritdata-platform-messaging/references/feign-client.md +83 -0
- package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-00_/346/200/273/350/247/210.md +56 -0
- package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20201_/346/266/210/346/201/257/344/270/255/345/277/203/344/275/277/347/224/250/345/234/272/346/231/257.md +12 -0
- package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20202_/346/266/210/346/201/257/344/270/255/345/277/203/351/241/265/351/235/242/345/212/237/350/203/275/344/275/277/347/224/250.md +396 -0
- package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20203_/346/266/210/346/201/257/344/270/255/345/277/203/346/216/245/345/217/243/345/212/237/350/203/275/344/275/277/347/224/250.md +578 -0
- package/skills/meritdata-platform-messaging/references/msg-center//346/224/273/347/225/245-12-/346/266/210/346/201/257/344/270/255/345/277/203-/347/253/240/350/212/20204_/351/231/204/357/274/232/351/231/204/344/273/266/344/270/212/344/274/240/344/270/213/350/275/275/345/210/240/351/231/244/346/216/245/345/217/243.md +183 -0
- package/skills/meritdata-platform-nacos-importer/SKILL.md +120 -0
- package/skills/meritdata-platform-nacos-importer/agents/openai.yaml +22 -0
- package/skills/meritdata-platform-nacos-importer/references/README.md +9 -0
- package/skills/meritdata-platform-nacos-importer/scripts/import-nacos.ps1 +95 -0
- package/skills/meritdata-platform-nacos-importer/scripts/import-nacos.sh +100 -0
- package/skills/meritdata-platform-org-sync/SKILL.md +72 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-00_/346/200/273/350/247/210.md +99 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20201_/346/246/202/350/277/260.md +16 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20202_/347/273/204/347/273/207/345/220/214/346/255/245.md +318 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20203_/344/272/272/345/221/230/345/220/214/346/255/245.md +187 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20204_/350/265/204/346/272/220/350/217/234/345/215/225/345/220/214/346/255/245.md +124 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20205_/350/247/222/350/211/262/345/220/214/346/255/245.md +79 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20206_/350/265/204/346/272/220/346/235/203/351/231/220/345/220/214/346/255/245.md +116 -0
- package/skills/meritdata-platform-org-sync/references//346/224/273/347/225/245-09-/347/273/204/347/273/207/344/272/272/345/221/230/345/220/214/346/255/245-/347/253/240/350/212/20207_/347/273/204/347/273/207/345/220/214/346/255/245/351/205/215/347/275/256.md +173 -0
- package/skills/meritdata-platform-playbook/SKILL.md +172 -30
- package/skills/meritdata-platform-playbook/agents/openai.yaml +29 -0
- package/skills/meritdata-platform-playbook/examples/existing-increment/README.md +83 -0
- package/skills/meritdata-platform-playbook/examples/new-project/README.md +73 -0
- package/skills/meritdata-platform-playbook/references/code-spec.md +67 -0
- package/skills/meritdata-platform-playbook/references/full-workflow.md +299 -0
- package/skills/meritdata-platform-playbook/references/git-integration.md +111 -0
- package/skills/meritdata-platform-playbook/references/governance.md +97 -0
- package/skills/meritdata-platform-playbook/references/legacy-detect.md +154 -0
- package/skills/meritdata-platform-playbook/references/public-entry-map.json +135 -0
- package/skills/meritdata-platform-playbook/references/skill-decision-tree.md +125 -0
- package/skills/meritdata-platform-playbook/references/svn-integration.md +117 -0
- package/skills/meritdata-platform-portal-customization/SKILL.md +78 -0
- package/skills/meritdata-platform-portal-customization/references/cloud-utils-theme-generator.md +97 -0
- package/skills/meritdata-platform-portal-customization/references/home-frame-config-api.md +145 -0
- package/skills/meritdata-platform-portal-customization/references/portal-frontend-layouts.md +160 -0
- package/skills/meritdata-platform-portal-customization/references/portal-product-config.md +78 -0
- package/skills/meritdata-platform-portal-customization/references/theme-management.md +144 -0
- package/skills/meritdata-platform-portal-customization/references/workbench-entities.md +134 -0
- package/skills/meritdata-platform-resource-auth/SKILL.md +49 -0
- package/skills/meritdata-platform-resource-auth/agents/openai.yaml +14 -0
- package/skills/meritdata-platform-resource-auth/references/endpoints.md +171 -0
- package/skills/meritdata-platform-session/SKILL.md +41 -36
- package/skills/meritdata-platform-session/agents/openai.yaml +9 -0
- package/skills/meritdata-platform-session/references/api-quick-ref.md +52 -0
- package/skills/meritdata-platform-session/references/assets/08_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.3/344/274/232/350/257/235/344/277/241/346/201/257-SessionUtils.md +349 -0
- package/skills/meritdata-platform-session/references/assets/09_/344/270/211/345/271/263/345/217/260/346/234/215/345/212/241-3.3/345/234/250/347/272/277/347/224/250/346/210/267-IUserOnlineTime.md +63 -0
- package/skills/meritdata-platform-session/references/session.md +125 -0
- package/skills/meritdata-platform-sso/SKILL.md +49 -31
- package/skills/meritdata-platform-sso/agents/openai.yaml +19 -0
- package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-00_/346/200/273/350/247/210.md +47 -0
- package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20201_/347/263/273/347/273/237/350/256/244/350/257/201/351/233/206/346/210/220/344/273/213/347/273/215.md +14 -0
- package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20202_token_/350/256/244/350/257/201/351/233/206/346/210/220.md +568 -0
- package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20203_cas_/347/273/237/344/270/200/350/256/244/350/257/201/344/270/255/345/277/203.md +128 -0
- package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20204_/347/254/254/344/270/211/346/226/271/350/256/244/350/257/201/344/270/255/345/277/203.md +151 -0
- package/skills/meritdata-platform-sso/references/auth//346/224/273/347/225/245-06-/347/263/273/347/273/237/350/256/244/350/257/201-/347/253/240/350/212/20205_/351/231/204/345/275/225_1_/350/256/244/350/257/201/344/270/255/345/277/203/347/253/257/351/205/215/347/275/256.md +93 -0
- package/skills/meritdata-platform-sso/references/cas-token-flow.md +52 -0
- package/skills/meritdata-platform-sso/references/iportal-sso-api.md +66 -0
- package/skills/meritdata-platform-sso/references/spring-session-pitfalls.md +71 -0
- package/skills/meritdata-platform-ui-components/SKILL.md +64 -36
- package/skills/meritdata-platform-ui-components/agents/openai.yaml +33 -0
- package/skills/meritdata-platform-ui-components/references/catalog/15_/344/272/224/345/211/215/347/253/257/350/265/204/344/272/247-5.1UI/347/273/204/344/273/266/345/272/223-/344/270/212/345/215/212.md +514 -0
- package/skills/meritdata-platform-ui-components/references/catalog/16_/344/272/224/345/211/215/347/253/257/350/265/204/344/272/247-5.1UI/347/273/204/344/273/266/345/272/223-/344/270/213/345/215/212.md +302 -0
- package/skills/meritdata-platform-ui-components/references/components-api.md +166 -0
- package/skills/meritdata-platform-ui-components/references/utils-and-meritbpm.md +98 -0
- package/skills/prototype/LOGIC.md +79 -0
- package/skills/prototype/SKILL.md +26 -0
- package/skills/prototype/UI.md +112 -0
- package/skills/prototype/agents/openai.yaml +3 -0
- package/skills/receiving-code-review/SKILL.md +205 -0
- package/skills/requesting-code-review/SKILL.md +95 -0
- package/skills/requesting-code-review/code-reviewer.md +172 -0
- package/skills/requirement-low-level-check/SKILL.md +84 -0
- package/skills/requirement-low-level-check/references//344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/212/245/345/221/212/346/250/241/346/235/277.md +139 -0
- package/skills/requirement-low-level-check/references//344/275/216/347/272/247/351/227/256/351/242/230/346/243/200/346/237/245/346/270/205/345/215/225.md +210 -0
- package/skills/requirement-pm-review/SKILL.md +181 -0
- package/skills/requirement-pm-review/references/PM/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +223 -0
- package/skills/requirement-review/SKILL.md +212 -0
- package/skills/requirement-review/references//351/234/200/346/261/202/350/257/204/345/256/241/346/243/200/346/237/245/345/215/225.md +99 -0
- package/skills/requirement-review-report/SKILL.md +152 -0
- package/skills/requirement-review-report/references//351/234/200/346/261/202/350/257/204/345/256/241/346/212/245/345/221/212/346/250/241/346/235/277.md +187 -0
- package/skills/research/SKILL.md +12 -0
- package/skills/research/agents/openai.yaml +3 -0
- package/skills/resolving-merge-conflicts/SKILL.md +14 -0
- package/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/skills/rest-api-design/SKILL.md +90 -0
- package/skills/rest-api-design/references/complete-example-expressjs.md +114 -0
- package/skills/rest-api-design/references/http-status-codes.md +65 -0
- package/skills/rest-api-design/references/openapi-documentation.md +92 -0
- package/skills/rest-api-design/references/query-parameters.md +23 -0
- package/skills/rest-api-design/references/request-examples.md +50 -0
- package/skills/rest-api-design/references/resource-naming.md +35 -0
- package/skills/rest-api-design/references/response-formats.md +70 -0
- package/skills/rest-api-design/scripts/validate-api.sh +18 -0
- package/skills/rest-api-design/templates/api-scaffold.yaml +22 -0
- package/skills/security-review/SKILL.md +527 -0
- package/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/skills/setup-matt-pocock-skills/SKILL.md +116 -0
- package/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/skills/setup-matt-pocock-skills/domain.md +51 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
- package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/skills/setup-pre-commit/SKILL.md +91 -0
- package/skills/setup-pre-commit/agents/openai.yaml +3 -0
- package/skills/speckit-analyze/SKILL.md +260 -0
- package/skills/speckit-checklist/SKILL.md +372 -0
- package/skills/speckit-clarify/SKILL.md +254 -0
- package/skills/speckit-constitution/SKILL.md +157 -0
- package/skills/speckit-git-commit/SKILL.md +53 -0
- package/skills/speckit-git-feature/SKILL.md +72 -0
- package/skills/speckit-git-initialize/SKILL.md +54 -0
- package/skills/speckit-git-remote/SKILL.md +50 -0
- package/skills/speckit-git-validate/SKILL.md +54 -0
- package/skills/speckit-implement/SKILL.md +209 -0
- package/skills/speckit-plan/SKILL.md +152 -0
- package/skills/speckit-specify/SKILL.md +330 -0
- package/skills/speckit-tasks/SKILL.md +202 -0
- package/skills/speckit-taskstoissues/SKILL.md +106 -0
- package/skills/springboot-patterns/SKILL.md +313 -0
- package/skills/springboot-security/SKILL.md +272 -0
- package/skills/springboot-tdd/SKILL.md +158 -0
- package/skills/subagent-driven-development/SKILL.md +503 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +142 -0
- package/skills/subagent-driven-development/re-review-prompt.md +106 -0
- package/skills/subagent-driven-development/scripts/review-package +46 -0
- package/skills/subagent-driven-development/scripts/sdd-workspace +40 -0
- package/skills/subagent-driven-development/scripts/task-brief +41 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/subagent-driven-development/task-reviewer-prompt.md +185 -0
- package/skills/system-design/SKILL.md +42 -0
- package/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/systematic-debugging/SKILL.md +283 -0
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/systematic-debugging/find-polluter.sh +72 -0
- package/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/systematic-debugging/test-academic.md +14 -0
- package/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/tdd/SKILL.md +36 -0
- package/skills/tdd/agents/openai.yaml +3 -0
- package/skills/tdd/mocking.md +59 -0
- package/skills/tdd/tests.md +77 -0
- package/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/skills/teach/MISSION-FORMAT.md +31 -0
- package/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/skills/teach/SKILL.md +140 -0
- package/skills/teach/agents/openai.yaml +5 -0
- package/skills/tech-design-doc/SKILL.md +160 -0
- package/skills/tech-design-doc/description_ar.txt +1 -0
- package/skills/tech-design-doc/description_cn.txt +1 -0
- package/skills/tech-design-doc/description_de.txt +1 -0
- package/skills/tech-design-doc/description_en.txt +1 -0
- package/skills/tech-design-doc/description_es.txt +1 -0
- package/skills/tech-design-doc/description_fr.txt +1 -0
- package/skills/tech-design-doc/description_it.txt +1 -0
- package/skills/tech-design-doc/description_ja.txt +1 -0
- package/skills/tech-design-doc/description_ko.txt +1 -0
- package/skills/tech-design-doc/description_ru.txt +1 -0
- package/skills/tech-design-doc/description_tw.txt +1 -0
- package/skills/tech-design-doc/stats.json +4 -0
- package/skills/test-driven-development/SKILL.md +320 -0
- package/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/test-driven-development/writing-good-tests.md +198 -0
- package/skills/test-fixing/SKILL.md +121 -0
- package/skills/test-master/SKILL.md +94 -0
- package/skills/test-master/references/automation-frameworks.md +294 -0
- package/skills/test-master/references/e2e-testing.md +128 -0
- package/skills/test-master/references/integration-testing.md +120 -0
- package/skills/test-master/references/performance-testing.md +118 -0
- package/skills/test-master/references/qa-methodology.md +247 -0
- package/skills/test-master/references/security-testing.md +127 -0
- package/skills/test-master/references/tdd-iron-laws.md +174 -0
- package/skills/test-master/references/test-reports.md +104 -0
- package/skills/test-master/references/testing-anti-patterns.md +231 -0
- package/skills/test-master/references/unit-testing.md +113 -0
- package/skills/to-spec/SKILL.md +75 -0
- package/skills/to-spec/agents/openai.yaml +5 -0
- package/skills/to-tickets/SKILL.md +105 -0
- package/skills/to-tickets/agents/openai.yaml +5 -0
- package/skills/triage/AGENT-BRIEF.md +207 -0
- package/skills/triage/OUT-OF-SCOPE.md +105 -0
- package/skills/triage/SKILL.md +112 -0
- package/skills/triage/agents/openai.yaml +5 -0
- package/skills/ui-ux-pro-max/SKILL.md +43 -0
- package/skills/ui-ux-pro-max/_meta.json +6 -0
- package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
- package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
- package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
- package/skills/ui-ux-pro-max/scripts/search.py +111 -0
- package/skills/using-git-worktrees/SKILL.md +167 -0
- package/skills/using-superpowers/SKILL.md +62 -0
- package/skills/using-superpowers/references/antigravity-tools.md +23 -0
- package/skills/using-superpowers/references/codex-tools.md +39 -0
- package/skills/using-superpowers/references/gemini-tools.md +63 -0
- package/skills/using-superpowers/references/pi-tools.md +16 -0
- package/skills/verification-before-completion/SKILL.md +120 -0
- package/skills/wait-what/SKILL.md +7 -0
- package/skills/wait-what/agents/openai.yaml +5 -0
- package/skills/wayfinder/SKILL.md +128 -0
- package/skills/wayfinder/agents/openai.yaml +5 -0
- package/skills/write-design-document-by-template/SKILL.md +97 -0
- package/skills/write-design-document-by-template/references//350/256/276/350/256/241/350/257/264/346/230/216/344/271/246/346/250/241/346/235/277.md +235 -0
- package/skills/write-requirement-document-by-template/SKILL.md +98 -0
- package/skills/write-requirement-document-by-template/references//351/234/200/346/261/202/350/257/264/346/230/216/344/271/246/346/250/241/346/235/277.md +150 -0
- package/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/skills/writing-great-skills/SKILL.md +83 -0
- package/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/skills/writing-plans/SKILL.md +168 -0
- package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/skills/writing-skills/SKILL.md +679 -0
- package/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/writing-skills/persuasion-principles.md +187 -0
- package/skills/writing-skills/render-graphs.js +168 -0
- package/skills/writing-skills/testing-skills-with-subagents.md +384 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Rule Catalog — Architecture
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
- Covers: controller/service/core-domain/libs/model layering, dependency direction, responsibility placement, observability-friendly flow.
|
|
5
|
+
|
|
6
|
+
## Rules
|
|
7
|
+
|
|
8
|
+
### Keep business logic out of controllers
|
|
9
|
+
- Category: maintainability
|
|
10
|
+
- Severity: critical
|
|
11
|
+
- Description: Controllers should parse input, call services, and return serialized responses. Business decisions inside controllers make behavior hard to reuse and test.
|
|
12
|
+
- Suggested fix: Move domain/business logic into the service or core/domain layer. Keep controller handlers thin and orchestration-focused.
|
|
13
|
+
- Example:
|
|
14
|
+
- Bad:
|
|
15
|
+
```python
|
|
16
|
+
@bp.post("/apps/<app_id>/publish")
|
|
17
|
+
def publish_app(app_id: str):
|
|
18
|
+
payload = request.get_json() or {}
|
|
19
|
+
if payload.get("force") and current_user.role != "admin":
|
|
20
|
+
raise ValueError("only admin can force publish")
|
|
21
|
+
app = App.query.get(app_id)
|
|
22
|
+
app.status = "published"
|
|
23
|
+
db.session.commit()
|
|
24
|
+
return {"result": "ok"}
|
|
25
|
+
```
|
|
26
|
+
- Good:
|
|
27
|
+
```python
|
|
28
|
+
@bp.post("/apps/<app_id>/publish")
|
|
29
|
+
def publish_app(app_id: str):
|
|
30
|
+
payload = PublishRequest.model_validate(request.get_json() or {})
|
|
31
|
+
app_service.publish_app(app_id=app_id, force=payload.force, actor_id=current_user.id)
|
|
32
|
+
return {"result": "ok"}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Preserve layer dependency direction
|
|
36
|
+
- Category: best practices
|
|
37
|
+
- Severity: critical
|
|
38
|
+
- Description: Controllers may depend on services, and services may depend on core/domain abstractions. Reversing this direction (for example, core importing controller/web modules) creates cycles and leaks transport concerns into domain code.
|
|
39
|
+
- Suggested fix: Extract shared contracts into core/domain or service-level modules and make upper layers depend on lower, not the reverse.
|
|
40
|
+
- Example:
|
|
41
|
+
- Bad:
|
|
42
|
+
```python
|
|
43
|
+
# core/policy/publish_policy.py
|
|
44
|
+
from controllers.console.app import request_context
|
|
45
|
+
|
|
46
|
+
def can_publish() -> bool:
|
|
47
|
+
return request_context.current_user.is_admin
|
|
48
|
+
```
|
|
49
|
+
- Good:
|
|
50
|
+
```python
|
|
51
|
+
# core/policy/publish_policy.py
|
|
52
|
+
def can_publish(role: str) -> bool:
|
|
53
|
+
return role == "admin"
|
|
54
|
+
|
|
55
|
+
# service layer adapts web/user context to domain input
|
|
56
|
+
allowed = can_publish(role=current_user.role)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Keep libs business-agnostic
|
|
60
|
+
- Category: maintainability
|
|
61
|
+
- Severity: critical
|
|
62
|
+
- Description: Modules under `api/libs/` should remain reusable, business-agnostic building blocks. They must not encode product/domain-specific rules, workflow orchestration, or business decisions.
|
|
63
|
+
- Suggested fix:
|
|
64
|
+
- If business logic appears in `api/libs/`, extract it into the appropriate `services/` or `core/` module and keep `libs` focused on generic, cross-cutting helpers.
|
|
65
|
+
- Keep `libs` dependencies clean: avoid importing service/controller/domain-specific modules into `api/libs/`.
|
|
66
|
+
- Example:
|
|
67
|
+
- Bad:
|
|
68
|
+
```python
|
|
69
|
+
# api/libs/conversation_filter.py
|
|
70
|
+
from services.conversation_service import ConversationService
|
|
71
|
+
|
|
72
|
+
def should_archive_conversation(conversation, tenant_id: str) -> bool:
|
|
73
|
+
# Domain policy and service dependency are leaking into libs.
|
|
74
|
+
service = ConversationService()
|
|
75
|
+
if service.has_paid_plan(tenant_id):
|
|
76
|
+
return conversation.idle_days > 90
|
|
77
|
+
return conversation.idle_days > 30
|
|
78
|
+
```
|
|
79
|
+
- Good:
|
|
80
|
+
```python
|
|
81
|
+
# api/libs/datetime_utils.py (business-agnostic helper)
|
|
82
|
+
def older_than_days(idle_days: int, threshold_days: int) -> bool:
|
|
83
|
+
return idle_days > threshold_days
|
|
84
|
+
|
|
85
|
+
# services/conversation_service.py (business logic stays in service/core)
|
|
86
|
+
from libs.datetime_utils import older_than_days
|
|
87
|
+
|
|
88
|
+
def should_archive_conversation(conversation, tenant_id: str) -> bool:
|
|
89
|
+
threshold_days = 90 if has_paid_plan(tenant_id) else 30
|
|
90
|
+
return older_than_days(conversation.idle_days, threshold_days)
|
|
91
|
+
```
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Rule Catalog — DB Schema Design
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
- Covers: model/base inheritance, schema boundaries in model properties, tenant-aware schema design, index redundancy checks, dialect portability in models, and cross-database compatibility in migrations.
|
|
5
|
+
- Does NOT cover: session lifecycle, transaction boundaries, and query execution patterns (handled by `sqlalchemy-rule.md`).
|
|
6
|
+
|
|
7
|
+
## Rules
|
|
8
|
+
|
|
9
|
+
### Do not query other tables inside `@property`
|
|
10
|
+
- Category: [maintainability, performance]
|
|
11
|
+
- Severity: critical
|
|
12
|
+
- Description: A model `@property` must not open sessions or query other tables. This hides dependencies across models, tightly couples schema objects to data access, and can cause N+1 query explosions when iterating collections.
|
|
13
|
+
- Suggested fix:
|
|
14
|
+
- Keep model properties pure and local to already-loaded fields.
|
|
15
|
+
- Move cross-table data fetching to service/repository methods.
|
|
16
|
+
- For list/batch reads, fetch required related data explicitly (join/preload/bulk query) before rendering derived values.
|
|
17
|
+
- Example:
|
|
18
|
+
- Bad:
|
|
19
|
+
```python
|
|
20
|
+
class Conversation(TypeBase):
|
|
21
|
+
__tablename__ = "conversations"
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def app_name(self) -> str:
|
|
25
|
+
with Session(db.engine, expire_on_commit=False) as session:
|
|
26
|
+
app = session.execute(select(App).where(App.id == self.app_id)).scalar_one()
|
|
27
|
+
return app.name
|
|
28
|
+
```
|
|
29
|
+
- Good:
|
|
30
|
+
```python
|
|
31
|
+
class Conversation(TypeBase):
|
|
32
|
+
__tablename__ = "conversations"
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def display_title(self) -> str:
|
|
36
|
+
return self.name or "Untitled"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# Service/repository layer performs explicit batch fetch for related App rows.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Prefer including `tenant_id` in model definitions
|
|
43
|
+
- Category: maintainability
|
|
44
|
+
- Severity: suggestion
|
|
45
|
+
- Description: In multi-tenant domains, include `tenant_id` in schema definitions whenever the entity belongs to tenant-owned data. This improves data isolation safety and keeps future partitioning/sharding strategies practical as data volume grows.
|
|
46
|
+
- Suggested fix:
|
|
47
|
+
- Add a `tenant_id` column and ensure related unique/index constraints include tenant dimension when applicable.
|
|
48
|
+
- Propagate `tenant_id` through service/repository contracts to keep access paths tenant-aware.
|
|
49
|
+
- Exception: if a table is explicitly designed as non-tenant-scoped global metadata, document that design decision clearly.
|
|
50
|
+
- Example:
|
|
51
|
+
- Bad:
|
|
52
|
+
```python
|
|
53
|
+
from sqlalchemy.orm import Mapped
|
|
54
|
+
|
|
55
|
+
class Dataset(TypeBase):
|
|
56
|
+
__tablename__ = "datasets"
|
|
57
|
+
id: Mapped[str] = mapped_column(StringUUID, primary_key=True)
|
|
58
|
+
name: Mapped[str] = mapped_column(sa.String(255), nullable=False)
|
|
59
|
+
```
|
|
60
|
+
- Good:
|
|
61
|
+
```python
|
|
62
|
+
from sqlalchemy.orm import Mapped
|
|
63
|
+
|
|
64
|
+
class Dataset(TypeBase):
|
|
65
|
+
__tablename__ = "datasets"
|
|
66
|
+
id: Mapped[str] = mapped_column(StringUUID, primary_key=True)
|
|
67
|
+
tenant_id: Mapped[str] = mapped_column(StringUUID, nullable=False, index=True)
|
|
68
|
+
name: Mapped[str] = mapped_column(sa.String(255), nullable=False)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Detect and avoid duplicate/redundant indexes
|
|
72
|
+
- Category: performance
|
|
73
|
+
- Severity: suggestion
|
|
74
|
+
- Description: Review index definitions for leftmost-prefix redundancy. For example, index `(a, b, c)` can safely cover most lookups for `(a, b)`. Keeping both may increase write overhead and can mislead the optimizer into suboptimal execution plans.
|
|
75
|
+
- Suggested fix:
|
|
76
|
+
- Before adding an index, compare against existing composite indexes by leftmost-prefix rules.
|
|
77
|
+
- Drop or avoid creating redundant prefixes unless there is a proven query-pattern need.
|
|
78
|
+
- Apply the same review standard in both model `__table_args__` and migration index DDL.
|
|
79
|
+
- Example:
|
|
80
|
+
- Bad:
|
|
81
|
+
```python
|
|
82
|
+
__table_args__ = (
|
|
83
|
+
sa.Index("idx_msg_tenant_app", "tenant_id", "app_id"),
|
|
84
|
+
sa.Index("idx_msg_tenant_app_created", "tenant_id", "app_id", "created_at"),
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
- Good:
|
|
88
|
+
```python
|
|
89
|
+
__table_args__ = (
|
|
90
|
+
# Keep the wider index unless profiling proves a dedicated short index is needed.
|
|
91
|
+
sa.Index("idx_msg_tenant_app_created", "tenant_id", "app_id", "created_at"),
|
|
92
|
+
)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Avoid PostgreSQL-only dialect usage in models; wrap in `models.types`
|
|
96
|
+
- Category: maintainability
|
|
97
|
+
- Severity: critical
|
|
98
|
+
- Description: Model/schema definitions should avoid PostgreSQL-only constructs directly in business models. When database-specific behavior is required, encapsulate it in `api/models/types.py` using both PostgreSQL and MySQL dialect implementations, then consume that abstraction from model code.
|
|
99
|
+
- Suggested fix:
|
|
100
|
+
- Do not directly place dialect-only types/operators in model columns when a portable wrapper can be used.
|
|
101
|
+
- Add or extend wrappers in `models.types` (for example, `AdjustedJSON`, `LongText`, `BinaryData`) to normalize behavior across PostgreSQL and MySQL.
|
|
102
|
+
- Example:
|
|
103
|
+
- Bad:
|
|
104
|
+
```python
|
|
105
|
+
from sqlalchemy.dialects.postgresql import JSONB
|
|
106
|
+
from sqlalchemy.orm import Mapped
|
|
107
|
+
|
|
108
|
+
class ToolConfig(TypeBase):
|
|
109
|
+
__tablename__ = "tool_configs"
|
|
110
|
+
config: Mapped[dict] = mapped_column(JSONB, nullable=False)
|
|
111
|
+
```
|
|
112
|
+
- Good:
|
|
113
|
+
```python
|
|
114
|
+
from sqlalchemy.orm import Mapped
|
|
115
|
+
|
|
116
|
+
from models.types import AdjustedJSON
|
|
117
|
+
|
|
118
|
+
class ToolConfig(TypeBase):
|
|
119
|
+
__tablename__ = "tool_configs"
|
|
120
|
+
config: Mapped[dict] = mapped_column(AdjustedJSON(), nullable=False)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Guard migration incompatibilities with dialect checks and shared types
|
|
124
|
+
- Category: maintainability
|
|
125
|
+
- Severity: critical
|
|
126
|
+
- Description: Migration scripts under `api/migrations/versions/` must account for PostgreSQL/MySQL incompatibilities explicitly. For dialect-sensitive DDL or defaults, branch on the active dialect (for example, `conn.dialect.name == "postgresql"`), and prefer reusable compatibility abstractions from `models.types` where applicable.
|
|
127
|
+
- Suggested fix:
|
|
128
|
+
- In migration upgrades/downgrades, bind connection and branch by dialect for incompatible SQL fragments.
|
|
129
|
+
- Reuse `models.types` wrappers in column definitions when that keeps behavior aligned with runtime models.
|
|
130
|
+
- Avoid one-dialect-only migration logic unless there is a documented, deliberate compatibility exception.
|
|
131
|
+
- Example:
|
|
132
|
+
- Bad:
|
|
133
|
+
```python
|
|
134
|
+
with op.batch_alter_table("dataset_keyword_tables") as batch_op:
|
|
135
|
+
batch_op.add_column(
|
|
136
|
+
sa.Column(
|
|
137
|
+
"data_source_type",
|
|
138
|
+
sa.String(255),
|
|
139
|
+
server_default=sa.text("'database'::character varying"),
|
|
140
|
+
nullable=False,
|
|
141
|
+
)
|
|
142
|
+
)
|
|
143
|
+
```
|
|
144
|
+
- Good:
|
|
145
|
+
```python
|
|
146
|
+
def _is_pg(conn) -> bool:
|
|
147
|
+
return conn.dialect.name == "postgresql"
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
conn = op.get_bind()
|
|
151
|
+
default_expr = sa.text("'database'::character varying") if _is_pg(conn) else sa.text("'database'")
|
|
152
|
+
|
|
153
|
+
with op.batch_alter_table("dataset_keyword_tables") as batch_op:
|
|
154
|
+
batch_op.add_column(
|
|
155
|
+
sa.Column("data_source_type", sa.String(255), server_default=default_expr, nullable=False)
|
|
156
|
+
)
|
|
157
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Rule Catalog - Repositories Abstraction
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
- Covers: when to reuse existing repository abstractions, when to introduce new repositories, and how to preserve dependency direction between service/core and infrastructure implementations.
|
|
5
|
+
- Does NOT cover: SQLAlchemy session lifecycle and query-shape specifics (handled by `sqlalchemy-rule.md`), and table schema/migration design (handled by `db-schema-rule.md`).
|
|
6
|
+
|
|
7
|
+
## Rules
|
|
8
|
+
|
|
9
|
+
### Introduce repositories abstraction
|
|
10
|
+
- Category: maintainability
|
|
11
|
+
- Severity: suggestion
|
|
12
|
+
- Description: If a table/model already has a repository abstraction, all reads/writes/queries for that table should use the existing repository. If no repository exists, introduce one only when complexity justifies it, such as large/high-volume tables, repeated complex query logic, or likely storage-strategy variation.
|
|
13
|
+
- Suggested fix:
|
|
14
|
+
- First check `api/repositories`, `api/core/repositories`, and `api/extensions/*/repositories/` to verify whether the table/model already has a repository abstraction. If it exists, route all operations through it and add missing repository methods instead of bypassing it with ad-hoc SQLAlchemy access.
|
|
15
|
+
- If no repository exists, add one only when complexity warrants it (for example, repeated complex queries, large data domains, or multiple storage strategies), while preserving dependency direction (service/core depends on abstraction; infra provides implementation).
|
|
16
|
+
- Example:
|
|
17
|
+
- Bad:
|
|
18
|
+
```python
|
|
19
|
+
# Existing repository is ignored and service uses ad-hoc table queries.
|
|
20
|
+
class AppService:
|
|
21
|
+
def archive_app(self, app_id: str, tenant_id: str) -> None:
|
|
22
|
+
app = self.session.execute(
|
|
23
|
+
select(App).where(App.id == app_id, App.tenant_id == tenant_id)
|
|
24
|
+
).scalar_one()
|
|
25
|
+
app.archived = True
|
|
26
|
+
self.session.commit()
|
|
27
|
+
```
|
|
28
|
+
- Good:
|
|
29
|
+
```python
|
|
30
|
+
# Case A: Existing repository must be reused for all table operations.
|
|
31
|
+
class AppService:
|
|
32
|
+
def archive_app(self, app_id: str, tenant_id: str) -> None:
|
|
33
|
+
app = self.app_repo.get_by_id(app_id=app_id, tenant_id=tenant_id)
|
|
34
|
+
app.archived = True
|
|
35
|
+
self.app_repo.save(app)
|
|
36
|
+
|
|
37
|
+
# If the query is missing, extend the existing abstraction.
|
|
38
|
+
active_apps = self.app_repo.list_active_for_tenant(tenant_id=tenant_id)
|
|
39
|
+
```
|
|
40
|
+
- Bad:
|
|
41
|
+
```python
|
|
42
|
+
# No repository exists, but large-domain query logic is scattered in service code.
|
|
43
|
+
class ConversationService:
|
|
44
|
+
def list_recent_for_app(self, app_id: str, tenant_id: str, limit: int) -> list[Conversation]:
|
|
45
|
+
...
|
|
46
|
+
# many filters/joins/pagination variants duplicated across services
|
|
47
|
+
```
|
|
48
|
+
- Good:
|
|
49
|
+
```python
|
|
50
|
+
# Case B: Introduce repository for large/complex domains or storage variation.
|
|
51
|
+
class ConversationRepository(Protocol):
|
|
52
|
+
def list_recent_for_app(self, app_id: str, tenant_id: str, limit: int) -> list[Conversation]: ...
|
|
53
|
+
|
|
54
|
+
class SqlAlchemyConversationRepository:
|
|
55
|
+
def list_recent_for_app(self, app_id: str, tenant_id: str, limit: int) -> list[Conversation]:
|
|
56
|
+
...
|
|
57
|
+
|
|
58
|
+
class ConversationService:
|
|
59
|
+
def __init__(self, conversation_repo: ConversationRepository):
|
|
60
|
+
self.conversation_repo = conversation_repo
|
|
61
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Rule Catalog — SQLAlchemy Patterns
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
- Covers: SQLAlchemy session and transaction lifecycle, query construction, tenant scoping, raw SQL boundaries, and write-path concurrency safeguards.
|
|
5
|
+
- Does NOT cover: table/model schema and migration design details (handled by `db-schema-rule.md`).
|
|
6
|
+
|
|
7
|
+
## Rules
|
|
8
|
+
|
|
9
|
+
### Use Session context manager with explicit transaction control behavior
|
|
10
|
+
- Category: best practices
|
|
11
|
+
- Severity: critical
|
|
12
|
+
- Description: Session and transaction lifecycle must be explicit and bounded on write paths. Missing commits can silently drop intended updates, while ad-hoc or long-lived transactions increase contention, lock duration, and deadlock risk.
|
|
13
|
+
- Suggested fix:
|
|
14
|
+
- Use **explicit `session.commit()`** after completing a related write unit.
|
|
15
|
+
- Or use **`session.begin()` context manager** for automatic commit/rollback on a scoped block.
|
|
16
|
+
- Keep transaction windows short: avoid network I/O, heavy computation, or unrelated work inside the transaction.
|
|
17
|
+
- Example:
|
|
18
|
+
- Bad:
|
|
19
|
+
```python
|
|
20
|
+
# Missing commit: write may never be persisted.
|
|
21
|
+
with Session(db.engine, expire_on_commit=False) as session:
|
|
22
|
+
run = session.get(WorkflowRun, run_id)
|
|
23
|
+
run.status = "cancelled"
|
|
24
|
+
|
|
25
|
+
# Long transaction: external I/O inside a DB transaction.
|
|
26
|
+
with Session(db.engine, expire_on_commit=False) as session, session.begin():
|
|
27
|
+
run = session.get(WorkflowRun, run_id)
|
|
28
|
+
run.status = "cancelled"
|
|
29
|
+
call_external_api()
|
|
30
|
+
```
|
|
31
|
+
- Good:
|
|
32
|
+
```python
|
|
33
|
+
# Option 1: explicit commit.
|
|
34
|
+
with Session(db.engine, expire_on_commit=False) as session:
|
|
35
|
+
run = session.get(WorkflowRun, run_id)
|
|
36
|
+
run.status = "cancelled"
|
|
37
|
+
session.commit()
|
|
38
|
+
|
|
39
|
+
# Option 2: scoped transaction with automatic commit/rollback.
|
|
40
|
+
with Session(db.engine, expire_on_commit=False) as session, session.begin():
|
|
41
|
+
run = session.get(WorkflowRun, run_id)
|
|
42
|
+
run.status = "cancelled"
|
|
43
|
+
|
|
44
|
+
# Keep non-DB work outside transaction scope.
|
|
45
|
+
call_external_api()
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Enforce tenant_id scoping on shared-resource queries
|
|
49
|
+
- Category: security
|
|
50
|
+
- Severity: critical
|
|
51
|
+
- Description: Reads and writes against shared tables must be scoped by `tenant_id` to prevent cross-tenant data leakage or corruption.
|
|
52
|
+
- Suggested fix: Add `tenant_id` predicate to all tenant-owned entity queries and propagate tenant context through service/repository interfaces.
|
|
53
|
+
- Example:
|
|
54
|
+
- Bad:
|
|
55
|
+
```python
|
|
56
|
+
stmt = select(Workflow).where(Workflow.id == workflow_id)
|
|
57
|
+
workflow = session.execute(stmt).scalar_one_or_none()
|
|
58
|
+
```
|
|
59
|
+
- Good:
|
|
60
|
+
```python
|
|
61
|
+
stmt = select(Workflow).where(
|
|
62
|
+
Workflow.id == workflow_id,
|
|
63
|
+
Workflow.tenant_id == tenant_id,
|
|
64
|
+
)
|
|
65
|
+
workflow = session.execute(stmt).scalar_one_or_none()
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Prefer SQLAlchemy expressions over raw SQL by default
|
|
69
|
+
- Category: maintainability
|
|
70
|
+
- Severity: suggestion
|
|
71
|
+
- Description: Raw SQL should be exceptional. ORM/Core expressions are easier to evolve, safer to compose, and more consistent with the codebase.
|
|
72
|
+
- Suggested fix: Rewrite straightforward raw SQL into SQLAlchemy `select/update/delete` expressions; keep raw SQL only when required by clear technical constraints.
|
|
73
|
+
- Example:
|
|
74
|
+
- Bad:
|
|
75
|
+
```python
|
|
76
|
+
row = session.execute(
|
|
77
|
+
text("SELECT * FROM workflows WHERE id = :id AND tenant_id = :tenant_id"),
|
|
78
|
+
{"id": workflow_id, "tenant_id": tenant_id},
|
|
79
|
+
).first()
|
|
80
|
+
```
|
|
81
|
+
- Good:
|
|
82
|
+
```python
|
|
83
|
+
stmt = select(Workflow).where(
|
|
84
|
+
Workflow.id == workflow_id,
|
|
85
|
+
Workflow.tenant_id == tenant_id,
|
|
86
|
+
)
|
|
87
|
+
row = session.execute(stmt).scalar_one_or_none()
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Protect write paths with concurrency safeguards
|
|
91
|
+
- Category: quality
|
|
92
|
+
- Severity: critical
|
|
93
|
+
- Description: Multi-writer paths without explicit concurrency control can silently overwrite data. Choose the safeguard based on contention level, lock scope, and throughput cost instead of defaulting to one strategy.
|
|
94
|
+
- Suggested fix:
|
|
95
|
+
- **Optimistic locking**: Use when contention is usually low and retries are acceptable. Add a version (or updated_at) guard in `WHERE` and treat `rowcount == 0` as a conflict.
|
|
96
|
+
- **Redis distributed lock**: Use when the critical section spans multiple steps/processes (or includes non-DB side effects) and you need cross-worker mutual exclusion.
|
|
97
|
+
- **SELECT ... FOR UPDATE**: Use when contention is high on the same rows and strict in-transaction serialization is required. Keep transactions short to reduce lock wait/deadlock risk.
|
|
98
|
+
- In all cases, scope by `tenant_id` and verify affected row counts for conditional writes.
|
|
99
|
+
- Example:
|
|
100
|
+
- Bad:
|
|
101
|
+
```python
|
|
102
|
+
# No tenant scope, no conflict detection, and no lock on a contested write path.
|
|
103
|
+
session.execute(update(WorkflowRun).where(WorkflowRun.id == run_id).values(status="cancelled"))
|
|
104
|
+
session.commit() # silently overwrites concurrent updates
|
|
105
|
+
```
|
|
106
|
+
- Good:
|
|
107
|
+
```python
|
|
108
|
+
# 1) Optimistic lock (low contention, retry on conflict)
|
|
109
|
+
result = session.execute(
|
|
110
|
+
update(WorkflowRun)
|
|
111
|
+
.where(
|
|
112
|
+
WorkflowRun.id == run_id,
|
|
113
|
+
WorkflowRun.tenant_id == tenant_id,
|
|
114
|
+
WorkflowRun.version == expected_version,
|
|
115
|
+
)
|
|
116
|
+
.values(status="cancelled", version=WorkflowRun.version + 1)
|
|
117
|
+
)
|
|
118
|
+
if result.rowcount == 0:
|
|
119
|
+
raise WorkflowStateConflictError("stale version, retry")
|
|
120
|
+
|
|
121
|
+
# 2) Redis distributed lock (cross-worker critical section)
|
|
122
|
+
lock_name = f"workflow_run_lock:{tenant_id}:{run_id}"
|
|
123
|
+
with redis_client.lock(lock_name, timeout=20):
|
|
124
|
+
session.execute(
|
|
125
|
+
update(WorkflowRun)
|
|
126
|
+
.where(WorkflowRun.id == run_id, WorkflowRun.tenant_id == tenant_id)
|
|
127
|
+
.values(status="cancelled")
|
|
128
|
+
)
|
|
129
|
+
session.commit()
|
|
130
|
+
|
|
131
|
+
# 3) Pessimistic lock with SELECT ... FOR UPDATE (high contention)
|
|
132
|
+
run = session.execute(
|
|
133
|
+
select(WorkflowRun)
|
|
134
|
+
.where(WorkflowRun.id == run_id, WorkflowRun.tenant_id == tenant_id)
|
|
135
|
+
.with_for_update()
|
|
136
|
+
).scalar_one()
|
|
137
|
+
run.status = "cancelled"
|
|
138
|
+
session.commit()
|
|
139
|
+
```
|