@elizaos/skills 2.0.0-alpha.98 → 2.0.0-beta.1
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 +5 -1
- package/dist/formatter.d.ts +1 -2
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +12 -20
- package/dist/frontmatter.d.ts +14 -2
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +54 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +15 -13
- package/dist/resolver.d.ts +17 -0
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +54 -1
- package/dist/types.d.ts +40 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +57 -53
- package/skills/apple-reminders/SKILL.md +1 -1
- package/skills/build-monetized-app/SKILL.md +144 -0
- package/skills/build-monetized-app/references/failure-modes.md +71 -0
- package/skills/build-monetized-app/references/sdk-flow.md +191 -0
- package/skills/build-monetized-app/references/survival-economics.md +64 -0
- package/skills/coding-agent/SKILL.md +12 -2
- package/skills/eliza/SKILL.md +43 -0
- package/skills/eliza/references/agent-orchestration.md +98 -0
- package/skills/eliza/references/capability-map.md +68 -0
- package/skills/eliza/references/plugin-and-skill-lifecycle.md +69 -0
- package/skills/eliza-app-development/SKILL.md +62 -0
- package/skills/eliza-app-development/references/plugin-and-app-build.md +81 -0
- package/skills/eliza-app-development/references/repo-map.md +70 -0
- package/skills/eliza-app-development/references/runtime-and-cloud.md +61 -0
- package/skills/eliza-cloud/SKILL.md +152 -0
- package/skills/eliza-cloud/references/apps-and-containers.md +73 -0
- package/skills/eliza-cloud/references/cloud-backend-and-monetization.md +128 -0
- package/skills/eliza-cloud/references/payments-and-promotion.md +547 -0
- package/skills/eliza-cloud-buy-domain/SKILL.md +104 -0
- package/skills/eliza-cloud-buy-domain/references/api-shape.md +77 -0
- package/skills/eliza-cloud-buy-domain/references/dns-and-ssl.md +25 -0
- package/skills/eliza-cloud-buy-domain/references/failure-modes.md +17 -0
- package/skills/eliza-cloud-manage-domain/SKILL.md +104 -0
- package/skills/eliza-cloud-manage-domain/references/api-shape.md +73 -0
- package/skills/eliza-cloud-manage-domain/references/dns-records.md +26 -0
- package/skills/eliza-cloud-manage-domain/references/failure-modes.md +14 -0
- package/skills/elizaos/SKILL.md +27 -0
- package/skills/elizaos/references/core-abstractions.md +101 -0
- package/skills/elizaos/references/plugin-development.md +74 -0
- package/skills/task-agent-eliza-bridge/SKILL.md +34 -0
- package/skills/tmux/SKILL.md +1 -1
- package/LICENSE +0 -21
- package/skills/bear-notes/SKILL.md +0 -107
- package/skills/bird/SKILL.md +0 -224
- package/skills/blogwatcher/SKILL.md +0 -69
- package/skills/clawhub/SKILL.md +0 -77
- package/skills/crow/SKILL.md +0 -261
- package/skills/crow/references/api-reference.md +0 -370
- package/skills/crow/references/card-payments.md +0 -124
- package/skills/crow/references/error-handling.md +0 -154
- package/skills/crow/references/x402-flow.md +0 -170
- package/skills/eightctl/SKILL.md +0 -50
- package/skills/food-order/SKILL.md +0 -48
- package/skills/gemini/SKILL.md +0 -43
- package/skills/gifgrep/SKILL.md +0 -79
- package/skills/gog/SKILL.md +0 -116
- package/skills/goplaces/SKILL.md +0 -52
- package/skills/himalaya/SKILL.md +0 -257
- package/skills/himalaya/references/configuration.md +0 -184
- package/skills/himalaya/references/message-composition.md +0 -199
- package/skills/local-places/SERVER_README.md +0 -101
- package/skills/local-places/SKILL.md +0 -102
- package/skills/local-places/pyproject.toml +0 -21
- package/skills/local-places/src/local_places/__init__.py +0 -2
- package/skills/local-places/src/local_places/google_places.py +0 -314
- package/skills/local-places/src/local_places/main.py +0 -65
- package/skills/local-places/src/local_places/schemas.py +0 -107
- package/skills/mcporter/SKILL.md +0 -61
- package/skills/model-usage/SKILL.md +0 -69
- package/skills/model-usage/references/codexbar-cli.md +0 -33
- package/skills/model-usage/scripts/model_usage.py +0 -310
- package/skills/nightmarket/SKILL.md +0 -145
- package/skills/nightmarket/references/api.md +0 -176
- package/skills/nightmarket/references/crow-payments.md +0 -67
- package/skills/nightmarket/references/mcp.md +0 -53
- package/skills/openai-image-gen/SKILL.md +0 -89
- package/skills/openai-image-gen/scripts/gen.py +0 -240
- package/skills/openai-whisper/SKILL.md +0 -38
- package/skills/openai-whisper-api/SKILL.md +0 -52
- package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
- package/skills/openhue/SKILL.md +0 -51
- package/skills/oracle/SKILL.md +0 -125
- package/skills/peekaboo/SKILL.md +0 -190
- package/skills/sag/SKILL.md +0 -87
- package/skills/security-ask-questions-if-underspecified/SKILL.md +0 -61
- package/skills/security-audit-context-building/SKILL.md +0 -88
- package/skills/security-building-secure-contracts/SKILL.md +0 -75
- package/skills/security-burpsuite-project-parser/SKILL.md +0 -98
- package/skills/security-claude-in-chrome-troubleshooting/SKILL.md +0 -85
- package/skills/security-constant-time-analysis/SKILL.md +0 -116
- package/skills/security-culture-index/SKILL.md +0 -77
- package/skills/security-differential-review/SKILL.md +0 -94
- package/skills/security-dwarf-expert/SKILL.md +0 -73
- package/skills/security-entry-point-analyzer/SKILL.md +0 -78
- package/skills/security-firebase-apk-scanner/SKILL.md +0 -99
- package/skills/security-fix-review/SKILL.md +0 -73
- package/skills/security-insecure-defaults/SKILL.md +0 -73
- package/skills/security-modern-python/SKILL.md +0 -114
- package/skills/security-property-based-testing/SKILL.md +0 -122
- package/skills/semgrep-rule-creator/SKILL.md +0 -108
- package/skills/semgrep-rule-variant-creator/SKILL.md +0 -122
- package/skills/session-logs/SKILL.md +0 -115
- package/skills/sharp-edges/.claude-plugin/plugin.json +0 -10
- package/skills/sharp-edges/README.md +0 -47
- package/skills/sharp-edges/SKILL.md +0 -292
- package/skills/sharp-edges/skills/sharp-edges/SKILL.md +0 -292
- package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +0 -252
- package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +0 -274
- package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +0 -333
- package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +0 -190
- package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +0 -205
- package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +0 -285
- package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +0 -270
- package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +0 -263
- package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +0 -269
- package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +0 -265
- package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +0 -245
- package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +0 -274
- package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +0 -273
- package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +0 -272
- package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +0 -287
- package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +0 -588
- package/skills/sherpa-onnx-tts/SKILL.md +0 -103
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
- package/skills/songsee/SKILL.md +0 -49
- package/skills/sonoscli/SKILL.md +0 -46
- package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +0 -10
- package/skills/spec-to-code-compliance/README.md +0 -67
- package/skills/spec-to-code-compliance/SKILL.md +0 -349
- package/skills/spec-to-code-compliance/commands/spec-compliance.md +0 -22
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +0 -349
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +0 -69
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +0 -417
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +0 -105
- package/skills/static-analysis/.claude-plugin/plugin.json +0 -8
- package/skills/static-analysis/README.md +0 -59
- package/skills/static-analysis/SKILL.md +0 -89
- package/skills/static-analysis/skills/codeql/SKILL.md +0 -315
- package/skills/static-analysis/skills/sarif-parsing/SKILL.md +0 -479
- package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +0 -162
- package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +0 -331
- package/skills/static-analysis/skills/semgrep/SKILL.md +0 -337
- package/skills/summarize/SKILL.md +0 -87
- package/skills/testing-handbook-skills/.claude-plugin/plugin.json +0 -8
- package/skills/testing-handbook-skills/README.md +0 -241
- package/skills/testing-handbook-skills/SKILL.md +0 -104
- package/skills/testing-handbook-skills/scripts/pyproject.toml +0 -8
- package/skills/testing-handbook-skills/scripts/validate-skills.py +0 -657
- package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +0 -341
- package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +0 -640
- package/skills/testing-handbook-skills/skills/atheris/SKILL.md +0 -522
- package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +0 -460
- package/skills/testing-handbook-skills/skills/codeql/SKILL.md +0 -552
- package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +0 -512
- package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +0 -612
- package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +0 -303
- package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +0 -433
- package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +0 -621
- package/skills/testing-handbook-skills/skills/libafl/SKILL.md +0 -632
- package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +0 -795
- package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +0 -434
- package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +0 -443
- package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +0 -605
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +0 -372
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +0 -280
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +0 -452
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +0 -504
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +0 -454
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +0 -527
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +0 -366
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +0 -482
- package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +0 -539
- package/skills/variant-analysis/SKILL.md +0 -89
- package/skills/video-frames/SKILL.md +0 -46
- package/skills/video-frames/scripts/frame.sh +0 -81
- package/skills/voice-call/SKILL.md +0 -45
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Skills are markdown files that provide specialized instructions for AI agents to
|
|
|
14
14
|
```bash
|
|
15
15
|
npm install @elizaos/skills
|
|
16
16
|
# or
|
|
17
|
-
|
|
17
|
+
bun add @elizaos/skills
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
## Usage
|
|
@@ -62,6 +62,10 @@ const commands = buildSkillCommandSpecs(entries);
|
|
|
62
62
|
// Returns array of command specs for chat interfaces
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
## Bundled documentation skills
|
|
66
|
+
|
|
67
|
+
Alongside community-oriented skills, this package ships **`elizaos`**, **`eliza-cloud`**, and **`eliza-app-development`** — concise references for elizaOS runtime concepts, Eliza Cloud as a backend, and building elizaOS-based applications (including the Eliza app repository layout).
|
|
68
|
+
|
|
65
69
|
## Skill Discovery
|
|
66
70
|
|
|
67
71
|
Skills are loaded from multiple locations in precedence order (later overrides earlier):
|
package/dist/formatter.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { Skill, SkillCommandSpec, SkillEntry } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Format skills for inclusion in a system prompt.
|
|
4
|
-
* Uses
|
|
5
|
-
* See: https://agentskills.io/integrate-skills
|
|
4
|
+
* Uses compact structured text.
|
|
6
5
|
*
|
|
7
6
|
* Skills with disableModelInvocation=true are excluded from the prompt
|
|
8
7
|
* (they can only be invoked explicitly via /skill:name commands).
|
package/dist/formatter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAYtE;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAwB7D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAMzE;AA0DD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,UAAU,EAAE,EACrB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,gBAAgB,EAAE,CAgEpB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAExD"}
|
package/dist/formatter.js
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Compact a skill field for prompt-friendly structured text.
|
|
3
3
|
*
|
|
4
|
-
* @param str - String to
|
|
5
|
-
* @returns
|
|
4
|
+
* @param str - String to compact
|
|
5
|
+
* @returns Single-line prompt field
|
|
6
6
|
*/
|
|
7
|
-
function
|
|
8
|
-
return str
|
|
9
|
-
.replace(/&/g, "&")
|
|
10
|
-
.replace(/</g, "<")
|
|
11
|
-
.replace(/>/g, ">")
|
|
12
|
-
.replace(/"/g, """)
|
|
13
|
-
.replace(/'/g, "'");
|
|
7
|
+
function compactPromptField(str) {
|
|
8
|
+
return str.replace(/\s+/g, " ").trim();
|
|
14
9
|
}
|
|
15
10
|
/**
|
|
16
11
|
* Format skills for inclusion in a system prompt.
|
|
17
|
-
* Uses
|
|
18
|
-
* See: https://agentskills.io/integrate-skills
|
|
12
|
+
* Uses compact structured text.
|
|
19
13
|
*
|
|
20
14
|
* Skills with disableModelInvocation=true are excluded from the prompt
|
|
21
15
|
* (they can only be invoked explicitly via /skill:name commands).
|
|
@@ -33,18 +27,15 @@ export function formatSkillsForPrompt(skills) {
|
|
|
33
27
|
"Use the read tool to load a skill's file when the task matches its description.",
|
|
34
28
|
"When a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.",
|
|
35
29
|
"",
|
|
36
|
-
"
|
|
30
|
+
"available_skills:",
|
|
37
31
|
];
|
|
38
32
|
for (const skill of visibleSkills) {
|
|
39
|
-
lines.push(
|
|
40
|
-
lines.push(`
|
|
41
|
-
lines.push(` <description>${escapeXml(skill.description)}</description>`);
|
|
33
|
+
lines.push(`- name: ${compactPromptField(skill.name)}`);
|
|
34
|
+
lines.push(` description: ${compactPromptField(skill.description)}`);
|
|
42
35
|
if (skill.filePath) {
|
|
43
|
-
lines.push(`
|
|
36
|
+
lines.push(` location: ${compactPromptField(skill.filePath)}`);
|
|
44
37
|
}
|
|
45
|
-
lines.push(" </skill>");
|
|
46
38
|
}
|
|
47
|
-
lines.push("</available_skills>");
|
|
48
39
|
return lines.join("\n");
|
|
49
40
|
}
|
|
50
41
|
/**
|
|
@@ -73,7 +64,8 @@ const SKILL_COMMAND_DESCRIPTION_MAX_LENGTH = 100;
|
|
|
73
64
|
* @returns Sanitized command name
|
|
74
65
|
*/
|
|
75
66
|
function sanitizeSkillCommandName(raw) {
|
|
76
|
-
const
|
|
67
|
+
const clamped = raw.length > 1024 ? raw.slice(0, 1024) : raw;
|
|
68
|
+
const normalized = clamped
|
|
77
69
|
.toLowerCase()
|
|
78
70
|
.replace(/[^a-z0-9_]+/g, "_")
|
|
79
71
|
.replace(/_+/g, "_")
|
package/dist/frontmatter.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SkillFrontmatter, SkillInvocationPolicy, SkillMetadata } from "./types.js";
|
|
1
|
+
import type { SkillFrontmatter, SkillInvocationPolicy, SkillMetadata, SkillProvenance } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Result of parsing frontmatter from a file
|
|
4
4
|
*/
|
|
@@ -23,7 +23,7 @@ export declare function parseFrontmatter<T extends Record<string, unknown> = Rec
|
|
|
23
23
|
*/
|
|
24
24
|
export declare function stripFrontmatter(content: string): string;
|
|
25
25
|
/**
|
|
26
|
-
* Resolve
|
|
26
|
+
* Resolve skill metadata from skill frontmatter
|
|
27
27
|
*
|
|
28
28
|
* @param frontmatter - Parsed skill frontmatter
|
|
29
29
|
* @returns Normalized metadata object
|
|
@@ -36,4 +36,16 @@ export declare function resolveSkillMetadata(frontmatter: SkillFrontmatter): Ski
|
|
|
36
36
|
* @returns Invocation policy
|
|
37
37
|
*/
|
|
38
38
|
export declare function resolveSkillInvocationPolicy(frontmatter: SkillFrontmatter): SkillInvocationPolicy;
|
|
39
|
+
/**
|
|
40
|
+
* Best-effort provenance parsing from a frontmatter block. Returns `undefined`
|
|
41
|
+
* when the block is missing or malformed (we do not fail loading on bad
|
|
42
|
+
* provenance — it is informational metadata).
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveSkillProvenance(frontmatter: SkillFrontmatter): SkillProvenance | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Serialize a SKILL.md file with updated frontmatter, preserving body content.
|
|
47
|
+
* Used by the closed learning loop to rewrite provenance after refinement and
|
|
48
|
+
* scoring.
|
|
49
|
+
*/
|
|
50
|
+
export declare function serializeSkillFile(frontmatter: SkillFrontmatter, body: string): string;
|
|
39
51
|
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,gCAAgC;IAChC,WAAW,EAAE,CAAC,CAAC;IACf,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;CACd;AAsCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAOvC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,gBAAgB,GAC5B,aAAa,CAmCf;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,gBAAgB,GAC5B,qBAAqB,CAmBvB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,gBAAgB,GAC5B,eAAe,GAAG,SAAS,CAuC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,gBAAgB,EAC7B,IAAI,EAAE,MAAM,GACX,MAAM,CAIR"}
|
package/dist/frontmatter.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { parse } from "yaml";
|
|
1
|
+
import { parse, stringify } from "yaml";
|
|
2
2
|
/**
|
|
3
3
|
* Normalize line endings to Unix-style LF
|
|
4
4
|
*/
|
|
5
5
|
function normalizeNewlines(value) {
|
|
6
6
|
return value.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
7
7
|
}
|
|
8
|
+
function isRecord(value) {
|
|
9
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
10
|
+
}
|
|
8
11
|
/**
|
|
9
12
|
* Extract YAML frontmatter block from content
|
|
10
13
|
* Frontmatter must start with --- on the first line and end with --- on its own line
|
|
@@ -47,7 +50,7 @@ export function stripFrontmatter(content) {
|
|
|
47
50
|
return parseFrontmatter(content).body;
|
|
48
51
|
}
|
|
49
52
|
/**
|
|
50
|
-
* Resolve
|
|
53
|
+
* Resolve skill metadata from skill frontmatter
|
|
51
54
|
*
|
|
52
55
|
* @param frontmatter - Parsed skill frontmatter
|
|
53
56
|
* @returns Normalized metadata object
|
|
@@ -103,3 +106,52 @@ export function resolveSkillInvocationPolicy(frontmatter) {
|
|
|
103
106
|
}
|
|
104
107
|
return policy;
|
|
105
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Best-effort provenance parsing from a frontmatter block. Returns `undefined`
|
|
111
|
+
* when the block is missing or malformed (we do not fail loading on bad
|
|
112
|
+
* provenance — it is informational metadata).
|
|
113
|
+
*/
|
|
114
|
+
export function resolveSkillProvenance(frontmatter) {
|
|
115
|
+
const raw = frontmatter.provenance;
|
|
116
|
+
if (!isRecord(raw)) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const source = raw.source;
|
|
120
|
+
if (source !== "human" &&
|
|
121
|
+
source !== "agent-generated" &&
|
|
122
|
+
source !== "agent-refined") {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
const createdAt = typeof raw.createdAt === "string" ? raw.createdAt : undefined;
|
|
126
|
+
if (!createdAt) {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
const refinedCountRaw = raw.refinedCount;
|
|
130
|
+
const refinedCount = typeof refinedCountRaw === "number" && Number.isFinite(refinedCountRaw)
|
|
131
|
+
? Math.max(0, Math.floor(refinedCountRaw))
|
|
132
|
+
: 0;
|
|
133
|
+
const provenance = {
|
|
134
|
+
source,
|
|
135
|
+
createdAt,
|
|
136
|
+
refinedCount,
|
|
137
|
+
};
|
|
138
|
+
if (typeof raw.derivedFromTrajectory === "string") {
|
|
139
|
+
provenance.derivedFromTrajectory = raw.derivedFromTrajectory;
|
|
140
|
+
}
|
|
141
|
+
if (typeof raw.lastEvalScore === "number" &&
|
|
142
|
+
Number.isFinite(raw.lastEvalScore)) {
|
|
143
|
+
const score = raw.lastEvalScore;
|
|
144
|
+
provenance.lastEvalScore = Math.max(0, Math.min(1, score));
|
|
145
|
+
}
|
|
146
|
+
return provenance;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Serialize a SKILL.md file with updated frontmatter, preserving body content.
|
|
150
|
+
* Used by the closed learning loop to rewrite provenance after refinement and
|
|
151
|
+
* scoring.
|
|
152
|
+
*/
|
|
153
|
+
export function serializeSkillFile(frontmatter, body) {
|
|
154
|
+
const yaml = stringify(frontmatter).trimEnd();
|
|
155
|
+
const trimmedBody = body.replace(/^\n+/, "");
|
|
156
|
+
return `---\n${yaml}\n---\n\n${trimmedBody}`;
|
|
157
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
24
|
export { buildSkillCommandSpecs, formatSkillEntriesForPrompt, formatSkillSummary, formatSkillsForPrompt, formatSkillsList, } from "./formatter.js";
|
|
25
|
-
export { type ParsedFrontmatter, parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, stripFrontmatter, } from "./frontmatter.js";
|
|
25
|
+
export { type ParsedFrontmatter, parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, resolveSkillProvenance, serializeSkillFile, stripFrontmatter, } from "./frontmatter.js";
|
|
26
26
|
export { loadSkillEntries, loadSkills, loadSkillsFromDir } from "./loader.js";
|
|
27
|
-
export { clearSkillsDirCache, getSkillsDir } from "./resolver.js";
|
|
28
|
-
export type { LoadSkillsFromDirOptions, LoadSkillsOptions, LoadSkillsResult, Skill, SkillActionDefinition, SkillCommandSpec, SkillDiagnostic, SkillEntry, SkillFrontmatter, SkillInvocationPolicy, SkillMetadata, SkillProviderDefinition, SkillToolDefinition, } from "./types.js";
|
|
27
|
+
export { clearSkillsDirCache, getCuratedActiveDir, getProposedSkillsDir, getSkillsDir, promoteSkill, } from "./resolver.js";
|
|
28
|
+
export type { LoadSkillsFromDirOptions, LoadSkillsOptions, LoadSkillsResult, Skill, SkillActionDefinition, SkillCommandSpec, SkillDiagnostic, SkillEntry, SkillFrontmatter, SkillInvocationPolicy, SkillMetadata, SkillProvenance, SkillProviderDefinition, SkillToolDefinition, } from "./types.js";
|
|
29
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,EACL,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
// Prompt formatting
|
|
25
25
|
export { buildSkillCommandSpecs, formatSkillEntriesForPrompt, formatSkillSummary, formatSkillsForPrompt, formatSkillsList, } from "./formatter.js";
|
|
26
26
|
// Frontmatter parsing
|
|
27
|
-
export { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, stripFrontmatter, } from "./frontmatter.js";
|
|
27
|
+
export { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, resolveSkillProvenance, serializeSkillFile, stripFrontmatter, } from "./frontmatter.js";
|
|
28
28
|
// Skill loading
|
|
29
29
|
export { loadSkillEntries, loadSkills, loadSkillsFromDir } from "./loader.js";
|
|
30
30
|
// Path resolution
|
|
31
|
-
export { clearSkillsDirCache, getSkillsDir } from "./resolver.js";
|
|
31
|
+
export { clearSkillsDirCache, getCuratedActiveDir, getProposedSkillsDir, getSkillsDir, promoteSkill, } from "./resolver.js";
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAGhB,UAAU,EAEX,MAAM,YAAY,CAAC;AAqMpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,gBAAgB,CAGlB;AA8CD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CA6H5E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,UAAU,EAAE,CAuBd"}
|
package/dist/loader.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, realpathSync, statSync, } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { basename, dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
4
|
-
import { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, } from "./frontmatter.js";
|
|
5
|
-
import { getSkillsDir } from "./resolver.js";
|
|
4
|
+
import { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, resolveSkillProvenance, } from "./frontmatter.js";
|
|
5
|
+
import { getCuratedActiveDir, getSkillsDir } from "./resolver.js";
|
|
6
6
|
/** Maximum skill name length per Agent Skills spec */
|
|
7
7
|
const MAX_NAME_LENGTH = 64;
|
|
8
8
|
/** Maximum description length per Agent Skills spec */
|
|
@@ -83,6 +83,7 @@ function loadSkillFromFile(filePath, source) {
|
|
|
83
83
|
if (!frontmatter.description || frontmatter.description.trim() === "") {
|
|
84
84
|
return { skill: null, diagnostics };
|
|
85
85
|
}
|
|
86
|
+
const provenance = resolveSkillProvenance(frontmatter);
|
|
86
87
|
return {
|
|
87
88
|
skill: {
|
|
88
89
|
name,
|
|
@@ -91,6 +92,7 @@ function loadSkillFromFile(filePath, source) {
|
|
|
91
92
|
baseDir: skillDir,
|
|
92
93
|
source,
|
|
93
94
|
disableModelInvocation: frontmatter["disable-model-invocation"] === true,
|
|
95
|
+
...(provenance ? { provenance } : {}),
|
|
94
96
|
},
|
|
95
97
|
diagnostics,
|
|
96
98
|
};
|
|
@@ -237,10 +239,7 @@ export function loadSkills(options = {}) {
|
|
|
237
239
|
for (const skill of result.skills) {
|
|
238
240
|
// Skip skills without file paths (inline skills) - they can't be deduplicated
|
|
239
241
|
if (!skill.filePath) {
|
|
240
|
-
|
|
241
|
-
if (!existing) {
|
|
242
|
-
skillMap.set(skill.name, skill);
|
|
243
|
-
}
|
|
242
|
+
skillMap.set(skill.name, skill);
|
|
244
243
|
continue;
|
|
245
244
|
}
|
|
246
245
|
// Resolve symlinks to detect duplicate files
|
|
@@ -264,23 +263,26 @@ export function loadSkills(options = {}) {
|
|
|
264
263
|
collision: {
|
|
265
264
|
resourceType: "skill",
|
|
266
265
|
name: skill.name,
|
|
267
|
-
winnerPath:
|
|
268
|
-
loserPath:
|
|
266
|
+
winnerPath: skill.filePath,
|
|
267
|
+
loserPath: existing.filePath ?? "(inline)",
|
|
269
268
|
},
|
|
270
269
|
});
|
|
271
270
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
realPathSet.add(realPath);
|
|
275
|
-
}
|
|
271
|
+
skillMap.set(skill.name, skill);
|
|
272
|
+
realPathSet.add(realPath);
|
|
276
273
|
}
|
|
277
274
|
}
|
|
278
275
|
if (includeDefaults) {
|
|
279
|
-
// Load in precedence order: bundled < managed < project
|
|
276
|
+
// Load in precedence order: bundled < managed < curated < project.
|
|
277
|
+
// The curated namespace holds agent-derived skills that were promoted to
|
|
278
|
+
// "active" by the closed learning loop or the user. Skills under the
|
|
279
|
+
// sibling "proposed" directory are intentionally NOT scanned here — they
|
|
280
|
+
// are pending human review and only surfaced via the curated-skills API.
|
|
280
281
|
if (resolvedBundledDir) {
|
|
281
282
|
addSkills(loadSkillsFromDirInternal(resolvedBundledDir, "bundled", true));
|
|
282
283
|
}
|
|
283
284
|
addSkills(loadSkillsFromDirInternal(resolvedManagedDir, "managed", true));
|
|
285
|
+
addSkills(loadSkillsFromDirInternal(getCuratedActiveDir(), "curated", true));
|
|
284
286
|
addSkills(loadSkillsFromDirInternal(projectSkillsDir, "project", true));
|
|
285
287
|
}
|
|
286
288
|
// Determine source for explicit paths
|
package/dist/resolver.d.ts
CHANGED
|
@@ -15,4 +15,21 @@ export declare function getSkillsDir(): string;
|
|
|
15
15
|
* Useful for testing or when the directory may have changed.
|
|
16
16
|
*/
|
|
17
17
|
export declare function clearSkillsDirCache(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Absolute path to the curated **active** skills directory. Skills here are
|
|
20
|
+
* loaded into the runtime alongside bundled and managed skills.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCuratedActiveDir(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Absolute path to the curated **proposed** skills directory. Skills here are
|
|
25
|
+
* NEVER loaded into the runtime — they are staged for human review via the
|
|
26
|
+
* Settings → Learned Skills UI.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getProposedSkillsDir(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Promote a proposed skill to active by moving its directory atomically.
|
|
31
|
+
* Returns the destination path. Throws if the source does not exist or the
|
|
32
|
+
* destination already exists.
|
|
33
|
+
*/
|
|
34
|
+
export declare function promoteSkill(name: string): string;
|
|
18
35
|
//# sourceMappingURL=resolver.d.ts.map
|
package/dist/resolver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AA+CA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA6CrC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAgBD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBjD"}
|
package/dist/resolver.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, renameSync, statSync, } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { resolveStateDir } from "@elizaos/core";
|
|
4
5
|
/**
|
|
5
6
|
* Cached skills directory path
|
|
6
7
|
*/
|
|
@@ -88,3 +89,55 @@ export function getSkillsDir() {
|
|
|
88
89
|
export function clearSkillsDirCache() {
|
|
89
90
|
cachedSkillsDir = undefined;
|
|
90
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Default base directory for the curated learning loop. Lives alongside the
|
|
94
|
+
* Eliza state dir (`~/.eliza/`) and holds two sibling namespaces:
|
|
95
|
+
*
|
|
96
|
+
* curated/active/ — auto-promoted or human-promoted skills (loaded)
|
|
97
|
+
* curated/proposed/ — staged drafts awaiting human review (NOT loaded)
|
|
98
|
+
*
|
|
99
|
+
* Honors the state directory resolved by @elizaos/core; falls back to
|
|
100
|
+
* `~/.eliza`.
|
|
101
|
+
*/
|
|
102
|
+
function resolveCuratedBaseDir() {
|
|
103
|
+
return join(resolveStateDir(), "skills", "curated");
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Absolute path to the curated **active** skills directory. Skills here are
|
|
107
|
+
* loaded into the runtime alongside bundled and managed skills.
|
|
108
|
+
*/
|
|
109
|
+
export function getCuratedActiveDir() {
|
|
110
|
+
return join(resolveCuratedBaseDir(), "active");
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Absolute path to the curated **proposed** skills directory. Skills here are
|
|
114
|
+
* NEVER loaded into the runtime — they are staged for human review via the
|
|
115
|
+
* Settings → Learned Skills UI.
|
|
116
|
+
*/
|
|
117
|
+
export function getProposedSkillsDir() {
|
|
118
|
+
return join(resolveCuratedBaseDir(), "proposed");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Promote a proposed skill to active by moving its directory atomically.
|
|
122
|
+
* Returns the destination path. Throws if the source does not exist or the
|
|
123
|
+
* destination already exists.
|
|
124
|
+
*/
|
|
125
|
+
export function promoteSkill(name) {
|
|
126
|
+
if (!/^[a-z0-9-]+$/.test(name)) {
|
|
127
|
+
throw new Error(`Invalid skill name "${name}" — must be lowercase a-z, 0-9, hyphens only`);
|
|
128
|
+
}
|
|
129
|
+
const proposedDir = join(getProposedSkillsDir(), name);
|
|
130
|
+
if (!existsSync(proposedDir) || !statSync(proposedDir).isDirectory()) {
|
|
131
|
+
throw new Error(`Proposed skill "${name}" not found at ${proposedDir}`);
|
|
132
|
+
}
|
|
133
|
+
const activeRoot = getCuratedActiveDir();
|
|
134
|
+
if (!existsSync(activeRoot)) {
|
|
135
|
+
mkdirSync(activeRoot, { recursive: true });
|
|
136
|
+
}
|
|
137
|
+
const activeDir = join(activeRoot, name);
|
|
138
|
+
if (existsSync(activeDir)) {
|
|
139
|
+
throw new Error(`Active skill "${name}" already exists at ${activeDir}`);
|
|
140
|
+
}
|
|
141
|
+
renameSync(proposedDir, activeDir);
|
|
142
|
+
return activeDir;
|
|
143
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance of a skill — distinguishes human-authored from agent-derived
|
|
3
|
+
* skills, and tracks self-improvement signal across the closed learning loop.
|
|
4
|
+
*/
|
|
5
|
+
export interface SkillProvenance {
|
|
6
|
+
/** Whether the skill was authored by a human or derived by the agent. */
|
|
7
|
+
source: "human" | "agent-generated" | "agent-refined";
|
|
8
|
+
/** Trajectory that produced or last refined the skill, if any. */
|
|
9
|
+
derivedFromTrajectory?: string;
|
|
10
|
+
/** ISO8601 timestamp when this provenance entry was recorded. */
|
|
11
|
+
createdAt: string;
|
|
12
|
+
/** Number of times the agent has automatically refined this skill. */
|
|
13
|
+
refinedCount: number;
|
|
14
|
+
/** Most recent eval score from the scoring cron, in [0, 1]. */
|
|
15
|
+
lastEvalScore?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Audit trail for native-optimizer-driven skill refinements.
|
|
18
|
+
*
|
|
19
|
+
* Populated by the gradient-mode branch of `skillRefinementEvaluator` —
|
|
20
|
+
* after the LLM-diff auto-budget is exhausted, the evaluator switches to
|
|
21
|
+
* the native `prompt-evolution` optimizer and appends one entry per run.
|
|
22
|
+
*/
|
|
23
|
+
optimizationLineage?: Array<{
|
|
24
|
+
optimizer: "instruction-search" | "prompt-evolution" | "bootstrap-fewshot";
|
|
25
|
+
score: number;
|
|
26
|
+
datasetSize: number;
|
|
27
|
+
generatedAt: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
1
30
|
/**
|
|
2
31
|
* Skill frontmatter parsed from SKILL.md YAML header
|
|
3
32
|
*/
|
|
@@ -28,6 +57,8 @@ export interface SkillFrontmatter {
|
|
|
28
57
|
"command-arg-mode"?: string;
|
|
29
58
|
/** Whether skill can be invoked by users via commands */
|
|
30
59
|
"user-invocable"?: boolean;
|
|
60
|
+
/** Provenance metadata — present on agent-derived/curated skills. */
|
|
61
|
+
provenance?: SkillProvenance;
|
|
31
62
|
/** Additional arbitrary metadata */
|
|
32
63
|
[key: string]: unknown;
|
|
33
64
|
}
|
|
@@ -46,10 +77,16 @@ export interface Skill {
|
|
|
46
77
|
filePath?: string;
|
|
47
78
|
/** Absolute path to the skill's base directory (optional for inline skills) */
|
|
48
79
|
baseDir?: string;
|
|
49
|
-
/** Source identifier (e.g., "bundled", "workspace", "managed", "inline") */
|
|
80
|
+
/** Source identifier (e.g., "bundled", "workspace", "managed", "inline", "curated") */
|
|
50
81
|
source?: string;
|
|
51
82
|
/** If true, skill won't be included in model prompts */
|
|
52
83
|
disableModelInvocation?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Provenance metadata when the skill was derived from a trajectory or
|
|
86
|
+
* user-authored as a "curated" skill. Optional for backward compatibility:
|
|
87
|
+
* existing on-disk skills with no provenance block are treated as `human`.
|
|
88
|
+
*/
|
|
89
|
+
provenance?: SkillProvenance;
|
|
53
90
|
/** Unique slug identifier for the skill */
|
|
54
91
|
slug?: string;
|
|
55
92
|
/** Skill version */
|
|
@@ -154,13 +191,13 @@ export interface SkillEntry {
|
|
|
154
191
|
skill: Skill;
|
|
155
192
|
/** Raw parsed frontmatter */
|
|
156
193
|
frontmatter: SkillFrontmatter;
|
|
157
|
-
/** Resolved
|
|
194
|
+
/** Resolved skill metadata */
|
|
158
195
|
metadata: SkillMetadata;
|
|
159
196
|
/** Invocation policy */
|
|
160
197
|
invocation: SkillInvocationPolicy;
|
|
161
198
|
}
|
|
162
199
|
/**
|
|
163
|
-
*
|
|
200
|
+
* Skill runtime metadata
|
|
164
201
|
*/
|
|
165
202
|
export interface SkillMetadata {
|
|
166
203
|
/** Primary environment (node, python, etc.) */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oCAAoC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,55 +1,59 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
2
|
+
"name": "@elizaos/skills",
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
|
+
"description": "Bundled skills and skill loading utilities for elizaOS agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"clean": "rm -rf dist",
|
|
17
|
+
"build": "tsc --noCheck -p tsconfig.build.json",
|
|
18
|
+
"dev": "tsgo -p tsconfig.build.json --watch --preserveWatchOutput",
|
|
19
|
+
"test": "bun test ./test",
|
|
20
|
+
"prepublishOnly": "bun run clean && bun run build",
|
|
21
|
+
"lint": "bunx @biomejs/biome check --write ./src",
|
|
22
|
+
"lint:check": "bunx @biomejs/biome check ./src"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist/**/*",
|
|
26
|
+
"skills/**/*",
|
|
27
|
+
"README.md",
|
|
28
|
+
"dist"
|
|
29
|
+
],
|
|
30
|
+
"keywords": [
|
|
31
|
+
"elizaos",
|
|
32
|
+
"skills",
|
|
33
|
+
"agent",
|
|
34
|
+
"ai",
|
|
35
|
+
"llm",
|
|
36
|
+
"automation"
|
|
37
|
+
],
|
|
38
|
+
"author": "elizaOS",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "git+https://github.com/elizaos/eliza.git",
|
|
43
|
+
"directory": "packages/skills"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=24.0.0"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@elizaos/core": "2.0.0-beta.1",
|
|
50
|
+
"yaml": "^2.8.2"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"tsx": "^4.19.2"
|
|
54
|
+
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
},
|
|
58
|
+
"gitHead": "86dadd9916e7db917e2ba0aa84fdecdbdf2d7598"
|
|
55
59
|
}
|
|
@@ -30,7 +30,7 @@ Use `remindctl` to manage Apple Reminders directly from the terminal. It support
|
|
|
30
30
|
Setup
|
|
31
31
|
|
|
32
32
|
- Install (Homebrew): `brew install steipete/tap/remindctl`
|
|
33
|
-
- From source: `
|
|
33
|
+
- From source: `bun install && bun run build` (binary at `./bin/remindctl`)
|
|
34
34
|
- macOS-only; grant Reminders permission when prompted.
|
|
35
35
|
|
|
36
36
|
Permissions
|