claude-code-swarm 0.3.3 → 0.3.5
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +22 -1
- package/.claude-plugin/run-agent-inbox-mcp.sh +76 -0
- package/.claude-plugin/run-minimem-mcp.sh +98 -0
- package/.claude-plugin/run-opentasks-mcp.sh +65 -0
- package/CLAUDE.md +200 -36
- package/README.md +65 -0
- package/e2e/helpers/cleanup.mjs +17 -3
- package/e2e/helpers/map-mock-server.mjs +201 -25
- package/e2e/helpers/sidecar.mjs +222 -0
- package/e2e/helpers/workspace.mjs +2 -1
- package/e2e/tier5-sidecar-inbox.test.mjs +900 -0
- package/e2e/tier6-inbox-mcp.test.mjs +173 -0
- package/e2e/tier6-live-agent.test.mjs +759 -0
- package/e2e/vitest.config.e2e.mjs +1 -1
- package/hooks/hooks.json +15 -8
- package/package.json +13 -1
- package/references/agent-inbox/CLAUDE.md +151 -0
- package/references/agent-inbox/README.md +238 -0
- package/references/agent-inbox/docs/CLAUDE-CODE-SWARM-PROPOSAL.md +137 -0
- package/references/agent-inbox/docs/DESIGN.md +1156 -0
- package/references/agent-inbox/hooks/inbox-hook.mjs +119 -0
- package/references/agent-inbox/hooks/register-hook.mjs +69 -0
- package/references/agent-inbox/package-lock.json +3347 -0
- package/references/agent-inbox/package.json +58 -0
- package/references/agent-inbox/rules/agent-inbox.md +78 -0
- package/references/agent-inbox/src/federation/address.ts +61 -0
- package/references/agent-inbox/src/federation/connection-manager.ts +573 -0
- package/references/agent-inbox/src/federation/delivery-queue.ts +222 -0
- package/references/agent-inbox/src/federation/index.ts +6 -0
- package/references/agent-inbox/src/federation/routing-engine.ts +188 -0
- package/references/agent-inbox/src/federation/trust.ts +71 -0
- package/references/agent-inbox/src/index.ts +390 -0
- package/references/agent-inbox/src/ipc/ipc-server.ts +207 -0
- package/references/agent-inbox/src/jsonrpc/mail-server.ts +382 -0
- package/references/agent-inbox/src/map/map-client.ts +414 -0
- package/references/agent-inbox/src/mcp/mcp-server.ts +272 -0
- package/references/agent-inbox/src/mesh/delivery-bridge.ts +110 -0
- package/references/agent-inbox/src/mesh/mesh-connector.ts +41 -0
- package/references/agent-inbox/src/mesh/mesh-transport.ts +157 -0
- package/references/agent-inbox/src/mesh/type-mapper.ts +239 -0
- package/references/agent-inbox/src/push/notifier.ts +233 -0
- package/references/agent-inbox/src/registry/warm-registry.ts +255 -0
- package/references/agent-inbox/src/router/message-router.ts +175 -0
- package/references/agent-inbox/src/storage/interface.ts +48 -0
- package/references/agent-inbox/src/storage/memory.ts +145 -0
- package/references/agent-inbox/src/storage/sqlite.ts +671 -0
- package/references/agent-inbox/src/traceability/traceability.ts +183 -0
- package/references/agent-inbox/src/types.ts +303 -0
- package/references/agent-inbox/test/federation/address.test.ts +101 -0
- package/references/agent-inbox/test/federation/connection-manager.test.ts +546 -0
- package/references/agent-inbox/test/federation/delivery-queue.test.ts +159 -0
- package/references/agent-inbox/test/federation/integration.test.ts +857 -0
- package/references/agent-inbox/test/federation/routing-engine.test.ts +117 -0
- package/references/agent-inbox/test/federation/sdk-integration.test.ts +744 -0
- package/references/agent-inbox/test/federation/trust.test.ts +89 -0
- package/references/agent-inbox/test/ipc-jsonrpc.test.ts +113 -0
- package/references/agent-inbox/test/ipc-server.test.ts +197 -0
- package/references/agent-inbox/test/mail-server.test.ts +285 -0
- package/references/agent-inbox/test/map-client.test.ts +408 -0
- package/references/agent-inbox/test/mesh/delivery-bridge.test.ts +178 -0
- package/references/agent-inbox/test/mesh/e2e-mesh.test.ts +527 -0
- package/references/agent-inbox/test/mesh/e2e-real-meshpeer.test.ts +629 -0
- package/references/agent-inbox/test/mesh/federation-mesh.test.ts +269 -0
- package/references/agent-inbox/test/mesh/mesh-connector.test.ts +66 -0
- package/references/agent-inbox/test/mesh/mesh-transport.test.ts +191 -0
- package/references/agent-inbox/test/mesh/meshpeer-integration.test.ts +442 -0
- package/references/agent-inbox/test/mesh/mock-mesh.ts +125 -0
- package/references/agent-inbox/test/mesh/mock-meshpeer.ts +266 -0
- package/references/agent-inbox/test/mesh/type-mapper.test.ts +226 -0
- package/references/agent-inbox/test/message-router.test.ts +184 -0
- package/references/agent-inbox/test/push-notifier.test.ts +139 -0
- package/references/agent-inbox/test/registry/warm-registry.test.ts +171 -0
- package/references/agent-inbox/test/sqlite-prefix.test.ts +192 -0
- package/references/agent-inbox/test/sqlite-storage.test.ts +243 -0
- package/references/agent-inbox/test/storage.test.ts +196 -0
- package/references/agent-inbox/test/traceability.test.ts +123 -0
- package/references/agent-inbox/test/wake.test.ts +330 -0
- package/references/agent-inbox/tsconfig.json +20 -0
- package/references/agent-inbox/tsup.config.ts +10 -0
- package/references/agent-inbox/vitest.config.ts +8 -0
- package/references/minimem/.claude/settings.json +7 -0
- package/references/minimem/.sudocode/issues.jsonl +18 -0
- package/references/minimem/.sudocode/specs.jsonl +1 -0
- package/references/minimem/CLAUDE.md +329 -0
- package/references/minimem/README.md +565 -0
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +10 -0
- package/references/minimem/claude-plugin/.mcp.json +7 -0
- package/references/minimem/claude-plugin/README.md +158 -0
- package/references/minimem/claude-plugin/commands/recall.md +47 -0
- package/references/minimem/claude-plugin/commands/remember.md +41 -0
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +272 -0
- package/references/minimem/claude-plugin/hooks/hooks.json +27 -0
- package/references/minimem/claude-plugin/hooks/session-end.sh +86 -0
- package/references/minimem/claude-plugin/hooks/session-start.sh +85 -0
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +108 -0
- package/references/minimem/media/banner.png +0 -0
- package/references/minimem/package-lock.json +5373 -0
- package/references/minimem/package.json +76 -0
- package/references/minimem/scripts/postbuild.js +49 -0
- package/references/minimem/src/__tests__/edge-cases.test.ts +371 -0
- package/references/minimem/src/__tests__/errors.test.ts +265 -0
- package/references/minimem/src/__tests__/helpers.ts +199 -0
- package/references/minimem/src/__tests__/internal.test.ts +407 -0
- package/references/minimem/src/__tests__/knowledge-frontmatter.test.ts +148 -0
- package/references/minimem/src/__tests__/knowledge.test.ts +148 -0
- package/references/minimem/src/__tests__/minimem.integration.test.ts +1127 -0
- package/references/minimem/src/__tests__/session.test.ts +190 -0
- package/references/minimem/src/cli/__tests__/commands.test.ts +760 -0
- package/references/minimem/src/cli/__tests__/contained-layout.test.ts +286 -0
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +141 -0
- package/references/minimem/src/cli/commands/append.ts +76 -0
- package/references/minimem/src/cli/commands/config.ts +262 -0
- package/references/minimem/src/cli/commands/conflicts.ts +415 -0
- package/references/minimem/src/cli/commands/daemon.ts +169 -0
- package/references/minimem/src/cli/commands/index.ts +12 -0
- package/references/minimem/src/cli/commands/init.ts +166 -0
- package/references/minimem/src/cli/commands/mcp.ts +221 -0
- package/references/minimem/src/cli/commands/push-pull.ts +213 -0
- package/references/minimem/src/cli/commands/search.ts +223 -0
- package/references/minimem/src/cli/commands/status.ts +84 -0
- package/references/minimem/src/cli/commands/store.ts +189 -0
- package/references/minimem/src/cli/commands/sync-init.ts +290 -0
- package/references/minimem/src/cli/commands/sync.ts +70 -0
- package/references/minimem/src/cli/commands/upsert.ts +197 -0
- package/references/minimem/src/cli/config.ts +611 -0
- package/references/minimem/src/cli/index.ts +299 -0
- package/references/minimem/src/cli/shared.ts +189 -0
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +152 -0
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +209 -0
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +118 -0
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +207 -0
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +476 -0
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +363 -0
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +255 -0
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +193 -0
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +178 -0
- package/references/minimem/src/cli/sync/central.ts +292 -0
- package/references/minimem/src/cli/sync/conflicts.ts +205 -0
- package/references/minimem/src/cli/sync/daemon.ts +407 -0
- package/references/minimem/src/cli/sync/detection.ts +138 -0
- package/references/minimem/src/cli/sync/index.ts +107 -0
- package/references/minimem/src/cli/sync/operations.ts +373 -0
- package/references/minimem/src/cli/sync/registry.ts +279 -0
- package/references/minimem/src/cli/sync/state.ts +358 -0
- package/references/minimem/src/cli/sync/validation.ts +206 -0
- package/references/minimem/src/cli/sync/watcher.ts +237 -0
- package/references/minimem/src/cli/version.ts +34 -0
- package/references/minimem/src/core/index.ts +9 -0
- package/references/minimem/src/core/indexer.ts +628 -0
- package/references/minimem/src/core/searcher.ts +221 -0
- package/references/minimem/src/db/schema.ts +183 -0
- package/references/minimem/src/db/sqlite-vec.ts +24 -0
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +431 -0
- package/references/minimem/src/embeddings/batch-gemini.ts +392 -0
- package/references/minimem/src/embeddings/batch-openai.ts +409 -0
- package/references/minimem/src/embeddings/embeddings.ts +434 -0
- package/references/minimem/src/index.ts +132 -0
- package/references/minimem/src/internal.ts +299 -0
- package/references/minimem/src/minimem.ts +1291 -0
- package/references/minimem/src/search/__tests__/hybrid.test.ts +247 -0
- package/references/minimem/src/search/graph.ts +234 -0
- package/references/minimem/src/search/hybrid.ts +151 -0
- package/references/minimem/src/search/search.ts +256 -0
- package/references/minimem/src/server/__tests__/mcp.test.ts +347 -0
- package/references/minimem/src/server/__tests__/tools.test.ts +364 -0
- package/references/minimem/src/server/mcp.ts +326 -0
- package/references/minimem/src/server/tools.ts +720 -0
- package/references/minimem/src/session.ts +460 -0
- package/references/minimem/src/store/__tests__/manifest.test.ts +177 -0
- package/references/minimem/src/store/__tests__/materialize.test.ts +52 -0
- package/references/minimem/src/store/__tests__/store-graph.test.ts +228 -0
- package/references/minimem/src/store/index.ts +27 -0
- package/references/minimem/src/store/manifest.ts +203 -0
- package/references/minimem/src/store/materialize.ts +185 -0
- package/references/minimem/src/store/store-graph.ts +252 -0
- package/references/minimem/tsconfig.json +19 -0
- package/references/minimem/tsup.config.ts +26 -0
- package/references/minimem/vitest.config.ts +29 -0
- package/references/openteams/src/cli/generate.ts +23 -1
- package/references/openteams/src/generators/agent-prompt-generator.test.ts +94 -0
- package/references/openteams/src/generators/agent-prompt-generator.ts +42 -13
- package/references/openteams/src/generators/package-generator.ts +9 -1
- package/references/openteams/src/generators/skill-generator.test.ts +28 -0
- package/references/openteams/src/generators/skill-generator.ts +10 -4
- package/references/skill-tree/.claude/settings.json +6 -0
- package/references/skill-tree/.sudocode/issues.jsonl +19 -0
- package/references/skill-tree/.sudocode/specs.jsonl +3 -0
- package/references/skill-tree/CLAUDE.md +132 -0
- package/references/skill-tree/README.md +396 -0
- package/references/skill-tree/docs/GAPS_v1.md +221 -0
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +467 -0
- package/references/skill-tree/docs/TODOS.md +91 -0
- package/references/skill-tree/docs/anthropic_skill_guide.md +1364 -0
- package/references/skill-tree/docs/design/federated-skill-trees.md +524 -0
- package/references/skill-tree/docs/design/multi-agent-sync.md +759 -0
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +583 -0
- package/references/skill-tree/docs/scraper/POC_PLAN.md +420 -0
- package/references/skill-tree/docs/scraper/README.md +170 -0
- package/references/skill-tree/examples/basic-usage.ts +157 -0
- package/references/skill-tree/package-lock.json +1852 -0
- package/references/skill-tree/package.json +66 -0
- package/references/skill-tree/plan.md +78 -0
- package/references/skill-tree/scraper/README.md +123 -0
- package/references/skill-tree/scraper/docs/DESIGN.md +683 -0
- package/references/skill-tree/scraper/docs/PLAN.md +336 -0
- package/references/skill-tree/scraper/drizzle.config.ts +10 -0
- package/references/skill-tree/scraper/package-lock.json +6329 -0
- package/references/skill-tree/scraper/package.json +68 -0
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +7 -0
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +7 -0
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +27 -0
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +21 -0
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +54 -0
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +24 -0
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +93 -0
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +22 -0
- package/references/skill-tree/scraper/tsup.config.ts +14 -0
- package/references/skill-tree/scraper/vitest.config.ts +17 -0
- package/references/skill-tree/scripts/convert-to-vitest.ts +166 -0
- package/references/skill-tree/skills/skill-writer/SKILL.md +339 -0
- package/references/skill-tree/skills/skill-writer/references/examples.md +326 -0
- package/references/skill-tree/skills/skill-writer/references/patterns.md +210 -0
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +123 -0
- package/references/skill-tree/test/run-all.ts +106 -0
- package/references/skill-tree/test/utils.ts +128 -0
- package/references/skill-tree/vitest.config.ts +16 -0
- package/references/swarmkit/src/commands/init/phases/configure.ts +0 -22
- package/references/swarmkit/src/commands/init/phases/global-setup.ts +5 -3
- package/references/swarmkit/src/commands/init/wizard.ts +2 -2
- package/references/swarmkit/src/packages/setup.test.ts +53 -7
- package/references/swarmkit/src/packages/setup.ts +37 -1
- package/scripts/bootstrap.mjs +26 -1
- package/scripts/generate-agents.mjs +5 -1
- package/scripts/map-hook.mjs +97 -64
- package/scripts/map-sidecar.mjs +179 -25
- package/scripts/team-loader.mjs +12 -41
- package/skills/swarm/SKILL.md +89 -25
- package/src/__tests__/agent-generator.test.mjs +6 -13
- package/src/__tests__/bootstrap.test.mjs +124 -1
- package/src/__tests__/config.test.mjs +200 -27
- package/src/__tests__/e2e-live-map.test.mjs +536 -0
- package/src/__tests__/e2e-mesh-sidecar.test.mjs +570 -0
- package/src/__tests__/e2e-native-task-hooks.test.mjs +376 -0
- package/src/__tests__/e2e-sidecar-bridge.test.mjs +477 -0
- package/src/__tests__/helpers.mjs +13 -0
- package/src/__tests__/inbox.test.mjs +22 -89
- package/src/__tests__/index.test.mjs +35 -9
- package/src/__tests__/integration.test.mjs +513 -0
- package/src/__tests__/map-events.test.mjs +514 -150
- package/src/__tests__/mesh-connection.test.mjs +308 -0
- package/src/__tests__/opentasks-client.test.mjs +517 -0
- package/src/__tests__/paths.test.mjs +185 -41
- package/src/__tests__/sidecar-client.test.mjs +35 -0
- package/src/__tests__/sidecar-server.test.mjs +124 -0
- package/src/__tests__/skilltree-client.test.mjs +80 -0
- package/src/agent-generator.mjs +104 -33
- package/src/bootstrap.mjs +150 -10
- package/src/config.mjs +81 -17
- package/src/context-output.mjs +58 -8
- package/src/inbox.mjs +9 -54
- package/src/index.mjs +39 -8
- package/src/map-connection.mjs +4 -3
- package/src/map-events.mjs +350 -80
- package/src/mesh-connection.mjs +148 -0
- package/src/opentasks-client.mjs +269 -0
- package/src/paths.mjs +182 -27
- package/src/sessionlog.mjs +14 -9
- package/src/sidecar-client.mjs +81 -27
- package/src/sidecar-server.mjs +175 -16
- package/src/skilltree-client.mjs +173 -0
- package/src/template.mjs +68 -4
- package/vitest.config.mjs +1 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "skill-tree",
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "Library for managing agent skill versions and evolution - extract, iterate, and adapt skills from agent trajectories",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"skill-tree": "./dist/cli/index.js"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsup src/index.ts src/cli/index.ts --format cjs,esm --dts",
|
|
23
|
+
"dev": "tsup src/index.ts --format cjs,esm --dts --watch",
|
|
24
|
+
"lint": "tsc --noEmit",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"test:ui": "vitest --ui",
|
|
28
|
+
"test:coverage": "vitest run --coverage",
|
|
29
|
+
"test:legacy": "tsx test/run-all.ts",
|
|
30
|
+
"prepublishOnly": "npm run build",
|
|
31
|
+
"version:patch": "npm version patch && git push && git push --tags",
|
|
32
|
+
"version:minor": "npm version minor && git push && git push --tags",
|
|
33
|
+
"version:major": "npm version major && git push && git push --tags"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"ai",
|
|
37
|
+
"agents",
|
|
38
|
+
"skills",
|
|
39
|
+
"llm",
|
|
40
|
+
"versioning",
|
|
41
|
+
"extraction",
|
|
42
|
+
"trajectory",
|
|
43
|
+
"claude",
|
|
44
|
+
"skill-tree"
|
|
45
|
+
],
|
|
46
|
+
"author": "",
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git+https://github.com/alexngai/skill-tree.git"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
54
|
+
"@types/node": "^25.0.10",
|
|
55
|
+
"tsup": "^8.0.0",
|
|
56
|
+
"tsx": "^4.21.0",
|
|
57
|
+
"typescript": "^5.0.0",
|
|
58
|
+
"vitest": "^4.0.18"
|
|
59
|
+
},
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"better-sqlite3": "^12.6.2",
|
|
62
|
+
"chalk": "^5.6.2",
|
|
63
|
+
"commander": "^14.0.2",
|
|
64
|
+
"simple-git": "^3.30.0"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Materialization Gaps — Implementation Plan
|
|
2
|
+
|
|
3
|
+
## Gap 1: `skill-tree materialize` CLI command
|
|
4
|
+
**File:** `src/cli/commands/materialize.ts`
|
|
5
|
+
|
|
6
|
+
Add a standalone CLI command for one-shot materialization:
|
|
7
|
+
```
|
|
8
|
+
skill-tree materialize [--paths .claude/skills,.agent/skills] [--agents-md ./AGENTS.md] [--format xml]
|
|
9
|
+
```
|
|
10
|
+
- Creates a temporary SkillBank, runs `Materializer.initialize()`, then shuts down
|
|
11
|
+
- Useful for CI, scripting, and manual invocation outside the programmatic API
|
|
12
|
+
|
|
13
|
+
## Gap 2: Config file integration
|
|
14
|
+
**Files:** `src/config/types.ts`
|
|
15
|
+
|
|
16
|
+
Add `materialization` section to `SkillTreeConfig` and `DEFAULT_CONFIG`:
|
|
17
|
+
```yaml
|
|
18
|
+
materialization:
|
|
19
|
+
enabled: false
|
|
20
|
+
symlink_paths: []
|
|
21
|
+
agents_md_path: ""
|
|
22
|
+
agents_md_format: xml
|
|
23
|
+
debounce_ms: 500
|
|
24
|
+
```
|
|
25
|
+
Add to `PartialSkillTreeConfig` as well.
|
|
26
|
+
|
|
27
|
+
## Gap 3: CLI `createSkillBankFromOptions` reads materialization config
|
|
28
|
+
**File:** `src/cli/utils/skillbank.ts`
|
|
29
|
+
|
|
30
|
+
Update `createSkillBankFromOptions` to:
|
|
31
|
+
- Load the global config (already loaded in cli/index.ts)
|
|
32
|
+
- If `config.materialization.enabled`, pass `MaterializationConfig` to the SkillBank constructor
|
|
33
|
+
- This makes all CLI commands (save, import, delete) trigger materialization automatically
|
|
34
|
+
|
|
35
|
+
## Gap 4: AGENTS.md sync coordination
|
|
36
|
+
**File:** `src/materialization/materializer.ts`
|
|
37
|
+
|
|
38
|
+
The existing `sync` command writes full AGENTS.md. Materializer uses markers. These already don't conflict because:
|
|
39
|
+
- Materializer writes within `<!-- SKILLTREE_START/END -->` markers
|
|
40
|
+
- If no markers exist, it appends
|
|
41
|
+
|
|
42
|
+
But we should add a check: if `sync` command is used, warn if materialization is also enabled for the same path. Add a note in the `materialize` command help text.
|
|
43
|
+
|
|
44
|
+
## Gap 5: Copy mode (alternative to symlinks)
|
|
45
|
+
**Files:** `src/types.ts`, `src/materialization/materializer.ts`
|
|
46
|
+
|
|
47
|
+
Add `mode: 'symlink' | 'copy'` to `MaterializationConfig` (default: `'symlink'`).
|
|
48
|
+
- `'symlink'`: current behavior
|
|
49
|
+
- `'copy'`: copies the skill directory instead of symlinking. On changes, copies are refreshed. On delete, copies are removed.
|
|
50
|
+
|
|
51
|
+
## Gap 6: File watcher mode
|
|
52
|
+
**File:** `src/materialization/materializer.ts`
|
|
53
|
+
|
|
54
|
+
Add `watch()` / `unwatch()` methods to Materializer:
|
|
55
|
+
- Uses `fs.watch()` on `.skilltree/skills/` to detect file changes
|
|
56
|
+
- On change, re-reads the skill from storage and updates symlinks/copies + AGENTS.md
|
|
57
|
+
- Debounced to avoid rapid-fire events
|
|
58
|
+
|
|
59
|
+
## Gap 7: Fuzzy `read` command
|
|
60
|
+
**File:** `src/cli/commands/read.ts`
|
|
61
|
+
|
|
62
|
+
Enhance `read` to fall back to search when exact ID match fails:
|
|
63
|
+
- First try `getSkill(name)` (exact)
|
|
64
|
+
- If not found, try `searchSkills(name)` and use first result
|
|
65
|
+
- Print a note like `(matched: actual-skill-id)` so the agent knows what was resolved
|
|
66
|
+
|
|
67
|
+
## File Summary
|
|
68
|
+
|
|
69
|
+
| Action | File |
|
|
70
|
+
|--------|------|
|
|
71
|
+
| New | `src/cli/commands/materialize.ts` |
|
|
72
|
+
| Edit | `src/config/types.ts` — add materialization section |
|
|
73
|
+
| Edit | `src/cli/utils/skillbank.ts` — read materialization config |
|
|
74
|
+
| Edit | `src/cli/index.ts` — register materialize command |
|
|
75
|
+
| Edit | `src/types.ts` — add `mode` field to MaterializationConfig |
|
|
76
|
+
| Edit | `src/materialization/materializer.ts` — copy mode + watcher |
|
|
77
|
+
| Edit | `src/cli/commands/read.ts` — fuzzy search fallback |
|
|
78
|
+
| Edit | `test/materialization.test.ts` — new tests for copy, watcher, fuzzy |
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Skills Indexer
|
|
2
|
+
|
|
3
|
+
AI-powered GitHub skills indexer with hierarchical taxonomy organization.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The Skills Indexer discovers, scrapes, and indexes Agent Skills from GitHub repositories. It uses Claude AI to intelligently classify skills into a hierarchical taxonomy, enabling semantic search and discovery.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **GitHub Scraping**: Discovers skills from awesome-lists and repositories
|
|
12
|
+
- **AI Classification**: Uses Claude to categorize skills into a hierarchical tree
|
|
13
|
+
- **Multi-path Placement**: Skills can belong to multiple taxonomy categories
|
|
14
|
+
- **Relationship Detection**: Identifies dependencies, alternatives, and extensions
|
|
15
|
+
- **Async Architecture**: Designed for scale with concurrent processing
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Install dependencies
|
|
21
|
+
npm install
|
|
22
|
+
|
|
23
|
+
# Set up environment
|
|
24
|
+
cp .env.example .env
|
|
25
|
+
# Edit .env with your GitHub token and Anthropic API key
|
|
26
|
+
|
|
27
|
+
# Run database migrations
|
|
28
|
+
npm run db:migrate
|
|
29
|
+
|
|
30
|
+
# Scrape skills from default sources
|
|
31
|
+
npx skillindexer scrape --discover
|
|
32
|
+
|
|
33
|
+
# Index unclassified skills
|
|
34
|
+
npx skillindexer index
|
|
35
|
+
|
|
36
|
+
# Browse the taxonomy
|
|
37
|
+
npx skillindexer tree
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Commands
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Scraping
|
|
44
|
+
skillindexer scrape <repo-url> # Scrape specific repository
|
|
45
|
+
skillindexer scrape --discover # Scrape from configured sources
|
|
46
|
+
|
|
47
|
+
# Indexing
|
|
48
|
+
skillindexer index # Index all unclassified skills
|
|
49
|
+
skillindexer index --skill <id> # Re-index specific skill
|
|
50
|
+
|
|
51
|
+
# Browsing
|
|
52
|
+
skillindexer tree # Show full taxonomy tree
|
|
53
|
+
skillindexer tree <path> # Show subtree (e.g., "Development/Python")
|
|
54
|
+
skillindexer list # List all skills
|
|
55
|
+
skillindexer show <skill-id> # Show skill details
|
|
56
|
+
|
|
57
|
+
# Search
|
|
58
|
+
skillindexer search <query> # Keyword search
|
|
59
|
+
|
|
60
|
+
# Maintenance
|
|
61
|
+
skillindexer stats # Show statistics
|
|
62
|
+
skillindexer export --json # Export database to JSON
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Configuration
|
|
66
|
+
|
|
67
|
+
### Environment Variables
|
|
68
|
+
|
|
69
|
+
| Variable | Required | Default | Description |
|
|
70
|
+
|----------|----------|---------|-------------|
|
|
71
|
+
| `GITHUB_TOKEN` | Yes | - | GitHub personal access token |
|
|
72
|
+
| `ANTHROPIC_API_KEY` | Yes | - | Anthropic API key |
|
|
73
|
+
| `SKILLINDEXER_DB_PATH` | No | `./data/skills.db` | SQLite database path |
|
|
74
|
+
| `SKILLINDEXER_CACHE_DIR` | No | `./data/cache` | Cache directory |
|
|
75
|
+
| `SKILLINDEXER_LOG_LEVEL` | No | `info` | Log level (debug/info/warn/error) |
|
|
76
|
+
| `SKILLINDEXER_CLAUDE_MODEL` | No | `claude-sonnet-4-20250514` | Claude model to use |
|
|
77
|
+
|
|
78
|
+
## Architecture
|
|
79
|
+
|
|
80
|
+
See [docs/DESIGN.md](docs/DESIGN.md) for detailed architecture documentation.
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
84
|
+
│ CLI │───▶│ Scraper │───▶│ Indexer │
|
|
85
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
86
|
+
│ │ │
|
|
87
|
+
└────────────────────────────────────┘
|
|
88
|
+
│
|
|
89
|
+
▼
|
|
90
|
+
┌─────────────────┐
|
|
91
|
+
│ Database │
|
|
92
|
+
│ (SQLite/PG) │
|
|
93
|
+
└─────────────────┘
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Default Sources
|
|
97
|
+
|
|
98
|
+
Skills are scraped from:
|
|
99
|
+
|
|
100
|
+
1. [VoltAgent/awesome-agent-skills](https://github.com/VoltAgent/awesome-agent-skills) - ~172+ curated skills
|
|
101
|
+
2. [VoltAgent/awesome-openclaw-skills](https://github.com/VoltAgent/awesome-openclaw-skills) - ~700+ community skills
|
|
102
|
+
|
|
103
|
+
## Development
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Watch mode for development
|
|
107
|
+
npm run dev
|
|
108
|
+
|
|
109
|
+
# Run tests
|
|
110
|
+
npm test
|
|
111
|
+
|
|
112
|
+
# Type check
|
|
113
|
+
npm run lint
|
|
114
|
+
|
|
115
|
+
# Database management
|
|
116
|
+
npm run db:generate # Generate migrations
|
|
117
|
+
npm run db:migrate # Run migrations
|
|
118
|
+
npm run db:studio # Open Drizzle Studio
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## License
|
|
122
|
+
|
|
123
|
+
MIT
|