ccjk 14.2.2 → 15.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +75 -338
- package/dist/cli.js +89 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/detect.js +15 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/doctor.js +68 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/git-install.js +50 -0
- package/dist/commands/git-install.js.map +1 -0
- package/dist/commands/init.js +165 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.js +66 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/menu.js +42 -0
- package/dist/commands/menu.js.map +1 -0
- package/dist/commands/profile.js +138 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/core/detect.js +24 -0
- package/dist/core/detect.js.map +1 -0
- package/dist/core/lint.js +49 -0
- package/dist/core/lint.js.map +1 -0
- package/dist/core/mcp.js +41 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/paths.js +9 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/profiles.js +104 -0
- package/dist/core/profiles.js.map +1 -0
- package/dist/core/providers.js +53 -0
- package/dist/core/providers.js.map +1 -0
- package/dist/core/settings.js +31 -0
- package/dist/core/settings.js.map +1 -0
- package/dist/core/slash-templates.js +56 -0
- package/dist/core/slash-templates.js.map +1 -0
- package/dist/core/tools.js +27 -0
- package/dist/core/tools.js.map +1 -0
- package/package.json +43 -164
- package/README.HONEST.md +0 -176
- package/README.en.md +0 -67
- package/README.ja.md +0 -67
- package/README.ko.md +0 -67
- package/README.zh-CN.md +0 -86
- package/bin/ccjk.mjs +0 -5
- package/bin/ccjk.ts +0 -222
- package/dist/chunks/agent-teams.mjs +0 -145
- package/dist/chunks/agent.mjs +0 -1439
- package/dist/chunks/agents.mjs +0 -3783
- package/dist/chunks/api-cli.mjs +0 -135
- package/dist/chunks/api-config-selector.mjs +0 -159
- package/dist/chunks/api-providers.mjs +0 -144
- package/dist/chunks/api.mjs +0 -115
- package/dist/chunks/auto-bootstrap.mjs +0 -358
- package/dist/chunks/auto-fixer.mjs +0 -95
- package/dist/chunks/auto-updater.mjs +0 -507
- package/dist/chunks/banner.mjs +0 -173
- package/dist/chunks/bash.mjs +0 -187
- package/dist/chunks/boost.mjs +0 -474
- package/dist/chunks/brain-config.mjs +0 -75
- package/dist/chunks/brain-status.mjs +0 -89
- package/dist/chunks/ccjk-agents.mjs +0 -416
- package/dist/chunks/ccjk-all.mjs +0 -1046
- package/dist/chunks/ccjk-config.mjs +0 -445
- package/dist/chunks/ccjk-hooks.mjs +0 -1074
- package/dist/chunks/ccjk-mcp.mjs +0 -763
- package/dist/chunks/ccjk-setup.mjs +0 -765
- package/dist/chunks/ccjk-skills.mjs +0 -518
- package/dist/chunks/ccr.mjs +0 -109
- package/dist/chunks/ccu.mjs +0 -40
- package/dist/chunks/check-updates.mjs +0 -117
- package/dist/chunks/claude-code-incremental-manager.mjs +0 -761
- package/dist/chunks/claude-config.mjs +0 -606
- package/dist/chunks/claude-config2.mjs +0 -62
- package/dist/chunks/claude-wrapper.mjs +0 -85
- package/dist/chunks/clavue-config.mjs +0 -1454
- package/dist/chunks/cleanup-migration.mjs +0 -20
- package/dist/chunks/cli-hook.mjs +0 -4096
- package/dist/chunks/cloud-sync.mjs +0 -29
- package/dist/chunks/code-type-resolver.mjs +0 -880
- package/dist/chunks/codex-config-switch.mjs +0 -452
- package/dist/chunks/codex-provider-manager.mjs +0 -238
- package/dist/chunks/codex-uninstaller.mjs +0 -404
- package/dist/chunks/codex.mjs +0 -2141
- package/dist/chunks/commands.mjs +0 -108
- package/dist/chunks/commands2.mjs +0 -421
- package/dist/chunks/commit.mjs +0 -140
- package/dist/chunks/completion.mjs +0 -517
- package/dist/chunks/config-consolidator.mjs +0 -172
- package/dist/chunks/config-switch.mjs +0 -334
- package/dist/chunks/config.mjs +0 -558
- package/dist/chunks/config2.mjs +0 -484
- package/dist/chunks/config3.mjs +0 -486
- package/dist/chunks/constants.mjs +0 -323
- package/dist/chunks/context-opt.mjs +0 -444
- package/dist/chunks/context.mjs +0 -974
- package/dist/chunks/dashboard.mjs +0 -481
- package/dist/chunks/doctor.mjs +0 -1301
- package/dist/chunks/eval.mjs +0 -502
- package/dist/chunks/evolution.mjs +0 -322
- package/dist/chunks/features.mjs +0 -715
- package/dist/chunks/fish.mjs +0 -181
- package/dist/chunks/fs-operations.mjs +0 -180
- package/dist/chunks/health-alerts.mjs +0 -830
- package/dist/chunks/help.mjs +0 -341
- package/dist/chunks/hook-installer.mjs +0 -48
- package/dist/chunks/impact.mjs +0 -651
- package/dist/chunks/index.mjs +0 -23
- package/dist/chunks/index10.mjs +0 -19
- package/dist/chunks/index11.mjs +0 -1171
- package/dist/chunks/index12.mjs +0 -218
- package/dist/chunks/index13.mjs +0 -679
- package/dist/chunks/index14.mjs +0 -1009
- package/dist/chunks/index15.mjs +0 -194
- package/dist/chunks/index2.mjs +0 -7637
- package/dist/chunks/index3.mjs +0 -171
- package/dist/chunks/index4.mjs +0 -26
- package/dist/chunks/index5.mjs +0 -19
- package/dist/chunks/index6.mjs +0 -19092
- package/dist/chunks/index7.mjs +0 -616
- package/dist/chunks/index8.mjs +0 -1602
- package/dist/chunks/index9.mjs +0 -5384
- package/dist/chunks/init.mjs +0 -1911
- package/dist/chunks/installer.mjs +0 -757
- package/dist/chunks/installer2.mjs +0 -103
- package/dist/chunks/interview.mjs +0 -2927
- package/dist/chunks/json-config.mjs +0 -60
- package/dist/chunks/linux.mjs +0 -3863
- package/dist/chunks/macos.mjs +0 -69
- package/dist/chunks/main.mjs +0 -635
- package/dist/chunks/manager.mjs +0 -1048
- package/dist/chunks/marketplace.mjs +0 -265
- package/dist/chunks/mcp-cli.mjs +0 -205
- package/dist/chunks/mcp-performance.mjs +0 -187
- package/dist/chunks/mcp.mjs +0 -667
- package/dist/chunks/memory-check.mjs +0 -2973
- package/dist/chunks/memory-paths.mjs +0 -259
- package/dist/chunks/memory-sync.mjs +0 -209
- package/dist/chunks/memory.mjs +0 -354
- package/dist/chunks/metrics-display.mjs +0 -153
- package/dist/chunks/monitor.mjs +0 -1856
- package/dist/chunks/notification.mjs +0 -1864
- package/dist/chunks/onboarding.mjs +0 -386
- package/dist/chunks/package.mjs +0 -3
- package/dist/chunks/paradigm.mjs +0 -74
- package/dist/chunks/permission-manager.mjs +0 -250
- package/dist/chunks/permissions.mjs +0 -265
- package/dist/chunks/persistence-manager.mjs +0 -801
- package/dist/chunks/persistence.mjs +0 -707
- package/dist/chunks/platform.mjs +0 -395
- package/dist/chunks/plugin.mjs +0 -1936
- package/dist/chunks/powershell.mjs +0 -213
- package/dist/chunks/prompts.mjs +0 -244
- package/dist/chunks/providers.mjs +0 -263
- package/dist/chunks/quick-actions.mjs +0 -335
- package/dist/chunks/quick-provider.mjs +0 -755
- package/dist/chunks/quick-setup.mjs +0 -421
- package/dist/chunks/remote.mjs +0 -497
- package/dist/chunks/research.mjs +0 -1904
- package/dist/chunks/rollback.mjs +0 -38
- package/dist/chunks/session-manager.mjs +0 -1371
- package/dist/chunks/session.mjs +0 -878
- package/dist/chunks/sessions.mjs +0 -106
- package/dist/chunks/silent-updater.mjs +0 -396
- package/dist/chunks/simple-config.mjs +0 -122
- package/dist/chunks/skill.mjs +0 -117
- package/dist/chunks/skill2.mjs +0 -9052
- package/dist/chunks/skills-sync.mjs +0 -1343
- package/dist/chunks/skills.mjs +0 -577
- package/dist/chunks/slash-commands.mjs +0 -208
- package/dist/chunks/smart-guide.mjs +0 -247
- package/dist/chunks/snapshot.mjs +0 -58
- package/dist/chunks/startup.mjs +0 -487
- package/dist/chunks/stats.mjs +0 -191
- package/dist/chunks/status.mjs +0 -471
- package/dist/chunks/team.mjs +0 -63
- package/dist/chunks/thinking.mjs +0 -626
- package/dist/chunks/trace.mjs +0 -57
- package/dist/chunks/uninstall.mjs +0 -852
- package/dist/chunks/update.mjs +0 -174
- package/dist/chunks/upgrade-manager.mjs +0 -204
- package/dist/chunks/upgrade.mjs +0 -133
- package/dist/chunks/version-checker.mjs +0 -891
- package/dist/chunks/vim.mjs +0 -903
- package/dist/chunks/windows.mjs +0 -14
- package/dist/chunks/workflows.mjs +0 -633
- package/dist/chunks/wsl.mjs +0 -129
- package/dist/chunks/zero-config.mjs +0 -871
- package/dist/chunks/zsh.mjs +0 -182
- package/dist/cli.d.mts +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.mjs +0 -2684
- package/dist/i18n/locales/en/agent-teams.json +0 -18
- package/dist/i18n/locales/en/agentBrowser.json +0 -80
- package/dist/i18n/locales/en/agents.json +0 -135
- package/dist/i18n/locales/en/api.json +0 -63
- package/dist/i18n/locales/en/ccjk-agents.json +0 -33
- package/dist/i18n/locales/en/ccjk-all.json +0 -23
- package/dist/i18n/locales/en/ccjk-skills.json +0 -22
- package/dist/i18n/locales/en/ccjk.json +0 -276
- package/dist/i18n/locales/en/ccr.json +0 -65
- package/dist/i18n/locales/en/claude-md.json +0 -73
- package/dist/i18n/locales/en/cli.json +0 -148
- package/dist/i18n/locales/en/cloud-setup.json +0 -31
- package/dist/i18n/locales/en/cloud-sync.json +0 -147
- package/dist/i18n/locales/en/cloud.json +0 -40
- package/dist/i18n/locales/en/cloudPlugins.json +0 -118
- package/dist/i18n/locales/en/codex.json +0 -184
- package/dist/i18n/locales/en/cometix.json +0 -29
- package/dist/i18n/locales/en/common.json +0 -68
- package/dist/i18n/locales/en/config.json +0 -108
- package/dist/i18n/locales/en/configuration.json +0 -236
- package/dist/i18n/locales/en/context.json +0 -85
- package/dist/i18n/locales/en/dashboard.json +0 -78
- package/dist/i18n/locales/en/errors.json +0 -26
- package/dist/i18n/locales/en/evolution.json +0 -54
- package/dist/i18n/locales/en/hooks.json +0 -74
- package/dist/i18n/locales/en/hooksSync.json +0 -133
- package/dist/i18n/locales/en/installation.json +0 -83
- package/dist/i18n/locales/en/interview.json +0 -104
- package/dist/i18n/locales/en/language.json +0 -19
- package/dist/i18n/locales/en/lsp.json +0 -78
- package/dist/i18n/locales/en/marketplace.json +0 -116
- package/dist/i18n/locales/en/mcp.json +0 -180
- package/dist/i18n/locales/en/memory.json +0 -23
- package/dist/i18n/locales/en/menu.json +0 -299
- package/dist/i18n/locales/en/multi-config.json +0 -79
- package/dist/i18n/locales/en/notification.json +0 -307
- package/dist/i18n/locales/en/permissions.json +0 -95
- package/dist/i18n/locales/en/persistence.json +0 -127
- package/dist/i18n/locales/en/plugins.json +0 -146
- package/dist/i18n/locales/en/quick-actions.json +0 -78
- package/dist/i18n/locales/en/registry.json +0 -54
- package/dist/i18n/locales/en/remote.json +0 -93
- package/dist/i18n/locales/en/sandbox.json +0 -44
- package/dist/i18n/locales/en/setup.json +0 -44
- package/dist/i18n/locales/en/shencha.json +0 -14
- package/dist/i18n/locales/en/skills.json +0 -100
- package/dist/i18n/locales/en/skillsSync.json +0 -74
- package/dist/i18n/locales/en/smartGuide.json +0 -49
- package/dist/i18n/locales/en/stats.json +0 -20
- package/dist/i18n/locales/en/subagent.json +0 -69
- package/dist/i18n/locales/en/superpowers.json +0 -117
- package/dist/i18n/locales/en/team.json +0 -7
- package/dist/i18n/locales/en/thinking.json +0 -65
- package/dist/i18n/locales/en/tools.json +0 -42
- package/dist/i18n/locales/en/uninstall.json +0 -56
- package/dist/i18n/locales/en/updater.json +0 -29
- package/dist/i18n/locales/en/vim.json +0 -169
- package/dist/i18n/locales/en/workflow.json +0 -55
- package/dist/i18n/locales/en/workspace.json +0 -108
- package/dist/i18n/locales/zh-CN/agent-teams.json +0 -18
- package/dist/i18n/locales/zh-CN/agentBrowser.json +0 -80
- package/dist/i18n/locales/zh-CN/agents.json +0 -135
- package/dist/i18n/locales/zh-CN/api.json +0 -63
- package/dist/i18n/locales/zh-CN/ccjk-agents.json +0 -33
- package/dist/i18n/locales/zh-CN/ccjk-all.json +0 -23
- package/dist/i18n/locales/zh-CN/ccjk-skills.json +0 -22
- package/dist/i18n/locales/zh-CN/ccjk.json +0 -276
- package/dist/i18n/locales/zh-CN/ccr.json +0 -65
- package/dist/i18n/locales/zh-CN/claude-md.json +0 -73
- package/dist/i18n/locales/zh-CN/cli.json +0 -148
- package/dist/i18n/locales/zh-CN/cloud-setup.json +0 -31
- package/dist/i18n/locales/zh-CN/cloud-sync.json +0 -147
- package/dist/i18n/locales/zh-CN/cloud.json +0 -40
- package/dist/i18n/locales/zh-CN/cloudPlugins.json +0 -118
- package/dist/i18n/locales/zh-CN/codex.json +0 -184
- package/dist/i18n/locales/zh-CN/cometix.json +0 -29
- package/dist/i18n/locales/zh-CN/common.json +0 -68
- package/dist/i18n/locales/zh-CN/config.json +0 -108
- package/dist/i18n/locales/zh-CN/configuration.json +0 -234
- package/dist/i18n/locales/zh-CN/context.json +0 -85
- package/dist/i18n/locales/zh-CN/dashboard.json +0 -78
- package/dist/i18n/locales/zh-CN/errors.json +0 -26
- package/dist/i18n/locales/zh-CN/evolution.json +0 -54
- package/dist/i18n/locales/zh-CN/hooks.json +0 -74
- package/dist/i18n/locales/zh-CN/hooksSync.json +0 -133
- package/dist/i18n/locales/zh-CN/installation.json +0 -83
- package/dist/i18n/locales/zh-CN/interview.json +0 -104
- package/dist/i18n/locales/zh-CN/language.json +0 -19
- package/dist/i18n/locales/zh-CN/lsp.json +0 -78
- package/dist/i18n/locales/zh-CN/marketplace.json +0 -116
- package/dist/i18n/locales/zh-CN/mcp.json +0 -180
- package/dist/i18n/locales/zh-CN/memory.json +0 -23
- package/dist/i18n/locales/zh-CN/menu.json +0 -299
- package/dist/i18n/locales/zh-CN/multi-config.json +0 -79
- package/dist/i18n/locales/zh-CN/notification.json +0 -307
- package/dist/i18n/locales/zh-CN/permissions.json +0 -95
- package/dist/i18n/locales/zh-CN/persistence.json +0 -127
- package/dist/i18n/locales/zh-CN/plugins.json +0 -146
- package/dist/i18n/locales/zh-CN/quick-actions.json +0 -78
- package/dist/i18n/locales/zh-CN/registry.json +0 -54
- package/dist/i18n/locales/zh-CN/remote.json +0 -93
- package/dist/i18n/locales/zh-CN/sandbox.json +0 -44
- package/dist/i18n/locales/zh-CN/setup.json +0 -44
- package/dist/i18n/locales/zh-CN/shencha.json +0 -14
- package/dist/i18n/locales/zh-CN/skills.json +0 -100
- package/dist/i18n/locales/zh-CN/skillsSync.json +0 -74
- package/dist/i18n/locales/zh-CN/smartGuide.json +0 -49
- package/dist/i18n/locales/zh-CN/stats.json +0 -20
- package/dist/i18n/locales/zh-CN/subagent.json +0 -69
- package/dist/i18n/locales/zh-CN/superpowers.json +0 -117
- package/dist/i18n/locales/zh-CN/team.json +0 -7
- package/dist/i18n/locales/zh-CN/thinking.json +0 -65
- package/dist/i18n/locales/zh-CN/tools.json +0 -42
- package/dist/i18n/locales/zh-CN/uninstall.json +0 -56
- package/dist/i18n/locales/zh-CN/updater.json +0 -29
- package/dist/i18n/locales/zh-CN/vim.json +0 -169
- package/dist/i18n/locales/zh-CN/workflow.json +0 -55
- package/dist/i18n/locales/zh-CN/workspace.json +0 -108
- package/dist/index.d.mts +0 -5658
- package/dist/index.d.ts +0 -5658
- package/dist/index.mjs +0 -3732
- package/dist/shared/ccjk.5bEolFrk.mjs +0 -254
- package/dist/shared/ccjk.8oaxX4iR.mjs +0 -90
- package/dist/shared/ccjk.B2U7DsPy.mjs +0 -31
- package/dist/shared/ccjk.B2f-cwUP.mjs +0 -468
- package/dist/shared/ccjk.BAGoDD49.mjs +0 -36
- package/dist/shared/ccjk.BBtCGd_g.mjs +0 -899
- package/dist/shared/ccjk.BFQ7yr5S.mjs +0 -16
- package/dist/shared/ccjk.BLsIiTqO.mjs +0 -449
- package/dist/shared/ccjk.BXv8aYs1.mjs +0 -170
- package/dist/shared/ccjk.BnsY5WxD.mjs +0 -171
- package/dist/shared/ccjk.BoApaI4j.mjs +0 -28
- package/dist/shared/ccjk.Bq8TqZG_.mjs +0 -189
- package/dist/shared/ccjk.BtrioX1Z.mjs +0 -25
- package/dist/shared/ccjk.Bx_rmYfN.mjs +0 -69
- package/dist/shared/ccjk.BzPbSEP2.mjs +0 -115
- package/dist/shared/ccjk.C0WLUnFV.mjs +0 -293
- package/dist/shared/ccjk.C1hANZTu.mjs +0 -19
- package/dist/shared/ccjk.C2jHOZVP.mjs +0 -52
- package/dist/shared/ccjk.CNhnT6uQ.mjs +0 -636
- package/dist/shared/ccjk.COweQ1RR.mjs +0 -5
- package/dist/shared/ccjk.CfKKcvWy.mjs +0 -126
- package/dist/shared/ccjk.Cjgrln_h.mjs +0 -297
- package/dist/shared/ccjk.CoCHVXl3.mjs +0 -3951
- package/dist/shared/ccjk.CwGZSTAK.mjs +0 -319
- package/dist/shared/ccjk.CxpGa6MC.mjs +0 -2724
- package/dist/shared/ccjk.D-magaEx.mjs +0 -763
- package/dist/shared/ccjk.D0g2ABGg.mjs +0 -171
- package/dist/shared/ccjk.D6ycHbak.mjs +0 -270
- package/dist/shared/ccjk.D75wivnp.mjs +0 -142
- package/dist/shared/ccjk.DDL-4C-k.mjs +0 -100
- package/dist/shared/ccjk.DFRPtmK_.mjs +0 -75
- package/dist/shared/ccjk.DMV3x5Sd.mjs +0 -299
- package/dist/shared/ccjk.DZ2LLOa-.mjs +0 -2195
- package/dist/shared/ccjk.DbigonEQ.mjs +0 -698
- package/dist/shared/ccjk.DcMvE7lf.mjs +0 -618
- package/dist/shared/ccjk.DeWpAShp.mjs +0 -1828
- package/dist/shared/ccjk.DhJ1kyDR.mjs +0 -30
- package/dist/shared/ccjk.DlTXS9rP.mjs +0 -224
- package/dist/shared/ccjk.DopKzo3z.mjs +0 -305
- package/dist/shared/ccjk.DsZsc4LR.mjs +0 -1280
- package/dist/shared/ccjk.DuzJZlgj.mjs +0 -418
- package/dist/shared/ccjk.Dxgd2vjc.mjs +0 -444
- package/dist/shared/ccjk.J8YiPsOw.mjs +0 -259
- package/dist/shared/ccjk.KfSWcGlE.mjs +0 -38
- package/dist/shared/ccjk.L7yC58_i.mjs +0 -225
- package/dist/shared/ccjk.MwtjAULc.mjs +0 -1447
- package/dist/shared/ccjk.OJKHVSOb.mjs +0 -2005
- package/dist/shared/ccjk.OTnevPNE.mjs +0 -225
- package/dist/shared/ccjk.RyizuzOI.mjs +0 -21
- package/dist/shared/ccjk.T_cX87dY.mjs +0 -15
- package/dist/shared/ccjk.bQ7Dh1g4.mjs +0 -249
- package/dist/shared/ccjk.gDEDGD_t.mjs +0 -38
- package/dist/shared/ccjk.hoqrwWdN.mjs +0 -333
- package/dist/shared/ccjk.i_vn-9C3.mjs +0 -317
- package/dist/shared/ccjk.lG3ccFjm.mjs +0 -885
- package/dist/shared/ccjk.wLJHO0Af.mjs +0 -244
- package/dist/shared/ccjk.y-a_1vK4.mjs +0 -5127
- package/dist/templates/agents/README.md +0 -78
- package/dist/templates/agents/fullstack-developer.json +0 -70
- package/dist/templates/agents/go-expert.json +0 -69
- package/dist/templates/agents/index.json +0 -64
- package/dist/templates/agents/python-expert.json +0 -69
- package/dist/templates/agents/react-specialist.json +0 -69
- package/dist/templates/agents/testing-automation-expert.json +0 -70
- package/dist/templates/agents/typescript-architect.json +0 -69
- package/dist/templates/claude-code/common/settings.json +0 -109
- package/dist/templates/common/error-prevention.md +0 -267
- package/dist/templates/common/karpathy-baseline.md +0 -83
- package/dist/templates/common/output-styles/zh-CN/carmack-mode.md +0 -381
- package/dist/templates/common/output-styles/zh-CN/codex-rigor-mode.md +0 -114
- package/dist/templates/common/output-styles/zh-CN/dhh-mode.md +0 -265
- package/dist/templates/common/output-styles/zh-CN/evan-you-mode.md +0 -539
- package/dist/templates/common/output-styles/zh-CN/jobs-mode.md +0 -369
- package/dist/templates/common/output-styles/zh-CN/linus-mode.md +0 -135
- package/dist/templates/common/output-styles/zh-CN/uncle-bob-mode.md +0 -221
- package/dist/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +0 -628
- package/dist/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +0 -628
- package/dist/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +0 -187
- package/dist/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +0 -191
- package/dist/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +0 -249
- package/dist/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +0 -277
- package/dist/templates/common/workflow/essential/en/agents/get-current-datetime.md +0 -29
- package/dist/templates/common/workflow/essential/en/agents/init-architect.md +0 -115
- package/dist/templates/common/workflow/essential/en/agents/ui-ux-designer.md +0 -91
- package/dist/templates/common/workflow/essential/en/feat.md +0 -92
- package/dist/templates/common/workflow/essential/en/goal.md +0 -147
- package/dist/templates/common/workflow/essential/en/init-project.md +0 -53
- package/dist/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +0 -29
- package/dist/templates/common/workflow/essential/zh-CN/agents/init-architect.md +0 -115
- package/dist/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +0 -91
- package/dist/templates/common/workflow/essential/zh-CN/feat.md +0 -315
- package/dist/templates/common/workflow/essential/zh-CN/goal.md +0 -146
- package/dist/templates/common/workflow/essential/zh-CN/init-project.md +0 -53
- package/dist/templates/common/workflow/git/en/git-cleanBranches.md +0 -102
- package/dist/templates/common/workflow/git/en/git-commit.md +0 -205
- package/dist/templates/common/workflow/git/en/git-rollback.md +0 -90
- package/dist/templates/common/workflow/git/en/git-worktree.md +0 -276
- package/dist/templates/common/workflow/git/zh-CN/git-cleanBranches.md +0 -102
- package/dist/templates/common/workflow/git/zh-CN/git-commit.md +0 -205
- package/dist/templates/common/workflow/git/zh-CN/git-rollback.md +0 -90
- package/dist/templates/common/workflow/git/zh-CN/git-worktree.md +0 -276
- package/dist/templates/common/workflow/interview/en/interview.md +0 -67
- package/dist/templates/common/workflow/interview/zh-CN/interview.md +0 -67
- package/dist/templates/common/workflow/linearMethod/en/linear-method.md +0 -651
- package/dist/templates/common/workflow/linearMethod/zh-CN/linear-method.md +0 -752
- package/dist/templates/common/workflow/refactoringMaster/en/refactoring-master.md +0 -516
- package/dist/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +0 -812
- package/dist/templates/common/workflow/sixStep/en/workflow.md +0 -83
- package/dist/templates/common/workflow/sixStep/zh-CN/workflow.md +0 -359
- package/dist/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +0 -364
- package/dist/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +0 -366
- package/dist/templates/hooks/README.md +0 -212
- package/dist/templates/hooks/git-workflow-hooks.md +0 -551
- package/dist/templates/hooks/post-test/coverage.json +0 -21
- package/dist/templates/hooks/post-test/summary.json +0 -21
- package/dist/templates/hooks/post-test-coverage.md +0 -434
- package/dist/templates/hooks/pre-commit/eslint.json +0 -22
- package/dist/templates/hooks/pre-commit/prettier.json +0 -22
- package/dist/templates/hooks/pre-commit-black.md +0 -274
- package/dist/templates/hooks/pre-commit-eslint.md +0 -153
- package/dist/templates/hooks/pre-commit-gofmt.md +0 -284
- package/dist/templates/hooks/pre-commit-prettier.md +0 -212
- package/dist/templates/hooks/pre-commit-type-check.md +0 -377
- package/dist/templates/skills/ccjk-init.md +0 -154
- package/dist/templates/skills/ccjk-mcp-setup.md +0 -205
- package/dist/templates/skills/ccjk-troubleshoot.md +0 -228
- package/dist/templates/skills/django-patterns.md +0 -1016
- package/dist/templates/skills/git-workflow.md +0 -748
- package/dist/templates/skills/go-idioms.md +0 -963
- package/dist/templates/skills/index.json +0 -132
- package/dist/templates/skills/nextjs-optimization.md +0 -694
- package/dist/templates/skills/python-pep8.md +0 -852
- package/dist/templates/skills/react-patterns.md +0 -686
- package/dist/templates/skills/rust-patterns.md +0 -1057
- package/dist/templates/skills/security-best-practices.md +0 -1413
- package/dist/templates/skills/testing-best-practices.md +0 -1315
- package/dist/templates/skills/ts-best-practices.md +0 -354
- package/templates/agents/README.md +0 -78
- package/templates/agents/fullstack-developer.json +0 -70
- package/templates/agents/go-expert.json +0 -69
- package/templates/agents/index.json +0 -64
- package/templates/agents/python-expert.json +0 -69
- package/templates/agents/react-specialist.json +0 -69
- package/templates/agents/testing-automation-expert.json +0 -70
- package/templates/agents/typescript-architect.json +0 -69
- package/templates/claude-code/common/settings.json +0 -109
- package/templates/common/error-prevention.md +0 -267
- package/templates/common/karpathy-baseline.md +0 -83
- package/templates/common/output-styles/zh-CN/carmack-mode.md +0 -381
- package/templates/common/output-styles/zh-CN/codex-rigor-mode.md +0 -114
- package/templates/common/output-styles/zh-CN/dhh-mode.md +0 -265
- package/templates/common/output-styles/zh-CN/evan-you-mode.md +0 -539
- package/templates/common/output-styles/zh-CN/jobs-mode.md +0 -369
- package/templates/common/output-styles/zh-CN/linus-mode.md +0 -135
- package/templates/common/output-styles/zh-CN/uncle-bob-mode.md +0 -221
- package/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +0 -628
- package/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +0 -628
- package/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +0 -187
- package/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +0 -191
- package/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +0 -249
- package/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +0 -277
- package/templates/common/workflow/essential/en/agents/get-current-datetime.md +0 -29
- package/templates/common/workflow/essential/en/agents/init-architect.md +0 -115
- package/templates/common/workflow/essential/en/agents/ui-ux-designer.md +0 -91
- package/templates/common/workflow/essential/en/feat.md +0 -92
- package/templates/common/workflow/essential/en/goal.md +0 -147
- package/templates/common/workflow/essential/en/init-project.md +0 -53
- package/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +0 -29
- package/templates/common/workflow/essential/zh-CN/agents/init-architect.md +0 -115
- package/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +0 -91
- package/templates/common/workflow/essential/zh-CN/feat.md +0 -315
- package/templates/common/workflow/essential/zh-CN/goal.md +0 -146
- package/templates/common/workflow/essential/zh-CN/init-project.md +0 -53
- package/templates/common/workflow/git/en/git-cleanBranches.md +0 -102
- package/templates/common/workflow/git/en/git-commit.md +0 -205
- package/templates/common/workflow/git/en/git-rollback.md +0 -90
- package/templates/common/workflow/git/en/git-worktree.md +0 -276
- package/templates/common/workflow/git/zh-CN/git-cleanBranches.md +0 -102
- package/templates/common/workflow/git/zh-CN/git-commit.md +0 -205
- package/templates/common/workflow/git/zh-CN/git-rollback.md +0 -90
- package/templates/common/workflow/git/zh-CN/git-worktree.md +0 -276
- package/templates/common/workflow/interview/en/interview.md +0 -67
- package/templates/common/workflow/interview/zh-CN/interview.md +0 -67
- package/templates/common/workflow/linearMethod/en/linear-method.md +0 -651
- package/templates/common/workflow/linearMethod/zh-CN/linear-method.md +0 -752
- package/templates/common/workflow/refactoringMaster/en/refactoring-master.md +0 -516
- package/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +0 -812
- package/templates/common/workflow/sixStep/en/workflow.md +0 -83
- package/templates/common/workflow/sixStep/zh-CN/workflow.md +0 -359
- package/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +0 -364
- package/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +0 -366
- package/templates/hooks/README.md +0 -212
- package/templates/hooks/git-workflow-hooks.md +0 -551
- package/templates/hooks/post-test/coverage.json +0 -21
- package/templates/hooks/post-test/summary.json +0 -21
- package/templates/hooks/post-test-coverage.md +0 -434
- package/templates/hooks/pre-commit/eslint.json +0 -22
- package/templates/hooks/pre-commit/prettier.json +0 -22
- package/templates/hooks/pre-commit-black.md +0 -274
- package/templates/hooks/pre-commit-eslint.md +0 -153
- package/templates/hooks/pre-commit-gofmt.md +0 -284
- package/templates/hooks/pre-commit-prettier.md +0 -212
- package/templates/hooks/pre-commit-type-check.md +0 -377
- package/templates/skills/basic.hbs +0 -72
- package/templates/skills/ccjk-init.md +0 -154
- package/templates/skills/ccjk-mcp-setup.md +0 -205
- package/templates/skills/ccjk-troubleshoot.md +0 -228
- package/templates/skills/code-refactor.hbs +0 -133
- package/templates/skills/code-review.hbs +0 -141
- package/templates/skills/django-patterns.md +0 -1016
- package/templates/skills/git-workflow.md +0 -748
- package/templates/skills/go-idioms.md +0 -963
- package/templates/skills/index.json +0 -132
- package/templates/skills/nextjs-optimization.md +0 -694
- package/templates/skills/python-pep8.md +0 -852
- package/templates/skills/react-patterns.md +0 -686
- package/templates/skills/rust-patterns.md +0 -1057
- package/templates/skills/security-best-practices.md +0 -1413
- package/templates/skills/testing-best-practices.md +0 -1315
- package/templates/skills/ts-best-practices.md +0 -354
- package/templates/skills/type-fix.hbs +0 -132
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ts-best-practices
|
|
3
|
-
description: TypeScript 5.3+ best practices and patterns for type-safe development
|
|
4
|
-
description_zh: TypeScript 5.3+ 最佳实践和类型安全开发模式
|
|
5
|
-
version: 1.0.0
|
|
6
|
-
category: programming
|
|
7
|
-
triggers: ['/ts-best-practices', '/typescript', '/ts-patterns']
|
|
8
|
-
use_when:
|
|
9
|
-
- Writing TypeScript code with strict typing
|
|
10
|
-
- Implementing generic constraints and utility types
|
|
11
|
-
- Optimizing TypeScript performance and maintainability
|
|
12
|
-
- Code review for TypeScript projects
|
|
13
|
-
use_when_zh:
|
|
14
|
-
- 编写严格类型的 TypeScript 代码
|
|
15
|
-
- 实现泛型约束和工具类型
|
|
16
|
-
- 优化 TypeScript 性能和可维护性
|
|
17
|
-
- TypeScript 项目代码审查
|
|
18
|
-
auto_activate: true
|
|
19
|
-
priority: 8
|
|
20
|
-
agents: [typescript-expert, code-reviewer]
|
|
21
|
-
tags: [typescript, types, generics, patterns, best-practices]
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
# TypeScript Best Practices | TypeScript 最佳实践
|
|
25
|
-
|
|
26
|
-
## Context | 上下文
|
|
27
|
-
|
|
28
|
-
Use this skill when working with TypeScript 5.3+ projects that require strict typing, performance optimization, and maintainable code architecture. Essential for enterprise-grade TypeScript development.
|
|
29
|
-
|
|
30
|
-
在使用 TypeScript 5.3+ 项目时使用此技能,需要严格类型、性能优化和可维护的代码架构。对于企业级 TypeScript 开发至关重要。
|
|
31
|
-
|
|
32
|
-
## Best Practices | 最佳实践
|
|
33
|
-
|
|
34
|
-
### 1. Strict Type Configuration | 严格类型配置
|
|
35
|
-
|
|
36
|
-
```typescript
|
|
37
|
-
// tsconfig.json - Recommended strict settings
|
|
38
|
-
{
|
|
39
|
-
"compilerOptions": {
|
|
40
|
-
"strict": true,
|
|
41
|
-
"noUncheckedIndexedAccess": true,
|
|
42
|
-
"exactOptionalPropertyTypes": true,
|
|
43
|
-
"noImplicitReturns": true,
|
|
44
|
-
"noFallthroughCasesInSwitch": true,
|
|
45
|
-
"noUncheckedSideEffectImports": true
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### 2. Generic Constraints | 泛型约束
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
// ✅ Good: Proper generic constraints
|
|
54
|
-
interface Repository<T extends { id: string }> {
|
|
55
|
-
findById(id: string): Promise<T | null>;
|
|
56
|
-
save(entity: T): Promise<T>;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// ✅ Good: Conditional types with constraints
|
|
60
|
-
type ApiResponse<T> = T extends string
|
|
61
|
-
? { message: T }
|
|
62
|
-
: { data: T };
|
|
63
|
-
|
|
64
|
-
// ❌ Bad: Unconstrained generics
|
|
65
|
-
interface BadRepository<T> {
|
|
66
|
-
findById(id: string): Promise<T | null>; // T could be anything
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### 3. Utility Types Usage | 工具类型使用
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
// ✅ Good: Leverage built-in utility types
|
|
74
|
-
interface User {
|
|
75
|
-
id: string;
|
|
76
|
-
name: string;
|
|
77
|
-
email: string;
|
|
78
|
-
password: string;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
type PublicUser = Omit<User, 'password'>;
|
|
82
|
-
type UserUpdate = Partial<Pick<User, 'name' | 'email'>>;
|
|
83
|
-
type CreateUser = Omit<User, 'id'>;
|
|
84
|
-
|
|
85
|
-
// ✅ Good: Custom utility types
|
|
86
|
-
type NonNullable<T> = T extends null | undefined ? never : T;
|
|
87
|
-
type DeepReadonly<T> = {
|
|
88
|
-
readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
|
|
89
|
-
};
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### 4. Type Guards and Assertions | 类型守卫和断言
|
|
93
|
-
|
|
94
|
-
```typescript
|
|
95
|
-
// ✅ Good: Type guards
|
|
96
|
-
function isString(value: unknown): value is string {
|
|
97
|
-
return typeof value === 'string';
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function isUser(obj: unknown): obj is User {
|
|
101
|
-
return typeof obj === 'object' &&
|
|
102
|
-
obj !== null &&
|
|
103
|
-
'id' in obj &&
|
|
104
|
-
'name' in obj;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// ✅ Good: Assertion functions
|
|
108
|
-
function assertIsNumber(value: unknown): asserts value is number {
|
|
109
|
-
if (typeof value !== 'number') {
|
|
110
|
-
throw new Error('Expected number');
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Common Patterns | 常用模式
|
|
116
|
-
|
|
117
|
-
### 1. Builder Pattern with Types | 带类型的建造者模式
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
class QueryBuilder<T> {
|
|
121
|
-
private conditions: Array<(item: T) => boolean> = [];
|
|
122
|
-
|
|
123
|
-
where<K extends keyof T>(
|
|
124
|
-
key: K,
|
|
125
|
-
value: T[K]
|
|
126
|
-
): QueryBuilder<T> {
|
|
127
|
-
this.conditions.push(item => item[key] === value);
|
|
128
|
-
return this;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
build(): (items: T[]) => T[] {
|
|
132
|
-
return items => items.filter(item =>
|
|
133
|
-
this.conditions.every(condition => condition(item))
|
|
134
|
-
);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Usage
|
|
139
|
-
const userFilter = new QueryBuilder<User>()
|
|
140
|
-
.where('status', 'active')
|
|
141
|
-
.where('role', 'admin')
|
|
142
|
-
.build();
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### 2. Event System with Type Safety | 类型安全的事件系统
|
|
146
|
-
|
|
147
|
-
```typescript
|
|
148
|
-
interface EventMap {
|
|
149
|
-
'user:created': { user: User };
|
|
150
|
-
'user:updated': { user: User; changes: Partial<User> };
|
|
151
|
-
'user:deleted': { userId: string };
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
class TypedEventEmitter<T extends Record<string, any>> {
|
|
155
|
-
private listeners: {
|
|
156
|
-
[K in keyof T]?: Array<(data: T[K]) => void>;
|
|
157
|
-
} = {};
|
|
158
|
-
|
|
159
|
-
on<K extends keyof T>(
|
|
160
|
-
event: K,
|
|
161
|
-
listener: (data: T[K]) => void
|
|
162
|
-
): void {
|
|
163
|
-
if (!this.listeners[event]) {
|
|
164
|
-
this.listeners[event] = [];
|
|
165
|
-
}
|
|
166
|
-
this.listeners[event]!.push(listener);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
emit<K extends keyof T>(event: K, data: T[K]): void {
|
|
170
|
-
this.listeners[event]?.forEach(listener => listener(data));
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Usage with full type safety
|
|
175
|
-
const emitter = new TypedEventEmitter<EventMap>();
|
|
176
|
-
emitter.on('user:created', ({ user }) => {
|
|
177
|
-
console.log(`User ${user.name} created`); // ✅ Type-safe
|
|
178
|
-
});
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### 3. Branded Types for Domain Safety | 领域安全的品牌类型
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
// ✅ Good: Branded types prevent mixing different IDs
|
|
185
|
-
type UserId = string & { readonly brand: unique symbol };
|
|
186
|
-
type ProductId = string & { readonly brand: unique symbol };
|
|
187
|
-
|
|
188
|
-
function createUserId(id: string): UserId {
|
|
189
|
-
return id as UserId;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
function createProductId(id: string): ProductId {
|
|
193
|
-
return id as ProductId;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
function getUser(id: UserId): Promise<User> {
|
|
197
|
-
// Implementation
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// This prevents accidental ID mixing
|
|
201
|
-
const userId = createUserId('user-123');
|
|
202
|
-
const productId = createProductId('product-456');
|
|
203
|
-
|
|
204
|
-
getUser(userId); // ✅ Works
|
|
205
|
-
getUser(productId); // ❌ Type error - prevents bugs
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Anti-Patterns | 反模式
|
|
209
|
-
|
|
210
|
-
### 1. Avoid `any` and Type Assertions | 避免 `any` 和类型断言
|
|
211
|
-
|
|
212
|
-
```typescript
|
|
213
|
-
// ❌ Bad: Using any
|
|
214
|
-
function processData(data: any): any {
|
|
215
|
-
return data.someProperty;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
// ❌ Bad: Unsafe type assertions
|
|
219
|
-
const user = data as User; // Could fail at runtime
|
|
220
|
-
|
|
221
|
-
// ✅ Good: Proper typing with validation
|
|
222
|
-
function processData<T extends { someProperty: unknown }>(
|
|
223
|
-
data: T
|
|
224
|
-
): T['someProperty'] {
|
|
225
|
-
return data.someProperty;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// ✅ Good: Safe type assertions with validation
|
|
229
|
-
function isUser(data: unknown): data is User {
|
|
230
|
-
return typeof data === 'object' &&
|
|
231
|
-
data !== null &&
|
|
232
|
-
'id' in data;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
const user = isUser(data) ? data : null;
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### 2. Avoid Overly Complex Types | 避免过于复杂的类型
|
|
239
|
-
|
|
240
|
-
```typescript
|
|
241
|
-
// ❌ Bad: Overly complex type that's hard to understand
|
|
242
|
-
type ComplexType<T> = T extends infer U
|
|
243
|
-
? U extends Record<string, any>
|
|
244
|
-
? { [K in keyof U]: U[K] extends Function
|
|
245
|
-
? ReturnType<U[K]> extends Promise<infer R>
|
|
246
|
-
? R extends object
|
|
247
|
-
? ComplexType<R>
|
|
248
|
-
: never
|
|
249
|
-
: never
|
|
250
|
-
: never }
|
|
251
|
-
: never
|
|
252
|
-
: never;
|
|
253
|
-
|
|
254
|
-
// ✅ Good: Break down complex types into smaller, named pieces
|
|
255
|
-
type AsyncReturnType<T> = T extends (...args: any[]) => Promise<infer R>
|
|
256
|
-
? R
|
|
257
|
-
: never;
|
|
258
|
-
|
|
259
|
-
type FunctionProperties<T> = {
|
|
260
|
-
[K in keyof T]: T[K] extends Function ? T[K] : never;
|
|
261
|
-
};
|
|
262
|
-
|
|
263
|
-
type ExtractAsyncReturns<T> = {
|
|
264
|
-
[K in keyof FunctionProperties<T>]: AsyncReturnType<T[K]>;
|
|
265
|
-
};
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
### 3. Avoid Mutation of Readonly Types | 避免修改只读类型
|
|
269
|
-
|
|
270
|
-
```typescript
|
|
271
|
-
// ❌ Bad: Mutating readonly arrays
|
|
272
|
-
function badSort(items: readonly number[]): readonly number[] {
|
|
273
|
-
return items.sort(); // Mutates the original array!
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
// ✅ Good: Create new arrays for readonly inputs
|
|
277
|
-
function goodSort(items: readonly number[]): readonly number[] {
|
|
278
|
-
return [...items].sort();
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
// ✅ Good: Use proper readonly patterns
|
|
282
|
-
interface ReadonlyConfig {
|
|
283
|
-
readonly apiUrl: string;
|
|
284
|
-
readonly timeout: number;
|
|
285
|
-
readonly features: readonly string[];
|
|
286
|
-
}
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
## Performance Tips | 性能提示
|
|
290
|
-
|
|
291
|
-
### 1. Use Type-Only Imports | 使用仅类型导入
|
|
292
|
-
|
|
293
|
-
```typescript
|
|
294
|
-
// ✅ Good: Type-only imports don't affect bundle size
|
|
295
|
-
import type { User, ApiResponse } from './types';
|
|
296
|
-
import { validateUser } from './validators';
|
|
297
|
-
|
|
298
|
-
// ❌ Bad: Importing types as values
|
|
299
|
-
import { User, ApiResponse, validateUser } from './module';
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### 2. Optimize Conditional Types | 优化条件类型
|
|
303
|
-
|
|
304
|
-
```typescript
|
|
305
|
-
// ✅ Good: Efficient conditional type
|
|
306
|
-
type IsArray<T> = T extends readonly any[] ? true : false;
|
|
307
|
-
|
|
308
|
-
// ❌ Bad: Inefficient nested conditionals
|
|
309
|
-
type BadIsArray<T> = T extends any[]
|
|
310
|
-
? true
|
|
311
|
-
: T extends readonly any[]
|
|
312
|
-
? true
|
|
313
|
-
: false;
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
### 3. Use Template Literal Types Wisely | 明智使用模板字面量类型
|
|
317
|
-
|
|
318
|
-
```typescript
|
|
319
|
-
// ✅ Good: Reasonable template literal usage
|
|
320
|
-
type EventName = `on${Capitalize<string>}`;
|
|
321
|
-
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
322
|
-
type ApiEndpoint = `/${string}`;
|
|
323
|
-
|
|
324
|
-
// ❌ Bad: Overly complex template literals that slow compilation
|
|
325
|
-
type BadComplexTemplate<T extends Record<string, any>> = {
|
|
326
|
-
[K in keyof T as `get${Capitalize<string & K>}From${Capitalize<string>}With${Capitalize<string>}`]: T[K];
|
|
327
|
-
};
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
## Code Quality Checklist | 代码质量检查清单
|
|
331
|
-
|
|
332
|
-
- [ ] All functions have explicit return types
|
|
333
|
-
- [ ] Generic constraints are properly defined
|
|
334
|
-
- [ ] No usage of `any` or unsafe type assertions
|
|
335
|
-
- [ ] Proper error handling with typed errors
|
|
336
|
-
- [ ] Type guards are used for runtime validation
|
|
337
|
-
- [ ] Utility types are leveraged appropriately
|
|
338
|
-
- [ ] Complex types are broken down into smaller pieces
|
|
339
|
-
- [ ] Type-only imports are used where possible
|
|
340
|
-
- [ ] Branded types are used for domain safety
|
|
341
|
-
- [ ] Performance implications of types are considered
|
|
342
|
-
|
|
343
|
-
## 代码质量检查清单
|
|
344
|
-
|
|
345
|
-
- [ ] 所有函数都有明确的返回类型
|
|
346
|
-
- [ ] 泛型约束定义正确
|
|
347
|
-
- [ ] 不使用 `any` 或不安全的类型断言
|
|
348
|
-
- [ ] 使用类型化错误进行适当的错误处理
|
|
349
|
-
- [ ] 使用类型守卫进行运行时验证
|
|
350
|
-
- [ ] 适当利用工具类型
|
|
351
|
-
- [ ] 复杂类型被分解为更小的部分
|
|
352
|
-
- [ ] 在可能的地方使用仅类型导入
|
|
353
|
-
- [ ] 使用品牌类型确保领域安全
|
|
354
|
-
- [ ] 考虑类型的性能影响
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: type-fix
|
|
3
|
-
description: Fix TypeScript type errors with intelligent analysis
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: CCJK Team
|
|
6
|
-
category: debugging
|
|
7
|
-
triggers:
|
|
8
|
-
- /type-fix
|
|
9
|
-
- /fix-types
|
|
10
|
-
- /ts-fix
|
|
11
|
-
use_when:
|
|
12
|
-
- User has TypeScript errors
|
|
13
|
-
- When tsc reports type issues
|
|
14
|
-
- When fixing type annotations
|
|
15
|
-
auto_activate: true
|
|
16
|
-
priority: 8
|
|
17
|
-
user_invocable: true
|
|
18
|
-
context: inherit
|
|
19
|
-
args:
|
|
20
|
-
- name: target
|
|
21
|
-
description: File or directory with type errors
|
|
22
|
-
required: false
|
|
23
|
-
default: "."
|
|
24
|
-
type: path
|
|
25
|
-
allowed_tools:
|
|
26
|
-
- Read
|
|
27
|
-
- Edit
|
|
28
|
-
- Write
|
|
29
|
-
- Glob
|
|
30
|
-
- Grep
|
|
31
|
-
- Bash(tsc *)
|
|
32
|
-
- Bash(npx tsc *)
|
|
33
|
-
- mcp__ide__getDiagnostics
|
|
34
|
-
hooks:
|
|
35
|
-
- type: SkillActivate
|
|
36
|
-
command: "npx tsc --noEmit 2>&1 | head -50"
|
|
37
|
-
timeout: 300
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
# TypeScript Type Fix Skill
|
|
41
|
-
|
|
42
|
-
Intelligently fix TypeScript type errors using file operation tools and IDE diagnostics.
|
|
43
|
-
|
|
44
|
-
## Arguments
|
|
45
|
-
|
|
46
|
-
- `$0` - **target**: File or directory with type errors (default: current directory)
|
|
47
|
-
|
|
48
|
-
## Workflow
|
|
49
|
-
|
|
50
|
-
### Step 1: Diagnose
|
|
51
|
-
|
|
52
|
-
1. Run `tsc --noEmit` to get all type errors
|
|
53
|
-
2. Use `mcp__ide__getDiagnostics` if available for real-time errors
|
|
54
|
-
3. Parse and categorize errors by type
|
|
55
|
-
|
|
56
|
-
### Step 2: Analyze
|
|
57
|
-
|
|
58
|
-
Common error categories:
|
|
59
|
-
|
|
60
|
-
| Error Code | Description | Fix Strategy |
|
|
61
|
-
|------------|-------------|-------------|
|
|
62
|
-
| TS2304 | Cannot find name | Add import or declare |
|
|
63
|
-
| TS2322 | Type not assignable | Fix type annotation |
|
|
64
|
-
| TS2339 | Property doesn't exist | Add to interface or fix typo |
|
|
65
|
-
| TS2345 | Argument type mismatch | Cast or fix function signature |
|
|
66
|
-
| TS2531 | Object possibly null | Add null check |
|
|
67
|
-
| TS7006 | Parameter implicit any | Add type annotation |
|
|
68
|
-
|
|
69
|
-
### Step 3: Fix
|
|
70
|
-
|
|
71
|
-
For each error:
|
|
72
|
-
|
|
73
|
-
1. **Read** the file containing the error
|
|
74
|
-
2. **Analyze** the context around the error line
|
|
75
|
-
3. **Edit** with the minimal fix needed
|
|
76
|
-
4. **Verify** the fix resolves the error
|
|
77
|
-
|
|
78
|
-
## Fix Patterns
|
|
79
|
-
|
|
80
|
-
### Missing Import
|
|
81
|
-
```typescript
|
|
82
|
-
// Error: Cannot find name 'useState'
|
|
83
|
-
// Fix: Add import
|
|
84
|
-
import { useState } from 'react'
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Null Check
|
|
88
|
-
```typescript
|
|
89
|
-
// Error: Object is possibly 'undefined'
|
|
90
|
-
// Before
|
|
91
|
-
const name = user.name
|
|
92
|
-
|
|
93
|
-
// After
|
|
94
|
-
const name = user?.name ?? 'Unknown'
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Type Annotation
|
|
98
|
-
```typescript
|
|
99
|
-
// Error: Parameter 'x' implicitly has an 'any' type
|
|
100
|
-
// Before
|
|
101
|
-
function process(x) { ... }
|
|
102
|
-
|
|
103
|
-
// After
|
|
104
|
-
function process(x: string) { ... }
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Interface Extension
|
|
108
|
-
```typescript
|
|
109
|
-
// Error: Property 'newField' does not exist on type 'Config'
|
|
110
|
-
// Fix: Extend interface
|
|
111
|
-
interface Config {
|
|
112
|
-
existing: string
|
|
113
|
-
newField: number // Add missing property
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Important Rules
|
|
118
|
-
|
|
119
|
-
1. **Prefer specific types** over `any` or `unknown`
|
|
120
|
-
2. **Use type guards** instead of type assertions when possible
|
|
121
|
-
3. **Fix root cause** not just symptoms
|
|
122
|
-
4. **Preserve existing types** - don't break working code
|
|
123
|
-
5. **Run tsc after each fix** to verify
|
|
124
|
-
|
|
125
|
-
## Example Usage
|
|
126
|
-
|
|
127
|
-
```
|
|
128
|
-
/type-fix
|
|
129
|
-
/type-fix src/components/
|
|
130
|
-
/fix-types ./lib/api.ts
|
|
131
|
-
/ts-fix src/
|
|
132
|
-
```
|