skilld 0.6.2 → 0.7.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 CHANGED
@@ -8,19 +8,12 @@
8
8
 
9
9
  ## Why?
10
10
 
11
- Agents suck at following latest conventions beyond their [reliable knowledge cut-off](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). They shoot themselves in the foot
12
- with new APIs and conventions, and they don't know what they don't know.
11
+ Agents have [knowledge cutoffs](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) and predict the most likely code from training data, not the best code. For example, [Vue v3.5](https://blog.vuejs.org/posts/vue-3-5) was released over 16 months ago and agents refuse so use its features out-of-the-box. This is because they're trained on conventions not the latest docs.
13
12
 
14
- [Agent Skills](https://agentskills.io/home) help us solve this by distilling the most important patterns and conventions for a package into a single SKILL.md file.
15
- Getting skills for our packages either involves the maintainer (or ourselves) taking on the maintenance burden and surfacing them or using skill sharing
16
- sites like [skills.sh](https://skills.sh/).
13
+ Methods of getting the right context to your agent require either manual curation, author opt-in, or external servers. See [the landscape](#the-landscape)
14
+ for more details.
17
15
 
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, missing references.
21
- - Community-sourced skills leak personal opinions and biases. Maintainers are out of the loop, and may not even know about them.
22
-
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.
16
+ Skilld generates [agent skills](https://agentskills.io/home) from the docs maintainers already write. Version-aware, local-first, and optimized for your codebase.
24
17
 
25
18
  <p align="center">
26
19
  <table>
@@ -66,13 +59,25 @@ If you need to re-configure skilld, just run `npx -y skilld config` to update yo
66
59
 
67
60
  ## FAQ
68
61
 
62
+ ### Why doesn't the skills run?
63
+
64
+ Try this in your project/user prompt:
65
+
66
+ ```md
67
+ Before modifying code, evaluate each installed skill against the current task.
68
+ For each skill, determine YES/NO relevance and invoke all YES skills before proceeding.
69
+ ```
70
+
69
71
  ### How is this different from Context7?
70
72
 
71
73
  Context7 is an MCP that fetches raw doc chunks at query time. You get different results each prompt, no curation, and it requires their server. Skilld is local-first: it generates a SKILL.md that lives in your project, tied to your actual package versions. No MCP dependency, no per-prompt latency, and it goes further with LLM-enhanced sections, prompt injection sanitization, and semantic search.
72
74
 
73
- ### Aren't these just AI convention files?
75
+ ### Will I be prompt injection?
76
+
77
+ Skilld pulls issues from GitHub which could be abused for potential prompt injection.
74
78
 
75
- Similar idea, but instead of hand-writing them, skilld generates them from the latest package docs, issues, and releases. This makes them considerably more accurate at a low token cost. They also auto-update when your dependencies ship new versions.
79
+ Skilld treats all data as unstrusted, running in permissioned environments and using best practices to avoid injections.
80
+ However, always be cautious when using skills from untrusted source.
76
81
 
77
82
  ### Do skills update when my deps update?
78
83
 
@@ -167,6 +172,28 @@ skilld config
167
172
  | `--prepare` | | `false` | Non-interactive sync for prepare hook (outdated only) |
168
173
  | `--background` | `-b` | `false` | Run `--prepare` in a detached background process |
169
174
 
175
+ ## The Landscape
176
+
177
+ Several approaches exist for steering agent knowledge. Each fills a different niche:
178
+
179
+ | Approach | Versioned | Curated | No Opt-in | Local |
180
+ |:---------|:---------:|:-------:|:---------:|:-----:|
181
+ | **Manual rules** | ✗ | ✓ | ✓ | ✓ |
182
+ | **llms.txt** | ~ | ✗ | ✗ | ✗ |
183
+ | **MCP servers** | ✓ | ✗ | ✗ | ✗ |
184
+ | **skills.sh** | ✗ | ~ | ✓ | ✗ |
185
+ | **skills-npm** | ✓ | ✓ | ✗ | ✓ |
186
+ | **skilld** | ✓ | ✓ | ✓ | ✓ |
187
+
188
+ > **Versioned** — tied to your installed package version. **Curated** — distilled best practices, not raw docs. **No Opt-in** — works without the package author doing anything. **Local** — runs on your machine, no external service dependency.
189
+
190
+ - **Manual rules** (CLAUDE.md, .cursorrules): full control, but you need to already know the best practices and maintain them across every dep.
191
+ - **[llms.txt](https://llmstxt.org/)**: standard convention for exposing docs to LLMs, but it's full docs not curated guidance and requires author adoption.
192
+ - **MCP servers**: live, version-aware responses, but adds per-request latency and the maintainer has to build and maintain a server.
193
+ - **[skills.sh](https://skills.sh/)**: easy skill sharing with a growing ecosystem, but community-sourced without version-awareness or author oversight.
194
+ - **[skills-npm](https://github.com/antfu/skills-npm)**: the ideal end-state: zero-token skills shipped by the package author, but requires every maintainer to opt in.
195
+ - **skilld**: generates version-aware skills from existing docs, changelogs, issues, and discussions. Works for any package without author opt-in.
196
+
170
197
  ## Related
171
198
 
172
199
  - [skills-npm](https://github.com/antfu/skills-npm) - Convention for shipping agent skills in npm packages
@@ -0,0 +1,13 @@
1
+ import { createRequire } from "node:module";
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
13
+ export { __require as n, __exportAll as t };
@@ -1,6 +1,6 @@
1
+ import { t as __exportAll } from "./chunk.mjs";
1
2
  import { _ as writeSections, b as sanitizeMarkdown, h as readCachedSection, y as repairMarkdown } from "./storage.mjs";
2
3
  import { o as getFilePatterns, t as yamlEscape } from "./yaml.mjs";
3
- import { createRequire } from "node:module";
4
4
  import { homedir } from "node:os";
5
5
  import { dirname, join, relative } from "pathe";
6
6
  import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, realpathSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
@@ -11,16 +11,6 @@ import { createHash } from "node:crypto";
11
11
  import { promisify } from "node:util";
12
12
  import { readFile } from "node:fs/promises";
13
13
  import { parseSync } from "oxc-parser";
14
- var __defProp = Object.defineProperty;
15
- var __exportAll = (all, no_symbols) => {
16
- let target = {};
17
- for (var name in all) __defProp(target, name, {
18
- get: all[name],
19
- enumerable: true
20
- });
21
- if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
22
- return target;
23
- };
24
14
  const SPEC_FRONTMATTER = {
25
15
  "name": {
26
16
  name: "name",
@@ -1920,6 +1910,6 @@ function isNodeBuiltin(pkg) {
1920
1910
  const base = pkg.startsWith("node:") ? pkg.slice(5) : pkg;
1921
1911
  return NODE_BUILTINS.has(base.split("/")[0]);
1922
1912
  }
1923
- export { detectTargetAgent as _, optimizeDocs as a, __exportAll as b, installSkillForAgents as c, unlinkSkillFromAgents as d, SECTION_MERGE_ORDER as f, detectInstalledAgents as g, buildSectionPrompt as h, getModelName as i, linkSkillToAgents as l, buildAllSectionPrompts as m, getAvailableModels as n, generateSkillMd as o, SECTION_OUTPUT_FILES as p, getModelLabel as r, computeSkillDirName as s, detectImportedPackages as t, sanitizeName as u, getAgentVersion as v, targets as y };
1913
+ export { detectTargetAgent as _, optimizeDocs as a, installSkillForAgents as c, unlinkSkillFromAgents as d, SECTION_MERGE_ORDER as f, detectInstalledAgents as g, buildSectionPrompt as h, getModelName as i, linkSkillToAgents as l, buildAllSectionPrompts as m, getAvailableModels as n, generateSkillMd as o, SECTION_OUTPUT_FILES as p, getModelLabel as r, computeSkillDirName as s, detectImportedPackages as t, sanitizeName as u, getAgentVersion as v, targets as y };
1924
1914
 
1925
1915
  //# sourceMappingURL=detect-imports.mjs.map