@elizaos/skills 2.0.0-alpha.41 → 2.0.0-alpha.411
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 +4 -0
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +3 -3
- package/dist/frontmatter.d.ts +13 -1
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +51 -1
- 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 +10 -3
- 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 +38 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -6
- package/skills/apple-reminders/SKILL.md +1 -1
- package/skills/blucli/SKILL.md +1 -1
- package/skills/bluebubbles/SKILL.md +1 -1
- package/skills/camsnap/SKILL.md +1 -1
- package/skills/canvas/SKILL.md +6 -6
- package/skills/coding-agent/SKILL.md +2 -2
- package/skills/eliza-app-development/SKILL.md +62 -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 +39 -0
- package/skills/eliza-cloud/references/apps-and-containers.md +73 -0
- package/skills/eliza-cloud/references/cloud-backend-and-monetization.md +99 -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/github/SKILL.md +1 -1
- package/skills/imsg/SKILL.md +1 -1
- package/skills/nano-banana-pro/SKILL.md +1 -1
- package/skills/nano-pdf/SKILL.md +1 -1
- package/skills/notion/SKILL.md +1 -1
- package/skills/obsidian/SKILL.md +1 -1
- package/skills/ordercli/SKILL.md +1 -1
- package/skills/skill-creator/SKILL.md +1 -1
- package/skills/slack/SKILL.md +1 -1
- package/skills/spotify-player/SKILL.md +1 -1
- package/skills/tmux/SKILL.md +1 -1
- package/skills/trello/SKILL.md +1 -1
- package/skills/wacli/SKILL.md +1 -1
- package/skills/weather/SKILL.md +1 -1
- package/skills/yara-authoring/SKILL.md +111 -0
- 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/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/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/session-logs/SKILL.md +0 -115
- package/skills/sharp-edges/.claude-plugin/plugin.json +0 -10
- package/skills/sharp-edges/README.md +0 -48
- 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 -91
- 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 -515
- package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +0 -454
- package/skills/testing-handbook-skills/skills/codeql/SKILL.md +0 -549
- package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +0 -507
- package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +0 -607
- package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +0 -297
- package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +0 -426
- package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +0 -614
- package/skills/testing-handbook-skills/skills/libafl/SKILL.md +0 -625
- package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +0 -795
- package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +0 -426
- package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +0 -443
- package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +0 -601
- 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 -533
- 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
|
@@ -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.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;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;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
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
* @returns XML-escaped string
|
|
6
6
|
*/
|
|
7
7
|
function escapeXml(str) {
|
|
8
|
-
|
|
9
|
-
return s
|
|
8
|
+
return str
|
|
10
9
|
.replace(/&/g, "&")
|
|
11
10
|
.replace(/</g, "<")
|
|
12
11
|
.replace(/>/g, ">")
|
|
@@ -74,7 +73,8 @@ const SKILL_COMMAND_DESCRIPTION_MAX_LENGTH = 100;
|
|
|
74
73
|
* @returns Sanitized command name
|
|
75
74
|
*/
|
|
76
75
|
function sanitizeSkillCommandName(raw) {
|
|
77
|
-
const
|
|
76
|
+
const clamped = raw.length > 1024 ? raw.slice(0, 1024) : raw;
|
|
77
|
+
const normalized = clamped
|
|
78
78
|
.toLowerCase()
|
|
79
79
|
.replace(/[^a-z0-9_]+/g, "_")
|
|
80
80
|
.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
|
*/
|
|
@@ -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;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;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,gBAAgB,GAC5B,eAAe,GAAG,SAAS,CAwC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,gBAAgB,EAC7B,IAAI,EAAE,MAAM,GACX,MAAM,CAIR"}
|
package/dist/frontmatter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parse } from "yaml";
|
|
1
|
+
import { parse, stringify } from "yaml";
|
|
2
2
|
/**
|
|
3
3
|
* Normalize line endings to Unix-style LF
|
|
4
4
|
*/
|
|
@@ -103,3 +103,53 @@ export function resolveSkillInvocationPolicy(frontmatter) {
|
|
|
103
103
|
}
|
|
104
104
|
return policy;
|
|
105
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Best-effort provenance parsing from a frontmatter block. Returns `undefined`
|
|
108
|
+
* when the block is missing or malformed (we do not fail loading on bad
|
|
109
|
+
* provenance — it is informational metadata).
|
|
110
|
+
*/
|
|
111
|
+
export function resolveSkillProvenance(frontmatter) {
|
|
112
|
+
const raw = frontmatter.provenance;
|
|
113
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
const record = raw;
|
|
117
|
+
const source = record.source;
|
|
118
|
+
if (source !== "human" &&
|
|
119
|
+
source !== "agent-generated" &&
|
|
120
|
+
source !== "agent-refined") {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
const createdAt = typeof record.createdAt === "string" ? record.createdAt : undefined;
|
|
124
|
+
if (!createdAt) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const refinedCountRaw = record.refinedCount;
|
|
128
|
+
const refinedCount = typeof refinedCountRaw === "number" && Number.isFinite(refinedCountRaw)
|
|
129
|
+
? Math.max(0, Math.floor(refinedCountRaw))
|
|
130
|
+
: 0;
|
|
131
|
+
const provenance = {
|
|
132
|
+
source,
|
|
133
|
+
createdAt,
|
|
134
|
+
refinedCount,
|
|
135
|
+
};
|
|
136
|
+
if (typeof record.derivedFromTrajectory === "string") {
|
|
137
|
+
provenance.derivedFromTrajectory = record.derivedFromTrajectory;
|
|
138
|
+
}
|
|
139
|
+
if (typeof record.lastEvalScore === "number" &&
|
|
140
|
+
Number.isFinite(record.lastEvalScore)) {
|
|
141
|
+
const score = record.lastEvalScore;
|
|
142
|
+
provenance.lastEvalScore = Math.max(0, Math.min(1, score));
|
|
143
|
+
}
|
|
144
|
+
return provenance;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Serialize a SKILL.md file with updated frontmatter, preserving body content.
|
|
148
|
+
* Used by the closed learning loop to rewrite provenance after refinement and
|
|
149
|
+
* scoring.
|
|
150
|
+
*/
|
|
151
|
+
export function serializeSkillFile(frontmatter, body) {
|
|
152
|
+
const yaml = stringify(frontmatter).trimEnd();
|
|
153
|
+
const trimmedBody = body.replace(/^\n+/, "");
|
|
154
|
+
return `---\n${yaml}\n---\n\n${trimmedBody}`;
|
|
155
|
+
}
|
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,CAiI5E;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
|
};
|
|
@@ -276,11 +278,16 @@ export function loadSkills(options = {}) {
|
|
|
276
278
|
}
|
|
277
279
|
}
|
|
278
280
|
if (includeDefaults) {
|
|
279
|
-
// Load in precedence order: bundled < managed < project
|
|
281
|
+
// Load in precedence order: bundled < managed < curated < project.
|
|
282
|
+
// The curated namespace holds agent-derived skills that were promoted to
|
|
283
|
+
// "active" by the closed learning loop or the user. Skills under the
|
|
284
|
+
// sibling "proposed" directory are intentionally NOT scanned here — they
|
|
285
|
+
// are pending human review and only surfaced via the curated-skills API.
|
|
280
286
|
if (resolvedBundledDir) {
|
|
281
287
|
addSkills(loadSkillsFromDirInternal(resolvedBundledDir, "bundled", true));
|
|
282
288
|
}
|
|
283
289
|
addSkills(loadSkillsFromDirInternal(resolvedManagedDir, "managed", true));
|
|
290
|
+
addSkills(loadSkillsFromDirInternal(getCuratedActiveDir(), "curated", true));
|
|
284
291
|
addSkills(loadSkillsFromDirInternal(projectSkillsDir, "project", true));
|
|
285
292
|
}
|
|
286
293
|
// 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
|
+
* Milady state dir (`~/.milady/`) 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 `MILADY_STATE_DIR` and `ELIZA_STATE_DIR` (in that order); falls back
|
|
100
|
+
* to `~/.milady`.
|
|
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 */
|
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/skills",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.411",
|
|
4
4
|
"description": "Bundled skills and skill loading utilities for elizaOS agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"scripts": {
|
|
17
17
|
"clean": "rm -rf dist",
|
|
18
18
|
"build": "tsc -p tsconfig.build.json",
|
|
19
|
-
"dev": "
|
|
20
|
-
"test": "
|
|
21
|
-
"prepublishOnly": "
|
|
19
|
+
"dev": "tsgo -p tsconfig.build.json --watch --preserveWatchOutput",
|
|
20
|
+
"test": "bun test ./test",
|
|
21
|
+
"prepublishOnly": "bun run clean && bun run build",
|
|
22
22
|
"lint": "bunx @biomejs/biome check --write ./src",
|
|
23
23
|
"lint:check": "bunx @biomejs/biome check ./src"
|
|
24
24
|
},
|
|
@@ -46,13 +46,14 @@
|
|
|
46
46
|
"node": ">=22.0.0"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
+
"@elizaos/core": "2.0.0-alpha.411",
|
|
49
50
|
"yaml": "^2.8.2"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
52
|
-
"tsx": "^4.19.
|
|
53
|
+
"tsx": "^4.19.2"
|
|
53
54
|
},
|
|
54
55
|
"publishConfig": {
|
|
55
56
|
"access": "public"
|
|
56
57
|
},
|
|
57
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "f5dfcba3dd4958305cb17d4bcaea53766c71631a"
|
|
58
59
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: apple-reminders
|
|
3
|
-
description: Manage Apple Reminders via the `remindctl` CLI on macOS (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
|
|
3
|
+
description: Manage Apple Reminders via the `remindctl` CLI on macOS (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output. Use when the user asks about reminders, todos, tasks, to-do lists, "remind me", scheduling tasks, checking what is due today, completing or deleting reminders, or managing reminder lists on macOS.
|
|
4
4
|
homepage: https://github.com/steipete/remindctl
|
|
5
5
|
metadata:
|
|
6
6
|
{
|
package/skills/blucli/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: blucli
|
|
3
|
-
description: BluOS CLI (blu) for discovery, playback, grouping, and volume.
|
|
3
|
+
description: BluOS CLI (blu) for discovery, playback, grouping, and volume control of Bluesound and NAD speakers. Use when the user wants to play music, stream audio, control speakers, adjust volume, group or ungroup Bluesound players, search TuneIn radio, or manage multi-room streaming setups.
|
|
4
4
|
homepage: https://blucli.sh
|
|
5
5
|
metadata:
|
|
6
6
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bluebubbles
|
|
3
|
-
description:
|
|
3
|
+
description: Handles sending and managing iMessages through BlueBubbles, the recommended iMessage integration. Triggers when the user wants to send a text message, send an iMessage, send a text, text someone, message a contact, react with a tapback, reply to a message thread, send an attachment via iMessage, edit or unsend a sent message, or manage group chat participants. All calls go through the generic message tool with channel="bluebubbles".
|
|
4
4
|
metadata: { "otto": { "emoji": "🫧", "requires": { "config": ["channels.bluebubbles"] } } }
|
|
5
5
|
---
|
|
6
6
|
|
package/skills/camsnap/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: camsnap
|
|
3
|
-
description: Capture frames or clips from RTSP/ONVIF cameras.
|
|
3
|
+
description: Capture frames or clips from RTSP/ONVIF cameras. Grabs snapshots, video clips, and motion events from IP cameras, security cameras, and video streams. Use when the user wants to take a snapshot from a camera, record a clip from an RTSP stream, monitor motion on a security camera, discover ONVIF devices on the network, or configure camera access for automated surveillance capture.
|
|
4
4
|
homepage: https://camsnap.ai
|
|
5
5
|
metadata:
|
|
6
6
|
{
|
package/skills/canvas/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: canvas
|
|
3
|
-
description: "Display HTML content on connected Otto nodes (Mac app, iOS, Android). Use for games, visualizations, dashboards, and
|
|
3
|
+
description: "Display, present, and render HTML content on connected Otto nodes (Mac app, iOS, Android). Show on device, preview on mobile, push to screen, or navigate to a URL on any connected node. Use for games, visualizations, dashboards, interactive demos, and live-reloading development previews. Supports presenting, hiding, navigating, evaluating JavaScript, and capturing screenshots of canvas content across Mac, iOS, and Android devices."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Canvas Skill
|
|
@@ -69,7 +69,7 @@ In `~/.otto/otto.json`:
|
|
|
69
69
|
"canvasHost": {
|
|
70
70
|
"enabled": true,
|
|
71
71
|
"port": 18793,
|
|
72
|
-
"root": "/Users/you/
|
|
72
|
+
"root": "/Users/you/clawd/canvas",
|
|
73
73
|
"liveReload": true
|
|
74
74
|
},
|
|
75
75
|
"gateway": {
|
|
@@ -92,10 +92,10 @@ Great for development!
|
|
|
92
92
|
|
|
93
93
|
### 1. Create HTML content
|
|
94
94
|
|
|
95
|
-
Place files in the canvas root directory (default `~/
|
|
95
|
+
Place files in the canvas root directory (default `~/clawd/canvas/`):
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
cat > ~/
|
|
98
|
+
cat > ~/clawd/canvas/my-game.html << 'HTML'
|
|
99
99
|
<!DOCTYPE html>
|
|
100
100
|
<html>
|
|
101
101
|
<head><title>My Game</title></head>
|
|
@@ -188,8 +188,8 @@ If live reload isn't working:
|
|
|
188
188
|
The canvas host serves from `/__otto__/canvas/` prefix:
|
|
189
189
|
|
|
190
190
|
```
|
|
191
|
-
http://<host>:18793/__otto__/canvas/index.html → ~/
|
|
192
|
-
http://<host>:18793/__otto__/canvas/games/snake.html → ~/
|
|
191
|
+
http://<host>:18793/__otto__/canvas/index.html → ~/clawd/canvas/index.html
|
|
192
|
+
http://<host>:18793/__otto__/canvas/games/snake.html → ~/clawd/canvas/games/snake.html
|
|
193
193
|
```
|
|
194
194
|
|
|
195
195
|
The `/__otto__/canvas/` prefix is defined by `CANVAS_HOST_PATH` constant.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-agent
|
|
3
|
-
description: Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.
|
|
3
|
+
description: Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control. Use when the agent needs to spawn, monitor, or orchestrate coding agents in a terminal session, delegate programming tasks to a sub-agent, review pull requests with an external CLI tool, or run parallel background coding workflows across git worktrees.
|
|
4
4
|
metadata:
|
|
5
5
|
{
|
|
6
6
|
"otto": { "emoji": "🧩", "requires": { "anyBins": ["claude", "codex", "opencode", "pi"] } },
|
|
@@ -231,7 +231,7 @@ git worktree remove /tmp/issue-99
|
|
|
231
231
|
5. **--full-auto for building** - auto-approves changes
|
|
232
232
|
6. **vanilla for reviewing** - no special flags needed
|
|
233
233
|
7. **Parallel is OK** - run many Codex processes at once for batch work
|
|
234
|
-
8. **NEVER start Codex in ~/
|
|
234
|
+
8. **NEVER start Codex in ~/clawd/** - it'll read your soul docs and get weird ideas about the org chart!
|
|
235
235
|
9. **NEVER checkout branches in ~/Projects/otto/** - that's the LIVE Otto instance!
|
|
236
236
|
|
|
237
237
|
---
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eliza-app-development
|
|
3
|
+
description: "Use when building or changing an elizaOS-based application in this repository. Covers eliza app architecture, monorepo layout, local versus remote versus cloud routing, where to edit features, and non-negotiable runtime constraints. Eliza is the product name of this particular eliza app checkout."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# eliza app development
|
|
7
|
+
|
|
8
|
+
This repository is an **elizaOS application**: a local-first assistant with CLI, dashboard, Electrobun desktop shell, connectors, and Eliza Cloud integration. **Eliza** is this app’s product and CLI name—not a separate platform from elizaOS.
|
|
9
|
+
|
|
10
|
+
## Read These References First
|
|
11
|
+
|
|
12
|
+
- `references/repo-map.md` for layout, edit targets, and common commands
|
|
13
|
+
- `references/runtime-and-cloud.md` for runtime flow, onboarding, service routing, skills, and Eliza Cloud behavior
|
|
14
|
+
|
|
15
|
+
## Editing Heuristics
|
|
16
|
+
|
|
17
|
+
- Prefer `packages/app-core/` for app shell behavior (API, CLI, onboarding, config).
|
|
18
|
+
- Prefer `packages/agent/` for agent providers, services, and runtime glue around elizaOS.
|
|
19
|
+
- Prefer `apps/app/` for UI and Electrobun work.
|
|
20
|
+
- Treat `eliza/cloud/` as the Eliza Cloud product and backend surface.
|
|
21
|
+
- Treat `eliza/` as upstream elizaOS. Edit it only when the bug or feature is genuinely upstream.
|
|
22
|
+
|
|
23
|
+
## Hard Constraints
|
|
24
|
+
|
|
25
|
+
- Do not remove `NODE_PATH` setup.
|
|
26
|
+
- Do not remove the Bun exports patch.
|
|
27
|
+
- Do not remove Electrobun startup error guards.
|
|
28
|
+
- Keep Node and Bun paths working.
|
|
29
|
+
|
|
30
|
+
## Repo Workflow
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
bun install
|
|
34
|
+
bun run verify
|
|
35
|
+
bun run test
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Narrower commands when useful:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
bun run eliza ...
|
|
42
|
+
bun run dev
|
|
43
|
+
bun run dev:desktop
|
|
44
|
+
bun run test:e2e
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Where to Look First
|
|
48
|
+
|
|
49
|
+
- Product and runtime behavior: `packages/app-core/src/`
|
|
50
|
+
- Prompt, provider, and skill plumbing: `packages/agent/src/`
|
|
51
|
+
- Onboarding and routing: `packages/app-core/src/onboarding/` and `packages/app-core/src/runtime/`
|
|
52
|
+
- Shipped default skills: bundled in `@elizaos/skills`, seeded into the state-dir skills folder by `scripts/ensure-skills.mjs`
|
|
53
|
+
- Eliza Cloud backend or monetization: `eliza/cloud/` and the shipped `eliza-cloud` skill
|
|
54
|
+
|
|
55
|
+
## Cloud Default
|
|
56
|
+
|
|
57
|
+
If the task involves building an app and Eliza Cloud is enabled, linked, or explicitly requested, treat Cloud as the default managed backend before inventing custom auth, billing, analytics, or hosting. Use the `eliza-cloud` skill for app, monetization, and container details.
|
|
58
|
+
|
|
59
|
+
## Related Skills
|
|
60
|
+
|
|
61
|
+
- `elizaos` — core runtime abstractions and upstream plugin patterns
|
|
62
|
+
- `eliza-cloud` — apps, billing, monetization, auth, containers
|