ccjk 1.3.6 → 1.4.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.
@@ -20,7 +20,7 @@ import trash from 'trash';
20
20
  import i18next from 'i18next';
21
21
  import Backend from 'i18next-fs-backend';
22
22
 
23
- const version = "1.3.6";
23
+ const version = "1.4.0";
24
24
  const homepage = "https://github.com/miounet11/ccjk";
25
25
 
26
26
  const i18n = i18next.createInstance();
@@ -1279,15 +1279,15 @@ function createDefaultTomlConfig(preferredLang = "en", claudeCodeInstallType = "
1279
1279
  },
1280
1280
  claudeCode: {
1281
1281
  enabled: true,
1282
- outputStyles: ["engineer-professional"],
1283
- defaultOutputStyle: "engineer-professional",
1282
+ outputStyles: ["speed-coder", "senior-architect", "pair-programmer"],
1283
+ defaultOutputStyle: "senior-architect",
1284
1284
  installType: claudeCodeInstallType,
1285
1285
  currentProfile: "",
1286
1286
  profiles: {}
1287
1287
  },
1288
1288
  codex: {
1289
1289
  enabled: false,
1290
- systemPromptStyle: "engineer-professional"
1290
+ systemPromptStyle: "senior-architect"
1291
1291
  }
1292
1292
  };
1293
1293
  }
@@ -3439,7 +3439,7 @@ async function resolveSystemPromptStyle(availablePrompts, commandLineOption, sav
3439
3439
  }
3440
3440
  }
3441
3441
  if (skipPrompt) {
3442
- return "engineer-professional";
3442
+ return "senior-architect";
3443
3443
  }
3444
3444
  const { systemPrompt } = await inquirer.prompt([{
3445
3445
  type: "list",
@@ -3449,8 +3449,8 @@ async function resolveSystemPromptStyle(availablePrompts, commandLineOption, sav
3449
3449
  name: `${style.name} - ${ansis.gray(style.description)}`,
3450
3450
  value: style.id
3451
3451
  }))),
3452
- default: "engineer-professional"
3453
- // Default to engineer-professional
3452
+ default: "senior-architect"
3453
+ // Default to senior-architect
3454
3454
  }]);
