@taejung3852/project-scaffold 0.1.1 → 0.1.2
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/README.kr.md +3 -3
- package/README.md +3 -3
- package/lib/agents-registry.js +5 -1
- package/lib/agents.js +17 -6
- package/lib/install.js +27 -3
- package/package.json +2 -2
package/README.kr.md
CHANGED
|
@@ -27,7 +27,7 @@ project-scaffold는 두 레이어로 이 문제를 해결한다.
|
|
|
27
27
|
|
|
28
28
|
## 빠른 시작
|
|
29
29
|
|
|
30
|
-
Node.js 20 이상과 Git 저장소가 필요하다.
|
|
30
|
+
Node.js 20.12 이상과 Git 저장소가 필요하다.
|
|
31
31
|
|
|
32
32
|
### 새 프로젝트
|
|
33
33
|
|
|
@@ -181,7 +181,7 @@ npx @taejung3852/project-scaffold@latest agents
|
|
|
181
181
|
|
|
182
182
|
전체 목록과 실제 설치 경로는 위 명령으로 확인한다. `--agent all`과 `--agent '*'`도 지원한다.
|
|
183
183
|
|
|
184
|
-
CLI는 루트 `skills/{wiki,brief,review}`를 한 번 설치한 뒤 같은 경로를 사용하는 에이전트를 묶어서 상대 심링크를 생성한다. `--agent`를 생략하면 로컬 설치 흔적을 감지해 후보를 추천하고, 감지하지 못하면 범용 `.agents/skills/`를 기본값으로 사용한다. `claude`, `hermes` 같은
|
|
184
|
+
CLI는 루트 `skills/{wiki,brief,review}`를 한 번 설치한 뒤 같은 경로를 사용하는 에이전트를 묶어서 상대 심링크를 생성한다. `--agent`를 생략하면 로컬 설치 흔적을 감지해 후보를 추천하고, 감지하지 못하면 범용 `.agents/skills/`를 기본값으로 사용한다. `claude`, `hermes`, `gemini`, `agy` 같은 별칭도 지원한다. Gemini CLI, Antigravity CLI, Antigravity 2.0은 제품 표면과 전역 스킬 경로가 다르므로 레지스트리에서는 별도 대상으로 유지한다.
|
|
185
185
|
|
|
186
186
|
## 설치되는 구조
|
|
187
187
|
|
|
@@ -244,4 +244,4 @@ npm publish --access public
|
|
|
244
244
|
| skills@1.5.16 기반 73개 에이전트 레지스트리 | ✅ 구현 |
|
|
245
245
|
| 핵심 스킬 3개 (`wiki`, `brief`, `review`) | ✅ 구현 |
|
|
246
246
|
| Hermes식 스킬 사용 추적·자가 진화 | 🗑️ 제거 |
|
|
247
|
-
| npm
|
|
247
|
+
| npm publish (`0.1.1`) | ✅ 완료 |
|
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ Users do not memorize twelve commands. The agent routes each request to one of t
|
|
|
27
27
|
|
|
28
28
|
## Quick start
|
|
29
29
|
|
|
30
|
-
Requires Node.js 20+ and a Git repository.
|
|
30
|
+
Requires Node.js 20.12+ and a Git repository.
|
|
31
31
|
|
|
32
32
|
### New project
|
|
33
33
|
|
|
@@ -181,7 +181,7 @@ npx @taejung3852/project-scaffold@latest agents
|
|
|
181
181
|
|
|
182
182
|
Use this command to see every ID and path. `--agent all` and `--agent '*'` are also supported.
|
|
183
183
|
|
|
184
|
-
The CLI installs canonical `skills/{wiki,brief,review}` once and deduplicates agents that share the same target directory. Without `--agent`, it recommends reliably detected local agents and falls back to universal `.agents/skills/` when none are found. Existing aliases such as `claude` and `
|
|
184
|
+
The CLI installs canonical `skills/{wiki,brief,review}` once and deduplicates agents that share the same target directory. Without `--agent`, it recommends reliably detected local agents and falls back to universal `.agents/skills/` when none are found. Existing aliases such as `claude`, `hermes`, `gemini`, and `agy` remain supported. Google agents are kept as separate registry targets because Gemini CLI, Antigravity CLI, and Antigravity 2.0 use different product surfaces and global skill paths.
|
|
185
185
|
|
|
186
186
|
## Installed structure
|
|
187
187
|
|
|
@@ -244,4 +244,4 @@ npm publish --access public
|
|
|
244
244
|
| 73-agent registry based on skills@1.5.16 | ✅ Implemented |
|
|
245
245
|
| Three core skills (`wiki`, `brief`, `review`) | ✅ Implemented |
|
|
246
246
|
| Hermes-style usage tracking and self-evolution | 🗑️ Removed |
|
|
247
|
-
|
|
|
247
|
+
| npm publish (`0.1.1`) | ✅ Published |
|
package/lib/agents-registry.js
CHANGED
|
@@ -100,6 +100,8 @@ const displayNameOverrides = {
|
|
|
100
100
|
devin: "Devin for Terminal",
|
|
101
101
|
droid: "Droid",
|
|
102
102
|
"gemini-cli": "Gemini CLI",
|
|
103
|
+
antigravity: "Antigravity 2.0 (desktop)",
|
|
104
|
+
"antigravity-cli": "Antigravity CLI (agy)",
|
|
103
105
|
"github-copilot": "GitHub Copilot",
|
|
104
106
|
"hermes-agent": "Hermes Agent",
|
|
105
107
|
"iflow-cli": "iFlow CLI",
|
|
@@ -121,6 +123,8 @@ const displayNameOverrides = {
|
|
|
121
123
|
export const agentAliases = Object.freeze({
|
|
122
124
|
claude: "claude-code",
|
|
123
125
|
hermes: "hermes-agent",
|
|
126
|
+
gemini: "gemini-cli",
|
|
127
|
+
agy: "antigravity-cli",
|
|
124
128
|
"continue-dev": "continue",
|
|
125
129
|
});
|
|
126
130
|
|
|
@@ -165,7 +169,7 @@ const detectionPaths = {
|
|
|
165
169
|
cursor: ["~/.cursor", ".cursor"],
|
|
166
170
|
devin: ["~/.config/devin"],
|
|
167
171
|
droid: ["~/.factory"],
|
|
168
|
-
"gemini-cli": ["~/.gemini"],
|
|
172
|
+
"gemini-cli": ["~/.gemini/skills", "~/.gemini/settings.json"],
|
|
169
173
|
goose: ["~/.config/goose"],
|
|
170
174
|
"hermes-agent": ["~/.hermes"],
|
|
171
175
|
"kiro-cli": ["~/.kiro"],
|
package/lib/agents.js
CHANGED
|
@@ -152,14 +152,25 @@ export async function chooseAgents(
|
|
|
152
152
|
|
|
153
153
|
const selected = await multiselect({
|
|
154
154
|
message: "설치할 에이전트를 선택하세요",
|
|
155
|
-
options:
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
options: [
|
|
156
|
+
{
|
|
157
|
+
value: "all",
|
|
158
|
+
label: "모든 에이전트",
|
|
159
|
+
hint: `${supportedAgentIds.length}개 설치`,
|
|
160
|
+
},
|
|
161
|
+
...orderedAgents.map((agent) => {
|
|
162
|
+
const entry = agentRegistry[agent];
|
|
163
|
+
return {
|
|
164
|
+
value: agent,
|
|
165
|
+
label: entry?.displayName ?? agent,
|
|
166
|
+
hint: detected.includes(agent)
|
|
167
|
+
? `감지됨 · ${entry?.projectSkillsDir ?? ""}`
|
|
168
|
+
: entry?.projectSkillsDir,
|
|
169
|
+
};
|
|
170
|
+
}),
|
|
171
|
+
],
|
|
160
172
|
initialValues: defaults,
|
|
161
173
|
required: true,
|
|
162
|
-
maxItems: 10,
|
|
163
174
|
});
|
|
164
175
|
|
|
165
176
|
if (isCancel(selected)) {
|
package/lib/install.js
CHANGED
|
@@ -306,6 +306,7 @@ function loadManifest(target) {
|
|
|
306
306
|
export async function doctor(options) {
|
|
307
307
|
const target = path.resolve(options.target ?? process.cwd());
|
|
308
308
|
const manifest = loadManifest(target);
|
|
309
|
+
const legacy = legacyArtifacts(target);
|
|
309
310
|
const checks = [
|
|
310
311
|
{ label: "Git 저장소", ok: fs.existsSync(path.join(target, ".git")) },
|
|
311
312
|
{ label: "설치 manifest", ok: manifest !== null },
|
|
@@ -315,7 +316,6 @@ export async function doctor(options) {
|
|
|
315
316
|
},
|
|
316
317
|
{ label: "AGENT.md", ok: fs.existsSync(path.join(target, "AGENT.md")) },
|
|
317
318
|
{ label: "skills/", ok: fs.existsSync(path.join(target, "skills")) },
|
|
318
|
-
{ label: "legacy 스킬·자가 진화 상태 없음", ok: legacyArtifacts(target).length === 0 },
|
|
319
319
|
{ label: "wiki/index.md", ok: fs.existsSync(path.join(target, "wiki", "index.md")) },
|
|
320
320
|
{ label: "raw/", ok: fs.existsSync(path.join(target, "raw")) },
|
|
321
321
|
];
|
|
@@ -326,17 +326,41 @@ export async function doctor(options) {
|
|
|
326
326
|
);
|
|
327
327
|
}
|
|
328
328
|
checks.push(...agentChecks(target, manifest?.agents ?? []));
|
|
329
|
-
const
|
|
329
|
+
const warnings = legacy.length > 0
|
|
330
|
+
? [{
|
|
331
|
+
code: "legacy-artifacts",
|
|
332
|
+
message: `이전 설치 잔여물 ${legacy.length}개가 발견되었습니다.`,
|
|
333
|
+
fix: "정리하려면 project-scaffold add --force를 실행하세요.",
|
|
334
|
+
paths: legacy,
|
|
335
|
+
}]
|
|
336
|
+
: [];
|
|
337
|
+
const result = {
|
|
338
|
+
ok: checks.every((check) => check.ok),
|
|
339
|
+
target,
|
|
340
|
+
version: manifest?.version ?? null,
|
|
341
|
+
checks,
|
|
342
|
+
warnings,
|
|
343
|
+
};
|
|
330
344
|
|
|
331
345
|
if (options.json) {
|
|
332
346
|
console.log(JSON.stringify(result, null, 2));
|
|
333
347
|
} else {
|
|
334
348
|
console.log(`project-scaffold doctor\n대상: ${target}\n`);
|
|
335
349
|
for (const check of checks) console.log(`${check.ok ? "✅" : "❌"} ${check.label}`);
|
|
350
|
+
for (const warning of warnings) {
|
|
351
|
+
console.log(`⚠️ ${warning.message}`);
|
|
352
|
+
console.log(` ${warning.fix}`);
|
|
353
|
+
}
|
|
336
354
|
if (manifest?.agents?.includes("hermes-agent")) {
|
|
337
355
|
console.log("ℹ️ Hermes는 ~/.hermes/config.yaml의 skills.external_dirs에 프로젝트 skills/ 경로를 등록해야 합니다.");
|
|
338
356
|
}
|
|
339
|
-
|
|
357
|
+
if (!result.ok) {
|
|
358
|
+
console.log("\n❌ 누락된 항목을 확인하세요.");
|
|
359
|
+
} else if (warnings.length > 0) {
|
|
360
|
+
console.log("\n✅ 핵심 설치 상태는 정상입니다.");
|
|
361
|
+
} else {
|
|
362
|
+
console.log("\n✅ 설치 상태가 정상입니다.");
|
|
363
|
+
}
|
|
340
364
|
}
|
|
341
365
|
return result;
|
|
342
366
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taejung3852/project-scaffold",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "LLM Wiki-based project context scaffold for AI coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"pack:check": "npm pack --dry-run"
|
|
24
24
|
},
|
|
25
25
|
"engines": {
|
|
26
|
-
"node": ">=20"
|
|
26
|
+
"node": ">=20.12.0"
|
|
27
27
|
},
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"repository": {
|