@elizaos/skills 2.0.0-alpha.97 → 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.
Files changed (184) hide show
  1. package/README.md +5 -1
  2. package/dist/formatter.d.ts +1 -2
  3. package/dist/formatter.d.ts.map +1 -1
  4. package/dist/formatter.js +12 -20
  5. package/dist/frontmatter.d.ts +14 -2
  6. package/dist/frontmatter.d.ts.map +1 -1
  7. package/dist/frontmatter.js +54 -2
  8. package/dist/index.d.ts +3 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/loader.d.ts.map +1 -1
  12. package/dist/loader.js +15 -13
  13. package/dist/resolver.d.ts +17 -0
  14. package/dist/resolver.d.ts.map +1 -1
  15. package/dist/resolver.js +54 -1
  16. package/dist/types.d.ts +40 -3
  17. package/dist/types.d.ts.map +1 -1
  18. package/package.json +57 -53
  19. package/skills/apple-reminders/SKILL.md +1 -1
  20. package/skills/build-monetized-app/SKILL.md +144 -0
  21. package/skills/build-monetized-app/references/failure-modes.md +71 -0
  22. package/skills/build-monetized-app/references/sdk-flow.md +191 -0
  23. package/skills/build-monetized-app/references/survival-economics.md +64 -0
  24. package/skills/coding-agent/SKILL.md +12 -2
  25. package/skills/eliza/SKILL.md +43 -0
  26. package/skills/eliza/references/agent-orchestration.md +98 -0
  27. package/skills/eliza/references/capability-map.md +68 -0
  28. package/skills/eliza/references/plugin-and-skill-lifecycle.md +69 -0
  29. package/skills/eliza-app-development/SKILL.md +62 -0
  30. package/skills/eliza-app-development/references/plugin-and-app-build.md +81 -0
  31. package/skills/eliza-app-development/references/repo-map.md +70 -0
  32. package/skills/eliza-app-development/references/runtime-and-cloud.md +61 -0
  33. package/skills/eliza-cloud/SKILL.md +152 -0
  34. package/skills/eliza-cloud/references/apps-and-containers.md +73 -0
  35. package/skills/eliza-cloud/references/cloud-backend-and-monetization.md +128 -0
  36. package/skills/eliza-cloud/references/payments-and-promotion.md +547 -0
  37. package/skills/eliza-cloud-buy-domain/SKILL.md +104 -0
  38. package/skills/eliza-cloud-buy-domain/references/api-shape.md +77 -0
  39. package/skills/eliza-cloud-buy-domain/references/dns-and-ssl.md +25 -0
  40. package/skills/eliza-cloud-buy-domain/references/failure-modes.md +17 -0
  41. package/skills/eliza-cloud-manage-domain/SKILL.md +104 -0
  42. package/skills/eliza-cloud-manage-domain/references/api-shape.md +73 -0
  43. package/skills/eliza-cloud-manage-domain/references/dns-records.md +26 -0
  44. package/skills/eliza-cloud-manage-domain/references/failure-modes.md +14 -0
  45. package/skills/elizaos/SKILL.md +27 -0
  46. package/skills/elizaos/references/core-abstractions.md +101 -0
  47. package/skills/elizaos/references/plugin-development.md +74 -0
  48. package/skills/task-agent-eliza-bridge/SKILL.md +34 -0
  49. package/skills/tmux/SKILL.md +1 -1
  50. package/LICENSE +0 -21
  51. package/skills/bear-notes/SKILL.md +0 -107
  52. package/skills/bird/SKILL.md +0 -224
  53. package/skills/blogwatcher/SKILL.md +0 -69
  54. package/skills/clawhub/SKILL.md +0 -77
  55. package/skills/crow/SKILL.md +0 -261
  56. package/skills/crow/references/api-reference.md +0 -370
  57. package/skills/crow/references/card-payments.md +0 -124
  58. package/skills/crow/references/error-handling.md +0 -154
  59. package/skills/crow/references/x402-flow.md +0 -170
  60. package/skills/eightctl/SKILL.md +0 -50
  61. package/skills/food-order/SKILL.md +0 -48
  62. package/skills/gemini/SKILL.md +0 -43
  63. package/skills/gifgrep/SKILL.md +0 -79
  64. package/skills/gog/SKILL.md +0 -116
  65. package/skills/goplaces/SKILL.md +0 -52
  66. package/skills/himalaya/SKILL.md +0 -257
  67. package/skills/himalaya/references/configuration.md +0 -184
  68. package/skills/himalaya/references/message-composition.md +0 -199
  69. package/skills/local-places/SERVER_README.md +0 -101
  70. package/skills/local-places/SKILL.md +0 -102
  71. package/skills/local-places/pyproject.toml +0 -21
  72. package/skills/local-places/src/local_places/__init__.py +0 -2
  73. package/skills/local-places/src/local_places/google_places.py +0 -314
  74. package/skills/local-places/src/local_places/main.py +0 -65
  75. package/skills/local-places/src/local_places/schemas.py +0 -107
  76. package/skills/mcporter/SKILL.md +0 -61
  77. package/skills/model-usage/SKILL.md +0 -69
  78. package/skills/model-usage/references/codexbar-cli.md +0 -33
  79. package/skills/model-usage/scripts/model_usage.py +0 -310
  80. package/skills/nightmarket/SKILL.md +0 -145
  81. package/skills/nightmarket/references/api.md +0 -176
  82. package/skills/nightmarket/references/crow-payments.md +0 -67
  83. package/skills/nightmarket/references/mcp.md +0 -53
  84. package/skills/openai-image-gen/SKILL.md +0 -89
  85. package/skills/openai-image-gen/scripts/gen.py +0 -240
  86. package/skills/openai-whisper/SKILL.md +0 -38
  87. package/skills/openai-whisper-api/SKILL.md +0 -52
  88. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
  89. package/skills/openhue/SKILL.md +0 -51
  90. package/skills/oracle/SKILL.md +0 -125
  91. package/skills/peekaboo/SKILL.md +0 -190
  92. package/skills/sag/SKILL.md +0 -87
  93. package/skills/security-ask-questions-if-underspecified/SKILL.md +0 -61
  94. package/skills/security-audit-context-building/SKILL.md +0 -88
  95. package/skills/security-building-secure-contracts/SKILL.md +0 -75
  96. package/skills/security-burpsuite-project-parser/SKILL.md +0 -98
  97. package/skills/security-claude-in-chrome-troubleshooting/SKILL.md +0 -85
  98. package/skills/security-constant-time-analysis/SKILL.md +0 -116
  99. package/skills/security-culture-index/SKILL.md +0 -77
  100. package/skills/security-differential-review/SKILL.md +0 -94
  101. package/skills/security-dwarf-expert/SKILL.md +0 -73
  102. package/skills/security-entry-point-analyzer/SKILL.md +0 -78
  103. package/skills/security-firebase-apk-scanner/SKILL.md +0 -99
  104. package/skills/security-fix-review/SKILL.md +0 -73
  105. package/skills/security-insecure-defaults/SKILL.md +0 -73
  106. package/skills/security-modern-python/SKILL.md +0 -114
  107. package/skills/security-property-based-testing/SKILL.md +0 -122
  108. package/skills/semgrep-rule-creator/SKILL.md +0 -108
  109. package/skills/semgrep-rule-variant-creator/SKILL.md +0 -122
  110. package/skills/session-logs/SKILL.md +0 -115
  111. package/skills/sharp-edges/.claude-plugin/plugin.json +0 -10
  112. package/skills/sharp-edges/README.md +0 -47
  113. package/skills/sharp-edges/SKILL.md +0 -292
  114. package/skills/sharp-edges/skills/sharp-edges/SKILL.md +0 -292
  115. package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +0 -252
  116. package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +0 -274
  117. package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +0 -333
  118. package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +0 -190
  119. package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +0 -205
  120. package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +0 -285
  121. package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +0 -270
  122. package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +0 -263
  123. package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +0 -269
  124. package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +0 -265
  125. package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +0 -245
  126. package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +0 -274
  127. package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +0 -273
  128. package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +0 -272
  129. package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +0 -287
  130. package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +0 -588
  131. package/skills/sherpa-onnx-tts/SKILL.md +0 -103
  132. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
  133. package/skills/songsee/SKILL.md +0 -49
  134. package/skills/sonoscli/SKILL.md +0 -46
  135. package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +0 -10
  136. package/skills/spec-to-code-compliance/README.md +0 -67
  137. package/skills/spec-to-code-compliance/SKILL.md +0 -349
  138. package/skills/spec-to-code-compliance/commands/spec-compliance.md +0 -22
  139. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +0 -349
  140. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +0 -69
  141. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +0 -417
  142. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +0 -105
  143. package/skills/static-analysis/.claude-plugin/plugin.json +0 -8
  144. package/skills/static-analysis/README.md +0 -59
  145. package/skills/static-analysis/SKILL.md +0 -89
  146. package/skills/static-analysis/skills/codeql/SKILL.md +0 -315
  147. package/skills/static-analysis/skills/sarif-parsing/SKILL.md +0 -479
  148. package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +0 -162
  149. package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +0 -331
  150. package/skills/static-analysis/skills/semgrep/SKILL.md +0 -337
  151. package/skills/summarize/SKILL.md +0 -87
  152. package/skills/testing-handbook-skills/.claude-plugin/plugin.json +0 -8
  153. package/skills/testing-handbook-skills/README.md +0 -241
  154. package/skills/testing-handbook-skills/SKILL.md +0 -104
  155. package/skills/testing-handbook-skills/scripts/pyproject.toml +0 -8
  156. package/skills/testing-handbook-skills/scripts/validate-skills.py +0 -657
  157. package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +0 -341
  158. package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +0 -640
  159. package/skills/testing-handbook-skills/skills/atheris/SKILL.md +0 -522
  160. package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +0 -460
  161. package/skills/testing-handbook-skills/skills/codeql/SKILL.md +0 -552
  162. package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +0 -512
  163. package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +0 -612
  164. package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +0 -303
  165. package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +0 -433
  166. package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +0 -621
  167. package/skills/testing-handbook-skills/skills/libafl/SKILL.md +0 -632
  168. package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +0 -795
  169. package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +0 -434
  170. package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +0 -443
  171. package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +0 -605
  172. package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +0 -372
  173. package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +0 -280
  174. package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +0 -452
  175. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +0 -504
  176. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +0 -454
  177. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +0 -527
  178. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +0 -366
  179. package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +0 -482
  180. package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +0 -539
  181. package/skills/variant-analysis/SKILL.md +0 -89
  182. package/skills/video-frames/SKILL.md +0 -46
  183. package/skills/video-frames/scripts/frame.sh +0 -81
  184. 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