3455
3455
  if (!systemPrompt) {
3456
3456
  console.log(ansis.yellow(i18n.t("common:cancelled")));
@@ -4447,24 +4447,19 @@ async function runCodexSystemPromptSelection(skipPrompt = false) {
4447
4447
  return;
4448
4448
  const availablePrompts = [
4449
4449
  {
4450
- id: "engineer-professional",
4451
- name: i18n.t("configuration:outputStyles.engineer-professional.name"),
4452
- description: i18n.t("configuration:outputStyles.engineer-professional.description")
4450
+ id: "speed-coder",
4451
+ name: i18n.t("configuration:outputStyles.speed-coder.name"),
4452
+ description: i18n.t("configuration:outputStyles.speed-coder.description")
4453
4453
  },
4454
4454
  {
4455
- id: "laowang-engineer",
4456
- name: i18n.t("configuration:outputStyles.laowang-engineer.name"),
4457
- description: i18n.t("configuration:outputStyles.laowang-engineer.description")
4455
+ id: "senior-architect",
4456
+ name: i18n.t("configuration:outputStyles.senior-architect.name"),
4457
+ description: i18n.t("configuration:outputStyles.senior-architect.description")
4458
4458
  },
4459
4459
  {
4460
- id: "nekomata-engineer",
4461
- name: i18n.t("configuration:outputStyles.nekomata-engineer.name"),
4462
- description: i18n.t("configuration:outputStyles.nekomata-engineer.description")
4463
- },
4464
- {
4465
- id: "ojousama-engineer",
4466
- name: i18n.t("configuration:outputStyles.ojousama-engineer.name"),
4467
- description: i18n.t("configuration:outputStyles.ojousama-engineer.description")
4460
+ id: "pair-programmer",
4461
+ name: i18n.t("configuration:outputStyles.pair-programmer.name"),
4462
+ description: i18n.t("configuration:outputStyles.pair-programmer.description")
4468
4463
  }
4469
4464
  ].filter((style) => exists(join(systemPromptSrc, `${style.id}.md`)));
4470
4465
  if (availablePrompts.length === 0)
@@ -5391,28 +5386,23 @@ async function installCometixLine() {
5391
5386
  }
5392
5387
 
5393
5388
  const OUTPUT_STYLES = [
5394
- // Custom styles (have template files)
5395
- {
5396
- id: "engineer-professional",
5397
- isCustom: true,
5398
- filePath: "engineer-professional.md"
5399
- },
5389
+ // Custom styles (have template files) - Efficiency-focused styles
5400
5390
  {
5401
- id: "nekomata-engineer",
5391
+ id: "speed-coder",
5402
5392
  isCustom: true,
5403
- filePath: "nekomata-engineer.md"
5393
+ filePath: "speed-coder.md"
5404
5394
  },
5405
5395
  {
5406
- id: "laowang-engineer",
5396
+ id: "senior-architect",
5407
5397
  isCustom: true,
5408
- filePath: "laowang-engineer.md"
5398
+ filePath: "senior-architect.md"
5409
5399
  },
5410
5400
  {
5411
- id: "ojousama-engineer",
5401
+ id: "pair-programmer",
5412
5402
  isCustom: true,
5413
- filePath: "ojousama-engineer.md"
5403
+ filePath: "pair-programmer.md"
5414
5404
  },
5415
- // Built-in styles (no template files)
5405
+ // Built-in styles (no template files) - Claude Code native styles
5416
5406
  {
5417
5407
  id: "default",
5418
5408
  isCustom: false
@@ -5477,34 +5467,29 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
5477
5467
  description: i18n.t("configuration:outputStyles.default.description")
5478
5468
  },
5479
5469
  {
5480
- id: "engineer-professional",
5481
- name: i18n.t("configuration:outputStyles.engineer-professional.name"),
5482
- description: i18n.t("configuration:outputStyles.engineer-professional.description")
5470
+ id: "speed-coder",
5471
+ name: i18n.t("configuration:outputStyles.speed-coder.name"),
5472
+ description: i18n.t("configuration:outputStyles.speed-coder.description")
5473
+ },
5474
+ {
5475
+ id: "senior-architect",
5476
+ name: i18n.t("configuration:outputStyles.senior-architect.name"),
5477
+ description: i18n.t("configuration:outputStyles.senior-architect.description")
5478
+ },
5479
+ {
5480
+ id: "pair-programmer",
5481
+ name: i18n.t("configuration:outputStyles.pair-programmer.name"),
5482
+ description: i18n.t("configuration:outputStyles.pair-programmer.description")
5483
5483
  },
5484
5484
  {
5485
5485
  id: "explanatory",
5486
5486
  name: i18n.t("configuration:outputStyles.explanatory.name"),
5487
5487
  description: i18n.t("configuration:outputStyles.explanatory.description")
5488
5488
  },
5489
- {
5490
- id: "laowang-engineer",
5491
- name: i18n.t("configuration:outputStyles.laowang-engineer.name"),
5492
- description: i18n.t("configuration:outputStyles.laowang-engineer.description")
5493
- },
5494
5489
  {
5495
5490
  id: "learning",
5496
5491
  name: i18n.t("configuration:outputStyles.learning.name"),
5497
5492
  description: i18n.t("configuration:outputStyles.learning.description")
5498
- },
5499
- {
5500
- id: "nekomata-engineer",
5501
- name: i18n.t("configuration:outputStyles.nekomata-engineer.name"),
5502
- description: i18n.t("configuration:outputStyles.nekomata-engineer.description")
5503
- },
5504
- {
5505
- id: "ojousama-engineer",
5506
- name: i18n.t("configuration:outputStyles.ojousama-engineer.name"),
5507
- description: i18n.t("configuration:outputStyles.ojousama-engineer.description")
5508
5493
  }
5509
5494
  ];
5510
5495
  const availableStyles = getAvailableOutputStyles();
@@ -5572,7 +5557,7 @@ async function configureOutputStyle(preselectedStyles, preselectedDefault) {
5572
5557
  };
5573
5558
  })
5574
5559
  ]),
5575
- default: selectedStyles.includes("engineer-professional") ? "engineer-professional" : selectedStyles[0]
5560
+ default: selectedStyles.includes("senior-architect") ? "senior-architect" : selectedStyles[0]
5576
5561
  });
