@hasna/skills 0.1.9 → 0.1.11
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/bin/index.js +73 -22
- package/bin/mcp.js +73 -22
- package/package.json +1 -1
package/bin/index.js
CHANGED
|
@@ -1878,7 +1878,7 @@ var package_default;
|
|
|
1878
1878
|
var init_package = __esm(() => {
|
|
1879
1879
|
package_default = {
|
|
1880
1880
|
name: "@hasna/skills",
|
|
1881
|
-
version: "0.1.
|
|
1881
|
+
version: "0.1.11",
|
|
1882
1882
|
description: "Skills library for AI coding agents",
|
|
1883
1883
|
type: "module",
|
|
1884
1884
|
bin: {
|
|
@@ -34809,8 +34809,8 @@ var init_mcp2 = __esm(() => {
|
|
|
34809
34809
|
title: "List Skills",
|
|
34810
34810
|
description: "List skills. Returns {name,category} by default; detail:true for full objects.",
|
|
34811
34811
|
inputSchema: {
|
|
34812
|
-
category: exports_external.string().optional()
|
|
34813
|
-
detail: exports_external.boolean().optional()
|
|
34812
|
+
category: exports_external.string().optional(),
|
|
34813
|
+
detail: exports_external.boolean().optional()
|
|
34814
34814
|
}
|
|
34815
34815
|
}, async ({ category, detail }) => {
|
|
34816
34816
|
const skills = category ? getSkillsByCategory(category) : SKILLS;
|
|
@@ -34823,8 +34823,8 @@ var init_mcp2 = __esm(() => {
|
|
|
34823
34823
|
title: "Search Skills",
|
|
34824
34824
|
description: "Search skills by name, description, or tags. Returns compact list by default.",
|
|
34825
34825
|
inputSchema: {
|
|
34826
|
-
query: exports_external.string()
|
|
34827
|
-
detail: exports_external.boolean().optional()
|
|
34826
|
+
query: exports_external.string(),
|
|
34827
|
+
detail: exports_external.boolean().optional()
|
|
34828
34828
|
}
|
|
34829
34829
|
}, async ({ query, detail }) => {
|
|
34830
34830
|
const results = searchSkills(query);
|
|
@@ -34837,7 +34837,7 @@ var init_mcp2 = __esm(() => {
|
|
|
34837
34837
|
title: "Get Skill Info",
|
|
34838
34838
|
description: "Get skill metadata, env vars, and dependencies.",
|
|
34839
34839
|
inputSchema: {
|
|
34840
|
-
name: exports_external.string()
|
|
34840
|
+
name: exports_external.string()
|
|
34841
34841
|
}
|
|
34842
34842
|
}, async ({ name }) => {
|
|
34843
34843
|
const skill = getSkill(name);
|
|
@@ -34854,7 +34854,7 @@ var init_mcp2 = __esm(() => {
|
|
|
34854
34854
|
title: "Get Skill Docs",
|
|
34855
34855
|
description: "Get skill documentation (SKILL.md > README.md > CLAUDE.md).",
|
|
34856
34856
|
inputSchema: {
|
|
34857
|
-
name: exports_external.string()
|
|
34857
|
+
name: exports_external.string()
|
|
34858
34858
|
}
|
|
34859
34859
|
}, async ({ name }) => {
|
|
34860
34860
|
const doc2 = getSkillBestDoc(name);
|
|
@@ -34867,9 +34867,9 @@ var init_mcp2 = __esm(() => {
|
|
|
34867
34867
|
title: "Install Skill",
|
|
34868
34868
|
description: "Install a skill to .skills/ or to an agent dir (for: claude|codex|gemini|all).",
|
|
34869
34869
|
inputSchema: {
|
|
34870
|
-
name: exports_external.string()
|
|
34871
|
-
for: exports_external.string().optional()
|
|
34872
|
-
scope: exports_external.string().optional()
|
|
34870
|
+
name: exports_external.string(),
|
|
34871
|
+
for: exports_external.string().optional(),
|
|
34872
|
+
scope: exports_external.string().optional()
|
|
34873
34873
|
}
|
|
34874
34874
|
}, async ({ name, for: agentArg, scope }) => {
|
|
34875
34875
|
if (agentArg) {
|
|
@@ -34898,9 +34898,9 @@ var init_mcp2 = __esm(() => {
|
|
|
34898
34898
|
title: "Install Category",
|
|
34899
34899
|
description: "Install all skills in a category, optionally for a specific agent.",
|
|
34900
34900
|
inputSchema: {
|
|
34901
|
-
category: exports_external.string()
|
|
34902
|
-
for: exports_external.string().optional()
|
|
34903
|
-
scope: exports_external.string().optional()
|
|
34901
|
+
category: exports_external.string(),
|
|
34902
|
+
for: exports_external.string().optional(),
|
|
34903
|
+
scope: exports_external.string().optional()
|
|
34904
34904
|
}
|
|
34905
34905
|
}, async ({ category, for: agentArg, scope }) => {
|
|
34906
34906
|
const matchedCategory = CATEGORIES.find((c) => c.toLowerCase() === category.toLowerCase());
|
|
@@ -34944,9 +34944,9 @@ var init_mcp2 = __esm(() => {
|
|
|
34944
34944
|
title: "Remove Skill",
|
|
34945
34945
|
description: "Remove a skill from .skills/ or from an agent dir.",
|
|
34946
34946
|
inputSchema: {
|
|
34947
|
-
name: exports_external.string()
|
|
34948
|
-
for: exports_external.string().optional()
|
|
34949
|
-
scope: exports_external.string().optional()
|
|
34947
|
+
name: exports_external.string(),
|
|
34948
|
+
for: exports_external.string().optional(),
|
|
34949
|
+
scope: exports_external.string().optional()
|
|
34950
34950
|
}
|
|
34951
34951
|
}, async ({ name, for: agentArg, scope }) => {
|
|
34952
34952
|
if (agentArg) {
|
|
@@ -35000,7 +35000,7 @@ var init_mcp2 = __esm(() => {
|
|
|
35000
35000
|
title: "Get Requirements",
|
|
35001
35001
|
description: "Get env vars, system deps, and npm dependencies for a skill.",
|
|
35002
35002
|
inputSchema: {
|
|
35003
|
-
name: exports_external.string()
|
|
35003
|
+
name: exports_external.string()
|
|
35004
35004
|
}
|
|
35005
35005
|
}, async ({ name }) => {
|
|
35006
35006
|
const reqs = getSkillRequirements(name);
|
|
@@ -35013,8 +35013,8 @@ var init_mcp2 = __esm(() => {
|
|
|
35013
35013
|
title: "Run Skill",
|
|
35014
35014
|
description: "Run a skill by name with optional arguments.",
|
|
35015
35015
|
inputSchema: {
|
|
35016
|
-
name: exports_external.string()
|
|
35017
|
-
args: exports_external.array(exports_external.string()).optional()
|
|
35016
|
+
name: exports_external.string(),
|
|
35017
|
+
args: exports_external.array(exports_external.string()).optional()
|
|
35018
35018
|
}
|
|
35019
35019
|
}, async ({ name, args }) => {
|
|
35020
35020
|
const skill = getSkill(name);
|
|
@@ -35048,9 +35048,9 @@ var init_mcp2 = __esm(() => {
|
|
|
35048
35048
|
title: "Import Skills",
|
|
35049
35049
|
description: "Install skills from an export payload. Supports agent installs via 'for'.",
|
|
35050
35050
|
inputSchema: {
|
|
35051
|
-
skills: exports_external.array(exports_external.string())
|
|
35052
|
-
for: exports_external.string().optional()
|
|
35053
|
-
scope: exports_external.string().optional()
|
|
35051
|
+
skills: exports_external.array(exports_external.string()),
|
|
35052
|
+
for: exports_external.string().optional(),
|
|
35053
|
+
scope: exports_external.string().optional()
|
|
35054
35054
|
}
|
|
35055
35055
|
}, async ({ skills: skillList, for: agentArg, scope }) => {
|
|
35056
35056
|
if (!skillList || skillList.length === 0) {
|
|
@@ -35143,6 +35143,57 @@ var init_mcp2 = __esm(() => {
|
|
|
35143
35143
|
}]
|
|
35144
35144
|
};
|
|
35145
35145
|
});
|
|
35146
|
+
server.registerTool("search_tools", {
|
|
35147
|
+
title: "Search Tools",
|
|
35148
|
+
description: "List tool names, optionally filtered by keyword.",
|
|
35149
|
+
inputSchema: { query: exports_external.string().optional() }
|
|
35150
|
+
}, async ({ query }) => {
|
|
35151
|
+
const all = [
|
|
35152
|
+
"list_skills",
|
|
35153
|
+
"search_skills",
|
|
35154
|
+
"get_skill_info",
|
|
35155
|
+
"get_skill_docs",
|
|
35156
|
+
"install_skill",
|
|
35157
|
+
"install_category",
|
|
35158
|
+
"remove_skill",
|
|
35159
|
+
"list_categories",
|
|
35160
|
+
"list_tags",
|
|
35161
|
+
"get_requirements",
|
|
35162
|
+
"run_skill",
|
|
35163
|
+
"export_skills",
|
|
35164
|
+
"import_skills",
|
|
35165
|
+
"whoami",
|
|
35166
|
+
"search_tools",
|
|
35167
|
+
"describe_tools"
|
|
35168
|
+
];
|
|
35169
|
+
const matches = query ? all.filter((n) => n.includes(query.toLowerCase())) : all;
|
|
35170
|
+
return { content: [{ type: "text", text: matches.join(", ") }] };
|
|
35171
|
+
});
|
|
35172
|
+
server.registerTool("describe_tools", {
|
|
35173
|
+
title: "Describe Tools",
|
|
35174
|
+
description: "Get descriptions for specific tools by name.",
|
|
35175
|
+
inputSchema: { names: exports_external.array(exports_external.string()) }
|
|
35176
|
+
}, async ({ names }) => {
|
|
35177
|
+
const descriptions = {
|
|
35178
|
+
list_skills: "List skills {name,category}. Params: category?, detail?",
|
|
35179
|
+
search_skills: "Search skills by name/tags. Params: query, detail?",
|
|
35180
|
+
get_skill_info: "Get skill metadata and env vars. Params: name",
|
|
35181
|
+
get_skill_docs: "Get skill documentation. Params: name",
|
|
35182
|
+
install_skill: "Install a skill for an agent. Params: name, agent?",
|
|
35183
|
+
install_category: "Install all skills in a category. Params: category, agent?",
|
|
35184
|
+
remove_skill: "Remove an installed skill. Params: name, agent?",
|
|
35185
|
+
list_categories: "List skill categories with counts.",
|
|
35186
|
+
list_tags: "List all tags across skills.",
|
|
35187
|
+
get_requirements: "Get skill requirements/dependencies. Params: name",
|
|
35188
|
+
run_skill: "Execute a skill. Params: name, args?",
|
|
35189
|
+
export_skills: "Export skill config. Params: format?",
|
|
35190
|
+
import_skills: "Import skill config. Params: data",
|
|
35191
|
+
whoami: "Show setup: version, installed skills, agent configs."
|
|
35192
|
+
};
|
|
35193
|
+
const result = names.map((n) => `${n}: ${descriptions[n] || "See tool schema"}`).join(`
|
|
35194
|
+
`);
|
|
35195
|
+
return { content: [{ type: "text", text: result }] };
|
|
35196
|
+
});
|
|
35146
35197
|
main().catch((error48) => {
|
|
35147
35198
|
console.error("MCP server error:", error48);
|
|
35148
35199
|
process.exit(1);
|
package/bin/mcp.js
CHANGED
|
@@ -28604,7 +28604,7 @@ import { homedir as homedir2 } from "os";
|
|
|
28604
28604
|
// package.json
|
|
28605
28605
|
var package_default = {
|
|
28606
28606
|
name: "@hasna/skills",
|
|
28607
|
-
version: "0.1.
|
|
28607
|
+
version: "0.1.11",
|
|
28608
28608
|
description: "Skills library for AI coding agents",
|
|
28609
28609
|
type: "module",
|
|
28610
28610
|
bin: {
|
|
@@ -30637,8 +30637,8 @@ server.registerTool("list_skills", {
|
|
|
30637
30637
|
title: "List Skills",
|
|
30638
30638
|
description: "List skills. Returns {name,category} by default; detail:true for full objects.",
|
|
30639
30639
|
inputSchema: {
|
|
30640
|
-
category: exports_external.string().optional()
|
|
30641
|
-
detail: exports_external.boolean().optional()
|
|
30640
|
+
category: exports_external.string().optional(),
|
|
30641
|
+
detail: exports_external.boolean().optional()
|
|
30642
30642
|
}
|
|
30643
30643
|
}, async ({ category, detail }) => {
|
|
30644
30644
|
const skills = category ? getSkillsByCategory(category) : SKILLS;
|
|
@@ -30651,8 +30651,8 @@ server.registerTool("search_skills", {
|
|
|
30651
30651
|
title: "Search Skills",
|
|
30652
30652
|
description: "Search skills by name, description, or tags. Returns compact list by default.",
|
|
30653
30653
|
inputSchema: {
|
|
30654
|
-
query: exports_external.string()
|
|
30655
|
-
detail: exports_external.boolean().optional()
|
|
30654
|
+
query: exports_external.string(),
|
|
30655
|
+
detail: exports_external.boolean().optional()
|
|
30656
30656
|
}
|
|
30657
30657
|
}, async ({ query, detail }) => {
|
|
30658
30658
|
const results = searchSkills(query);
|
|
@@ -30665,7 +30665,7 @@ server.registerTool("get_skill_info", {
|
|
|
30665
30665
|
title: "Get Skill Info",
|
|
30666
30666
|
description: "Get skill metadata, env vars, and dependencies.",
|
|
30667
30667
|
inputSchema: {
|
|
30668
|
-
name: exports_external.string()
|
|
30668
|
+
name: exports_external.string()
|
|
30669
30669
|
}
|
|
30670
30670
|
}, async ({ name }) => {
|
|
30671
30671
|
const skill = getSkill(name);
|
|
@@ -30682,7 +30682,7 @@ server.registerTool("get_skill_docs", {
|
|
|
30682
30682
|
title: "Get Skill Docs",
|
|
30683
30683
|
description: "Get skill documentation (SKILL.md > README.md > CLAUDE.md).",
|
|
30684
30684
|
inputSchema: {
|
|
30685
|
-
name: exports_external.string()
|
|
30685
|
+
name: exports_external.string()
|
|
30686
30686
|
}
|
|
30687
30687
|
}, async ({ name }) => {
|
|
30688
30688
|
const doc2 = getSkillBestDoc(name);
|
|
@@ -30695,9 +30695,9 @@ server.registerTool("install_skill", {
|
|
|
30695
30695
|
title: "Install Skill",
|
|
30696
30696
|
description: "Install a skill to .skills/ or to an agent dir (for: claude|codex|gemini|all).",
|
|
30697
30697
|
inputSchema: {
|
|
30698
|
-
name: exports_external.string()
|
|
30699
|
-
for: exports_external.string().optional()
|
|
30700
|
-
scope: exports_external.string().optional()
|
|
30698
|
+
name: exports_external.string(),
|
|
30699
|
+
for: exports_external.string().optional(),
|
|
30700
|
+
scope: exports_external.string().optional()
|
|
30701
30701
|
}
|
|
30702
30702
|
}, async ({ name, for: agentArg, scope }) => {
|
|
30703
30703
|
if (agentArg) {
|
|
@@ -30726,9 +30726,9 @@ server.registerTool("install_category", {
|
|
|
30726
30726
|
title: "Install Category",
|
|
30727
30727
|
description: "Install all skills in a category, optionally for a specific agent.",
|
|
30728
30728
|
inputSchema: {
|
|
30729
|
-
category: exports_external.string()
|
|
30730
|
-
for: exports_external.string().optional()
|
|
30731
|
-
scope: exports_external.string().optional()
|
|
30729
|
+
category: exports_external.string(),
|
|
30730
|
+
for: exports_external.string().optional(),
|
|
30731
|
+
scope: exports_external.string().optional()
|
|
30732
30732
|
}
|
|
30733
30733
|
}, async ({ category, for: agentArg, scope }) => {
|
|
30734
30734
|
const matchedCategory = CATEGORIES.find((c) => c.toLowerCase() === category.toLowerCase());
|
|
@@ -30772,9 +30772,9 @@ server.registerTool("remove_skill", {
|
|
|
30772
30772
|
title: "Remove Skill",
|
|
30773
30773
|
description: "Remove a skill from .skills/ or from an agent dir.",
|
|
30774
30774
|
inputSchema: {
|
|
30775
|
-
name: exports_external.string()
|
|
30776
|
-
for: exports_external.string().optional()
|
|
30777
|
-
scope: exports_external.string().optional()
|
|
30775
|
+
name: exports_external.string(),
|
|
30776
|
+
for: exports_external.string().optional(),
|
|
30777
|
+
scope: exports_external.string().optional()
|
|
30778
30778
|
}
|
|
30779
30779
|
}, async ({ name, for: agentArg, scope }) => {
|
|
30780
30780
|
if (agentArg) {
|
|
@@ -30828,7 +30828,7 @@ server.registerTool("get_requirements", {
|
|
|
30828
30828
|
title: "Get Requirements",
|
|
30829
30829
|
description: "Get env vars, system deps, and npm dependencies for a skill.",
|
|
30830
30830
|
inputSchema: {
|
|
30831
|
-
name: exports_external.string()
|
|
30831
|
+
name: exports_external.string()
|
|
30832
30832
|
}
|
|
30833
30833
|
}, async ({ name }) => {
|
|
30834
30834
|
const reqs = getSkillRequirements(name);
|
|
@@ -30841,8 +30841,8 @@ server.registerTool("run_skill", {
|
|
|
30841
30841
|
title: "Run Skill",
|
|
30842
30842
|
description: "Run a skill by name with optional arguments.",
|
|
30843
30843
|
inputSchema: {
|
|
30844
|
-
name: exports_external.string()
|
|
30845
|
-
args: exports_external.array(exports_external.string()).optional()
|
|
30844
|
+
name: exports_external.string(),
|
|
30845
|
+
args: exports_external.array(exports_external.string()).optional()
|
|
30846
30846
|
}
|
|
30847
30847
|
}, async ({ name, args }) => {
|
|
30848
30848
|
const skill = getSkill(name);
|
|
@@ -30876,9 +30876,9 @@ server.registerTool("import_skills", {
|
|
|
30876
30876
|
title: "Import Skills",
|
|
30877
30877
|
description: "Install skills from an export payload. Supports agent installs via 'for'.",
|
|
30878
30878
|
inputSchema: {
|
|
30879
|
-
skills: exports_external.array(exports_external.string())
|
|
30880
|
-
for: exports_external.string().optional()
|
|
30881
|
-
scope: exports_external.string().optional()
|
|
30879
|
+
skills: exports_external.array(exports_external.string()),
|
|
30880
|
+
for: exports_external.string().optional(),
|
|
30881
|
+
scope: exports_external.string().optional()
|
|
30882
30882
|
}
|
|
30883
30883
|
}, async ({ skills: skillList, for: agentArg, scope }) => {
|
|
30884
30884
|
if (!skillList || skillList.length === 0) {
|
|
@@ -30971,6 +30971,57 @@ server.registerResource("Skill Info", new ResourceTemplate("skills://{name}", {
|
|
|
30971
30971
|
}]
|
|
30972
30972
|
};
|
|
30973
30973
|
});
|
|
30974
|
+
server.registerTool("search_tools", {
|
|
30975
|
+
title: "Search Tools",
|
|
30976
|
+
description: "List tool names, optionally filtered by keyword.",
|
|
30977
|
+
inputSchema: { query: exports_external.string().optional() }
|
|
30978
|
+
}, async ({ query }) => {
|
|
30979
|
+
const all = [
|
|
30980
|
+
"list_skills",
|
|
30981
|
+
"search_skills",
|
|
30982
|
+
"get_skill_info",
|
|
30983
|
+
"get_skill_docs",
|
|
30984
|
+
"install_skill",
|
|
30985
|
+
"install_category",
|
|
30986
|
+
"remove_skill",
|
|
30987
|
+
"list_categories",
|
|
30988
|
+
"list_tags",
|
|
30989
|
+
"get_requirements",
|
|
30990
|
+
"run_skill",
|
|
30991
|
+
"export_skills",
|
|
30992
|
+
"import_skills",
|
|
30993
|
+
"whoami",
|
|
30994
|
+
"search_tools",
|
|
30995
|
+
"describe_tools"
|
|
30996
|
+
];
|
|
30997
|
+
const matches = query ? all.filter((n) => n.includes(query.toLowerCase())) : all;
|
|
30998
|
+
return { content: [{ type: "text", text: matches.join(", ") }] };
|
|
30999
|
+
});
|
|
31000
|
+
server.registerTool("describe_tools", {
|
|
31001
|
+
title: "Describe Tools",
|
|
31002
|
+
description: "Get descriptions for specific tools by name.",
|
|
31003
|
+
inputSchema: { names: exports_external.array(exports_external.string()) }
|
|
31004
|
+
}, async ({ names }) => {
|
|
31005
|
+
const descriptions = {
|
|
31006
|
+
list_skills: "List skills {name,category}. Params: category?, detail?",
|
|
31007
|
+
search_skills: "Search skills by name/tags. Params: query, detail?",
|
|
31008
|
+
get_skill_info: "Get skill metadata and env vars. Params: name",
|
|
31009
|
+
get_skill_docs: "Get skill documentation. Params: name",
|
|
31010
|
+
install_skill: "Install a skill for an agent. Params: name, agent?",
|
|
31011
|
+
install_category: "Install all skills in a category. Params: category, agent?",
|
|
31012
|
+
remove_skill: "Remove an installed skill. Params: name, agent?",
|
|
31013
|
+
list_categories: "List skill categories with counts.",
|
|
31014
|
+
list_tags: "List all tags across skills.",
|
|
31015
|
+
get_requirements: "Get skill requirements/dependencies. Params: name",
|
|
31016
|
+
run_skill: "Execute a skill. Params: name, args?",
|
|
31017
|
+
export_skills: "Export skill config. Params: format?",
|
|
31018
|
+
import_skills: "Import skill config. Params: data",
|
|
31019
|
+
whoami: "Show setup: version, installed skills, agent configs."
|
|
31020
|
+
};
|
|
31021
|
+
const result = names.map((n) => `${n}: ${descriptions[n] || "See tool schema"}`).join(`
|
|
31022
|
+
`);
|
|
31023
|
+
return { content: [{ type: "text", text: result }] };
|
|
31024
|
+
});
|
|
30974
31025
|
async function main() {
|
|
30975
31026
|
const transport = new StdioServerTransport;
|
|
30976
31027
|
await server.connect(transport);
|