@infinitedusky/indusk-mcp 1.5.5 → 1.5.6
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/dist/bin/commands/init.js +1 -0
- package/dist/tools/system-tools.js +37 -0
- package/package.json +1 -1
- package/skills/catchup.md +6 -5
|
@@ -213,6 +213,7 @@ export async function init(projectRoot, options = {}) {
|
|
|
213
213
|
"mcp__indusk__graph_stats",
|
|
214
214
|
"mcp__indusk__get_system_version",
|
|
215
215
|
"mcp__indusk__get_skill_versions",
|
|
216
|
+
"mcp__indusk__get_skill_summaries",
|
|
216
217
|
"mcp__indusk__index_project",
|
|
217
218
|
"mcp__indusk__graph_doctor",
|
|
218
219
|
"mcp__codegraphcontext__get_repository_stats",
|
|
@@ -120,6 +120,43 @@ export function registerSystemTools(server, projectRoot) {
|
|
|
120
120
|
],
|
|
121
121
|
};
|
|
122
122
|
});
|
|
123
|
+
server.registerTool("get_skill_summaries", {
|
|
124
|
+
description: "Returns name, description, and type for every installed skill. Use during catchup to learn what skills are available without loading full content.",
|
|
125
|
+
}, async () => {
|
|
126
|
+
const skillsTarget = join(projectRoot, ".claude/skills");
|
|
127
|
+
if (!existsSync(skillsTarget)) {
|
|
128
|
+
return {
|
|
129
|
+
content: [{ type: "text", text: JSON.stringify({ skills: [], total: 0 }) }],
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const skillDirs = readdirSync(skillsTarget).filter((d) => !d.startsWith(".") && existsSync(join(skillsTarget, d, "SKILL.md")));
|
|
133
|
+
const skills = skillDirs.map((dir) => {
|
|
134
|
+
const content = readFileSync(join(skillsTarget, dir, "SKILL.md"), "utf-8");
|
|
135
|
+
// Try frontmatter first (process skills)
|
|
136
|
+
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
137
|
+
if (fmMatch) {
|
|
138
|
+
const fm = fmMatch[1];
|
|
139
|
+
const name = fm.match(/^name:\s*(.+)$/m)?.[1]?.trim() ?? dir;
|
|
140
|
+
const description = fm.match(/^description:\s*(.+)$/m)?.[1]?.trim() ?? "";
|
|
141
|
+
const type = fm.match(/^argument-hint:/m) ? "process" : "domain";
|
|
142
|
+
return { name, description, type, slash: `/${name}` };
|
|
143
|
+
}
|
|
144
|
+
// Fall back to heading + first paragraph (extension skills)
|
|
145
|
+
const firstPara = content
|
|
146
|
+
.split("\n\n")
|
|
147
|
+
.find((p) => p && !p.startsWith("#") && !p.startsWith("---"));
|
|
148
|
+
const description = firstPara?.replace(/\n/g, " ").slice(0, 120) ?? "";
|
|
149
|
+
return { name: dir, description, type: "extension", slash: null };
|
|
150
|
+
});
|
|
151
|
+
return {
|
|
152
|
+
content: [
|
|
153
|
+
{
|
|
154
|
+
type: "text",
|
|
155
|
+
text: JSON.stringify({ total: skills.length, skills }, null, 2),
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
};
|
|
159
|
+
});
|
|
123
160
|
server.registerTool("extensions_status", {
|
|
124
161
|
description: "List all extensions (enabled and disabled) with their capabilities. Replaces list_domain_skills.",
|
|
125
162
|
}, async () => {
|
package/package.json
CHANGED
package/skills/catchup.md
CHANGED
|
@@ -53,11 +53,12 @@ Call `list_plans`. This shows every plan and its status. Pay attention to:
|
|
|
53
53
|
### 6. Review Skills and Extensions
|
|
54
54
|
Call `extensions_status` to see what extensions are enabled and their capabilities.
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- **
|
|
60
|
-
- **
|
|
56
|
+
Call `get_skill_summaries` to load the name, description, and type of every installed skill. This returns a compact summary — you do NOT need to read each skill file individually. The full skill content loads automatically when the user invokes a slash command.
|
|
57
|
+
|
|
58
|
+
Skill types:
|
|
59
|
+
- **process** — workflow skills with slash commands (plan, work, verify, context, document, retrospective)
|
|
60
|
+
- **extension** — tool integrations (cgc, composable-env, excalidraw, etc.)
|
|
61
|
+
- **domain** — technology-specific best practices (typescript, testing, etc.)
|
|
61
62
|
|
|
62
63
|
Understand what each skill does and when to use it. You should be able to answer: "What slash commands are available and what do they do?"
|
|
63
64
|
|