docuking-mcp 1.3.0 → 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/index.js +84 -0
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -75,6 +75,87 @@ function saveLocalConfig(localPath, config) {
|
|
|
75
75
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* CLAUDE.md에 DocuKing MCP 작업 기록 규칙 추가
|
|
80
|
+
* - 파일이 없으면 새로 생성
|
|
81
|
+
* - 파일이 있으면 DocuKing 섹션이 없을 때만 추가
|
|
82
|
+
*/
|
|
83
|
+
function updateClaudeMd(localPath) {
|
|
84
|
+
const claudeMdPath = path.join(localPath, 'CLAUDE.md');
|
|
85
|
+
const marker = '## DocuKing AI 작업 기록 (필수)';
|
|
86
|
+
|
|
87
|
+
const docukingSection = `
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
${marker}
|
|
91
|
+
|
|
92
|
+
**모든 작업은 MCP 도구로 기록한다. 예외 없음.**
|
|
93
|
+
|
|
94
|
+
### 작업 시작 시 → \`docuking_plan\`
|
|
95
|
+
\`\`\`
|
|
96
|
+
docuking_plan({
|
|
97
|
+
localPath: "${localPath.replace(/\\/g, '\\\\')}",
|
|
98
|
+
title: "작업 제목",
|
|
99
|
+
goal: "작업 목표",
|
|
100
|
+
steps: [
|
|
101
|
+
{ name: "단계1", status: "pending" },
|
|
102
|
+
{ name: "단계2", status: "pending" }
|
|
103
|
+
]
|
|
104
|
+
})
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
### 단계 완료 시 → \`docuking_plan\` (업데이트)
|
|
108
|
+
\`\`\`
|
|
109
|
+
docuking_plan({
|
|
110
|
+
localPath: "${localPath.replace(/\\/g, '\\\\')}",
|
|
111
|
+
planId: "기존 planId",
|
|
112
|
+
title: "작업 제목",
|
|
113
|
+
steps: [
|
|
114
|
+
{ name: "단계1", status: "done", result: "결과 요약" },
|
|
115
|
+
{ name: "단계2", status: "in_progress" }
|
|
116
|
+
]
|
|
117
|
+
})
|
|
118
|
+
\`\`\`
|
|
119
|
+
|
|
120
|
+
### 작업 완료 시 → \`docuking_done\`
|
|
121
|
+
\`\`\`
|
|
122
|
+
docuking_done({
|
|
123
|
+
localPath: "${localPath.replace(/\\/g, '\\\\')}",
|
|
124
|
+
planId: "planId",
|
|
125
|
+
summary: "작업 완료 요약",
|
|
126
|
+
artifacts: ["변경된/파일/경로.ts"]
|
|
127
|
+
})
|
|
128
|
+
\`\`\`
|
|
129
|
+
|
|
130
|
+
### 절대 규칙
|
|
131
|
+
- **작업 시작 전 반드시 \`docuking_plan\` 호출**
|
|
132
|
+
- **작업 완료 후 반드시 \`docuking_done\` 호출**
|
|
133
|
+
- 결과는 \`z_DocuKing/z_PlanToResult/\`에 자동 저장됨
|
|
134
|
+
`;
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
if (fs.existsSync(claudeMdPath)) {
|
|
138
|
+
// 파일이 있으면 DocuKing 섹션 존재 여부 확인
|
|
139
|
+
const content = fs.readFileSync(claudeMdPath, 'utf-8');
|
|
140
|
+
if (content.includes(marker)) {
|
|
141
|
+
// 이미 DocuKing 섹션이 있으면 스킵
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
// 섹션이 없으면 끝에 추가
|
|
145
|
+
fs.appendFileSync(claudeMdPath, docukingSection, 'utf-8');
|
|
146
|
+
} else {
|
|
147
|
+
// 파일이 없으면 새로 생성
|
|
148
|
+
const newContent = `# Project Instructions
|
|
149
|
+
|
|
150
|
+
> AI가 이 프로젝트에서 작업할 때 참고할 지침
|
|
151
|
+
${docukingSection}`;
|
|
152
|
+
fs.writeFileSync(claudeMdPath, newContent, 'utf-8');
|
|
153
|
+
}
|
|
154
|
+
} catch (e) {
|
|
155
|
+
console.error('[DocuKing] CLAUDE.md 업데이트 실패:', e.message);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
78
159
|
// 프로젝트 정보 조회 (로컬 config에서)
|
|
79
160
|
function getProjectInfo(localPath) {
|
|
80
161
|
const config = getLocalConfig(localPath);
|
|
@@ -925,6 +1006,9 @@ docuking_init 호출 시 apiKey 파라미터를 포함해주세요.`,
|
|
|
925
1006
|
createdAt: new Date().toISOString(),
|
|
926
1007
|
});
|
|
927
1008
|
|
|
1009
|
+
// CLAUDE.md에 MCP 작업 기록 규칙 추가
|
|
1010
|
+
updateClaudeMd(localPath);
|
|
1011
|
+
|
|
928
1012
|
// 폴더 생성: 코워커는 zz_Coworker_{이름}/, 오너는 z_DocuKing/
|
|
929
1013
|
let folderName;
|
|
930
1014
|
let workingPath;
|