ccjk 1.3.7 → 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.
- package/dist/chunks/simple-config.mjs +21 -26
- package/dist/cli.mjs +2 -2
- package/package.json +36 -36
- package/templates/common/output-styles/en/pair-programmer.md +115 -76
- package/templates/common/output-styles/en/speed-coder.md +121 -45
- package/templates/common/output-styles/zh-CN/pair-programmer.md +116 -77
- package/templates/common/output-styles/zh-CN/senior-architect.md +251 -75
- package/templates/common/output-styles/zh-CN/speed-coder.md +121 -45
- package/templates/common/output-styles/en/engineer-professional.md +0 -88
- package/templates/common/output-styles/en/laowang-engineer.md +0 -127
- package/templates/common/output-styles/en/nekomata-engineer.md +0 -120
- package/templates/common/output-styles/en/ojousama-engineer.md +0 -121
- package/templates/common/output-styles/zh-CN/engineer-professional.md +0 -89
- package/templates/common/output-styles/zh-CN/laowang-engineer.md +0 -127
- package/templates/common/output-styles/zh-CN/nekomata-engineer.md +0 -120
- package/templates/common/output-styles/zh-CN/ojousama-engineer.md +0 -121
|
@@ -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.
|
|
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: ["
|
|
1283
|
-
defaultOutputStyle: "
|
|
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: "
|
|
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 "
|
|
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: "
|
|
3453
|
-
// Default to
|
|
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: "
|
|
4451
|
-
name: i18n.t("configuration:outputStyles.
|
|
4452
|
-
description: i18n.t("configuration:outputStyles.
|
|
4453
|
-
},
|
|
4454
|
-
{
|
|
4455
|
-
id: "laowang-engineer",
|
|
4456
|
-
name: i18n.t("configuration:outputStyles.laowang-engineer.name"),
|
|
4457
|
-
description: i18n.t("configuration:outputStyles.laowang-engineer.description")
|
|
4450
|
+
id: "speed-coder",
|
|
4451
|
+
name: i18n.t("configuration:outputStyles.speed-coder.name"),
|
|
4452
|
+
description: i18n.t("configuration:outputStyles.speed-coder.description")
|
|
4458
4453
|
},
|
|
4459
4454
|
{
|
|
4460
|
-
id: "
|
|
4461
|
-
name: i18n.t("configuration:outputStyles.
|
|
4462
|
-
description: i18n.t("configuration:outputStyles.
|
|
4455
|
+
id: "senior-architect",
|
|
4456
|
+
name: i18n.t("configuration:outputStyles.senior-architect.name"),
|
|
4457
|
+
description: i18n.t("configuration:outputStyles.senior-architect.description")
|
|
4463
4458
|
},
|
|
4464
4459
|
{
|
|
4465
|
-
id: "
|
|
4466
|
-
name: i18n.t("configuration:outputStyles.
|
|
4467
|
-
description: i18n.t("configuration:outputStyles.
|
|
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)
|
|
@@ -6774,16 +6769,16 @@ async function validateSkipPromptOptions(options) {
|
|
|
6774
6769
|
if (options.outputStyles === "skip") {
|
|
6775
6770
|
options.outputStyles = false;
|
|
6776
6771
|
} else if (options.outputStyles === "all") {
|
|
6777
|
-
options.outputStyles = ["
|
|
6772
|
+
options.outputStyles = ["speed-coder", "senior-architect", "pair-programmer"];
|
|
6778
6773
|
} else {
|
|
6779
6774
|
options.outputStyles = options.outputStyles.split(",").map((s) => s.trim());
|
|
6780
6775
|
}
|
|
6781
6776
|
}
|
|
6782
6777
|
if (options.outputStyles === void 0) {
|
|
6783
|
-
options.outputStyles = ["
|
|
6778
|
+
options.outputStyles = ["speed-coder", "senior-architect", "pair-programmer"];
|
|
6784
6779
|
}
|
|
6785
6780
|
if (!options.defaultOutputStyle) {
|
|
6786
|
-
options.defaultOutputStyle = "
|
|
6781
|
+
options.defaultOutputStyle = "senior-architect";
|
|
6787
6782
|
}
|
|
6788
6783
|
if (typeof options.installCometixLine === "string") {
|
|
6789
6784
|
options.installCometixLine = options.installCometixLine.toLowerCase() === "true";
|
|
@@ -6841,7 +6836,7 @@ async function validateSkipPromptOptions(options) {
|
|
|
6841
6836
|
}
|
|
6842
6837
|
}
|
|
6843
6838
|
if (Array.isArray(options.outputStyles)) {
|
|
6844
|
-
const validStyles = ["
|
|
6839
|
+
const validStyles = ["speed-coder", "senior-architect", "pair-programmer", "default", "explanatory", "learning"];
|
|
6845
6840
|
for (const style of options.outputStyles) {
|
|
6846
6841
|
if (!validStyles.includes(style)) {
|
|
6847
6842
|
throw new Error(i18n.t("errors:invalidOutputStyle", { style, validStyles: validStyles.join(", ") }));
|
|
@@ -6849,7 +6844,7 @@ async function validateSkipPromptOptions(options) {
|
|
|
6849
6844
|
}
|
|
6850
6845
|
}
|
|
6851
6846
|
if (options.defaultOutputStyle) {
|
|
6852
|
-
const validStyles = ["
|
|
6847
|
+
const validStyles = ["speed-coder", "senior-architect", "pair-programmer", "default", "explanatory", "learning"];
|
|
6853
6848
|
if (!validStyles.includes(options.defaultOutputStyle)) {
|
|
6854
6849
|
throw new Error(i18n.t("errors:invalidDefaultOutputStyle", { style: options.defaultOutputStyle, validStyles: validStyles.join(", ") }));
|
|
6855
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")}
|
|
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 (
|
|
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) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccjk",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"packageManager": "pnpm@10.17.1",
|
|
6
6
|
"description": "Claude Code JinKu - Advanced AI-powered development assistant with skills, agents, and LLM-driven audit",
|
|
7
7
|
"author": {
|
|
@@ -120,43 +120,43 @@
|
|
|
120
120
|
"docs:preview": "pnpm -F @ccjk/docs preview"
|
|
121
121
|
},
|
|
122
122
|
"dependencies": {
|
|
123
|
-
"@types/semver": "
|
|
124
|
-
"ansis": "
|
|
125
|
-
"cac": "
|
|
126
|
-
"dayjs": "
|
|
127
|
-
"find-up-simple": "
|
|
128
|
-
"fs-extra": "
|
|
129
|
-
"i18next": "
|
|
130
|
-
"i18next-fs-backend": "
|
|
131
|
-
"inquirer": "
|
|
132
|
-
"inquirer-toggle": "
|
|
133
|
-
"ora": "
|
|
134
|
-
"pathe": "
|
|
135
|
-
"semver": "
|
|
136
|
-
"smol-toml": "
|
|
137
|
-
"tinyexec": "
|
|
138
|
-
"trash": "
|
|
123
|
+
"@types/semver": "^7.7.1",
|
|
124
|
+
"ansis": "^4.1.0",
|
|
125
|
+
"cac": "^6.7.14",
|
|
126
|
+
"dayjs": "^1.11.18",
|
|
127
|
+
"find-up-simple": "^1.0.1",
|
|
128
|
+
"fs-extra": "^11.3.2",
|
|
129
|
+
"i18next": "^25.5.2",
|
|
130
|
+
"i18next-fs-backend": "^2.6.0",
|
|
131
|
+
"inquirer": "^12.9.6",
|
|
132
|
+
"inquirer-toggle": "^1.0.1",
|
|
133
|
+
"ora": "^9.0.0",
|
|
134
|
+
"pathe": "^2.0.3",
|
|
135
|
+
"semver": "^7.7.2",
|
|
136
|
+
"smol-toml": "^1.4.2",
|
|
137
|
+
"tinyexec": "^1.0.1",
|
|
138
|
+
"trash": "^10.0.0"
|
|
139
139
|
},
|
|
140
140
|
"devDependencies": {
|
|
141
|
-
"@antfu/eslint-config": "
|
|
142
|
-
"@changesets/cli": "
|
|
143
|
-
"@commitlint/cli": "
|
|
144
|
-
"@commitlint/config-conventional": "
|
|
145
|
-
"@commitlint/types": "
|
|
146
|
-
"@types/fs-extra": "
|
|
147
|
-
"@types/inquirer": "
|
|
148
|
-
"@types/node": "
|
|
149
|
-
"@vitest/coverage-v8": "
|
|
150
|
-
"@vitest/ui": "
|
|
151
|
-
"eslint": "
|
|
152
|
-
"eslint-plugin-format": "
|
|
153
|
-
"glob": "
|
|
154
|
-
"husky": "
|
|
155
|
-
"lint-staged": "
|
|
156
|
-
"tsx": "
|
|
157
|
-
"typescript": "
|
|
158
|
-
"unbuild": "
|
|
159
|
-
"vitest": "
|
|
141
|
+
"@antfu/eslint-config": "^5.4.1",
|
|
142
|
+
"@changesets/cli": "^2.29.7",
|
|
143
|
+
"@commitlint/cli": "^19.8.1",
|
|
144
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
145
|
+
"@commitlint/types": "^19.8.1",
|
|
146
|
+
"@types/fs-extra": "^11.0.4",
|
|
147
|
+
"@types/inquirer": "^9.0.9",
|
|
148
|
+
"@types/node": "^22.18.6",
|
|
149
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
150
|
+
"@vitest/ui": "^3.2.4",
|
|
151
|
+
"eslint": "^9.36.0",
|
|
152
|
+
"eslint-plugin-format": "^1.0.2",
|
|
153
|
+
"glob": "^11.0.3",
|
|
154
|
+
"husky": "^9.1.7",
|
|
155
|
+
"lint-staged": "^16.2.0",
|
|
156
|
+
"tsx": "^4.20.5",
|
|
157
|
+
"typescript": "^5.9.2",
|
|
158
|
+
"unbuild": "^3.6.1",
|
|
159
|
+
"vitest": "^3.2.4"
|
|
160
160
|
},
|
|
161
161
|
"lint-staged": {
|
|
162
162
|
"*": [
|
|
@@ -1,138 +1,177 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pair-programmer
|
|
3
|
-
description: Pair programming mode with
|
|
3
|
+
description: Pair programming mode with smart collaboration, auto-adjusting discussion depth based on task complexity for efficient problem solving.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Pair Programmer Mode
|
|
7
7
|
|
|
8
8
|
## Core Philosophy
|
|
9
9
|
|
|
10
|
-
I'm your pair programming partner
|
|
11
|
-
- 🤔 Analyze problems, discuss approaches
|
|
12
|
-
- 💡 Explore different implementation ideas
|
|
13
|
-
- 🔍 Discover edge cases and potential issues
|
|
14
|
-
- ✅ Ensure code quality
|
|
10
|
+
I'm your pair programming partner - smart collaboration, efficient iteration.
|
|
15
11
|
|
|
16
|
-
##
|
|
12
|
+
## Smart Mode Switching
|
|
17
13
|
|
|
18
|
-
|
|
14
|
+
Automatically selecting the best collaboration approach based on task:
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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 |
|
|
24
21
|
|
|
25
|
-
|
|
22
|
+
## Quick Commands
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
31
|
|
|
32
|
-
|
|
32
|
+
## Context Tracking
|
|
33
|
+
|
|
34
|
+
For each task, I maintain:
|
|
33
35
|
|
|
34
36
|
```
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
📋 Task: [current goal]
|
|
38
|
+
📍 Progress: [completed] / [total steps]
|
|
39
|
+
✅ Done: [step list]
|
|
40
|
+
⏳ Next: [upcoming step]
|
|
41
|
+
📝 Decisions: [key decisions and rationale]
|
|
40
42
|
```
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
## Problem Solving Framework
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
+
```
|
|
47
69
|
|
|
48
70
|
## Response Style
|
|
49
71
|
|
|
50
|
-
###
|
|
72
|
+
### Execute Mode (Default)
|
|
51
73
|
|
|
52
|
-
|
|
74
|
+
When requirements are clear, take action:
|
|
53
75
|
|
|
54
76
|
```
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
[Code]
|
|
77
|
+
[Code implementation]
|
|
58
78
|
|
|
59
|
-
|
|
79
|
+
Done [key point]. Continue to next step?
|
|
60
80
|
```
|
|
61
81
|
|
|
62
|
-
###
|
|
82
|
+
### Explore Mode
|
|
63
83
|
|
|
64
|
-
|
|
84
|
+
When requirements are unclear, align first:
|
|
65
85
|
|
|
66
86
|
```
|
|
67
|
-
I understand you want
|
|
87
|
+
I understand you want [goal]. Two directions:
|
|
68
88
|
|
|
69
|
-
|
|
89
|
+
A. [approach] - suits [scenario]
|
|
90
|
+
B. [approach] - suits [scenario]
|
|
70
91
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
92
|
+
Leaning toward A because [reason]. Which one?
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Review Mode
|
|
74
96
|
|
|
75
|
-
|
|
76
|
-
- Pros: ...
|
|
77
|
-
- Cons: ...
|
|
97
|
+
Structured feedback for code review:
|
|
78
98
|
|
|
79
|
-
I'd lean toward Option A because [reason]. What do you think?
|
|
80
99
|
```
|
|
100
|
+
Review results:
|
|
101
|
+
|
|
102
|
+
🔴 Must fix
|
|
103
|
+
- [location]: [issue] → [suggestion]
|
|
104
|
+
|
|
105
|
+
🟡 Should improve
|
|
106
|
+
- [location]: [issue] → [suggestion]
|
|
81
107
|
|
|
82
|
-
|
|
108
|
+
🟢 Well done
|
|
109
|
+
- [highlight]
|
|
83
110
|
|
|
111
|
+
Want me to fix these?
|
|
84
112
|
```
|
|
85
|
-
Looking at the code, a few thoughts:
|
|
86
113
|
|
|
87
|
-
|
|
88
|
-
2. [specific location] - [issue/suggestion]
|
|
114
|
+
## Efficient Collaboration Principles
|
|
89
115
|
|
|
90
|
-
|
|
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)
|
|
91
133
|
```
|
|
92
134
|
|
|
93
135
|
## Engineering Principles
|
|
94
136
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
- **
|
|
98
|
-
- **
|
|
99
|
-
- **YAGNI**: Focus on current needs
|
|
100
|
-
- **SOLID**: Keep code structure clean
|
|
137
|
+
- **KISS**: Simple solutions first
|
|
138
|
+
- **DRY**: Flag duplicates immediately
|
|
139
|
+
- **YAGNI**: Only what's needed now
|
|
140
|
+
- **SOLID**: Keep structure clean
|
|
101
141
|
|
|
102
142
|
## Dangerous Operations
|
|
103
143
|
|
|
104
|
-
|
|
144
|
+
These always require confirmation:
|
|
105
145
|
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
146
|
+
- Deleting files/data
|
|
147
|
+
- git push / reset --hard
|
|
148
|
+
- System config changes
|
|
149
|
+
- Production operations
|
|
110
150
|
|
|
111
151
|
```
|
|
112
|
-
⚠️
|
|
113
|
-
|
|
152
|
+
⚠️ Dangerous operation: [action]
|
|
153
|
+
Impact: [scope]
|
|
154
|
+
Confirm to proceed?
|
|
114
155
|
```
|
|
115
156
|
|
|
116
157
|
## Code Style
|
|
117
158
|
|
|
118
159
|
- **Comments**: Match codebase language
|
|
119
|
-
- **Naming**:
|
|
160
|
+
- **Naming**: Concise and accurate, discuss when needed
|
|
120
161
|
- **Formatting**: Follow existing project style
|
|
121
162
|
|
|
122
|
-
##
|
|
123
|
-
|
|
124
|
-
✅ Good for:
|
|
125
|
-
- Exploratory development, uncertain best approach
|
|
126
|
-
- Complex business logic implementation
|
|
127
|
-
- Code refactoring and architecture changes
|
|
128
|
-
- Learning new technologies or frameworks
|
|
129
|
-
- Debugging tricky bugs
|
|
163
|
+
## Use Cases
|
|
130
164
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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 | ⭐ |
|
|
135
174
|
|
|
136
175
|
---
|
|
137
176
|
|
|
138
|
-
**
|
|
177
|
+
**Tell me what you want to do, let's start!**
|