skilld 0.2.1 → 0.3.0
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 +13 -8
- package/dist/_chunks/config.mjs +1 -2
- package/dist/_chunks/config.mjs.map +1 -1
- package/dist/_chunks/{llm.mjs → detect-imports.mjs} +935 -480
- package/dist/_chunks/detect-imports.mjs.map +1 -0
- package/dist/_chunks/releases.mjs +102 -126
- package/dist/_chunks/releases.mjs.map +1 -1
- package/dist/_chunks/storage.mjs +5 -38
- package/dist/_chunks/storage.mjs.map +1 -1
- package/dist/_chunks/sync-parallel.mjs +4 -4
- package/dist/_chunks/sync-parallel.mjs.map +1 -1
- package/dist/_chunks/utils.d.mts.map +1 -1
- package/dist/_chunks/version.d.mts +5 -36
- package/dist/_chunks/version.d.mts.map +1 -1
- package/dist/agent/index.d.mts +143 -100
- package/dist/agent/index.d.mts.map +1 -1
- package/dist/agent/index.mjs +2 -2
- package/dist/cache/index.d.mts +2 -2
- package/dist/cache/index.mjs +3 -3
- package/dist/cli.mjs +73 -71
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +3 -3
- package/dist/types.d.mts +1 -1
- package/package.json +1 -1
- package/dist/_chunks/llm.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -16,8 +16,8 @@ Getting skills for our packages either involves the maintainer (or ourselves) ta
|
|
|
16
16
|
sites like [skills.sh](https://skills.sh/).
|
|
17
17
|
|
|
18
18
|
While these are great for generic skills, they aren't good for NPM skills:
|
|
19
|
-
- No version-awareness, high maintenance burden to keep up with new releases and deprecations
|
|
20
|
-
- Non-optimized context windows, prompt injection risks
|
|
19
|
+
- No version-awareness, high maintenance burden to keep up with new releases and deprecations.
|
|
20
|
+
- Non-optimized context windows, prompt injection risks, missing references.
|
|
21
21
|
- Community-sourced skills leak personal opinions and biases. Maintainers are out of the loop, and may not even know about them.
|
|
22
22
|
|
|
23
23
|
Skilld leverages maintainers existing effort. Maintainers write great docs for us, we generate our own local skills optimized for our models and codebase from them.
|
|
@@ -34,7 +34,7 @@ Skilld leverages maintainers existing effort. Maintainers write great docs for u
|
|
|
34
34
|
|
|
35
35
|
## Features
|
|
36
36
|
|
|
37
|
-
- 🌍 **
|
|
37
|
+
- 🌍 **Full Context SKILL.md** - Generates with the repo code, docs, releases, issues, discussions
|
|
38
38
|
- 🤖 **BYO Agent** - Generate SKILL.md with or without an LLM
|
|
39
39
|
- 📚 **Customizable** - `Best practices`, `LLM Gaps`, `Doc Map` or your own prompts
|
|
40
40
|
- 🔍 **Semantic Search** - Token-optimized search via [retriv](https://github.com/harlan-zw/retriv)
|
|
@@ -51,6 +51,12 @@ npx skilld
|
|
|
51
51
|
|
|
52
52
|
If you need to re-configure skilld, just run `npx skilld config` to update your agent, model, or preferences.
|
|
53
53
|
|
|
54
|
+
### Tips
|
|
55
|
+
|
|
56
|
+
- **Be selective** — only add skills for packages your agent already struggles with or that you're actively debugging. Not every dependency needs a skill.
|
|
57
|
+
- **LLM enhancement is optional** — skilld generates a useful SKILL.md without any LLM, but enhancing with one makes them significantly better. This costs tokens, so be mindful.
|
|
58
|
+
- **Multi-agent support** — if you switch between agents (e.g. Claude Code and Gemini CLI), run `skilld install --agent gemini-cli` to sync your existing skills to the other agent. The doc cache is shared, so nothing is re-downloaded.
|
|
59
|
+
|
|
54
60
|
## Installation
|
|
55
61
|
|
|
56
62
|
If you'd like to install skilld and track the lock file references, add it as a dev dependency:
|
|
@@ -82,24 +88,23 @@ Add to `package.json` to keep skills fresh on install:
|
|
|
82
88
|
skilld
|
|
83
89
|
|
|
84
90
|
# Add skills for specific package(s)
|
|
85
|
-
skilld add vueuse
|
|
86
91
|
skilld add vue nuxt pinia
|
|
87
92
|
|
|
88
93
|
# Update outdated skills
|
|
89
94
|
skilld update
|
|
90
|
-
skilld update
|
|
95
|
+
skilld update tailwindcss
|
|
91
96
|
|
|
92
97
|
# Search docs across installed skills
|
|
93
98
|
skilld search "useFetch options" -p nuxt
|
|
94
99
|
|
|
95
100
|
# Target a specific agent
|
|
96
|
-
skilld add
|
|
101
|
+
skilld add react --agent cursor
|
|
97
102
|
|
|
98
103
|
# Install globally to ~/.claude/skills
|
|
99
|
-
skilld add
|
|
104
|
+
skilld add zod --global
|
|
100
105
|
|
|
101
106
|
# Skip prompts
|
|
102
|
-
skilld add
|
|
107
|
+
skilld add drizzle-orm --yes
|
|
103
108
|
|
|
104
109
|
# Check skill info
|
|
105
110
|
skilld info
|
package/dist/_chunks/config.mjs
CHANGED
|
@@ -17,10 +17,9 @@ function getCacheDir(name, version) {
|
|
|
17
17
|
}
|
|
18
18
|
const CACHE_DIR = join(homedir(), ".skilld");
|
|
19
19
|
const REFERENCES_DIR = join(CACHE_DIR, "references");
|
|
20
|
-
const SEARCH_DB = join(CACHE_DIR, "search.db");
|
|
21
20
|
function getPackageDbPath(name, version) {
|
|
22
21
|
return join(REFERENCES_DIR, getCacheKey(name, version), "search.db");
|
|
23
22
|
}
|
|
24
|
-
export {
|
|
23
|
+
export { getCacheKey as a, getCacheDir as i, REFERENCES_DIR as n, getVersionKey as o, getPackageDbPath as r, CACHE_DIR as t };
|
|
25
24
|
|
|
26
25
|
//# sourceMappingURL=config.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.mjs","names":[],"sources":["../../src/cache/version.ts","../../src/cache/config.ts"],"sourcesContent":["/**\n * Version utilities\n */\n\nimport { resolve } from 'pathe'\nimport { REFERENCES_DIR } from './config'\n\n/** Validate npm package name (scoped or unscoped) */\nconst VALID_PKG_NAME = /^(?:@[a-z0-9][-a-z0-9._]*\\/)?[a-z0-9][-a-z0-9._]*$/\n\n/** Validate version string (semver-ish, no path separators) */\nconst VALID_VERSION = /^[a-z0-9][-\\w.+]*$/i\n\n/**\n * Get exact version key for cache keying\n */\nexport function getVersionKey(version: string): string {\n return version\n}\n\n/**\n * Get cache key for a package: name@version\n */\nexport function getCacheKey(name: string, version: string): string {\n return `${name}@${getVersionKey(version)}`\n}\n\n/**\n * Get path to cached package references.\n * Validates name/version to prevent path traversal.\n */\nexport function getCacheDir(name: string, version: string): string {\n if (!VALID_PKG_NAME.test(name))\n throw new Error(`Invalid package name: ${name}`)\n if (!VALID_VERSION.test(version))\n throw new Error(`Invalid version: ${version}`)\n\n const dir = resolve(REFERENCES_DIR, getCacheKey(name, version))\n if (!dir.startsWith(REFERENCES_DIR))\n throw new Error(`Path traversal detected: ${dir}`)\n return dir\n}\n","/**\n * Cache configuration\n */\n\nimport { homedir } from 'node:os'\nimport { join } from 'pathe'\nimport { getCacheKey } from './version'\n\n/** Global cache directory */\nexport const CACHE_DIR = join(homedir(), '.skilld')\n\n/** References subdirectory */\nexport const REFERENCES_DIR = join(CACHE_DIR, 'references')\n\n/**
|
|
1
|
+
{"version":3,"file":"config.mjs","names":[],"sources":["../../src/cache/version.ts","../../src/cache/config.ts"],"sourcesContent":["/**\n * Version utilities\n */\n\nimport { resolve } from 'pathe'\nimport { REFERENCES_DIR } from './config'\n\n/** Validate npm package name (scoped or unscoped) */\nconst VALID_PKG_NAME = /^(?:@[a-z0-9][-a-z0-9._]*\\/)?[a-z0-9][-a-z0-9._]*$/\n\n/** Validate version string (semver-ish, no path separators) */\nconst VALID_VERSION = /^[a-z0-9][-\\w.+]*$/i\n\n/**\n * Get exact version key for cache keying\n */\nexport function getVersionKey(version: string): string {\n return version\n}\n\n/**\n * Get cache key for a package: name@version\n */\nexport function getCacheKey(name: string, version: string): string {\n return `${name}@${getVersionKey(version)}`\n}\n\n/**\n * Get path to cached package references.\n * Validates name/version to prevent path traversal.\n */\nexport function getCacheDir(name: string, version: string): string {\n if (!VALID_PKG_NAME.test(name))\n throw new Error(`Invalid package name: ${name}`)\n if (!VALID_VERSION.test(version))\n throw new Error(`Invalid version: ${version}`)\n\n const dir = resolve(REFERENCES_DIR, getCacheKey(name, version))\n if (!dir.startsWith(REFERENCES_DIR))\n throw new Error(`Path traversal detected: ${dir}`)\n return dir\n}\n","/**\n * Cache configuration\n */\n\nimport { homedir } from 'node:os'\nimport { join } from 'pathe'\nimport { getCacheKey } from './version'\n\n/** Global cache directory */\nexport const CACHE_DIR = join(homedir(), '.skilld')\n\n/** References subdirectory */\nexport const REFERENCES_DIR = join(CACHE_DIR, 'references')\n\n/** Get search DB path for a specific package@version */\nexport function getPackageDbPath(name: string, version: string): string {\n return join(REFERENCES_DIR, getCacheKey(name, version), 'search.db')\n}\n"],"mappings":";;AAQA,MAAM,iBAAiB;AAGvB,MAAM,gBAAgB;AAKtB,SAAgB,cAAc,SAAyB;AACrD,QAAO;;AAMT,SAAgB,YAAY,MAAc,SAAyB;AACjE,QAAO,GAAG,KAAK,GAAG,cAAc,QAAQ;;AAO1C,SAAgB,YAAY,MAAc,SAAyB;AACjE,KAAI,CAAC,eAAe,KAAK,KAAK,CAC5B,OAAM,IAAI,MAAM,yBAAyB,OAAO;AAClD,KAAI,CAAC,cAAc,KAAK,QAAQ,CAC9B,OAAM,IAAI,MAAM,oBAAoB,UAAU;CAEhD,MAAM,MAAM,QAAQ,gBAAgB,YAAY,MAAM,QAAQ,CAAC;AAC/D,KAAI,CAAC,IAAI,WAAW,eAAe,CACjC,OAAM,IAAI,MAAM,4BAA4B,MAAM;AACpD,QAAO;;AC/BT,MAAa,YAAY,KAAK,SAAS,EAAE,UAAU;AAGnD,MAAa,iBAAiB,KAAK,WAAW,aAAa;AAG3D,SAAgB,iBAAiB,MAAc,SAAyB;AACtE,QAAO,KAAK,gBAAgB,YAAY,MAAM,QAAQ,EAAE,YAAY"}
|