@producible/cereworker-skills 26.520.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Producible
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -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": "@producible/cereworker-skills",
3
+ "version": "26.520.1",
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
+ "@producible/cereworker-core": "26.520.1",
21
+ "@producible/cereworker-config": "26.520.1"
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
+ }