@codecell-germany/company-agent-wiki-skill 0.1.3 → 0.1.4
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.md +16 -4
- package/dist/index.js +9 -1
- package/dist/installer.js +48 -2
- package/knowledge/ARCHITECTURE.md +3 -1
- package/knowledge/KNOWN_LIMITATIONS.md +1 -1
- package/package.json +1 -1
- package/skills/company-agent-wiki-cli/SKILL.md +4 -2
- package/skills/company-agent-wiki-cli/references/authoring-workflow.md +5 -1
- package/skills/company-agent-wiki-cli/references/overview.md +1 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
`company-agent-wiki-skill` is an agent-first local company knowledge toolkit.
|
|
12
12
|
It ships as a real CLI plus a shared agent skill payload, so an agent can set up a private company wiki, verify the index state, search knowledge, inspect metadata and headings first, and only then load full Markdown when needed.
|
|
13
13
|
|
|
14
|
-
The shared install layout is meant to work across agent environments that understand the common `~/.agents` skill home, including Codex through
|
|
14
|
+
The shared install layout is meant to work across agent environments that understand the common `~/.agents` skill home, including Codex through a compatibility shim and other skills.sh-style runtimes such as Claude Code or OpenClaw.
|
|
15
15
|
|
|
16
16
|
The product surface is the public CLI:
|
|
17
17
|
|
|
@@ -46,6 +46,16 @@ The retrieval model is deliberately inspired by Anthropic's Agent Skills model w
|
|
|
46
46
|
The difference is the retrieval layer.
|
|
47
47
|
Here, front matter is not only stored in Markdown files, but also indexed and filterable through a local SQLite search layer.
|
|
48
48
|
|
|
49
|
+
## Architecture visuals
|
|
50
|
+
|
|
51
|
+
### Agentic knowledge ingestion
|
|
52
|
+
|
|
53
|
+