- pnpm add @elizaos/skills
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):
@@ -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 XML format per Agent Skills standard.
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).
@@ -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;AAiBtE;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CA8B7D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAMzE;AAyDD;;;;;;;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"}
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
- * Escape special XML characters
2
+ * Compact a skill field for prompt-friendly structured text.
3
3
  *
4
- * @param str - String to escape
5
- * @returns XML-escaped string
4
+ * @param str - String to compact
5
+ * @returns Single-line prompt field
6
6
  */
7
- function escapeXml(str) {
8
- return str
9
- .replace(/&/g, "&")
10
- .replace(/</g, "&lt;")
11
- .replace(/>/g, "&gt;")
12
- .replace(/"/g, "&quot;")
13
- .replace(/'/g, "&apos;");
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 XML format per Agent Skills standard.
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
- "<available_skills>",
30
+ "available_skills:",
37
31
  ];
38
32
  for (const skill of visibleSkills) {
39
- lines.push(" <skill>");
40
- lines.push(` <name>${escapeXml(skill.name)}</name>`);
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(` <location>${escapeXml(skill.filePath)}</location>`);
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 normalized = raw
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, "_")
@@ -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 Otto-specific metadata from skill frontmatter
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,EACd,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;AAkCD;;;;;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"}
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"}
@@ -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 Otto-specific metadata from skill frontmatter
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
@@ -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,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElE,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,EACL,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
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";
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAGhB,UAAU,EAEX,MAAM,YAAY,CAAC;AAkMpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,gBAAgB,CAGlB;AA8CD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CA0H5E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,UAAU,EAAE,CAuBd"}
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
- const existing = skillMap.get(skill.name);
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: existing.filePath ?? "(inline)",
268
- loserPath: skill.filePath,
266
+ winnerPath: skill.filePath,
267
+ loserPath: existing.filePath ?? "(inline)",
269
268
  },
270
269
  });
