@laststance/claude-plugin-dashboard 0.2.2 → 0.3.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.
- package/README.md +17 -1
- package/dist/app.d.ts +7 -1
- package/dist/app.js +231 -84
- package/dist/cli.js +58 -67
- package/dist/components/ComponentBadges.d.ts +3 -3
- package/dist/components/ComponentBadges.js +12 -11
- package/dist/components/ComponentList.d.ts +53 -0
- package/dist/components/ComponentList.js +193 -0
- package/dist/components/KeyHints.js +25 -28
- package/dist/components/MarketplaceActionMenu.d.ts +41 -0
- package/dist/components/MarketplaceActionMenu.js +68 -0
- package/dist/components/MarketplaceDetail.d.ts +10 -3
- package/dist/components/MarketplaceDetail.js +10 -4
- package/dist/components/PluginDetail.d.ts +3 -0
- package/dist/components/PluginDetail.js +28 -4
- package/dist/components/PluginList.js +19 -7
- package/dist/services/componentService.d.ts +12 -1
- package/dist/services/componentService.js +238 -0
- package/dist/services/marketplaceActionsService.d.ts +17 -0
- package/dist/services/marketplaceActionsService.js +18 -0
- package/dist/services/pluginService.js +78 -2
- package/dist/tabs/DiscoverTab.js +1 -1
- package/dist/tabs/EnabledTab.js +2 -2
- package/dist/tabs/InstalledTab.js +2 -2
- package/dist/tabs/MarketplacesTab.d.ts +15 -2
- package/dist/tabs/MarketplacesTab.js +13 -4
- package/dist/types/index.d.ts +110 -1
- package/package.json +5 -3
package/dist/types/index.d.ts
CHANGED
|
@@ -3,7 +3,92 @@
|
|
|
3
3
|
* These types aggregate data from multiple Claude Code configuration files
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Component
|
|
6
|
+
* Component type identifier
|
|
7
|
+
*/
|
|
8
|
+
export type ComponentType = 'skill' | 'command' | 'agent' | 'hook' | 'mcp' | 'lsp';
|
|
9
|
+
/**
|
|
10
|
+
* Individual component information with name and optional description
|
|
11
|
+
*
|
|
12
|
+
* Data Source Architecture:
|
|
13
|
+
* ```
|
|
14
|
+
* ┌─────────────────────────────────────────────────────────────┐
|
|
15
|
+
* │ Plugin Installed? │
|
|
16
|
+
* │ │ │
|
|
17
|
+
* │ ┌──── YES ─────┴───── NO ────┐ │
|
|
18
|
+
* │ │ │ │
|
|
19
|
+
* │ ▼ ▼ │
|
|
20
|
+
* │ ┌─────────────────────┐ ┌─────────────────────┐ │
|
|
21
|
+
* │ │ File System Scan │ │ Marketplace JSON │ │
|
|
22
|
+
* │ │ ───────────────── │ │ ───────────────── │ │
|
|
23
|
+
* │ │ skills/{name}/ │ │ skills: [ │ │
|
|
24
|
+
* │ │ commands/{name}.md │ │ "./skills/xlsx" │ │
|
|
25
|
+
* │ │ agents/{name}.md │ │ ] │ │
|
|
26
|
+
* │ │ plugin.json keys │ │ │ │
|
|
27
|
+
* │ └─────────────────────┘ └─────────────────────┘ │
|
|
28
|
+
* │ │ │ │
|
|
29
|
+
* │ ▼ ▼ │
|
|
30
|
+
* │ Names + Descriptions Names only (if available) │
|
|
31
|
+
* │ │
|
|
32
|
+
* │ └────────────────────────────┘ │
|
|
33
|
+
* │ │ │
|
|
34
|
+
* │ ▼ │
|
|
35
|
+
* │ PluginComponentsDetailed │
|
|
36
|
+
* │ ───────────────────────── │
|
|
37
|
+
* │ { │
|
|
38
|
+
* │ skills: [ │
|
|
39
|
+
* │ { name: "xlsx", description: "..." }, │
|
|
40
|
+
* │ { name: "docx" } │
|
|
41
|
+
* │ ], │
|
|
42
|
+
* │ mcpServers: ["supabase", "context7"] │
|
|
43
|
+
* │ } │
|
|
44
|
+
* └─────────────────────────────────────────────────────────────┘
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* // Skill with description (from SKILL.md frontmatter)
|
|
49
|
+
* { name: "xlsx", description: "Spreadsheet editing", type: "skill" }
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // Command without description
|
|
53
|
+
* { name: "code-review", type: "command" }
|
|
54
|
+
*/
|
|
55
|
+
export interface ComponentInfo {
|
|
56
|
+
/** Component name (e.g., "xlsx", "code-review") */
|
|
57
|
+
name: string;
|
|
58
|
+
/** Optional description from SKILL.md frontmatter or first line of .md file */
|
|
59
|
+
description?: string;
|
|
60
|
+
/** Component type for display categorization */
|
|
61
|
+
type: ComponentType;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Detailed component information for a plugin
|
|
65
|
+
* Extends PluginComponents (counts) with actual component names and descriptions
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* {
|
|
69
|
+
* skills: [
|
|
70
|
+
* { name: "xlsx", description: "Spreadsheet editing", type: "skill" },
|
|
71
|
+
* { name: "docx", type: "skill" }
|
|
72
|
+
* ],
|
|
73
|
+
* mcpServers: ["supabase", "context7"]
|
|
74
|
+
* }
|
|
75
|
+
*/
|
|
76
|
+
export interface PluginComponentsDetailed {
|
|
77
|
+
/** Skill details (name + optional description) */
|
|
78
|
+
skills?: ComponentInfo[];
|
|
79
|
+
/** Command details */
|
|
80
|
+
commands?: ComponentInfo[];
|
|
81
|
+
/** Agent details */
|
|
82
|
+
agents?: ComponentInfo[];
|
|
83
|
+
/** Hook event names */
|
|
84
|
+
hooks?: string[];
|
|
85
|
+
/** MCP server names from plugin.json mcpServers keys */
|
|
86
|
+
mcpServers?: string[];
|
|
87
|
+
/** LSP server language IDs from .lsp.json keys */
|
|
88
|
+
lspServers?: string[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Component types provided by a plugin (counts only)
|
|
7
92
|
* Detected by scanning plugin directory structure and plugin.json
|
|
8
93
|
* @example
|
|
9
94
|
* { skills: 5, commands: 2, mcpServers: 1 } // Plugin with skills, commands, and MCP
|
|
@@ -64,6 +149,8 @@ export interface Plugin {
|
|
|
64
149
|
gitCommitSha?: string;
|
|
65
150
|
/** Component types provided by this plugin (skills, commands, MCP, etc.) */
|
|
66
151
|
components?: PluginComponents;
|
|
152
|
+
/** Detailed component info with names and descriptions */
|
|
153
|
+
componentsDetailed?: PluginComponentsDetailed;
|
|
67
154
|
}
|
|
68
155
|
/**
|
|
69
156
|
* Raw installed plugin data from installed_plugins.json
|
|
@@ -98,6 +185,7 @@ export interface Marketplace {
|
|
|
98
185
|
installLocation: string;
|
|
99
186
|
lastUpdated: string;
|
|
100
187
|
pluginCount?: number;
|
|
188
|
+
autoUpdate?: boolean;
|
|
101
189
|
}
|
|
102
190
|
/**
|
|
103
191
|
* Structure of known_marketplaces.json file
|
|
@@ -111,6 +199,7 @@ export interface KnownMarketplacesFile {
|
|
|
111
199
|
};
|
|
112
200
|
installLocation: string;
|
|
113
201
|
lastUpdated: string;
|
|
202
|
+
autoUpdate?: boolean;
|
|
114
203
|
};
|
|
115
204
|
}
|
|
116
205
|
/**
|
|
@@ -128,6 +217,12 @@ export interface MarketplacePluginEntry {
|
|
|
128
217
|
homepage?: string;
|
|
129
218
|
tags?: string[];
|
|
130
219
|
keywords?: string[];
|
|
220
|
+
/** Skill paths from marketplace.json (e.g., ["./skills/xlsx"]) */
|
|
221
|
+
skills?: string[];
|
|
222
|
+
/** Agent paths from marketplace.json */
|
|
223
|
+
agents?: string[];
|
|
224
|
+
/** Command paths from marketplace.json */
|
|
225
|
+
commands?: string[];
|
|
131
226
|
}
|
|
132
227
|
/**
|
|
133
228
|
* Structure of marketplace.json file
|
|
@@ -229,6 +324,10 @@ export interface AppState {
|
|
|
229
324
|
showAddMarketplaceDialog: boolean;
|
|
230
325
|
/** Error message for add marketplace dialog */
|
|
231
326
|
addMarketplaceError: string | null;
|
|
327
|
+
/** Whether marketplace action menu is showing */
|
|
328
|
+
showMarketplaceActionMenu: boolean;
|
|
329
|
+
/** Selected index in marketplace action menu */
|
|
330
|
+
actionMenuSelectedIndex: number;
|
|
232
331
|
}
|
|
233
332
|
/**
|
|
234
333
|
* Action types for useReducer
|
|
@@ -317,4 +416,14 @@ export type Action = {
|
|
|
317
416
|
} | {
|
|
318
417
|
type: 'SET_ADD_MARKETPLACE_ERROR';
|
|
319
418
|
payload: string | null;
|
|
419
|
+
} | {
|
|
420
|
+
type: 'SHOW_MARKETPLACE_ACTION_MENU';
|
|
421
|
+
} | {
|
|
422
|
+
type: 'HIDE_MARKETPLACE_ACTION_MENU';
|
|
423
|
+
} | {
|
|
424
|
+
type: 'SET_ACTION_MENU_INDEX';
|
|
425
|
+
payload: number;
|
|
426
|
+
} | {
|
|
427
|
+
type: 'MOVE_ACTION_MENU_SELECTION';
|
|
428
|
+
payload: 'up' | 'down';
|
|
320
429
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@laststance/claude-plugin-dashboard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Interactive CLI dashboard to manage Claude Code plugins",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ryota Murakami <ryota.murakami@laststance.io> (https://github.com/ryota-murakami)",
|
|
@@ -50,8 +50,10 @@
|
|
|
50
50
|
"test:coverage": "vitest run --coverage"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
+
"fullscreen-ink": "^0.1.0",
|
|
53
54
|
"ink": "^5.1.0",
|
|
54
|
-
"react": "^18.3.1"
|
|
55
|
+
"react": "^18.3.1",
|
|
56
|
+
"ts-pattern": "^5.9.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
59
|
"@sindresorhus/tsconfig": "^6.0.0",
|
|
@@ -65,4 +67,4 @@
|
|
|
65
67
|
"typescript": "^5.7.2",
|
|
66
68
|
"vitest": "^4.0.16"
|
|
67
69
|
}
|
|
68
|
-
}
|
|
70
|
+
}
|