|
|
54
|
+
|
|
55
|
+
### Agent-first knowledge retrieval
|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
49
59
|
## Installation
|
|
50
60
|
|
|
51
61
|
### 1. Install with one command
|
|
@@ -61,10 +71,11 @@ That installs:
|
|
|
61
71
|
- the shared skill payload into `~/.agents/skills/company-agent-wiki-cli`
|
|
62
72
|
- the shared runtime into `~/.agents/tools/company-agent-wiki-cli`
|
|
63
73
|
- the shared CLI shim into `~/.agents/bin/company-agent-wiki-cli`
|
|
64
|
-
- the skill payload into `~/.codex/skills/company-agent-wiki-cli`
|
|
65
|
-
- the runtime into `~/.codex/tools/company-agent-wiki-cli`
|
|
66
74
|
- the Codex compatibility shim into `~/.codex/bin/company-agent-wiki-cli`
|
|
67
75
|
|
|
76
|
+
The skill payload intentionally exists only once under `~/.agents/skills`.
|
|
77
|
+
Codex gets a CLI compatibility shim, but not a second duplicate skill payload.
|
|
78
|
+
|
|
68
79
|
### 2. Verify the CLI
|
|
69
80
|
|
|
70
81
|
```bash
|
|
@@ -205,6 +216,7 @@ status: draft
|
|
|
205
216
|
tags:
|
|
206
217
|
- projekt
|
|
207
218
|
- alpha
|
|
219
|
+
description: Klare Kurzbeschreibung für Agenten, bevor der Volltext geladen wird.
|
|
208
220
|
summary: Roadmap und Entscheidungen für Projekt Alpha.
|
|
209
221
|
project: alpha
|
|
210
222
|
department: entwicklung
|
|
@@ -219,7 +231,7 @@ Recommended authoring order:
|
|
|
219
231
|
|
|
220
232
|
1. Create the Markdown file inside `knowledge/canonical/` or another registered managed root.
|
|
221
233
|
2. Use a filename that roughly describes the real content.
|
|
222
|
-
3. Set front matter including `id`, `summary` and the routing fields that matter.
|
|
234
|
+
3. Set front matter including `id`, `description`, `summary` and the routing fields that matter.
|
|
223
235
|
4. If the content depends on external sources, document provenance, date and source type.
|
|
224
236
|
5. Structure the file with clear `#`, `##` and `###` headings.
|
|
225
237
|
6. Rebuild the index or use an `--auto-rebuild` retrieval path.
|
package/dist/index.js
CHANGED
|
@@ -7814,6 +7814,7 @@ type: process
|
|
|
7814
7814
|
status: active
|
|
7815
7815
|
tags:
|
|
7816
7816
|
- example
|
|
7817
|
+
description: Short routing description for agents.
|
|
7817
7818
|
---
|
|
7818
7819
|
\`\`\`
|
|
7819
7820
|
`;
|
|
@@ -8439,6 +8440,8 @@ function normalizeStringArrayValue(value) {
|
|
|
8439
8440
|
function buildDocumentMetadataView(row) {
|
|
8440
8441
|
const frontmatter = JSON.parse(row.frontmatterJson);
|
|
8441
8442
|
const tags = JSON.parse(row.tagsJson);
|
|
8443
|
+
const description = normalizeStringValue(frontmatter.description) ?? normalizeStringValue(frontmatter.summary);
|
|
8444
|
+
const summary = normalizeStringValue(frontmatter.summary) ?? description;
|
|
8442
8445
|
return {
|
|
8443
8446
|
docId: row.docId,
|
|
8444
8447
|
title: row.title,
|
|
@@ -8447,7 +8450,8 @@ function buildDocumentMetadataView(row) {
|
|
|
8447
8450
|
docType: row.docType ?? void 0,
|
|
8448
8451
|
status: row.status ?? void 0,
|
|
8449
8452
|
tags,
|
|
8450
|
-
|
|
8453
|
+
description,
|
|
8454
|
+
summary,
|
|
8451
8455
|
project: normalizeStringValue(frontmatter.project),
|
|
8452
8456
|
department: normalizeStringValue(frontmatter.department),
|
|
8453
8457
|
owners: normalizeStringArrayValue(frontmatter.owners),
|
|
@@ -12611,6 +12615,10 @@ function printMetadata(metadata) {
|
|
|
12611
12615
|
}
|
|
12612
12616
|
if (metadata.systems.length > 0) {
|
|
12613
12617
|
process.stdout.write(` systems: ${metadata.systems.join(", ")}
|
|
12618
|
+
`);
|
|
12619
|
+
}
|
|
12620
|
+
if (metadata.description) {
|
|
12621
|
+
process.stdout.write(` description: ${metadata.description}
|
|
12614
12622
|
`);
|
|
12615
12623
|
}
|
|
12616
12624
|
if (metadata.summary) {
|
package/dist/installer.js
CHANGED
|
@@ -3570,6 +3570,7 @@ function installIntoHome(target, home, packageRoot, force = false) {
|
|
|
3570
3570
|
writeShim(shimPath, runtimeScript);
|
|
3571
3571
|
return {
|
|
3572
3572
|
target,
|
|
3573
|
+
mode: "full",
|
|
3573
3574
|
home,
|
|
3574
3575
|
binDir,
|
|
3575
3576
|
runtimeDir,
|
|
@@ -3579,6 +3580,34 @@ function installIntoHome(target, home, packageRoot, force = false) {
|
|
|
3579
3580
|
pathHint: (process.env.PATH || "").split(import_node_path.default.delimiter).includes(binDir) ? void 0 : `The shim exists, but ${binDir} is not in PATH. Use "${shimPath}" directly or add ${binDir} to PATH.`
|
|
3580
3581
|
};
|
|
3581
3582
|
}
|
|
3583
|
+
function installCompatibilityShim(target, home, runtimeHome, force = false) {
|
|
3584
|
+
const runtimeDir = import_node_path.default.join(runtimeHome, "tools", SKILL_NAME);
|
|
3585
|
+
const runtimeScript = import_node_path.default.join(runtimeDir, "dist", "index.js");
|
|
3586
|
+
if (!import_node_fs2.default.existsSync(runtimeScript)) {
|
|
3587
|
+
throw new Error(`Cannot create compatibility shim because runtime is missing: ${runtimeScript}`);
|
|
3588
|
+
}
|
|
3589
|
+
const binDir = import_node_path.default.join(home, "bin");
|
|
3590
|
+
const shimPath = import_node_path.default.join(binDir, CLI_NAME);
|
|
3591
|
+
const legacyRuntimeDir = import_node_path.default.join(home, "tools", SKILL_NAME);
|
|
3592
|
+
const legacySkillDir = import_node_path.default.join(home, "skills", SKILL_NAME);
|
|
3593
|
+
if (force) {
|
|
3594
|
+
import_node_fs2.default.rmSync(legacyRuntimeDir, { recursive: true, force: true });
|
|
3595
|
+
import_node_fs2.default.rmSync(legacySkillDir, { recursive: true, force: true });
|
|
3596
|
+
import_node_fs2.default.rmSync(shimPath, { force: true });
|
|
3597
|
+
}
|
|
3598
|
+
ensureDir(binDir);
|
|
3599
|
+
writeShim(shimPath, runtimeScript);
|
|
3600
|
+
return {
|
|
3601
|
+
target,
|
|
3602
|
+
mode: "shim-only",
|
|
3603
|
+
home,
|
|
3604
|
+
binDir,
|
|
3605
|
+
runtimeDir,
|
|
3606
|
+
shimPath,
|
|
3607
|
+
shimInPath: (process.env.PATH || "").split(import_node_path.default.delimiter).includes(binDir),
|
|
3608
|
+
pathHint: (process.env.PATH || "").split(import_node_path.default.delimiter).includes(binDir) ? void 0 : `The shim exists, but ${binDir} is not in PATH. Use "${shimPath}" directly or add ${binDir} to PATH.`
|
|
3609
|
+
};
|
|
3610
|
+
}
|
|
3582
3611
|
function installIntoAgentHomes(options) {
|
|
3583
3612
|
const packageRoot = resolvePackageRoot(__dirname);
|
|
3584
3613
|
const agentsHome = options?.agentsHome || getDefaultAgentsHome();
|
|
@@ -3594,7 +3623,11 @@ function installIntoAgentHomes(options) {
|
|
|
3594
3623
|
if (target === "codex" || target === "all") {
|
|
3595
3624
|
const shouldSkipCodex = installs.some((entry) => entry.home === codexHome);
|
|
3596
3625
|
if (!shouldSkipCodex) {
|
|
3597
|
-
|
|
3626
|
+
if (target === "codex") {
|
|
3627
|
+
installs.push(installIntoHome("codex", codexHome, packageRoot, options?.force));
|
|
3628
|
+
} else {
|
|
3629
|
+
installs.push(installCompatibilityShim("codex", codexHome, agentsHome, options?.force));
|
|
3630
|
+
}
|
|
3598
3631
|
}
|
|
3599
3632
|
}
|
|
3600
3633
|
return {
|
|
@@ -3697,10 +3730,23 @@ program2.command("install").option("--agents-home <path>", "Target shared agents
|
|
|
3697
3730
|
return;
|
|
3698
3731
|
}
|
|
3699
3732
|
for (const install of result.installs) {
|
|
3700
|
-
process.stdout.write(`Installed ${install.target} target into ${install.home}
|
|
3733
|
+
process.stdout.write(`Installed ${install.target} target (${install.mode}) into ${install.home}
|
|
3701
3734
|
`);
|
|
3702
3735
|
process.stdout.write(`CLI shim: ${install.shimPath}
|
|
3703
3736
|
`);
|
|
3737
|
+
if (install.mode === "full") {
|
|
3738
|
+
if (install.skillDir) {
|
|
3739
|
+
process.stdout.write(`Skill payload: ${install.skillDir}
|
|
3740
|
+
`);
|
|
3741
|
+
}
|
|
3742
|
+
if (install.runtimeDir) {
|
|
3743
|
+
process.stdout.write(`Runtime: ${install.runtimeDir}
|
|
3744
|
+
`);
|
|
3745
|
+
}
|
|
3746
|
+
} else if (install.runtimeDir) {
|
|
3747
|
+
process.stdout.write(`Runtime source: ${install.runtimeDir}
|
|
3748
|
+
`);
|
|
3749
|
+
}
|
|
3704
3750
|
if (install.pathHint) {
|
|
3705
3751
|
process.stdout.write(`warning: ${install.pathHint}
|
|
3706
3752
|
`);
|
|
@@ -46,7 +46,7 @@ The index and manifest are derived artifacts and should stay ignored in the priv
|
|
|
46
46
|
8. `search`, `route` and `read` either enforce a fresh index or can explicitly auto-rebuild when `--auto-rebuild` is set.
|
|
47
47
|
9. Runtime commands may detect the current workspace automatically when the shell is already inside a private workspace.
|
|
48
48
|
10. A global per-user workspace registry stores known workspace paths and a default workspace so other agents can resolve the knowledge location automatically on macOS, Windows and Linux.
|
|
49
|
-
11. The installer now targets a shared `~/.agents` home as the primary skill/runtime location and
|
|
49
|
+
11. The installer now targets a shared `~/.agents` home as the primary skill/runtime location and adds a Codex compatibility shim under `~/.codex/bin`.
|
|
50
50
|
12. `serve` exposes the same read-only data through a local web view and now distinguishes `missing`, `stale` and `ok` states with a rebuild action.
|
|
51
51
|
|
|
52
52
|
## Onboarding Model
|
|
@@ -86,6 +86,8 @@ Phase 1 now explicitly supports a two-step retrieval model:
|
|
|
86
86
|
|
|
87
87
|
This keeps the agent loop lighter and encourages stronger filenames plus front matter without forcing a rigid folder taxonomy.
|
|
88
88
|
|
|
89
|
+
The preferred front-matter contract now includes both `description` and `summary`, so agents can inspect a short routing description before deciding whether to load full Markdown content.
|
|
90
|
+
|
|
89
91
|
## Global Workspace Discovery
|
|
90
92
|
|
|
91
93
|
Phase 1 now persists workspace discovery outside the private workspace itself:
|
|
@@ -30,4 +30,4 @@
|
|
|
30
30
|
- The CLI can initialize a private Git remote URL, but it does not validate remote policy or access controls.
|
|
31
31
|
- The package does not enforce OS-level filesystem permissions; the workspace owner must place the private workspace in a properly protected location.
|
|
32
32
|
- The global workspace registry is only a discovery layer, not an access-control boundary. Any agent running as the same local user can read the registered workspace path.
|
|
33
|
-
- The installer now targets a shared `~/.agents` home first and
|
|
33
|
+
- The installer now targets a shared `~/.agents` home first and adds a Codex compatibility shim, but it does not manage every agent product's own skill-indexing or refresh logic automatically.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codecell-germany/company-agent-wiki-skill",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Context is king: agent-first local company knowledge workspace with metadata-first retrieval, Markdown as truth, SQLite-indexed front matter, Git-aware verification, and a shared agent skill installer.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@ This package now targets a shared `~/.agents` home first so the same published p
|
|
|
21
21
|
- The private workspace may be the current dedicated local folder; it just must not be the public skill/CLI repo.
|
|
22
22
|
- The human should provide the workspace path at least once and, if desired, the private Git remote URL. After setup or manual registration, the CLI stores the workspace path in a global per-user registry so later agents can resolve it automatically.
|
|
23
23
|
- Runtime discovery matters. Before relying on the CLI, verify which path is actually available.
|
|
24
|
-
- The primary shared install target is `~/.agents`. Codex
|
|
24
|
+
- The primary shared install target is `~/.agents`. Codex should only need the compatibility shim under `~/.codex/bin`, not a duplicate second skill payload.
|
|
25
25
|
- The preferred one-command installer path is `npx -y -p @codecell-germany/company-agent-wiki-skill company-agent-wiki-skill install --force`. This only works after the npm package is really published.
|
|
26
26
|
- If the binary is not already installed in PATH, use these fallbacks in this order:
|
|
27
27
|
|
|
@@ -157,6 +157,7 @@ status: draft
|
|
|
157
157
|
tags:
|
|
158
158
|
- projekt
|
|
159
159
|
- alpha
|
|
160
|
+
description: Klare Kurzbeschreibung für Agenten, bevor der Volltext geladen wird.
|
|
160
161
|
summary: Roadmap und Entscheidungen für Projekt Alpha.
|
|
161
162
|
project: alpha
|
|
162
163
|
department: entwicklung
|
|
@@ -173,7 +174,7 @@ Empfohlener Ablauf:
|
|
|
173
174
|
|
|
174
175
|
1. Datei unter `knowledge/canonical/` oder einem anderen registrierten Managed Root anlegen.
|
|
175
176
|
2. Dateiname so wählen, dass er den Inhalt grob repräsentiert, etwa `projekt-alpha-roadmap.md`.
|
|
176
|
-
3. Front Matter inklusive `id`, `summary` und passenden Routing-Feldern setzen.
|
|
177
|
+
3. Front Matter inklusive `id`, `description`, `summary` und passenden Routing-Feldern setzen.
|
|
177
178
|
4. Wenn der Inhalt auf externer Recherche basiert, Provenienz ergänzen:
|
|
178
179
|
- Quellenstand oder Prüfdokumentation im Dokument
|
|
179
180
|
- Datum der Prüfung
|
|
@@ -217,6 +218,7 @@ tags:
|
|
|
217
218
|
- crm
|
|
218
219
|
- partner
|
|
219
220
|
- netzwerk
|
|
221
|
+
description: Kurzbeschreibung der Beziehung und ihrer Relevanz für Agenten.
|
|
220
222
|
summary: Rolle, Status und Relevanz des Partners im CodeCell-Netzwerk.
|
|
221
223
|
department: vertrieb
|
|
222
224
|
owners:
|
|
@@ -34,6 +34,7 @@ status: draft
|
|
|
34
34
|
tags:
|
|
35
35
|
- projekt
|
|
36
36
|
- alpha
|
|
37
|
+
description: Klare Kurzbeschreibung für Agenten, bevor der Volltext geladen wird.
|
|
37
38
|
summary: Roadmap und Entscheidungen für Projekt Alpha.
|
|
38
39
|
project: alpha
|
|
39
40
|
department: entwicklung
|
|
@@ -52,6 +53,7 @@ systems:
|
|
|
52
53
|
- `type`: z. B. `project`, `process`, `policy`, `guide`, `note`
|
|
53
54
|
- `status`: z. B. `draft`, `active`, `archived`
|
|
54
55
|
- `tags`: freie Schlagwörter
|
|
56
|
+
- `description`: kurze Pflichtbeschreibung für Agenten-Routing und Metadata-First-Reads
|
|
55
57
|
- `summary`: kurze 1-Zeilen-Zusammenfassung für Agenten-Routing
|
|
56
58
|
- `project`: Projektkennung oder Projektslug
|
|
57
59
|
- `department`: Abteilung oder Verantwortungsbereich
|
|
@@ -65,6 +67,7 @@ Wenn Wissen aus Webrecherche, Nutzerangaben, E-Mails oder anderen externen Quell
|
|
|
65
67
|
|
|
66
68
|
Empfohlen:
|
|
67
69
|
|
|
70
|
+
- `description` im Front Matter als sofort sichtbare Kurzbeschreibung
|
|
68
71
|
- `summary` im Front Matter für die Kurzbeschreibung
|
|
69
72
|
- im Dokument ein Abschnitt `## Quellenstand`
|
|
70
73
|
- Prüfdaten oder Prüfdatum
|
|
@@ -92,7 +95,7 @@ Beispiel:
|
|
|
92
95
|
|
|
93
96
|
1. Dokument im passenden Managed Root anlegen, meist unter `knowledge/canonical/`.
|
|
94
97
|
2. Dateinamen so wählen, dass er `title` und Inhalt grob repräsentiert.
|
|
95
|
-
3. Front Matter setzen, idealerweise inklusive `id`.
|
|
98
|
+
3. Front Matter setzen, idealerweise inklusive `id`, `description` und `summary`.
|
|
96
99
|
4. Bei externem Wissen Provenienz ergänzen.
|
|
97
100
|
5. Abschnitte schreiben.
|
|
98
101
|
6. `company-agent-wiki-cli index rebuild --workspace /absolute/path --json` ausführen.
|
|
@@ -147,6 +150,7 @@ tags:
|
|
|
147
150
|
- crm
|
|
148
151
|
- partner
|
|
149
152
|
- netzwerk
|
|
153
|
+
description: Kurzbeschreibung der Beziehung und ihrer Relevanz für Agenten.
|
|
150
154
|
summary: Rolle, Status und Relevanz des Partners im CodeCell-Netzwerk.
|
|
151
155
|
department: vertrieb
|
|
152
156
|
owners:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Overview
|
|
2
2
|
|
|
3
3
|
`company-agent-wiki-cli` is the public interface for a private, local company knowledge workspace.
|
|
4
|
-
The published package now installs into a shared `~/.agents` home first and
|
|
4
|
+
The published package now installs into a shared `~/.agents` home first and adds a Codex compatibility shim under `~/.codex/bin`.
|
|
5
5
|
|
|
6
6
|
## Source of Truth
|
|
7
7
|
|