271
270
  }
272
- else {
273
- skillMap.set(skill.name, skill);
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
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAwCA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA6CrC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
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 Otto-specific metadata */
194
+ /** Resolved skill metadata */
158
195
  metadata: SkillMetadata;
159
196
  /** Invocation policy */
160
197
  invocation: SkillInvocationPolicy;
161
198
  }
162
199
  /**
163
- * Otto-specific skill metadata
200
+ * Skill runtime metadata
164
201
  */
165
202
  export interface SkillMetadata {
166
203
  /** Primary environment (node, python, etc.) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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
- "name": "@elizaos/skills",
3
- "version": "2.0.0-alpha.97",
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
- "./skills": "./skills/",
14
- "./package.json": "./package.json"
15
- },
16
- "scripts": {
17
- "clean": "rm -rf dist",
18
- "build": "tsc -p tsconfig.build.json",
19
- "dev": "tsgo -p tsconfig.build.json --watch --preserveWatchOutput",
20
- "test": "node --test --import tsx test/*.test.ts",
21
- "prepublishOnly": "bun run clean && bun run build",
22
- "lint": "bunx @biomejs/biome check --write ./src",
23
- "lint:check": "bunx @biomejs/biome check ./src"
24
- },
25
- "files": [
26
- "dist/**/*",
27
- "skills/**/*",
28
- "README.md"
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": ">=22.0.0"
47
- },
48
- "dependencies": {
49
- "yaml": "^2.8.2"
50
- },
51
- "publishConfig": {
52
- "access": "public"
53
- },
54
- "gitHead": "6cc572030a2229ec2cba996ae42148c3eeefad2e"
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: `pnpm install && pnpm build` (binary at `./bin/remindctl`)
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