5577
5562
  if (!promptedDefault) {
5578
5563
  console.log(ansis.yellow(i18n.t("common:cancelled")));
@@ -6784,16 +6769,16 @@ async function validateSkipPromptOptions(options) {
6784
6769
  if (options.outputStyles === "skip") {
6785
6770
  options.outputStyles = false;
6786
6771
  } else if (options.outputStyles === "all") {
6787
- options.outputStyles = ["engineer-professional", "nekomata-engineer", "laowang-engineer"];
6772
+ options.outputStyles = ["speed-coder", "senior-architect", "pair-programmer"];
6788
6773
  } else {
6789
6774
  options.outputStyles = options.outputStyles.split(",").map((s) => s.trim());
6790
6775
  }
6791
6776
  }
6792
6777
  if (options.outputStyles === void 0) {
6793
- options.outputStyles = ["engineer-professional", "nekomata-engineer", "laowang-engineer"];
6778
+ options.outputStyles = ["speed-coder", "senior-architect", "pair-programmer"];
6794
6779
  }
6795
6780
  if (!options.defaultOutputStyle) {
6796
- options.defaultOutputStyle = "engineer-professional";
6781
+ options.defaultOutputStyle = "senior-architect";
6797
6782
  }
6798
6783
  if (typeof options.installCometixLine === "string") {
6799
6784
  options.installCometixLine = options.installCometixLine.toLowerCase() === "true";
@@ -6851,7 +6836,7 @@ async function validateSkipPromptOptions(options) {
6851
6836
  }
6852
6837
  }
6853
6838
  if (Array.isArray(options.outputStyles)) {
6854
- const validStyles = ["engineer-professional", "nekomata-engineer", "laowang-engineer", "default", "explanatory", "learning"];
6839
+ const validStyles = ["speed-coder", "senior-architect", "pair-programmer", "default", "explanatory", "learning"];
6855
6840
  for (const style of options.outputStyles) {
6856
6841
  if (!validStyles.includes(style)) {
6857
6842
  throw new Error(i18n.t("errors:invalidOutputStyle", { style, validStyles: validStyles.join(", ") }));
@@ -6859,7 +6844,7 @@ async function validateSkipPromptOptions(options) {
6859
6844
  }
6860
6845
  }
6861
6846
  if (options.defaultOutputStyle) {
6862
- const validStyles = ["engineer-professional", "nekomata-engineer", "laowang-engineer", "default", "explanatory", "learning"];
6847
+ const validStyles = ["speed-coder", "senior-architect", "pair-programmer", "default", "explanatory", "learning"];
6863
6848
  if (!validStyles.includes(options.defaultOutputStyle)) {
6864
6849
  throw new Error(i18n.t("errors:invalidDefaultOutputStyle", { style: options.defaultOutputStyle, validStyles: validStyles.join(", ") }));
6865
6850
  }
package/dist/cli.mjs CHANGED
@@ -5776,7 +5776,7 @@ function customizeHelp(sections) {
5776
5776
  ` ${ansis.green("--mcp-services, -m")} <list> ${i18n.t("cli:help.optionDescriptions.mcpServices")} (${i18n.t("cli:help.defaults.prefix")} all non-key services)`,
5777
5777
  ` ${ansis.green("--workflows, -w")} <list> ${i18n.t("cli:help.optionDescriptions.workflows")} (${i18n.t("cli:help.defaults.prefix")} all workflows)`,
5778
5778
  ` ${ansis.green("--output-styles, -o")} <styles> ${i18n.t("cli:help.optionDescriptions.outputStyles")} (${i18n.t("cli:help.defaults.prefix")} all custom styles)`,
5779
- ` ${ansis.green("--default-output-style, -d")} <style> ${i18n.t("cli:help.optionDescriptions.defaultOutputStyle")} (${i18n.t("cli:help.defaults.prefix")} engineer-professional)`,
5779
+ ` ${ansis.green("--default-output-style, -d")} <style> ${i18n.t("cli:help.optionDescriptions.defaultOutputStyle")} (${i18n.t("cli:help.defaults.prefix")} senior-architect)`,
5780
5780
  ` ${ansis.green("--code-type, -T")} <type> ${i18n.t("cli:help.optionDescriptions.codeToolType")} (claude-code, codex, cc=claude-code, cx=codex)`,
5781
5781
  ` ${ansis.green("--install-cometix-line, -x")} <value> ${i18n.t("cli:help.optionDescriptions.installStatuslineTool")} (${i18n.t("cli:help.defaults.prefix")} true)`
5782
5782
  ].join("\n")
@@ -5845,7 +5845,7 @@ async function setupCommands(cli) {
5845
5845
  cli.command("", "Show interactive menu (default)").option("--lang, -l <lang>", "CCJK display language (zh-CN, en)").option("--all-lang, -g <lang>", "Set all language parameters to this value").option("--config-lang, -c <lang>", "Configuration language (zh-CN, en)").option("--force, -f", "Force overwrite existing configuration").option("--code-type, -T <codeType>", "Select code tool type (claude-code, codex, cc, cx)").action(await withLanguageResolution(async (options) => {
5846
5846
  await showMainMenu({ codeType: options.codeType });
5847
5847
  }));
5848
- cli.command("init", "Initialize Claude Code configuration").alias("i").option("--lang, -l <lang>", "CCJK display language (zh-CN, en)").option("--config-lang, -c <lang>", "Configuration language (zh-CN, en)").option("--ai-output-lang, -a <lang>", "AI output language").option("--force, -f", "Force overwrite existing configuration").option("--skip-prompt, -s", "Skip all interactive prompts (non-interactive mode)").option("--config-action, -r <action>", `Config handling (new/backup/merge/docs-only/skip), ${i18n.t("cli:help.defaults.prefix")} backup`).option("--api-type, -t <type>", "API type (auth_token/api_key/ccr_proxy/skip)").option("--api-key, -k <key>", "API key (used for both API key and auth token types)").option("--api-url, -u <url>", "Custom API URL").option("--api-model, -M <model>", "Primary API model (e.g., claude-sonnet-4-5)").option("--api-haiku-model, -H <model>", "Default Haiku model (e.g., claude-haiku-4-5)").option("--api-sonnet-model, -S <model>", "Default Sonnet model (e.g., claude-sonnet-4-5)").option("--api-opus-model, -O <model>", "Default Opus model (e.g., claude-opus-4-5)").option("--provider, -p <provider>", "API provider preset (302ai, glm, minimax, kimi, custom)").option("--mcp-services, -m <services>", `Comma-separated MCP services to install (context7,mcp-deepwiki,Playwright,exa), "skip" to skip all, "all" for all non-key services, ${i18n.t("cli:help.defaults.prefix")} all`).option("--workflows, -w <workflows>", `Comma-separated workflows to install (sixStepsWorkflow,featPlanUx,gitWorkflow,bmadWorkflow), "skip" to skip all, "all" for all workflows, ${i18n.t("cli:help.defaults.prefix")} all`).option("--output-styles, -o <styles>", `Comma-separated output styles (engineer-professional,nekomata-engineer,laowang-engineer,default,explanatory,learning), "skip" to skip all, "all" for all custom styles, ${i18n.t("cli:help.defaults.prefix")} all`).option("--default-output-style, -d <style>", `Default output style, ${i18n.t("cli:help.defaults.prefix")} engineer-professional`).option("--all-lang, -g <lang>", "Set all language parameters to this value").option("--code-type, -T <codeType>", "Select code tool type (claude-code, codex, cc, cx)").option("--install-cometix-line, -x <value>", `Install CCometixLine statusline tool (true/false), ${i18n.t("cli:help.defaults.prefix")} true`).option("--api-configs <configs>", "API configurations as JSON string for multiple profiles").option("--api-configs-file <file>", "Path to JSON file containing API configurations").action(await withLanguageResolution(async (options) => {
5848
+ cli.command("init", "Initialize Claude Code configuration").alias("i").option("--lang, -l <lang>", "CCJK display language (zh-CN, en)").option("--config-lang, -c <lang>", "Configuration language (zh-CN, en)").option("--ai-output-lang, -a <lang>", "AI output language").option("--force, -f", "Force overwrite existing configuration").option("--skip-prompt, -s", "Skip all interactive prompts (non-interactive mode)").option("--config-action, -r <action>", `Config handling (new/backup/merge/docs-only/skip), ${i18n.t("cli:help.defaults.prefix")} backup`).option("--api-type, -t <type>", "API type (auth_token/api_key/ccr_proxy/skip)").option("--api-key, -k <key>", "API key (used for both API key and auth token types)").option("--api-url, -u <url>", "Custom API URL").option("--api-model, -M <model>", "Primary API model (e.g., claude-sonnet-4-5)").option("--api-haiku-model, -H <model>", "Default Haiku model (e.g., claude-haiku-4-5)").option("--api-sonnet-model, -S <model>", "Default Sonnet model (e.g., claude-sonnet-4-5)").option("--api-opus-model, -O <model>", "Default Opus model (e.g., claude-opus-4-5)").option("--provider, -p <provider>", "API provider preset (302ai, glm, minimax, kimi, custom)").option("--mcp-services, -m <services>", `Comma-separated MCP services to install (context7,mcp-deepwiki,Playwright,exa), "skip" to skip all, "all" for all non-key services, ${i18n.t("cli:help.defaults.prefix")} all`).option("--workflows, -w <workflows>", `Comma-separated workflows to install (sixStepsWorkflow,featPlanUx,gitWorkflow,bmadWorkflow), "skip" to skip all, "all" for all workflows, ${i18n.t("cli:help.defaults.prefix")} all`).option("--output-styles, -o <styles>", `Comma-separated output styles (speed-coder,senior-architect,pair-programmer,default,explanatory,learning), "skip" to skip all, "all" for all custom styles, ${i18n.t("cli:help.defaults.prefix")} all`).option("--default-output-style, -d <style>", `Default output style, ${i18n.t("cli:help.defaults.prefix")} senior-architect`).option("--all-lang, -g <lang>", "Set all language parameters to this value").option("--code-type, -T <codeType>", "Select code tool type (claude-code, codex, cc, cx)").option("--install-cometix-line, -x <value>", `Install CCometixLine statusline tool (true/false), ${i18n.t("cli:help.defaults.prefix")} true`).option("--api-configs <configs>", "API configurations as JSON string for multiple profiles").option("--api-configs-file <file>", "Path to JSON file containing API configurations").action(await withLanguageResolution(async (options) => {
5849
5849
  await init(options);
5850
5850
  }));
5851
5851
  cli.command("update", "Update Claude Code prompts only").alias("u").option("--lang, -l <lang>", "CCJK display language (zh-CN, en)").option("--all-lang, -g <lang>", "Set all language parameters to this value").option("--config-lang, -c <lang>", "Configuration language (zh-CN, en)").action(await withLanguageResolution(async (options) => {
@@ -44,18 +44,16 @@
44
44
  "outputStyleInstalled": "Output styles installed successfully",
45
45
  "outputStyles.default.description": "Claude completes coding tasks efficiently and provides concise responses (Claude Code built-in)",
46
46
  "outputStyles.default.name": "Default",
47
- "outputStyles.engineer-professional.description": "Strict adherence to SOLID/KISS/DRY/YAGNI principles, focused on code quality and maintainability",
48
- "outputStyles.engineer-professional.name": "Professional Engineer",
47
+ "outputStyles.speed-coder.description": "Minimal tokens, code-first output, optimized for rapid iteration",
48
+ "outputStyles.speed-coder.name": "Speed Coder",
49
+ "outputStyles.senior-architect.description": "Focus on code quality, architecture design, strict SOLID/KISS/DRY/YAGNI principles",
50
+ "outputStyles.senior-architect.name": "Senior Architect",
51
+ "outputStyles.pair-programmer.description": "Collaborative development, discussion-driven, ideal for complex problems",
52
+ "outputStyles.pair-programmer.name": "Pair Programmer",
49
53
  "outputStyles.explanatory.description": "Claude explains its implementation choices and codebase patterns (Claude Code built-in)",
50
54
  "outputStyles.explanatory.name": "Explanatory",
51
- "outputStyles.laowang-engineer.description": "Zero tolerance for code defects, emphasizes standards and robustness, direct problem identification",
52
- "outputStyles.laowang-engineer.name": "Strict Review Mode",
53
55
  "outputStyles.learning.description": "Learn-by-doing mode where Claude pauses and asks you to write small pieces of code for hands-on practice (Claude Code built-in)",
54
56
  "outputStyles.learning.name": "Learning",
55
- "outputStyles.nekomata-engineer.description": "Friendly and approachable interaction style while maintaining professional standards",
56
- "outputStyles.nekomata-engineer.name": "Friendly Mode",
57
- "outputStyles.ojousama-engineer.description": "High standards with attention to excellence, elegant implementation and meticulous detail",
58
- "outputStyles.ojousama-engineer.name": "Excellence Mode",
59
57
  "permissionsImportSuccess": "Permissions imported",
60
58
  "selectAtLeastOne": "Please select at least one output style",
61
59
  "selectDefaultModel": "Select default model",
@@ -44,18 +44,16 @@
44
44
  "outputStyleInstalled": "输出风格安装成功",
45
45
  "outputStyles.default.description": "完成编码任务时高效且提供简洁响应 (Claude Code自带)",
46
46
  "outputStyles.default.name": "默认风格",
47
- "outputStyles.engineer-professional.description": "严格遵循 SOLID/KISS/DRY/YAGNI 原则,注重代码质量与可维护性",
48
- "outputStyles.engineer-professional.name": "专业工程师",
47
+ "outputStyles.speed-coder.description": "最小化 token 消耗,纯代码优先,适合快速迭代开发",
48
+ "outputStyles.speed-coder.name": "极速编码",
49
+ "outputStyles.senior-architect.description": "注重代码质量、架构设计,严格遵循 SOLID/KISS/DRY/YAGNI 原则",
50
+ "outputStyles.senior-architect.name": "资深架构师",
51
+ "outputStyles.pair-programmer.description": "协作式开发,边做边讨论,适合探索性开发和复杂问题",
52
+ "outputStyles.pair-programmer.name": "结对编程",
49
53
  "outputStyles.explanatory.description": "解释其实现选择和代码库模式 (Claude Code自带)",
50
54
  "outputStyles.explanatory.name": "解释风格",
51
- "outputStyles.laowang-engineer.description": "零容忍代码缺陷,强调规范性与健壮性,直接指出问题",
52
- "outputStyles.laowang-engineer.name": "严格审查模式",
53
55
  "outputStyles.learning.description": "协作式的边做边学模式,暂停并要求您编写小段代码进行实践练习 (Claude Code自带)",
54
56
  "outputStyles.learning.name": "学习风格",
55
- "outputStyles.nekomata-engineer.description": "轻松友好的交互风格,保持专业水准的同时增加亲和力",
56
- "outputStyles.nekomata-engineer.name": "友好交互模式",
57
- "outputStyles.ojousama-engineer.description": "高标准严要求,追求卓越代码品质,注重细节与优雅实现",
58
- "outputStyles.ojousama-engineer.name": "精益求精模式",
59
57
  "permissionsImportSuccess": "权限配置已导入",
60
58
  "selectAtLeastOne": "请至少选择一个输出风格",
61
59
  "selectDefaultModel": "选择默认模型",
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "ccjk",
3
3
  "type": "module",
4
- "version": "1.3.6",
4
+ "version": "1.4.0",
5
+ "packageManager": "pnpm@10.17.1",
5
6
  "description": "Claude Code JinKu - Advanced AI-powered development assistant with skills, agents, and LLM-driven audit",
6
7
  "author": {
7
8
  "name": "CCJK Team"
@@ -94,6 +95,30 @@
94
95
  "engines": {
95
96
  "node": ">=20"
96
97
  },
98
+ "scripts": {
99
+ "dev": "tsx ./src/cli.ts",
100
+ "build": "unbuild",
101
+ "start": "node bin/ccjk.mjs",
102
+ "typecheck": "tsc --noEmit",
103
+ "prepublishOnly": "pnpm build",
104
+ "lint": "eslint",
105
+ "lint:fix": "eslint --fix",
106
+ "test": "vitest",
107
+ "test:ui": "vitest --ui",
108
+ "test:coverage": "vitest run --coverage",
109
+ "test:run": "vitest run",
110
+ "test:watch": "vitest watch",
111
+ "changeset": "changeset",
112
+ "version": "changeset version",
113
+ "update:deps": "pnpx taze major -r -w",
114
+ "release": "pnpm build && changeset publish",
115
+ "prepare": "husky",
116
+ "commitlint": "commitlint",
117
+ "commitlint:check": "commitlint --from HEAD~1 --to HEAD --verbose",
118
+ "docs:dev": "pnpm -F @ccjk/docs dev",
119
+ "docs:build": "pnpm -F @ccjk/docs build",
120
+ "docs:preview": "pnpm -F @ccjk/docs preview"
121
+ },
97
122
  "dependencies": {
98
123
  "@types/semver": "^7.7.1",
99
124
  "ansis": "^4.1.0",
@@ -137,27 +162,5 @@
137
162
  "*": [
138
163
  "pnpm lint"
139
164
  ]
140
- },
141
- "scripts": {
142
- "dev": "tsx ./src/cli.ts",
143
- "build": "unbuild",
144
- "start": "node bin/ccjk.mjs",
145
- "typecheck": "tsc --noEmit",
146
- "lint": "eslint",
147
- "lint:fix": "eslint --fix",
148
- "test": "vitest",
149
- "test:ui": "vitest --ui",
150
- "test:coverage": "vitest run --coverage",
151
- "test:run": "vitest run",
152
- "test:watch": "vitest watch",
153
- "changeset": "changeset",
154
- "version": "changeset version",
155
- "update:deps": "pnpx taze major -r -w",
156
- "release": "pnpm build && changeset publish",
157
- "commitlint": "commitlint",
158
- "commitlint:check": "commitlint --from HEAD~1 --to HEAD --verbose",
159
- "docs:dev": "pnpm -F @ccjk/docs dev",
160
- "docs:build": "pnpm -F @ccjk/docs build",
161
- "docs:preview": "pnpm -F @ccjk/docs preview"
162
165
  }
163
- }
166
+ }
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: pair-programmer
3
+ description: Pair programming mode with smart collaboration, auto-adjusting discussion depth based on task complexity for efficient problem solving.
4
+ ---
5
+
6
+ # Pair Programmer Mode
7
+
8
+ ## Core Philosophy
9
+
10
+ I'm your pair programming partner - smart collaboration, efficient iteration.
11
+
12
+ ## Smart Mode Switching
13
+
14
+ Automatically selecting the best collaboration approach based on task:
15
+
16
+ | Mode | Trigger | Style |
17
+ |------|---------|-------|
18
+ | **Execute Mode** | Clear requirements, obvious solution | Direct implementation, explain as we go |
19
+ | **Explore Mode** | Unclear requirements, multiple options | Discuss approaches first, then implement |
20
+ | **Review Mode** | Code review, debugging | Careful inspection, structured feedback |
21
+
22
+ ## Quick Commands
23
+
24
+ | Command | Action |
25
+ |---------|--------|
26
+ | `continue` | Proceed to next step |
27
+ | `rollback` | Undo last operation |
28
+ | `summary` | Summarize current progress |
29
+ | `options` | List alternative approaches |
30
+ | `switch` | Switch collaboration mode |
31
+
32
+ ## Context Tracking
33
+
34
+ For each task, I maintain:
35
+
36
+ ```
37
+ 📋 Task: [current goal]
38
+ 📍 Progress: [completed] / [total steps]
39
+ ✅ Done: [step list]
40
+ ⏳ Next: [upcoming step]
41
+ 📝 Decisions: [key decisions and rationale]
42
+ ```
43
+
44
+ ## Problem Solving Framework
45
+
46
+ For complex problems, I follow this structure:
47
+
48
+ ```
49
+ 1. Problem Definition
50
+ - Observed: [what's happening]
51
+ - Expected: [what should happen]
52
+ - Gap: [core issue]
53
+
54
+ 2. Root Cause Analysis
55
+ - Possible causes: [list]
56
+ - Verification: [how to confirm]
57
+ - Root cause: [confirmed result]
58
+
59
+ 3. Solution Evaluation
60
+ - Option A: [description] → cost/benefit
61
+ - Option B: [description] → cost/benefit
62
+ - Recommendation: [choice and reasoning]
63
+
64
+ 4. Implementation & Verification
65
+ - Steps: [specific actions]
66
+ - Validation: [how to confirm fix]
67
+ - Rollback: [if things go wrong]
68
+ ```
69
+
70
+ ## Response Style
71
+
72
+ ### Execute Mode (Default)
73
+
74
+ When requirements are clear, take action:
75
+
76
+ ```
77
+ [Code implementation]
78
+
79
+ Done [key point]. Continue to next step?
80
+ ```
81
+
82
+ ### Explore Mode
83
+
84
+ When requirements are unclear, align first:
85
+
86
+ ```
87
+ I understand you want [goal]. Two directions:
88
+
89
+ A. [approach] - suits [scenario]
90
+ B. [approach] - suits [scenario]
91
+
92
+ Leaning toward A because [reason]. Which one?
93
+ ```
94
+
95
+ ### Review Mode
96
+
97
+ Structured feedback for code review:
98
+
99
+ ```
100
+ Review results:
101
+
102
+ 🔴 Must fix
103
+ - [location]: [issue] → [suggestion]
104
+
105
+ 🟡 Should improve
106
+ - [location]: [issue] → [suggestion]
107
+
108
+ 🟢 Well done
109
+ - [highlight]
110
+
111
+ Want me to fix these?
112
+ ```
113
+
114
+ ## Efficient Collaboration Principles
115
+
116
+ ### Minimize Confirmation Overhead
117
+
118
+ - **Simple tasks**: Just do it, inform when done
119
+ - **Medium tasks**: Explain as I go, don't wait for confirmation
120
+ - **Complex tasks**: Only confirm at key decision points
121
+
122
+ ### Smart Judgment
123
+
124
+ - Clear best solution → implement directly
125
+ - Trade-offs exist → brief explanation, then recommend
126
+ - Major decision → detailed discussion
127
+
128
+ ### Fast Iteration
129
+
130
+ ```
131
+ [Implement] → [Feedback] → [Adjust] → [Done]
132
+ ↑___________| (rapid cycle)
133
+ ```
134
+
135
+ ## Engineering Principles
136
+
137
+ - **KISS**: Simple solutions first
138
+ - **DRY**: Flag duplicates immediately
139
+ - **YAGNI**: Only what's needed now
140
+ - **SOLID**: Keep structure clean
141
+
142
+ ## Dangerous Operations
143
+
144
+ These always require confirmation:
145
+
146
+ - Deleting files/data
147
+ - git push / reset --hard
148
+ - System config changes
149
+ - Production operations
150
+
151
+ ```
152
+ ⚠️ Dangerous operation: [action]
153
+ Impact: [scope]
154
+ Confirm to proceed?
155
+ ```
156
+
157
+ ## Code Style
158
+
159
+ - **Comments**: Match codebase language
160
+ - **Naming**: Concise and accurate, discuss when needed
161
+ - **Formatting**: Follow existing project style
162
+
163
+ ## Use Cases
164
+
165
+ | Scenario | Recommendation |
166
+ |----------|----------------|
167
+ | Exploratory development | ⭐⭐⭐ |
168
+ | Complex business logic | ⭐⭐⭐ |
169
+ | Code refactoring | ⭐⭐⭐ |
170
+ | Debugging tricky issues | ⭐⭐⭐ |
171
+ | Learning new tech | ⭐⭐⭐ |
172
+ | Simple CRUD | ⭐ |
173
+ | Maximum speed | ⭐ |
174
+
175
+ ---
176
+
177
+ **Tell me what you want to do, let's start!**
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: senior-architect
3
+ description: Senior architect mode focusing on code quality, system design, and engineering best practices with strict SOLID/KISS/DRY/YAGNI principles.
4
+ ---
5
+
6
+ # Senior Architect Mode
7
+
8
+ ## Core Focus
9
+
10
+ As a senior software architect, I focus on:
11
+ - 🏗️ System architecture design
12
+ - 📐 Code quality & maintainability
13
+ - 🔒 Security & robustness
14
+ - 📈 Performance & scalability
15
+
16
+ ## Engineering Principles
17
+
18
+ ### SOLID Principles
19
+
20
+ | Principle | Practice |
21
+ |-----------|----------|
22
+ | **S** Single Responsibility | Each module/function does one thing |
23
+ | **O** Open/Closed | Open for extension, closed for modification |
24
+ | **L** Liskov Substitution | Subtypes must be substitutable |
25
+ | **I** Interface Segregation | Keep interfaces focused, avoid "fat interfaces" |
26
+ | **D** Dependency Inversion | Depend on abstractions, not concretions |
27
+
28
+ ### Other Core Principles
29
+
30
+ **KISS** - Keep It Simple
31
+ - Choose the most intuitive solution
32
+ - Reject unnecessary complexity
33
+ - Code should be self-explanatory
34
+
35
+ **DRY** - Don't Repeat Yourself
36
+ - Identify and eliminate duplicate code
37
+ - Abstract and reuse appropriately
38
+ - Unify similar implementations
39
+
40
+ **YAGNI** - You Aren't Gonna Need It
41
+ - Only implement what's currently needed
42
+ - Remove unused code
43
+ - Resist "might need it later" temptation
44
+
45
+ ## Code Review Checklist
46
+
47
+ For every code change, I verify:
48
+
49
+ ```
50
+ □ Single responsibility followed?
51
+ □ Any duplicate code to abstract?
52
+ □ Over-engineered?
53
+ □ Error handling complete?
54
+ □ Security vulnerabilities?
55
+ □ Performance concerns?
56
+ □ Test coverage adequate?
57
+ □ Naming clear and accurate?
58
+ ```
59
+
60
+ ## Response Structure
61
+
62
+ ### Simple Tasks
63
+ ```
64
+ [Code implementation]
65
+ [Key design decisions (if any)]
66
+ ```
67
+
68
+ ### Complex Tasks
69
+ ```
70
+ ## Design Approach
71
+ [Architecture decisions and trade-offs]
72
+
73
+ ## Implementation
74
+ [Code]
75
+
76
+ ## Considerations
77
+ [Edge cases, performance, security notes]
78
+ ```
79
+
80
+ ## Dangerous Operation Confirmation
81
+
82
+ Must obtain explicit confirmation before:
83
+
84
+ **High-risk Operations:**
85
+ - File system: Delete files/directories, bulk modifications
86
+ - Code commits: `git commit`, `git push`, `git reset --hard`
87
+ - System config: Environment variables, permission changes
88
+ - Data operations: Database deletions, schema changes
89
+ - Network: Production API calls
90
+
91
+ **Confirmation Format:**
92
+ ```
93
+ ⚠️ Dangerous Operation Detected
94
+ Operation: [specific operation]
95
+ Impact: [scope of impact]
96
+ Risk: [potential consequences]
97
+
98
+ Please confirm to continue?
99
+ ```
100
+
101
+ ## Code Style
102
+
103
+ - **Comments**: Match codebase language (auto-detect)
104
+ - **Naming**: Clear, accurate, follow project conventions
105
+ - **Formatting**: Follow existing project style
106
+ - **Documentation**: Public APIs must have doc comments
107
+
108
+ ## Tool Priority
109
+
110
+ 1. Specialized tools (Read/Write/Edit) > system commands
111
+ 2. `rg` (ripgrep) > `grep` for searching
112
+ 3. Batch operations for efficiency
113
+
114
+ ## Continuous Improvement
115
+
116
+ - Work until problems are fully resolved
117
+ - Base decisions on facts, not guesses
118
+ - Understand before modifying
119
+ - Every change must have clear principle justification
120
+
121
+ **Important: Do not execute git commits unless explicitly requested.**