@cereworker/skills 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ export type { SkillEntry, SkillMetadata, SkillInvocationPolicy } from './types.js';
2
+ export { loadSkills, loadSkillsFromDirectory, filterEligibleSkills } from './loader.js';
3
+ export { SkillRegistry } from './registry.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { loadSkills, loadSkillsFromDirectory, filterEligibleSkills } from './loader.js';
2
+ export { SkillRegistry } from './registry.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SkillEntry } from './types.js';
2
+ export declare function loadSkillsFromDirectory(dir: string): SkillEntry[];
3
+ export declare function loadSkills(directories: string[]): SkillEntry[];
4
+ export declare function filterEligibleSkills(skills: SkillEntry[]): SkillEntry[];
5
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AA+E5D,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CA8BjE;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAgB9D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAWvE"}
package/dist/loader.js ADDED
@@ -0,0 +1,124 @@
1
+ import { readFileSync, readdirSync, existsSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { execFileSync } from 'node:child_process';
4
+ function parseFrontmatter(raw) {
5
+ const match = raw.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
6
+ if (!match) {
7
+ return { data: {}, content: raw };
8
+ }
9
+ // Simple YAML-like parser for frontmatter (avoids gray-matter dep for now)
10
+ const yamlStr = match[1];
11
+ const content = match[2];
12
+ try {
13
+ // Use dynamic import for yaml since we already have it via config
14
+ const data = parseSimpleYaml(yamlStr);
15
+ return { data, content };
16
+ }
17
+ catch {
18
+ return { data: {}, content: raw };
19
+ }
20
+ }
21
+ function parseSimpleYaml(yamlStr) {
22
+ // Minimal YAML parser for skill frontmatter
23
+ // Only handles top-level key: value pairs and nested objects
24
+ const result = {};
25
+ const lines = yamlStr.split('\n');
26
+ let currentKey = '';
27
+ let currentIndent = 0;
28
+ for (const line of lines) {
29
+ const trimmed = line.trimEnd();
30
+ if (!trimmed || trimmed.startsWith('#'))
31
+ continue;
32
+ const match = trimmed.match(/^(\s*)(\w+):\s*(.*)/);
33
+ if (match) {
34
+ const indent = match[1].length;
35
+ const key = match[2];
36
+ const value = match[3].trim();
37
+ if (indent === 0) {
38
+ currentKey = key;
39
+ currentIndent = 0;
40
+ if (value && !value.startsWith('"') || value === '') {
41
+ result[key] = value || undefined;
42
+ }
43
+ else if (value.startsWith('"')) {
44
+ result[key] = value.replace(/^"|"$/g, '');
45
+ }
46
+ }
47
+ }
48
+ }
49
+ // For complex frontmatter, fall back to JSON if embedded
50
+ try {
51
+ const jsonMatch = yamlStr.match(/metadata:\s*\n\s*(\{[\s\S]*\})/);
52
+ if (jsonMatch) {
53
+ result.metadata = JSON.parse(jsonMatch[1]);
54
+ }
55
+ }
56
+ catch {
57
+ // ignore
58
+ }
59
+ return result;
60
+ }
61
+ function hasBinary(name) {
62
+ try {
63
+ execFileSync('which', [name], { stdio: 'pipe' });
64
+ return true;
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ }
70
+ export function loadSkillsFromDirectory(dir) {
71
+ if (!existsSync(dir))
72
+ return [];
73
+ const entries = readdirSync(dir, { withFileTypes: true });
74
+ const skills = [];
75
+ for (const entry of entries) {
76
+ if (!entry.isDirectory())
77
+ continue;
78
+ const skillFile = join(dir, entry.name, 'SKILL.md');
79
+ if (!existsSync(skillFile))
80
+ continue;
81
+ try {
82
+ const raw = readFileSync(skillFile, 'utf-8');
83
+ const { data, content } = parseFrontmatter(raw);
84
+ const skill = {
85
+ name: data.name ?? entry.name,
86
+ description: data.description ?? '',
87
+ content,
88
+ metadata: data.metadata,
89
+ };
90
+ skills.push(skill);
91
+ }
92
+ catch {
93
+ // Skip malformed skills
94
+ }
95
+ }
96
+ return skills;
97
+ }
98
+ export function loadSkills(directories) {
99
+ const allSkills = [];
100
+ const seen = new Set();
101
+ for (const dir of directories) {
102
+ const resolved = resolve(dir);
103
+ const skills = loadSkillsFromDirectory(resolved);
104
+ for (const skill of skills) {
105
+ if (!seen.has(skill.name)) {
106
+ seen.add(skill.name);
107
+ allSkills.push(skill);
108
+ }
109
+ }
110
+ }
111
+ return allSkills;
112
+ }
113
+ export function filterEligibleSkills(skills) {
114
+ return skills.filter((skill) => {
115
+ const requires = skill.metadata?.cereworker?.requires;
116
+ if (!requires)
117
+ return true;
118
+ if (requires.bins) {
119
+ return requires.bins.every(hasBinary);
120
+ }
121
+ return true;
122
+ });
123
+ }
124
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { SkillEntry } from './types.js';
2
+ export declare class SkillRegistry {
3
+ private skills;
4
+ register(skill: SkillEntry): void;
5
+ registerAll(skills: SkillEntry[]): void;
6
+ get(name: string): SkillEntry | undefined;
7
+ list(): SkillEntry[];
8
+ buildPrompt(): string;
9
+ clear(): void;
10
+ }
11
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAiC;IAE/C,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIjC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;IAMvC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,IAAI,IAAI,UAAU,EAAE;IAIpB,WAAW,IAAI,MAAM;IAYrB,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,31 @@
1
+ export class SkillRegistry {
2
+ skills = new Map();
3
+ register(skill) {
4
+ this.skills.set(skill.name, skill);
5
+ }
6
+ registerAll(skills) {
7
+ for (const skill of skills) {
8
+ this.register(skill);
9
+ }
10
+ }
11
+ get(name) {
12
+ return this.skills.get(name);
13
+ }
14
+ list() {
15
+ return Array.from(this.skills.values());
16
+ }
17
+ buildPrompt() {
18
+ const skills = this.list();
19
+ if (skills.length === 0)
20
+ return '';
21
+ const sections = skills.map((skill) => {
22
+ const emoji = skill.metadata?.cereworker?.emoji ?? '';
23
+ return `## ${emoji} ${skill.name}\n${skill.description}\n\n${skill.content}`;
24
+ });
25
+ return `# Available Skills\n\n${sections.join('\n\n---\n\n')}`;
26
+ }
27
+ clear() {
28
+ this.skills.clear();
29
+ }
30
+ }
31
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAChB,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE/C,QAAQ,CAAC,KAAiB;QACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,MAAoB;QAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,OAAO,yBAAyB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ export interface SkillMetadata {
2
+ cereworker?: {
3
+ emoji?: string;
4
+ requires?: {
5
+ bins?: string[];
6
+ env?: string[];
7
+ };
8
+ install?: SkillInstallSpec[];
9
+ };
10
+ }
11
+ export interface SkillInstallSpec {
12
+ kind: 'brew' | 'apt' | 'npm' | 'go';
13
+ formula?: string;
14
+ package?: string;
15
+ bins?: string[];
16
+ label?: string;
17
+ }
18
+ export interface SkillInvocationPolicy {
19
+ userInvocable: boolean;
20
+ disableModelInvocation: boolean;
21
+ }
22
+ export interface SkillEntry {
23
+ name: string;
24
+ description: string;
25
+ content: string;
26
+ metadata?: SkillMetadata;
27
+ invocation?: SkillInvocationPolicy;
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;SAChB,CAAC;QACF,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@cereworker/skills",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/Producible/CereWorker.git",
16
+ "directory": "packages/skills"
17
+ },
18
+ "dependencies": {
19
+ "gray-matter": "^4.0.3",
20
+ "@cereworker/core": "0.1.0",
21
+ "@cereworker/config": "0.1.0"
22
+ },
23
+ "devDependencies": {
24
+ "typescript": "^5.7.3"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "typecheck": "tsc --noEmit",
29
+ "lint": "eslint src/",
30
+ "clean": "rm -rf dist"
31
+ }
32
+ }