claude-ws 0.4.9-beta.6 → 0.4.9-beta.7
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-ws",
|
|
3
|
-
"version": "0.4.9-beta.
|
|
3
|
+
"version": "0.4.9-beta.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "AI-powered workspace for solo CEOs and indie builders — manage your entire business with AI agents, not just code. Kanban board, code editor, Git integration, claw agent hub, local-first SQLite.",
|
|
6
6
|
"keywords": [
|
|
@@ -63,13 +63,15 @@ const BUILTIN_COMMANDS: CommandInfo[] = [
|
|
|
63
63
|
{ name: 'vim', description: 'Enter vim mode for multi-line input', isBuiltIn: true },
|
|
64
64
|
];
|
|
65
65
|
|
|
66
|
-
function parseFrontmatter(content: string): { description?: string; argumentHint?: string } {
|
|
66
|
+
function parseFrontmatter(content: string): { name?: string; description?: string; argumentHint?: string } {
|
|
67
67
|
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
68
68
|
if (!match) return {};
|
|
69
69
|
const fm = match[1];
|
|
70
|
+
const nameMatch = fm.match(/name:\s*(.+)/);
|
|
70
71
|
const desc = fm.match(/description:\s*(.+)/);
|
|
71
72
|
const arg = fm.match(/argument-hint:\s*(.+)/);
|
|
72
73
|
return {
|
|
74
|
+
name: nameMatch ? nameMatch[1].trim().replace(/^["']|["']$/g, '') : undefined,
|
|
73
75
|
description: desc ? desc[1].trim().replace(/^["']|["']$/g, '') : undefined,
|
|
74
76
|
argumentHint: arg ? arg[1].trim().replace(/^["']|["']$/g, '') : undefined,
|
|
75
77
|
};
|
|
@@ -106,9 +108,7 @@ function scanSkillsDir(dir: string): CommandInfo[] {
|
|
|
106
108
|
if (existsSync(skillFile)) {
|
|
107
109
|
const content = readFileSync(skillFile, 'utf-8');
|
|
108
110
|
const fm = parseFrontmatter(content);
|
|
109
|
-
|
|
110
|
-
const nameMatch = content.match(/^---\n[\s\S]*?name:\s*(.+?)[\s\S]*?\n---/);
|
|
111
|
-
const name = nameMatch ? nameMatch[1].trim().replace(/^["']|["']$/g, '') : item;
|
|
111
|
+
const name = fm.name || item;
|
|
112
112
|
skills.push({ name, description: fm.description || `Run /${item} skill`, argumentHint: fm.argumentHint });
|
|
113
113
|
} else {
|
|
114
114
|
skills.push(...scanSkillsDir(itemPath));
|