project-librarian 0.6.0 → 0.6.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.ko.md +1 -1
- package/README.md +1 -1
- package/SKILL.md +2 -1
- package/dist/agent-surfaces.js +34 -6
- package/dist/hooks.js +5 -2
- package/dist/init-project-wiki.js +15 -7
- package/dist/install-skill.js +17 -0
- package/dist/native/linux-arm64/project-librarian-indexer +0 -0
- package/dist/native/linux-x64-musl/project-librarian-indexer +0 -0
- package/dist/native/project-librarian-indexer-manifest.json +6 -6
- package/dist/native/win32-arm64/project-librarian-indexer.exe +0 -0
- package/dist/native/win32-x64/project-librarian-indexer.exe +0 -0
- package/docs/cli-reference.md +1 -1
- package/docs/ko/cli-reference.md +1 -1
- package/docs/ko/usage.md +3 -2
- package/docs/usage.md +3 -2
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -41,7 +41,7 @@ npx project-librarian@latest install --scope project --agents all
|
|
|
41
41
|
npx project-librarian@latest update
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
이 명령은 관리 설정 파일, 에이전트 훅, 위키 운영/메타 파일, 기존 프로젝트 범위 스킬 복사본을 갱신합니다. 현재 `wiki/`는 보존하고 migration flag는 거부하므로 위키를 `wiki_legacy*`로 바꾸지 않습니다.
|
|
44
|
+
이 명령은 관리 설정 파일, 에이전트 훅, 위키 운영/메타 파일, 기존 프로젝트 범위 스킬 복사본을 갱신합니다. 기존 공유 `.agents/skills/project-librarian/` 복사본도 특정 에이전트 설정 표면을 암묵적으로 추가하지 않고 갱신합니다. 일반 업데이트는 관리 중인 표면을 보존하며, 아직 관리 표면이 없으면 `.codex/`나 `.cursor/`처럼 이미 존재하는 에이전트 루트만 대상으로 삼습니다. 관련 없는 에이전트 디렉터리는 만들지 않습니다. 기존 Project Librarian 설치나 에이전트 루트를 하나도 감지하지 못하면 파일을 쓰기 전에 중단하고 `init` 또는 명시적인 `--agents` 선택을 요구합니다. 현재 `wiki/`는 보존하고 migration flag는 거부하므로 위키를 `wiki_legacy*`로 바꾸지 않습니다.
|
|
45
45
|
|
|
46
46
|
특정 프로젝트 표면을 의도적으로 추가하거나 갱신할 때는 `--agents`를 명시합니다.
|
|
47
47
|
|
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ To refresh an existing setup without migrating the wiki, run:
|
|
|
41
41
|
npx project-librarian@latest update
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
That updates managed setup files, agent hooks, wiki operating/meta files, and existing project-scoped skill copies. It preserves the current `wiki/` and rejects migration flags, so it will not rename the wiki to `wiki_legacy*`.
|
|
44
|
+
That updates managed setup files, agent hooks, wiki operating/meta files, and existing project-scoped skill copies. Existing shared `.agents/skills/project-librarian/` copies are refreshed without implying any agent-specific setup surface. A plain update preserves managed surfaces; when no managed surface exists yet, it targets only agent roots already present such as `.codex/` or `.cursor/`. It does not create unrelated agent directories. If neither an existing Project Librarian install nor an agent root can be detected, update stops before writing and asks for `init` or an explicit `--agents` selection. It preserves the current `wiki/` and rejects migration flags, so it will not rename the wiki to `wiki_legacy*`.
|
|
45
45
|
|
|
46
46
|
Use `--agents` when you intentionally want to add or refresh a specific project surface:
|
|
47
47
|
|
package/SKILL.md
CHANGED
|
@@ -37,6 +37,7 @@ Supported actions:
|
|
|
37
37
|
Prefer an already installed local runner over network package execution:
|
|
38
38
|
|
|
39
39
|
- In the project-librarian source repository, use `node dist/init-project-wiki.js` when `dist/init-project-wiki.js` exists.
|
|
40
|
+
- In a target repository with a shared project-scoped skill install, use `node .agents/skills/project-librarian/dist/init-project-wiki.js`.
|
|
40
41
|
- In a target repository with a project-scoped Codex skill install, use `node .codex/skills/project-librarian/dist/init-project-wiki.js`.
|
|
41
42
|
- In a target repository with a project-scoped Claude skill install, use `node .claude/skills/project-librarian/dist/init-project-wiki.js`.
|
|
42
43
|
- In a target repository with a project-scoped Cursor skill install, use `node .cursor/skills/project-librarian/dist/init-project-wiki.js`.
|
|
@@ -69,7 +70,7 @@ $PROJECT_LIBRARIAN
|
|
|
69
70
|
Use the command variants as follows:
|
|
70
71
|
|
|
71
72
|
- New project wiki or normal update: `$PROJECT_LIBRARIAN`.
|
|
72
|
-
- Explicit existing-project update without migration: `$PROJECT_LIBRARIAN update` (rejects `--migrate` and `--adopt-existing`).
|
|
73
|
+
- Explicit existing-project update without migration: `$PROJECT_LIBRARIAN update` (rejects `--migrate` and `--adopt-existing`). Without `--agents`, it preserves managed agent surfaces or detects existing agent roots; it never creates unrelated agent surfaces. If neither an existing Project Librarian install nor an agent root is detectable, use `init` for a fresh project or select `--agents` explicitly.
|
|
73
74
|
- Existing wiki/docs need migration: `$PROJECT_LIBRARIAN --migrate`.
|
|
74
75
|
- Install hook files without changing git config: `$PROJECT_LIBRARIAN --no-git-config`.
|
|
75
76
|
- Install reusable Project Librarian skill files: `$PROJECT_LIBRARIAN install --scope user|project --agents codex|claude|cursor|gemini|all`. `install-skill` remains a compatibility alias, but prefer `install` in new guidance.
|
package/dist/agent-surfaces.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.agentSurfaceRequiredFiles = exports.allAgentSurfaces = void 0;
|
|
|
4
4
|
exports.parseAgentSurfaceValues = parseAgentSurfaceValues;
|
|
5
5
|
exports.hasProjectLibrarianInstall = hasProjectLibrarianInstall;
|
|
6
6
|
exports.activeAgentSurfaces = activeAgentSurfaces;
|
|
7
|
+
exports.existingAgentSurfaceRoots = existingAgentSurfaceRoots;
|
|
7
8
|
exports.resolveBootstrapAgentSurfaces = resolveBootstrapAgentSurfaces;
|
|
8
9
|
exports.includesAgentSurface = includesAgentSurface;
|
|
9
10
|
exports.allAgentSurfaces = ["codex", "claude", "cursor", "gemini"];
|
|
@@ -19,7 +20,14 @@ const agentSurfaceProjectSkillFiles = {
|
|
|
19
20
|
cursor: [".cursor/skills/project-librarian/SKILL.md"],
|
|
20
21
|
gemini: [".gemini/skills/project-librarian/SKILL.md"],
|
|
21
22
|
};
|
|
23
|
+
const agentSurfaceRoots = {
|
|
24
|
+
codex: ".codex",
|
|
25
|
+
claude: ".claude",
|
|
26
|
+
cursor: ".cursor",
|
|
27
|
+
gemini: ".gemini",
|
|
28
|
+
};
|
|
22
29
|
const projectLibrarianCommonInstallFiles = [
|
|
30
|
+
".agents/skills/project-librarian/SKILL.md",
|
|
23
31
|
"wiki/startup.md",
|
|
24
32
|
"wiki/index.md",
|
|
25
33
|
"wiki/AGENTS.md",
|
|
@@ -55,12 +63,32 @@ function activeAgentSurfaces(fileExists) {
|
|
|
55
63
|
return exports.allAgentSurfaces.filter((surface) => (exports.agentSurfaceRequiredFiles[surface].some((file) => fileExists(file))
|
|
56
64
|
|| agentSurfaceProjectSkillFiles[surface].some((file) => fileExists(file))));
|
|
57
65
|
}
|
|
58
|
-
function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
function existingAgentSurfaceRoots(fileExists) {
|
|
67
|
+
return exports.allAgentSurfaces.filter((surface) => fileExists(agentSurfaceRoots[surface]));
|
|
68
|
+
}
|
|
69
|
+
function resolveBootstrapAgentSurfaces(lifecycle, explicitSurfaces, fileExists, readFile) {
|
|
70
|
+
if (explicitSurfaces.length > 0) {
|
|
71
|
+
return { source: "explicit", surfaces: Array.from(explicitSurfaces) };
|
|
72
|
+
}
|
|
73
|
+
const managedSurfaces = activeAgentSurfaces(fileExists);
|
|
74
|
+
if (managedSurfaces.length > 0) {
|
|
75
|
+
return { source: "managed-install", surfaces: managedSurfaces };
|
|
76
|
+
}
|
|
77
|
+
const hasCommonInstall = hasProjectLibrarianInstall(fileExists, readFile);
|
|
78
|
+
if (lifecycle === "update") {
|
|
79
|
+
const existingRoots = existingAgentSurfaceRoots(fileExists);
|
|
80
|
+
if (existingRoots.length > 0) {
|
|
81
|
+
return { source: "existing-agent-root", surfaces: existingRoots };
|
|
82
|
+
}
|
|
83
|
+
if (hasCommonInstall) {
|
|
84
|
+
return { source: "common-install", surfaces: [] };
|
|
85
|
+
}
|
|
86
|
+
return { source: "missing-update-target", surfaces: [] };
|
|
87
|
+
}
|
|
88
|
+
if (hasCommonInstall) {
|
|
89
|
+
return { source: "common-install", surfaces: [] };
|
|
90
|
+
}
|
|
91
|
+
return { source: "fresh-init", surfaces: Array.from(exports.allAgentSurfaces) };
|
|
64
92
|
}
|
|
65
93
|
function includesAgentSurface(surfaces, surface) {
|
|
66
94
|
return surfaces.includes(surface);
|
package/dist/hooks.js
CHANGED
|
@@ -149,6 +149,7 @@ const mcpServerName = "project-librarian";
|
|
|
149
149
|
// runner wins; absent any local install we register the published binary.
|
|
150
150
|
const localRunnerCandidates = [
|
|
151
151
|
"tools/project-librarian/dist/init-project-wiki.js",
|
|
152
|
+
".agents/skills/project-librarian/dist/init-project-wiki.js",
|
|
152
153
|
".codex/skills/project-librarian/dist/init-project-wiki.js",
|
|
153
154
|
".claude/skills/project-librarian/dist/init-project-wiki.js",
|
|
154
155
|
".cursor/skills/project-librarian/dist/init-project-wiki.js",
|
|
@@ -458,7 +459,7 @@ function wikiScope(files) {
|
|
|
458
459
|
else if (file.startsWith(".gemini/hooks/") || file === ".gemini/settings.json") add("gemini-hooks");
|
|
459
460
|
else if (file === "AGENTS.md" || file === "CLAUDE.md" || file === "GEMINI.md") add("agents");
|
|
460
461
|
else if (file.startsWith(".githooks/")) add("git-hooks");
|
|
461
|
-
else if (file.startsWith("tools/project-librarian/")) add("skill");
|
|
462
|
+
else if (file.startsWith("tools/project-librarian/") || file.startsWith(".agents/skills/project-librarian/")) add("skill");
|
|
462
463
|
}
|
|
463
464
|
return scopes.length === 0 ? "none" : scopes.join(", ");
|
|
464
465
|
}
|
|
@@ -467,6 +468,7 @@ function validationTrailers() {
|
|
|
467
468
|
const home = process.env.HOME || "";
|
|
468
469
|
const lintScript = [
|
|
469
470
|
"tools/project-librarian/dist/init-project-wiki.js",
|
|
471
|
+
".agents/skills/project-librarian/dist/init-project-wiki.js",
|
|
470
472
|
path.join(home, ".codex/skills/project-librarian/dist/init-project-wiki.js"),
|
|
471
473
|
path.join(home, ".claude/skills/project-librarian/dist/init-project-wiki.js"),
|
|
472
474
|
path.join(home, ".cursor/skills/project-librarian/dist/init-project-wiki.js"),
|
|
@@ -517,7 +519,8 @@ const wikiFiles = staged.filter((file) => {
|
|
|
517
519
|
|| file === ".gemini/settings.json"
|
|
518
520
|
|| file.startsWith(".gemini/hooks/")
|
|
519
521
|
|| file.startsWith(".githooks/")
|
|
520
|
-
|| file.startsWith("tools/project-librarian/")
|
|
522
|
+
|| file.startsWith("tools/project-librarian/")
|
|
523
|
+
|| file.startsWith(".agents/skills/project-librarian/");
|
|
521
524
|
});
|
|
522
525
|
|
|
523
526
|
if (wikiFiles.length === 0) process.exit(0);
|
|
@@ -51,7 +51,7 @@ Options:
|
|
|
51
51
|
--goal, --state, --blocked With --handoff-save, provide resume context fields.
|
|
52
52
|
--next, --decision With --handoff-save, repeat for next actions and decisions.
|
|
53
53
|
--glossary-init Create and route the optional glossary page.
|
|
54
|
-
--agents <list> With init/update, write only selected agent surfaces: codex, claude, cursor, gemini, or all.
|
|
54
|
+
--agents <list> With init/update, write only selected agent surfaces: codex, claude, cursor, gemini, or all. Update preserves managed surfaces or existing agent roots by default.
|
|
55
55
|
--prune-check Report active pages with stale or unresolved signals.
|
|
56
56
|
--prune-check-strict With --prune-check, omit age-only candidates and show only higher-signal lifecycle items.
|
|
57
57
|
--review-migration Sync unit coverage and compatible inbox statuses into migration review files.
|
|
@@ -75,7 +75,7 @@ Options:
|
|
|
75
75
|
Commands:
|
|
76
76
|
install Install the reusable Project Librarian skill files for selected agents.
|
|
77
77
|
install-skill Compatibility alias for install.
|
|
78
|
-
update
|
|
78
|
+
update Update an existing install or detected agent root without creating unrelated agent surfaces; reject migration flags.
|
|
79
79
|
mcp Run the stdio MCP server exposing answer-shaped code-evidence tools (code_context_pack, code_impact, code_ownership, code_workspace_graph, code_search, code_status) over the existing .project-wiki index.
|
|
80
80
|
|
|
81
81
|
--help Show this help.`);
|
|
@@ -320,14 +320,18 @@ function runInitCommand() {
|
|
|
320
320
|
runRefreshIndexOnlyMode();
|
|
321
321
|
process.exit(0);
|
|
322
322
|
}
|
|
323
|
-
const
|
|
324
|
-
?
|
|
325
|
-
: args_1.
|
|
326
|
-
|
|
327
|
-
|
|
323
|
+
const agentSurfaceResolution = args_1.migrateMode
|
|
324
|
+
? { source: "explicit", surfaces: Array.from(agent_surfaces_1.allAgentSurfaces) }
|
|
325
|
+
: (0, agent_surfaces_1.resolveBootstrapAgentSurfaces)(args_1.command === "update" ? "update" : "init", args_1.agentTargets, workspace_1.exists, workspace_1.read);
|
|
326
|
+
if (agentSurfaceResolution.source === "missing-update-target") {
|
|
327
|
+
console.error("update cannot detect an existing Project Librarian install or agent surface; use init for a fresh project or pass --agents explicitly.");
|
|
328
|
+
process.exit(1);
|
|
329
|
+
}
|
|
330
|
+
const selectedAgentSurfaces = agentSurfaceResolution.surfaces;
|
|
328
331
|
const projectSkillSyncSurfaces = args_1.command === "update"
|
|
329
332
|
? (0, install_skill_1.installedProjectSkillSurfaces)().filter((surface) => (0, agent_surfaces_1.includesAgentSurface)(selectedAgentSurfaces, surface))
|
|
330
333
|
: [];
|
|
334
|
+
const syncSharedProjectSkill = args_1.command === "update" && (0, install_skill_1.hasSharedProjectSkillInstall)();
|
|
331
335
|
const shouldWriteSurface = (surface) => (0, agent_surfaces_1.includesAgentSurface)(selectedAgentSurfaces, surface);
|
|
332
336
|
const writeCodexSurface = shouldWriteSurface("codex");
|
|
333
337
|
const writeClaudeSurface = shouldWriteSurface("claude");
|
|
@@ -357,6 +361,10 @@ function runInitCommand() {
|
|
|
357
361
|
for (const result of (0, install_skill_1.syncProjectSkillInstall)(surface))
|
|
358
362
|
results.push(result);
|
|
359
363
|
}
|
|
364
|
+
if (syncSharedProjectSkill) {
|
|
365
|
+
for (const result of (0, install_skill_1.syncSharedProjectSkillInstall)())
|
|
366
|
+
results.push(result);
|
|
367
|
+
}
|
|
360
368
|
// B1 fallback: sync the CURRENT startup.md TL;DR into the managed AGENTS.md block
|
|
361
369
|
// so non-interactive `codex exec` (which does not run SessionStart hooks) still
|
|
362
370
|
// gets compact startup context. Routers are starter files written later in this
|
package/dist/install-skill.js
CHANGED
|
@@ -34,8 +34,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.projectSkillTarget = projectSkillTarget;
|
|
37
|
+
exports.sharedProjectSkillTarget = sharedProjectSkillTarget;
|
|
37
38
|
exports.installedProjectSkillSurfaces = installedProjectSkillSurfaces;
|
|
39
|
+
exports.hasSharedProjectSkillInstall = hasSharedProjectSkillInstall;
|
|
38
40
|
exports.syncProjectSkillInstall = syncProjectSkillInstall;
|
|
41
|
+
exports.syncSharedProjectSkillInstall = syncSharedProjectSkillInstall;
|
|
39
42
|
exports.runInstallSkillMode = runInstallSkillMode;
|
|
40
43
|
const fs = __importStar(require("node:fs"));
|
|
41
44
|
const os = __importStar(require("node:os"));
|
|
@@ -43,6 +46,7 @@ const path = __importStar(require("node:path"));
|
|
|
43
46
|
const agent_surfaces_1 = require("./agent-surfaces");
|
|
44
47
|
const args_1 = require("./args");
|
|
45
48
|
const skillName = "project-librarian";
|
|
49
|
+
const sharedProjectSkillRelativeRoot = path.join(".agents", "skills", skillName);
|
|
46
50
|
const packageFiles = [
|
|
47
51
|
"SKILL.md",
|
|
48
52
|
"dist",
|
|
@@ -121,6 +125,9 @@ function projectSkillRelativeRoot(agent) {
|
|
|
121
125
|
function projectSkillTarget(agent) {
|
|
122
126
|
return path.join(process.cwd(), projectSkillRelativeRoot(agent));
|
|
123
127
|
}
|
|
128
|
+
function sharedProjectSkillTarget() {
|
|
129
|
+
return path.join(process.cwd(), sharedProjectSkillRelativeRoot);
|
|
130
|
+
}
|
|
124
131
|
function installTarget(agent, scope) {
|
|
125
132
|
const base = scope === "user" ? userAgentRoot(agent) : path.join(process.cwd(), projectAgentRoot(agent));
|
|
126
133
|
return path.join(base, "skills", skillName);
|
|
@@ -247,6 +254,9 @@ function copyPath(source, target, targetRoot, dryRun) {
|
|
|
247
254
|
function installedProjectSkillSurfaces() {
|
|
248
255
|
return agent_surfaces_1.allAgentSurfaces.filter((agent) => fs.existsSync(path.join(projectSkillTarget(agent), "SKILL.md")));
|
|
249
256
|
}
|
|
257
|
+
function hasSharedProjectSkillInstall() {
|
|
258
|
+
return fs.existsSync(path.join(sharedProjectSkillTarget(), "SKILL.md"));
|
|
259
|
+
}
|
|
250
260
|
function copyPackageFiles(targetRoot, dryRun, labelRoot = targetRoot) {
|
|
251
261
|
const root = packageRoot();
|
|
252
262
|
const packageRows = packageFiles.map((relativePath) => {
|
|
@@ -269,6 +279,13 @@ function syncProjectSkillInstall(agent) {
|
|
|
269
279
|
return [label, status];
|
|
270
280
|
});
|
|
271
281
|
}
|
|
282
|
+
function syncSharedProjectSkillInstall() {
|
|
283
|
+
return copyPackageFiles(sharedProjectSkillTarget(), false, sharedProjectSkillRelativeRoot).map(([label, status]) => {
|
|
284
|
+
if (status === "dry-run")
|
|
285
|
+
throw new Error("shared project skill sync does not support dry-run status");
|
|
286
|
+
return [label, status];
|
|
287
|
+
});
|
|
288
|
+
}
|
|
272
289
|
function runInstallSkillMode() {
|
|
273
290
|
const scope = installScope();
|
|
274
291
|
const agents = installAgents();
|
|
Binary file
|
|
Binary file
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"architecture": "arm64",
|
|
22
22
|
"format": "elf",
|
|
23
23
|
"path": "dist/native/linux-arm64/project-librarian-indexer",
|
|
24
|
-
"sha256": "
|
|
25
|
-
"size":
|
|
24
|
+
"sha256": "88146d5bbe5b77bb53e2cbe872ad6d2a8a93a58fa1b53671841cc94463443f46",
|
|
25
|
+
"size": 3065568,
|
|
26
26
|
"triple": "linux-arm64"
|
|
27
27
|
},
|
|
28
28
|
{
|
|
@@ -45,15 +45,15 @@
|
|
|
45
45
|
"architecture": "x64",
|
|
46
46
|
"format": "elf",
|
|
47
47
|
"path": "dist/native/linux-x64-musl/project-librarian-indexer",
|
|
48
|
-
"sha256": "
|
|
49
|
-
"size":
|
|
48
|
+
"sha256": "811221a87fe5d8ef9f67f4eafe4386ef7aa03bdc1601e89fa191c0e0d7b0dcd5",
|
|
49
|
+
"size": 3247424,
|
|
50
50
|
"triple": "linux-x64-musl"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"architecture": "arm64",
|
|
54
54
|
"format": "pe",
|
|
55
55
|
"path": "dist/native/win32-arm64/project-librarian-indexer.exe",
|
|
56
|
-
"sha256": "
|
|
56
|
+
"sha256": "3246ad92e1a78b80bf5779742c799bfe8f155f38415429a9af6dc399879c8fb2",
|
|
57
57
|
"size": 2098688,
|
|
58
58
|
"triple": "win32-arm64"
|
|
59
59
|
},
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"architecture": "x64",
|
|
62
62
|
"format": "pe",
|
|
63
63
|
"path": "dist/native/win32-x64/project-librarian-indexer.exe",
|
|
64
|
-
"sha256": "
|
|
64
|
+
"sha256": "8ecf7bfde196e1e03f999a19e587d253ad758dfbc8b9e3305733899bb4aca207",
|
|
65
65
|
"size": 2375680,
|
|
66
66
|
"triple": "win32-x64"
|
|
67
67
|
}
|
|
Binary file
|
|
Binary file
|
package/docs/cli-reference.md
CHANGED
|
@@ -9,7 +9,7 @@ node .codex/skills/project-librarian/dist/init-project-wiki.js install [--scope
|
|
|
9
9
|
|
|
10
10
|
`install-skill` remains a compatibility alias for `install`.
|
|
11
11
|
|
|
12
|
-
`update` is the explicit existing-project update command. It rejects `--migrate` and `--adopt-existing`; use top-level `--migrate` when legacy docs or wiki content should be preserved into `wiki_legacy*` and reviewed. When project-scoped Project Librarian skill installs already exist for the selected agent surfaces, `update` copies the current package's reusable skill files and required local-runner runtime dependencies into those project skill directories before refreshing the managed setup.
|
|
12
|
+
`update` is the explicit existing-project update command. It rejects `--migrate` and `--adopt-existing`; use top-level `--migrate` when legacy docs or wiki content should be preserved into `wiki_legacy*` and reviewed. Without `--agents`, it first preserves Project Librarian-managed surfaces, then falls back to agent roots already present in the repository. It never falls back to all agents during update. If no install or agent root is detectable, it exits before writing and requires `init` or `--agents`. When project-scoped Project Librarian skill installs already exist for the selected agent surfaces, `update` copies the current package's reusable skill files and required local-runner runtime dependencies into those project skill directories before refreshing the managed setup. An existing shared `.agents/skills/project-librarian/` install is synchronized independently without selecting agent-specific setup surfaces.
|
|
13
13
|
|
|
14
14
|
### Important Options
|
|
15
15
|
|
package/docs/ko/cli-reference.md
CHANGED
|
@@ -9,7 +9,7 @@ node .codex/skills/project-librarian/dist/init-project-wiki.js install [--scope
|
|
|
9
9
|
|
|
10
10
|
`install-skill`은 `install`의 호환성 별칭으로 계속 지원됩니다.
|
|
11
11
|
|
|
12
|
-
`update`는 기존 프로젝트 갱신을 명시하는 명령입니다. `--migrate`와 `--adopt-existing`를 거부합니다. 기존 문서나 위키 내용을 `wiki_legacy*`로 보존하고 검토해야 한다면 top-level `--migrate`를 사용합니다. 선택된 에이전트 표면에 프로젝트 범위 Project Librarian 스킬 설치가 이미 있으면 `update`는 현재 패키지의 재사용 가능한 스킬 파일과 로컬 실행기에 필요한 필수 런타임 의존성을 해당 프로젝트 스킬 디렉터리에 복사한 뒤 관리 설정을 갱신합니다.
|
|
12
|
+
`update`는 기존 프로젝트 갱신을 명시하는 명령입니다. `--migrate`와 `--adopt-existing`를 거부합니다. 기존 문서나 위키 내용을 `wiki_legacy*`로 보존하고 검토해야 한다면 top-level `--migrate`를 사용합니다. `--agents`가 없으면 Project Librarian이 관리 중인 표면을 먼저 보존하고, 관리 표면이 없을 때만 저장소에 이미 존재하는 에이전트 루트를 사용합니다. 업데이트에서는 전체 에이전트로 폴백하지 않습니다. 설치나 에이전트 루트를 하나도 감지하지 못하면 파일을 쓰기 전에 종료하고 `init` 또는 `--agents`를 요구합니다. 선택된 에이전트 표면에 프로젝트 범위 Project Librarian 스킬 설치가 이미 있으면 `update`는 현재 패키지의 재사용 가능한 스킬 파일과 로컬 실행기에 필요한 필수 런타임 의존성을 해당 프로젝트 스킬 디렉터리에 복사한 뒤 관리 설정을 갱신합니다. 기존 공유 `.agents/skills/project-librarian/` 설치는 에이전트별 설정 표면을 선택하지 않고 별도로 동기화합니다.
|
|
13
13
|
|
|
14
14
|
### 주요 옵션
|
|
15
15
|
|
package/docs/ko/usage.md
CHANGED
|
@@ -32,9 +32,9 @@ npx project-librarian@latest install --scope project --agents all
|
|
|
32
32
|
|
|
33
33
|
프로젝트 설정/갱신 실행기도 `--agents`를 받습니다. 새 설정은 프로젝트 범위 Project Librarian 스킬 설치가 없을 때만 지원하는 모든 에이전트 표면을 기본으로 만듭니다. 저장소에 이미 `.codex/skills/project-librarian/`, `.claude/skills/project-librarian/` 같은 프로젝트 범위 스킬이 있으면 첫 설정도 그 설치된 에이전트 집합을 기본값으로 사용합니다.
|
|
34
34
|
|
|
35
|
-
마이그레이션 없는 기존 설정 갱신은 저장소에 이미 있는 에이전트
|
|
35
|
+
마이그레이션 없는 기존 설정 갱신은 Project Librarian이 관리 중인 에이전트 표면을 보존해서 갱신합니다. 아직 관리 표면이 없으면 저장소에 이미 있는 에이전트 루트만 선택하므로, 설정 파일이 아직 없는 `.codex/` 저장소에는 Codex 설정만 추가되고 Claude, Cursor, Gemini 파일은 생기지 않습니다. 감지 가능한 설치나 에이전트 루트가 하나도 없는 업데이트는 파일을 쓰기 전에 종료합니다. 새 프로젝트에는 `init`을 사용하고, 대상을 직접 정하려면 `--agents`를 전달합니다. 새 표면을 의도적으로 추가하려면 `project-librarian update --agents cursor` 또는 `project-librarian update --agents all`처럼 명시합니다. 목록에 없는 표면을 삭제하지는 않습니다.
|
|
36
36
|
|
|
37
|
-
`project-librarian update`는 선택된 표면에 이미 프로젝트 범위 Project Librarian 스킬 설치가 있으면 현재 실행 중인 패키지의 재사용 가능한 스킬 파일과 프로젝트 로컬 실행기에 필요한 런타임 의존성을 그 프로젝트 스킬 디렉터리로 동기화합니다. 기본적으로 새 프로젝트 범위 스킬 설치를 만들지는 않고, 사용자 범위 스킬 설치도 갱신하지 않습니다. 사용자 범위 스킬은 `install --scope user`로 명시적으로 갱신합니다.
|
|
37
|
+
`project-librarian update`는 선택된 표면에 이미 프로젝트 범위 Project Librarian 스킬 설치가 있으면 현재 실행 중인 패키지의 재사용 가능한 스킬 파일과 프로젝트 로컬 실행기에 필요한 런타임 의존성을 그 프로젝트 스킬 디렉터리로 동기화합니다. 기존 공유 `.agents/skills/project-librarian/` 설치는 별도로 동기화하며 Codex, Claude, Cursor, Gemini 설정 표면을 암묵적으로 추가하지 않습니다. 기본적으로 새 프로젝트 범위 스킬 설치를 만들지는 않고, 사용자 범위 스킬 설치도 갱신하지 않습니다. 사용자 범위 스킬은 `install --scope user`로 명시적으로 갱신합니다.
|
|
38
38
|
|
|
39
39
|
## 실행 경로
|
|
40
40
|
|
|
@@ -42,6 +42,7 @@ npx project-librarian@latest install --scope project --agents all
|
|
|
42
42
|
|
|
43
43
|
| 설치 위치 | 실행 경로 |
|
|
44
44
|
| --- | --- |
|
|
45
|
+
| 공유 프로젝트 범위 스킬 | `node .agents/skills/project-librarian/dist/init-project-wiki.js` |
|
|
45
46
|
| 프로젝트 범위 Codex 스킬 | `node .codex/skills/project-librarian/dist/init-project-wiki.js` |
|
|
46
47
|
| 프로젝트 범위 Claude 스킬 | `node .claude/skills/project-librarian/dist/init-project-wiki.js` |
|
|
47
48
|
| 프로젝트 범위 Cursor 스킬 | `node .cursor/skills/project-librarian/dist/init-project-wiki.js` |
|
package/docs/usage.md
CHANGED
|
@@ -30,9 +30,9 @@ npx project-librarian@latest install --scope project --agents all
|
|
|
30
30
|
|
|
31
31
|
`--agents` accepts comma-separated values such as `codex,claude,cursor,gemini`. `all` targets every supported agent. `--scope` accepts `user` or `project`.
|
|
32
32
|
|
|
33
|
-
The project setup/update runner also accepts `--agents`. Fresh setup defaults to all supported agent surfaces only when no project-scoped Project Librarian skill install is present. If the repository already has project-scoped skills such as `.codex/skills/project-librarian/` and `.claude/skills/project-librarian/`, the first setup uses that installed agent set by default. Existing non-migration updates preserve
|
|
33
|
+
The project setup/update runner also accepts `--agents`. Fresh setup defaults to all supported agent surfaces only when no project-scoped Project Librarian skill install is present. If the repository already has project-scoped skills such as `.codex/skills/project-librarian/` and `.claude/skills/project-librarian/`, the first setup uses that installed agent set by default. Existing non-migration updates preserve Project Librarian-managed surfaces. If no managed surface exists yet, update selects only agent roots already present, so a bare `.codex/` repository gains the Codex setup without gaining Claude, Cursor, or Gemini files. An update with no detectable install or agent root exits before writing; use `init` for a fresh project or pass `--agents`. Use `project-librarian update --agents cursor` or `project-librarian update --agents all` when you intentionally want to add newly supported surfaces; unlisted surfaces are not deleted.
|
|
34
34
|
|
|
35
|
-
`project-librarian update` also syncs any project-scoped Project Librarian skill installs that already exist for the selected surfaces from the currently running package, including the runtime dependencies needed by the project-local runner. This means `npx project-librarian@latest update` can refresh the repository's managed setup, hooks, wiki meta files, and existing project-scoped skill copies without migration. It does not create new project-scoped skill installs by default and does not update user-scoped skill installs; use `install --scope user` for that.
|
|
35
|
+
`project-librarian update` also syncs any project-scoped Project Librarian skill installs that already exist for the selected surfaces from the currently running package, including the runtime dependencies needed by the project-local runner. An existing shared `.agents/skills/project-librarian/` install is synchronized independently and does not imply Codex, Claude, Cursor, or Gemini setup surfaces. This means `npx project-librarian@latest update` can refresh the repository's managed setup, hooks, wiki meta files, and existing project-scoped skill copies without migration. It does not create new project-scoped skill installs by default and does not update user-scoped skill installs; use `install --scope user` for that.
|
|
36
36
|
|
|
37
37
|
## Runner Paths
|
|
38
38
|
|
|
@@ -40,6 +40,7 @@ These paths are mainly for agents and automation. After installation, agents sho
|
|
|
40
40
|
|
|
41
41
|
| Installation | Runner |
|
|
42
42
|
| --- | --- |
|
|
43
|
+
| Shared project-scoped skill | `node .agents/skills/project-librarian/dist/init-project-wiki.js` |
|
|
43
44
|
| Project-scoped Codex skill | `node .codex/skills/project-librarian/dist/init-project-wiki.js` |
|
|
44
45
|
| Project-scoped Claude skill | `node .claude/skills/project-librarian/dist/init-project-wiki.js` |
|
|
45
46
|
| Project-scoped Cursor skill | `node .cursor/skills/project-librarian/dist/init-project-wiki.js` |
|