cognitive-core 0.2.1 → 0.2.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/dist/atlas.d.ts +10 -0
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +65 -0
- package/dist/atlas.js.map +1 -1
- package/dist/learning/pipeline.d.ts +4 -31
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +12 -64
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/memory/curated-loader.d.ts +21 -4
- package/dist/memory/curated-loader.d.ts.map +1 -1
- package/dist/memory/curated-loader.js +53 -16
- package/dist/memory/curated-loader.js.map +1 -1
- package/dist/memory/index.d.ts +2 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/playbook.d.ts +6 -0
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +15 -0
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/source-resolver.d.ts +120 -0
- package/dist/memory/source-resolver.d.ts.map +1 -0
- package/dist/memory/source-resolver.js +300 -0
- package/dist/memory/source-resolver.js.map +1 -0
- package/dist/types/config.d.ts +141 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +40 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/workspace/types.d.ts +12 -54
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/package.json +2 -2
- package/playbooks/compound-engineering/adversarial-review.json +51 -0
- package/playbooks/compound-engineering/agent-native-architecture.json +59 -0
- package/playbooks/compound-engineering/agent-native-review.json +54 -0
- package/playbooks/compound-engineering/api-contract-review.json +52 -0
- package/playbooks/compound-engineering/brainstorm-requirements.json +55 -0
- package/playbooks/compound-engineering/bug-reproduction.json +62 -0
- package/playbooks/compound-engineering/confidence-calibration.json +49 -0
- package/playbooks/compound-engineering/correctness-review.json +49 -0
- package/playbooks/compound-engineering/data-migration-safety.json +59 -0
- package/playbooks/compound-engineering/deployment-verification.json +63 -0
- package/playbooks/compound-engineering/error-recovery-patterns.json +53 -0
- package/playbooks/compound-engineering/implementation-planning.json +64 -0
- package/playbooks/compound-engineering/issue-pattern-analysis.json +53 -0
- package/playbooks/compound-engineering/knowledge-compounding.json +63 -0
- package/playbooks/compound-engineering/learnings-research.json +54 -0
- package/playbooks/compound-engineering/maintainability-review.json +49 -0
- package/playbooks/compound-engineering/performance-review.json +54 -0
- package/playbooks/compound-engineering/plan-adversarial-review.json +56 -0
- package/playbooks/compound-engineering/plan-feasibility-review.json +56 -0
- package/playbooks/compound-engineering/project-standards-review.json +52 -0
- package/playbooks/compound-engineering/reliability-review.json +53 -0
- package/playbooks/compound-engineering/review-orchestration.json +64 -0
- package/playbooks/compound-engineering/security-review.json +54 -0
- package/playbooks/compound-engineering/systematic-execution.json +64 -0
- package/playbooks/compound-engineering/testing-review.json +50 -0
- package/src/atlas.ts +96 -0
- package/src/memory/curated-loader.ts +69 -16
- package/src/memory/index.ts +16 -0
- package/src/memory/playbook.ts +19 -0
- package/src/memory/source-resolver.ts +422 -0
- package/src/types/config.ts +46 -0
- package/src/types/index.ts +4 -0
- package/src/workspace/types.ts +22 -78
- package/tests/integration/curated-sources-e2e.test.ts +502 -0
- package/tests/memory/compound-engineering-seed.test.ts +338 -0
- package/tests/memory/curated-loader-extended.test.ts +225 -0
- package/tests/memory/playbook-quality-validation.test.ts +430 -0
- package/tests/memory/source-resolver.test.ts +700 -0
- package/.claude/settings.local.json +0 -11
- package/dist/learning/llm-extractor.d.ts +0 -88
- package/dist/learning/llm-extractor.d.ts.map +0 -1
- package/dist/learning/llm-extractor.js +0 -372
- package/dist/learning/llm-extractor.js.map +0 -1
- package/dist/learning/loop-coordinator.d.ts +0 -61
- package/dist/learning/loop-coordinator.d.ts.map +0 -1
- package/dist/learning/loop-coordinator.js +0 -96
- package/dist/learning/loop-coordinator.js.map +0 -1
- package/references/agent-workspace/CLAUDE.md +0 -74
- package/references/agent-workspace/README.md +0 -587
- package/references/agent-workspace/media/banner.png +0 -0
- package/references/agent-workspace/package-lock.json +0 -2061
- package/references/agent-workspace/package.json +0 -54
- package/references/agent-workspace/src/handle.ts +0 -122
- package/references/agent-workspace/src/index.ts +0 -32
- package/references/agent-workspace/src/manager.ts +0 -102
- package/references/agent-workspace/src/readers/json.ts +0 -71
- package/references/agent-workspace/src/readers/markdown.ts +0 -37
- package/references/agent-workspace/src/readers/raw.ts +0 -27
- package/references/agent-workspace/src/types.ts +0 -68
- package/references/agent-workspace/src/validation.ts +0 -93
- package/references/agent-workspace/src/writers/json.ts +0 -17
- package/references/agent-workspace/src/writers/markdown.ts +0 -27
- package/references/agent-workspace/src/writers/raw.ts +0 -22
- package/references/agent-workspace/tests/errors.test.ts +0 -652
- package/references/agent-workspace/tests/handle.test.ts +0 -144
- package/references/agent-workspace/tests/manager.test.ts +0 -124
- package/references/agent-workspace/tests/readers.test.ts +0 -205
- package/references/agent-workspace/tests/validation.test.ts +0 -196
- package/references/agent-workspace/tests/writers.test.ts +0 -108
- package/references/agent-workspace/tsconfig.json +0 -20
- package/references/agent-workspace/tsup.config.ts +0 -9
- package/references/minimem/.claude/settings.json +0 -7
- package/references/minimem/.sudocode/issues.jsonl +0 -18
- package/references/minimem/.sudocode/specs.jsonl +0 -1
- package/references/minimem/CLAUDE.md +0 -310
- package/references/minimem/README.md +0 -556
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
- package/references/minimem/claude-plugin/.mcp.json +0 -7
- package/references/minimem/claude-plugin/README.md +0 -158
- package/references/minimem/claude-plugin/commands/recall.md +0 -47
- package/references/minimem/claude-plugin/commands/remember.md +0 -41
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
- package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
- package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
- package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
- package/references/minimem/package-lock.json +0 -5373
- package/references/minimem/package.json +0 -60
- package/references/minimem/scripts/postbuild.js +0 -35
- package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
- package/references/minimem/src/__tests__/errors.test.ts +0 -265
- package/references/minimem/src/__tests__/helpers.ts +0 -199
- package/references/minimem/src/__tests__/internal.test.ts +0 -407
- package/references/minimem/src/__tests__/knowledge.test.ts +0 -287
- package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
- package/references/minimem/src/__tests__/session.test.ts +0 -190
- package/references/minimem/src/cli/__tests__/commands.test.ts +0 -759
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
- package/references/minimem/src/cli/commands/append.ts +0 -76
- package/references/minimem/src/cli/commands/config.ts +0 -262
- package/references/minimem/src/cli/commands/conflicts.ts +0 -413
- package/references/minimem/src/cli/commands/daemon.ts +0 -169
- package/references/minimem/src/cli/commands/index.ts +0 -12
- package/references/minimem/src/cli/commands/init.ts +0 -88
- package/references/minimem/src/cli/commands/mcp.ts +0 -177
- package/references/minimem/src/cli/commands/push-pull.ts +0 -213
- package/references/minimem/src/cli/commands/search.ts +0 -158
- package/references/minimem/src/cli/commands/status.ts +0 -84
- package/references/minimem/src/cli/commands/sync-init.ts +0 -290
- package/references/minimem/src/cli/commands/sync.ts +0 -70
- package/references/minimem/src/cli/commands/upsert.ts +0 -197
- package/references/minimem/src/cli/config.ts +0 -584
- package/references/minimem/src/cli/index.ts +0 -264
- package/references/minimem/src/cli/shared.ts +0 -161
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
- package/references/minimem/src/cli/sync/central.ts +0 -292
- package/references/minimem/src/cli/sync/conflicts.ts +0 -204
- package/references/minimem/src/cli/sync/daemon.ts +0 -407
- package/references/minimem/src/cli/sync/detection.ts +0 -138
- package/references/minimem/src/cli/sync/index.ts +0 -107
- package/references/minimem/src/cli/sync/operations.ts +0 -373
- package/references/minimem/src/cli/sync/registry.ts +0 -279
- package/references/minimem/src/cli/sync/state.ts +0 -355
- package/references/minimem/src/cli/sync/validation.ts +0 -206
- package/references/minimem/src/cli/sync/watcher.ts +0 -234
- package/references/minimem/src/cli/version.ts +0 -34
- package/references/minimem/src/core/index.ts +0 -9
- package/references/minimem/src/core/indexer.ts +0 -628
- package/references/minimem/src/core/searcher.ts +0 -221
- package/references/minimem/src/db/schema.ts +0 -183
- package/references/minimem/src/db/sqlite-vec.ts +0 -24
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
- package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
- package/references/minimem/src/embeddings/batch-openai.ts +0 -409
- package/references/minimem/src/embeddings/embeddings.ts +0 -434
- package/references/minimem/src/index.ts +0 -109
- package/references/minimem/src/internal.ts +0 -299
- package/references/minimem/src/minimem.ts +0 -1276
- package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
- package/references/minimem/src/search/graph.ts +0 -234
- package/references/minimem/src/search/hybrid.ts +0 -151
- package/references/minimem/src/search/search.ts +0 -256
- package/references/minimem/src/server/__tests__/mcp.test.ts +0 -341
- package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
- package/references/minimem/src/server/mcp.ts +0 -326
- package/references/minimem/src/server/tools.ts +0 -720
- package/references/minimem/src/session.ts +0 -460
- package/references/minimem/tsconfig.json +0 -19
- package/references/minimem/tsup.config.ts +0 -26
- package/references/minimem/vitest.config.ts +0 -24
- package/references/sessionlog/.husky/pre-commit +0 -1
- package/references/sessionlog/.lintstagedrc.json +0 -4
- package/references/sessionlog/.prettierignore +0 -4
- package/references/sessionlog/.prettierrc.json +0 -11
- package/references/sessionlog/LICENSE +0 -21
- package/references/sessionlog/README.md +0 -453
- package/references/sessionlog/eslint.config.js +0 -58
- package/references/sessionlog/package-lock.json +0 -3672
- package/references/sessionlog/package.json +0 -65
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
- package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
- package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
- package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
- package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
- package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
- package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
- package/references/sessionlog/src/__tests__/types.test.ts +0 -166
- package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
- package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
- package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
- package/references/sessionlog/src/agent/agents/claude-code.ts +0 -1089
- package/references/sessionlog/src/agent/agents/cursor.ts +0 -361
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +0 -632
- package/references/sessionlog/src/agent/agents/opencode.ts +0 -540
- package/references/sessionlog/src/agent/registry.ts +0 -143
- package/references/sessionlog/src/agent/session-types.ts +0 -113
- package/references/sessionlog/src/agent/types.ts +0 -220
- package/references/sessionlog/src/cli.ts +0 -597
- package/references/sessionlog/src/commands/clean.ts +0 -133
- package/references/sessionlog/src/commands/disable.ts +0 -84
- package/references/sessionlog/src/commands/doctor.ts +0 -145
- package/references/sessionlog/src/commands/enable.ts +0 -202
- package/references/sessionlog/src/commands/explain.ts +0 -261
- package/references/sessionlog/src/commands/reset.ts +0 -105
- package/references/sessionlog/src/commands/resume.ts +0 -180
- package/references/sessionlog/src/commands/rewind.ts +0 -195
- package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
- package/references/sessionlog/src/commands/status.ts +0 -172
- package/references/sessionlog/src/config.ts +0 -165
- package/references/sessionlog/src/events/event-log.ts +0 -126
- package/references/sessionlog/src/git-operations.ts +0 -558
- package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
- package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
- package/references/sessionlog/src/index.ts +0 -650
- package/references/sessionlog/src/security/redaction.ts +0 -283
- package/references/sessionlog/src/session/state-machine.ts +0 -452
- package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
- package/references/sessionlog/src/store/native-store.ts +0 -173
- package/references/sessionlog/src/store/provider-types.ts +0 -99
- package/references/sessionlog/src/store/session-store.ts +0 -266
- package/references/sessionlog/src/strategy/attribution.ts +0 -296
- package/references/sessionlog/src/strategy/common.ts +0 -207
- package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
- package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
- package/references/sessionlog/src/strategy/types.ts +0 -279
- package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
- package/references/sessionlog/src/summarize/summarize.ts +0 -432
- package/references/sessionlog/src/types.ts +0 -508
- package/references/sessionlog/src/utils/chunk-files.ts +0 -49
- package/references/sessionlog/src/utils/commit-message.ts +0 -65
- package/references/sessionlog/src/utils/detect-agent.ts +0 -36
- package/references/sessionlog/src/utils/hook-managers.ts +0 -125
- package/references/sessionlog/src/utils/ide-tags.ts +0 -32
- package/references/sessionlog/src/utils/paths.ts +0 -79
- package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
- package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
- package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
- package/references/sessionlog/src/utils/string-utils.ts +0 -46
- package/references/sessionlog/src/utils/todo-extract.ts +0 -188
- package/references/sessionlog/src/utils/trailers.ts +0 -187
- package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
- package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
- package/references/sessionlog/src/utils/tree-ops.ts +0 -219
- package/references/sessionlog/src/utils/tty.ts +0 -72
- package/references/sessionlog/src/utils/validation.ts +0 -65
- package/references/sessionlog/src/utils/worktree.ts +0 -58
- package/references/sessionlog/src/wire-types.ts +0 -59
- package/references/sessionlog/templates/setup-env.sh +0 -153
- package/references/sessionlog/tsconfig.json +0 -18
- package/references/sessionlog/vitest.config.ts +0 -12
- package/references/skill-tree/.claude/settings.json +0 -6
- package/references/skill-tree/.sudocode/issues.jsonl +0 -19
- package/references/skill-tree/.sudocode/specs.jsonl +0 -3
- package/references/skill-tree/CLAUDE.md +0 -126
- package/references/skill-tree/README.md +0 -372
- package/references/skill-tree/docs/GAPS_v1.md +0 -221
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
- package/references/skill-tree/docs/TODOS.md +0 -91
- package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
- package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
- package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
- package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
- package/references/skill-tree/docs/scraper/README.md +0 -170
- package/references/skill-tree/examples/basic-usage.ts +0 -164
- package/references/skill-tree/package-lock.json +0 -1852
- package/references/skill-tree/package.json +0 -66
- package/references/skill-tree/scraper/README.md +0 -123
- package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
- package/references/skill-tree/scraper/docs/PLAN.md +0 -336
- package/references/skill-tree/scraper/drizzle.config.ts +0 -10
- package/references/skill-tree/scraper/package-lock.json +0 -6329
- package/references/skill-tree/scraper/package.json +0 -68
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
- package/references/skill-tree/scraper/tsup.config.ts +0 -14
- package/references/skill-tree/scraper/vitest.config.ts +0 -17
- package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
- package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
- package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
- package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
- package/references/skill-tree/test/run-all.ts +0 -106
- package/references/skill-tree/test/utils.ts +0 -128
- package/references/skill-tree/vitest.config.ts +0 -16
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
# skill-tree
|
|
2
|
-
|
|
3
|
-
A TypeScript library for managing agent skill versions and evolution. Store, version, serve, sync, and federate reusable skills for AI agents.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
skill-tree helps you build and maintain a library of reusable skills for AI agents by:
|
|
8
|
-
|
|
9
|
-
- **Storing skills** in a versioned, searchable format (OpenSkills-compatible)
|
|
10
|
-
- **Evolving skills** through versioning, forking, and merging
|
|
11
|
-
- **Serving skills** via dynamic loadouts with expand/collapse, profiles, and token budgeting
|
|
12
|
-
- **Syncing skills** across agents with git-based multi-agent collaboration
|
|
13
|
-
- **Federating skills** across repositories for cross-organization sharing
|
|
14
|
-
|
|
15
|
-
Inspired by research on skill libraries ([arXiv:2512.17102](https://arxiv.org/abs/2512.17102)), [Claudeception](https://github.com/blader/Claudeception), and [OpenSkills](https://github.com/numman-ali/openskills).
|
|
16
|
-
|
|
17
|
-
## Installation
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install skill-tree
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Quick Start
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
import { createSkillBank, type Skill } from 'skill-tree';
|
|
27
|
-
|
|
28
|
-
// Create a skill bank with filesystem storage
|
|
29
|
-
const bank = createSkillBank({
|
|
30
|
-
storage: { basePath: './skills' },
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
await bank.initialize();
|
|
34
|
-
|
|
35
|
-
// Save a skill
|
|
36
|
-
await bank.saveSkill({
|
|
37
|
-
id: 'typescript-esm-import-fix',
|
|
38
|
-
name: 'TypeScript ESM Import Fix',
|
|
39
|
-
version: '1.0.0',
|
|
40
|
-
description: 'Fix TypeScript ES module import errors',
|
|
41
|
-
problem: 'TypeScript with ES modules requires explicit .js extensions',
|
|
42
|
-
triggerConditions: [{ type: 'error', value: "Cannot find module './utils'" }],
|
|
43
|
-
solution: 'Add .js extension to all relative imports.',
|
|
44
|
-
verification: 'Run tsc --noEmit to verify no import errors',
|
|
45
|
-
examples: [],
|
|
46
|
-
author: 'me',
|
|
47
|
-
tags: ['typescript', 'esm'],
|
|
48
|
-
createdAt: new Date(),
|
|
49
|
-
updatedAt: new Date(),
|
|
50
|
-
status: 'active',
|
|
51
|
-
metrics: { usageCount: 0, successRate: 0, feedbackScores: [] },
|
|
52
|
-
} as Skill);
|
|
53
|
-
|
|
54
|
-
// Search for skills
|
|
55
|
-
const skills = await bank.searchSkills('typescript');
|
|
56
|
-
|
|
57
|
-
// Create a new version
|
|
58
|
-
const updated = await bank.createVersion('typescript-esm-import-fix', {
|
|
59
|
-
solution: 'Add .js extension, or use "moduleResolution": "bundler".',
|
|
60
|
-
}, { bumpType: 'minor' });
|
|
61
|
-
|
|
62
|
-
await bank.shutdown();
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Core Concepts
|
|
66
|
-
|
|
67
|
-
### Skills
|
|
68
|
-
|
|
69
|
-
A skill represents a reusable piece of knowledge:
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
interface Skill {
|
|
73
|
-
id: string; // Unique identifier
|
|
74
|
-
name: string; // Human-readable name
|
|
75
|
-
version: string; // Semantic version
|
|
76
|
-
description: string; // For search and matching
|
|
77
|
-
problem: string; // What problem this solves
|
|
78
|
-
triggerConditions: TriggerCondition[]; // When to apply
|
|
79
|
-
solution: string; // Step-by-step solution
|
|
80
|
-
verification: string; // How to verify it worked
|
|
81
|
-
examples: SkillExample[]; // Usage examples
|
|
82
|
-
tags: string[]; // Categorization
|
|
83
|
-
status: SkillStatus; // 'draft' | 'active' | 'deprecated' | 'experimental'
|
|
84
|
-
metrics: SkillMetrics; // Usage tracking
|
|
85
|
-
// ... namespace, taxonomy, lineage
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Storage
|
|
90
|
-
|
|
91
|
-
Two backends:
|
|
92
|
-
|
|
93
|
-
```typescript
|
|
94
|
-
// Filesystem (JSON source of truth + SQLite cache)
|
|
95
|
-
const bank = createSkillBank({
|
|
96
|
-
storage: { basePath: './skills' },
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
// Memory (for testing)
|
|
100
|
-
const bank = createSkillBank({
|
|
101
|
-
storage: { type: 'memory' },
|
|
102
|
-
});
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Skills are stored in the OpenSkills format:
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
skills/
|
|
109
|
-
├── my-skill/
|
|
110
|
-
│ ├── SKILL.md # Skill content (YAML + Markdown)
|
|
111
|
-
│ └── .skilltree.json # Metadata and lineage
|
|
112
|
-
└── .versions/
|
|
113
|
-
└── my-skill/
|
|
114
|
-
├── 1.0.0.json # Version snapshots
|
|
115
|
-
└── 1.1.0.json
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## Features
|
|
119
|
-
|
|
120
|
-
### Versioning
|
|
121
|
-
|
|
122
|
-
Semantic versioning with full lineage tracking:
|
|
123
|
-
|
|
124
|
-
```typescript
|
|
125
|
-
// Create new version
|
|
126
|
-
const v2 = await bank.createVersion('my-skill', updates, {
|
|
127
|
-
bumpType: 'minor',
|
|
128
|
-
changelog: 'Added alternative solution',
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
// Get version history
|
|
132
|
-
const history = await bank.getVersionHistory('my-skill');
|
|
133
|
-
|
|
134
|
-
// Rollback to previous version
|
|
135
|
-
const restored = await bank.rollbackSkill('my-skill', '1.0.0');
|
|
136
|
-
|
|
137
|
-
// Compare versions
|
|
138
|
-
const diff = await bank.compareVersions('my-skill', '1.0.0', '2.0.0');
|
|
139
|
-
|
|
140
|
-
// Fork for a specialized use case
|
|
141
|
-
const forked = await bank.forkSkill('my-skill', {
|
|
142
|
-
newId: 'my-skill-react',
|
|
143
|
-
newName: 'My Skill (React variant)',
|
|
144
|
-
reason: 'Specialized for React projects',
|
|
145
|
-
});
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Serving Layer
|
|
149
|
-
|
|
150
|
-
Dynamic skill loadouts for agent context windows:
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
const { server } = await bank.createServingLayer({
|
|
154
|
-
maxExpanded: 5,
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
// Orchestrator sets loadout based on task
|
|
158
|
-
await server.setLoadoutForTask('Fix authentication bug');
|
|
159
|
-
|
|
160
|
-
// Or use a built-in profile
|
|
161
|
-
await server.setLoadoutFromProfile('debugging');
|
|
162
|
-
|
|
163
|
-
// Render skills into system prompt
|
|
164
|
-
const prompt = server.renderSystemPrompt();
|
|
165
|
-
|
|
166
|
-
// Agent-side API
|
|
167
|
-
const view = server.agentListLoadout();
|
|
168
|
-
const skill = server.agentExpandSkill('some-skill-id');
|
|
169
|
-
server.agentCollapseSkill('some-skill-id');
|
|
170
|
-
await server.agentRequestSkills(['another-skill']);
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### Multi-Agent Sync
|
|
174
|
-
|
|
175
|
-
Git-based skill synchronization:
|
|
176
|
-
|
|
177
|
-
```typescript
|
|
178
|
-
import { createDefaultSyncConfig } from 'skill-tree';
|
|
179
|
-
|
|
180
|
-
const bank = createSkillBank({
|
|
181
|
-
storage: { basePath: './skills' },
|
|
182
|
-
sync: {
|
|
183
|
-
config: createDefaultSyncConfig({
|
|
184
|
-
repoUrl: 'git@github.com:org/skills.git',
|
|
185
|
-
agentId: 'agent-1',
|
|
186
|
-
}),
|
|
187
|
-
pullOnInit: true,
|
|
188
|
-
},
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
await bank.initialize(); // auto-pulls remote changes
|
|
192
|
-
|
|
193
|
-
// Manual sync
|
|
194
|
-
await bank.sync.push();
|
|
195
|
-
await bank.sync.pull();
|
|
196
|
-
const status = await bank.sync.status();
|
|
197
|
-
|
|
198
|
-
await bank.shutdown(); // flushes pending sync
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### Federation
|
|
202
|
-
|
|
203
|
-
Connect independent skill repositories:
|
|
204
|
-
|
|
205
|
-
```typescript
|
|
206
|
-
// Add a remote
|
|
207
|
-
await bank.federation.addRemote('team', {
|
|
208
|
-
url: 'git@github.com:org/team-skills.git',
|
|
209
|
-
access: 'read-write',
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
// Browse remote skills
|
|
213
|
-
const remoteSkills = await bank.federation.browse('team');
|
|
214
|
-
|
|
215
|
-
// Import a skill
|
|
216
|
-
const result = await bank.federation.import('team', 'useful-pattern');
|
|
217
|
-
|
|
218
|
-
// Share a skill
|
|
219
|
-
await bank.federation.share('my-skill', 'team');
|
|
220
|
-
|
|
221
|
-
// Check for upstream updates
|
|
222
|
-
const updates = await bank.federation.checkUpstream();
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### Events
|
|
226
|
-
|
|
227
|
-
Subscribe to skill bank events:
|
|
228
|
-
|
|
229
|
-
```typescript
|
|
230
|
-
// Simple synchronous listeners
|
|
231
|
-
const unsubscribe = bank.on((event) => {
|
|
232
|
-
switch (event.type) {
|
|
233
|
-
case 'skill:created':
|
|
234
|
-
console.log('New skill:', event.skill.name);
|
|
235
|
-
break;
|
|
236
|
-
case 'skill:updated':
|
|
237
|
-
console.log('Updated:', event.skill.name, 'from', event.previousVersion);
|
|
238
|
-
break;
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
// Advanced: async hooks with priority and filtering
|
|
243
|
-
bank.getHookRegistry().register({
|
|
244
|
-
event: 'storage:after-save',
|
|
245
|
-
handler: async (context) => {
|
|
246
|
-
console.log('Skill saved to storage');
|
|
247
|
-
},
|
|
248
|
-
priority: 'normal',
|
|
249
|
-
});
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### AGENTS.md Integration
|
|
253
|
-
|
|
254
|
-
Bidirectional sync between skill bank and AGENTS.md files:
|
|
255
|
-
|
|
256
|
-
```typescript
|
|
257
|
-
import { createAgentsSync } from 'skill-tree';
|
|
258
|
-
|
|
259
|
-
const sync = createAgentsSync(bank.getStorage());
|
|
260
|
-
const result = await sync.sync('./AGENTS.md', {
|
|
261
|
-
direction: 'bidirectional',
|
|
262
|
-
});
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### Namespace Support
|
|
266
|
-
|
|
267
|
-
Multi-tier skill trees for team environments:
|
|
268
|
-
|
|
269
|
-
```typescript
|
|
270
|
-
const bank = createSkillBank({
|
|
271
|
-
storage: { basePath: './skills' },
|
|
272
|
-
namespace: {
|
|
273
|
-
agentId: 'agent-1',
|
|
274
|
-
team: 'frontend',
|
|
275
|
-
defaultScope: 'personal',
|
|
276
|
-
defaultVisibility: 'private',
|
|
277
|
-
},
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
// List skills by scope
|
|
281
|
-
const personal = await bank.listSkills({ scope: 'personal', owner: 'agent-1' });
|
|
282
|
-
const teamSkills = await bank.listSkills({ scope: 'team', team: 'frontend' });
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
## API Reference
|
|
286
|
-
|
|
287
|
-
### SkillBank
|
|
288
|
-
|
|
289
|
-
Main orchestrator class, created via `createSkillBank(config)`.
|
|
290
|
-
|
|
291
|
-
| Method | Description |
|
|
292
|
-
|--------|-------------|
|
|
293
|
-
| `initialize()` | Initialize storage, federation, and sync |
|
|
294
|
-
| `shutdown()` | Clean shutdown (flushes sync) |
|
|
295
|
-
| `getSkill(id, version?)` | Get skill by ID |
|
|
296
|
-
| `listSkills(filter?)` | List skills with optional filter |
|
|
297
|
-
| `searchSkills(query)` | Full-text search |
|
|
298
|
-
| `saveSkill(skill)` | Save or update a skill |
|
|
299
|
-
| `deleteSkill(id, version?)` | Delete a skill |
|
|
300
|
-
| `deprecateSkill(id)` | Mark skill as deprecated |
|
|
301
|
-
| `createVersion(id, updates, options?)` | Create new version |
|
|
302
|
-
| `forkSkill(id, options)` | Fork a skill |
|
|
303
|
-
| `getVersionHistory(id)` | Get version history |
|
|
304
|
-
| `getLineage(id)` | Get full lineage |
|
|
305
|
-
| `rollbackSkill(id, version)` | Rollback to version |
|
|
306
|
-
| `compareVersions(id, vA, vB)` | Diff two versions |
|
|
307
|
-
| `on(handler)` | Subscribe to events (returns unsubscribe fn) |
|
|
308
|
-
| `off(handler)` | Unsubscribe from events |
|
|
309
|
-
| `getStats()` | Get skill bank statistics |
|
|
310
|
-
| `exportAll()` | Export all skills |
|
|
311
|
-
| `importSkills(skills)` | Bulk import skills |
|
|
312
|
-
| `createServingLayer(config?)` | Create a SkillGraphServer |
|
|
313
|
-
| `getStorage()` | Access underlying storage adapter |
|
|
314
|
-
| `getHookRegistry()` | Access hook registry |
|
|
315
|
-
| `sync` | SyncManager accessor (throws if not configured) |
|
|
316
|
-
| `federation` | FederationManager accessor (requires basePath) |
|
|
317
|
-
|
|
318
|
-
### Versioning Utilities
|
|
319
|
-
|
|
320
|
-
```typescript
|
|
321
|
-
import {
|
|
322
|
-
parseVersion,
|
|
323
|
-
compareVersions,
|
|
324
|
-
bumpVersion,
|
|
325
|
-
satisfiesRange,
|
|
326
|
-
} from 'skill-tree';
|
|
327
|
-
|
|
328
|
-
bumpVersion('1.2.3', 'minor'); // '1.3.0'
|
|
329
|
-
satisfiesRange('1.5.0', '^1.2.0'); // true
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
## Skill Format
|
|
333
|
-
|
|
334
|
-
Skills use YAML frontmatter + Markdown (OpenSkills-compatible):
|
|
335
|
-
|
|
336
|
-
```markdown
|
|
337
|
-
---
|
|
338
|
-
name: typescript-esm-import-fix
|
|
339
|
-
description: |
|
|
340
|
-
Fix TypeScript ES module import errors by adding .js extension
|
|
341
|
-
version: 1.0.0
|
|
342
|
-
author: extracted
|
|
343
|
-
status: active
|
|
344
|
-
date: 2024-01-15
|
|
345
|
-
tags:
|
|
346
|
-
- typescript
|
|
347
|
-
- esm
|
|
348
|
-
- imports
|
|
349
|
-
---
|
|
350
|
-
|
|
351
|
-
## Problem
|
|
352
|
-
|
|
353
|
-
TypeScript with ES modules requires explicit .js extensions in imports.
|
|
354
|
-
|
|
355
|
-
## Trigger Conditions
|
|
356
|
-
|
|
357
|
-
- **error**: `Cannot find module './utils'`
|
|
358
|
-
- **pattern**: `import .* from '\./[^']+(?<!\.js)'`
|
|
359
|
-
|
|
360
|
-
## Solution
|
|
361
|
-
|
|
362
|
-
1. Add `.js` extension to relative imports
|
|
363
|
-
2. Even for `.ts` files, use `.js` in the import path
|
|
364
|
-
|
|
365
|
-
## Verification
|
|
366
|
-
|
|
367
|
-
Run `tsc` and verify no module resolution errors.
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
## License
|
|
371
|
-
|
|
372
|
-
MIT
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
# Integration Gaps Tracking - v1
|
|
2
|
-
|
|
3
|
-
This document tracks the remaining work to complete the skill indexer integration as defined in [INTEGRATION_PLAN.md](./INTEGRATION_PLAN.md).
|
|
4
|
-
|
|
5
|
-
## Status Overview
|
|
6
|
-
|
|
7
|
-
| Phase | Status | Completion |
|
|
8
|
-
|-------|--------|------------|
|
|
9
|
-
| Phase 1: Import Pipeline | ✅ Complete | 100% |
|
|
10
|
-
| Phase 2: CLI Unification | ✅ Complete | 100% |
|
|
11
|
-
| Phase 3: Unified Storage | ✅ Complete | 100% |
|
|
12
|
-
| Phase 4: Direct Integration | ✅ Complete | 100% |
|
|
13
|
-
| Phase 5: Bidirectional Sync | ✅ Complete | 100% |
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## High Priority Items
|
|
18
|
-
|
|
19
|
-
### 1. Unified Configuration System
|
|
20
|
-
|
|
21
|
-
**Status**: ✅ Complete
|
|
22
|
-
|
|
23
|
-
**Goal**: Single config file for both skill-tree and indexer settings.
|
|
24
|
-
|
|
25
|
-
**Location**: `~/.skill-tree/config.yaml`
|
|
26
|
-
|
|
27
|
-
**Tasks**:
|
|
28
|
-
- [x] Create `src/config/` module
|
|
29
|
-
- [x] Define `SkillTreeConfig` interface
|
|
30
|
-
- [x] Implement config file loading with defaults
|
|
31
|
-
- [x] Support environment variable substitution
|
|
32
|
-
- [x] Integrate with CLI global options
|
|
33
|
-
- [x] Integrate with IndexerService
|
|
34
|
-
|
|
35
|
-
**Files Created**:
|
|
36
|
-
- `src/config/types.ts` - Configuration type definitions
|
|
37
|
-
- `src/config/loader.ts` - Config loading and merging logic
|
|
38
|
-
- `src/config/index.ts` - Module exports
|
|
39
|
-
- `src/cli/commands/config.ts` - CLI config command
|
|
40
|
-
|
|
41
|
-
**Config Schema**:
|
|
42
|
-
```yaml
|
|
43
|
-
storage:
|
|
44
|
-
type: sqlite | filesystem | memory
|
|
45
|
-
path: ~/.skill-tree/skills.db
|
|
46
|
-
|
|
47
|
-
indexer:
|
|
48
|
-
github_token: ${GITHUB_TOKEN}
|
|
49
|
-
anthropic_key: ${ANTHROPIC_API_KEY}
|
|
50
|
-
sources:
|
|
51
|
-
- https://github.com/VoltAgent/awesome-agent-skills
|
|
52
|
-
batch_size: 10
|
|
53
|
-
min_confidence: 0.7
|
|
54
|
-
|
|
55
|
-
matching:
|
|
56
|
-
embedding_model: text-embedding-3-small
|
|
57
|
-
similarity_threshold: 0.8
|
|
58
|
-
|
|
59
|
-
sync:
|
|
60
|
-
auto_check: false
|
|
61
|
-
check_interval_hours: 24
|
|
62
|
-
conflict_resolution: prompt
|
|
63
|
-
|
|
64
|
-
cli:
|
|
65
|
-
output_format: table
|
|
66
|
-
color: true
|
|
67
|
-
quiet: false
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
### 2. IndexerService Direct Execution
|
|
73
|
-
|
|
74
|
-
**Status**: ✅ Complete
|
|
75
|
-
|
|
76
|
-
**Goal**: CLI commands execute directly instead of delegating to subprocess.
|
|
77
|
-
|
|
78
|
-
**Tasks**:
|
|
79
|
-
- [x] Update `IndexerService.initialize()` to properly load scraper modules
|
|
80
|
-
- [x] Implement `scrape()` method with actual scraper integration
|
|
81
|
-
- [x] Implement `classify()` method with actual indexer integration
|
|
82
|
-
- [x] Implement `detectRelationships()` method
|
|
83
|
-
- [x] Implement `getTaxonomyTree()` using storage adapter
|
|
84
|
-
- [x] Implement `getStats()` method
|
|
85
|
-
- [x] Update CLI commands to use IndexerService directly
|
|
86
|
-
- [x] Add fallback to subprocess if modules unavailable
|
|
87
|
-
|
|
88
|
-
**Files Modified**:
|
|
89
|
-
- `src/services/indexer.ts` - Full IndexerService implementation
|
|
90
|
-
- `src/cli/commands/indexer/scrape.ts` - Direct execution with fallback
|
|
91
|
-
- `src/cli/commands/indexer/classify.ts` - Direct execution with fallback
|
|
92
|
-
- `src/cli/commands/indexer/taxonomy.ts` - Direct execution with fallback
|
|
93
|
-
- `src/cli/commands/indexer/relationships.ts` - Direct execution with fallback
|
|
94
|
-
- `src/cli/commands/indexer/stats.ts` - Direct execution with fallback
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Medium Priority Items
|
|
99
|
-
|
|
100
|
-
### 3. Direct SkillBank Integration
|
|
101
|
-
|
|
102
|
-
**Status**: ✅ Complete
|
|
103
|
-
|
|
104
|
-
**Goal**: IndexerService writes directly to SkillBank, no export/import step.
|
|
105
|
-
|
|
106
|
-
**Tasks**:
|
|
107
|
-
- [x] Implement `IndexerService.scrapeAndIndex()` method
|
|
108
|
-
- [x] Convert scraped skills on-the-fly using converter
|
|
109
|
-
- [x] Store directly via SkillBank.addSkill()
|
|
110
|
-
- [x] Auto-place in taxonomy after save
|
|
111
|
-
- [x] Update `skill-tree index scrape` to use direct integration
|
|
112
|
-
|
|
113
|
-
**Files Modified**:
|
|
114
|
-
- `src/services/indexer.ts` - Added `scrapeAndIndex()` method
|
|
115
|
-
- `src/skill-bank.ts` - Added `addSkill()` method with taxonomy placement
|
|
116
|
-
- `src/cli/commands/indexer/scrape.ts` - Added `--import` flag for auto-import
|
|
117
|
-
|
|
118
|
-
**Workflow After**:
|
|
119
|
-
```bash
|
|
120
|
-
# One command does everything
|
|
121
|
-
skill-tree index scrape https://github.com/org/repo
|
|
122
|
-
# Skills immediately available in skill-tree
|
|
123
|
-
skill-tree list
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
### 4. SkillBank Event System
|
|
129
|
-
|
|
130
|
-
**Status**: ✅ Complete
|
|
131
|
-
|
|
132
|
-
**Goal**: Event-driven hooks for skill lifecycle.
|
|
133
|
-
|
|
134
|
-
**Tasks**:
|
|
135
|
-
- [x] Add EventEmitter to SkillBank (already existed via `on()`)
|
|
136
|
-
- [x] Define event types: `skill:created`, `skill:updated`, `skill:deleted`
|
|
137
|
-
- [x] Emit events from `addSkill()`, `updateSkill()`, `deleteSkill()`
|
|
138
|
-
- [x] Hook relationship detection to `skill:created` for imported skills
|
|
139
|
-
- [x] Add `on()` and `off()` methods to SkillBank API
|
|
140
|
-
- [x] Add `onEvent()` for typed event subscriptions
|
|
141
|
-
- [x] Add `getStorage()` for advanced integration
|
|
142
|
-
|
|
143
|
-
**Files Modified**:
|
|
144
|
-
- `src/skill-bank.ts` - Enhanced event system with `off()`, `onEvent()`, `getStorage()`
|
|
145
|
-
|
|
146
|
-
**Event Interface**:
|
|
147
|
-
```typescript
|
|
148
|
-
interface SkillEvent {
|
|
149
|
-
type: 'skill:created' | 'skill:updated' | 'skill:deleted' | 'skill:deprecated';
|
|
150
|
-
skill: Skill;
|
|
151
|
-
timestamp: Date;
|
|
152
|
-
source?: 'manual' | 'imported' | 'extracted';
|
|
153
|
-
}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Lower Priority Items
|
|
159
|
-
|
|
160
|
-
### 5. Bidirectional Sync
|
|
161
|
-
|
|
162
|
-
**Status**: ✅ Complete
|
|
163
|
-
|
|
164
|
-
**Goal**: Keep skills in sync with remote sources.
|
|
165
|
-
|
|
166
|
-
**Tasks**:
|
|
167
|
-
- [x] Create `src/services/sync.ts`
|
|
168
|
-
- [x] Define `SkillSyncState` type
|
|
169
|
-
- [x] Implement `checkForUpdates()` - compare ETags/versions
|
|
170
|
-
- [x] Implement `pullRemoteChanges()` - fetch and merge
|
|
171
|
-
- [x] Implement `detectConflicts()` - local vs remote changes
|
|
172
|
-
- [x] Add `skill-tree index sync` command with options:
|
|
173
|
-
- [x] `--status` - show sync state
|
|
174
|
-
- [x] `--pull` - pull remote changes
|
|
175
|
-
- [x] `--dry-run` - preview changes
|
|
176
|
-
|
|
177
|
-
**Files Created**:
|
|
178
|
-
- `src/services/sync.ts` - Full SyncService implementation
|
|
179
|
-
|
|
180
|
-
**Files Modified**:
|
|
181
|
-
- `src/cli/commands/indexer/sync.ts` - Updated with sync status and pull commands
|
|
182
|
-
|
|
183
|
-
**Note**: SQLite sync_state table not yet added to schema (sync states stored in memory for now). This can be added in a future iteration.
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## Open Questions (Decisions Made)
|
|
188
|
-
|
|
189
|
-
| Question | Status | Decision |
|
|
190
|
-
|----------|--------|----------|
|
|
191
|
-
| Taxonomy ownership | ✅ Resolved | Preserve original, allow re-classification on demand |
|
|
192
|
-
| Deduplication strategy | ✅ Resolved | Use `externalSource.url` as dedup key |
|
|
193
|
-
| Version conflict resolution | ✅ Resolved | Default to manual, with `--resolve` flag for automation |
|
|
194
|
-
| Namespace separation | ✅ Resolved | Use `source.type` field, no namespace prefix |
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Success Criteria Checklist
|
|
199
|
-
|
|
200
|
-
- [x] Single CLI (`skill-tree`) for all operations
|
|
201
|
-
- [x] Single database with skills from all sources
|
|
202
|
-
- [x] Taxonomy browsing works for all skills
|
|
203
|
-
- [x] Relationships detected across indexed and extracted skills
|
|
204
|
-
- [x] Clear provenance tracking (source: extracted vs indexed)
|
|
205
|
-
- [x] Seamless workflow from discovery to usage
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## Change Log
|
|
210
|
-
|
|
211
|
-
| Date | Change |
|
|
212
|
-
|------|--------|
|
|
213
|
-
| 2025-01-XX | Initial gap analysis created |
|
|
214
|
-
| 2025-01-XX | Phases 1-3 implemented |
|
|
215
|
-
| 2025-01-XX | Tests added (56 tests) |
|
|
216
|
-
| 2025-02-01 | Unified configuration system implemented |
|
|
217
|
-
| 2025-02-01 | IndexerService direct execution implemented |
|
|
218
|
-
| 2025-02-01 | Direct SkillBank integration implemented |
|
|
219
|
-
| 2025-02-01 | SkillBank event system enhanced |
|
|
220
|
-
| 2025-02-01 | Bidirectional sync service implemented |
|
|
221
|
-
| 2025-02-01 | All phases complete |
|