itismyskillmarket 1.3.42 → 1.3.44

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # SkillMarket
2
2
 
3
- > **v1.3.37** — Cross-platform skill manager for AI coding tools (Cursor, VSCode, Codex, OpenCode, Claude Code, Antigravity, OpenClaw, Hermes Agent, Saitec TUI).
3
+ > **v1.3.42** — Cross-platform skill manager for AI coding tools (Cursor, VSCode, Codex CLI, OpenCode, Claude Code, Antigravity, OpenClaw, Hermes Agent, Saitec TUI).
4
4
 
5
5
  ## Installation
6
6
 
@@ -253,6 +253,10 @@ SkillMarket can install skills directly to your AI coding tool's skill directory
253
253
  | OpenCode | `~/.config/opencode/skills/` | ✅ Detected |
254
254
  | Claude Code | `~/.claude/skills/` | ✅ Available |
255
255
  | VSCode | `~/.copilot/skills/` | ✅ Available |
256
+ | Codex CLI | `~/.codex/skills/` | ✅ Available |
257
+ | OpenClaw | `~/.openclaw/skills/` | ✅ Available |
258
+ | Hermes Agent | `~/.hermes/skills/` | ✅ Available |
259
+ | Saitec TUI | `~/.saitec_tui/skills/` | ✅ Available |
256
260
 
257
261
  ### Installation Behavior
258
262
 
@@ -270,7 +274,7 @@ Use `--platform` to target specific platforms:
270
274
  skm install my-skill --platform opencode
271
275
 
272
276
  # Multiple platforms
273
- skm install my-skill --platform opencode,claude,vscode
277
+ skm install my-skill --platform opencode,claude,vscode,codex
274
278
  ```
275
279
 
276
280
  Use `skm platforms` to see which platforms are available on your system:
@@ -283,6 +287,7 @@ $ skm platforms
283
287
  OpenCode ✅ Available (2 skills installed)
284
288
  Claude Code ✅ Available (1 skills installed)
285
289
  VSCode ✅ Available (0 skills installed)
290
+ Codex CLI ✅ Available (0 skills installed)
286
291
  OpenClaw ✅ Available (0 skills installed)
287
292
  Hermes Agent ✅ Available (0 skills installed)
288
293
  Saitec TUI ✅ Available (0 skills installed)
@@ -327,13 +332,14 @@ Skills are installed to `~/.skillmarket/` with the following structure:
327
332
  ~/.config/opencode/skills/<skill-name>/SKILL.md
328
333
  ~/.claude/skills/<skill-name>/SKILL.md
329
334
  ~/.copilot/skills/<skill-name>/SKILL.md
335
+ ~/.codex/skills/<skill-name>/SKILL.md
330
336
  ```
331
337
 
332
338
  ## Supported Platforms
333
339
 
334
340
  - Cursor
335
341
  - VSCode
336
- - Codex
342
+ - Codex CLI
337
343
  - OpenCode
338
344
  - Claude Code
339
345
  - Antigravity
@@ -1698,6 +1698,9 @@ async function readConfigFile() {
1698
1698
  valid[def.key] = String(data[def.key]);
1699
1699
  }
1700
1700
  }
1701
+ if (data.githubToken !== void 0) {
1702
+ valid.githubToken = String(data.githubToken);
1703
+ }
1701
1704
  return valid;
1702
1705
  }
1703
1706
  } catch {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startGuiServer
4
- } from "./chunk-76RGF4GX.js";
4
+ } from "./chunk-ALNUNP4E.js";
5
5
  export {
6
6
  startGuiServer
7
7
  };
package/dist/index.js CHANGED
@@ -38,7 +38,7 @@ import {
38
38
  uninstallAll,
39
39
  uninstallSkill,
40
40
  updateSkill
41
- } from "./chunk-76RGF4GX.js";
41
+ } from "./chunk-ALNUNP4E.js";
42
42
 
43
43
  // src/cli.ts
44
44
  import { Command } from "commander";
@@ -671,7 +671,7 @@ Commands:
671
671
  info <skill> Display skill information
672
672
  install <skill> Install a skill from npm or GitHub
673
673
  @<version> Install specific version
674
- --platform Target platforms (opencode,claude,...)
674
+ --platform Target platforms (opencode,claude,vscode,codex,...)
675
675
  --force Overwrite if already installed
676
676
  -b, --branch GitHub branch to install from
677
677
  -c, --commit GitHub commit to install from
@@ -716,7 +716,7 @@ Examples:
716
716
  skm install brainstorming Install to all detected platforms
717
717
  skm install brainstorming@1.0.0 Install specific version
718
718
  skm install owner/repo Install from GitHub
719
- skm install brainstorming --platform opencode Install to specific platform
719
+ skm install brainstorming --platform opencode,codex Install to specific platforms
720
720
  skm uninstall brainstorming Uninstall skill
721
721
  skm uninstall --all Uninstall all skills
722
722
  skm uninstall --all --yes Force uninstall all without confirmation
package/gui/app.js CHANGED
@@ -241,6 +241,7 @@ const translations = {
241
241
  'upload.installSuccess': '{skillName} installed locally!',
242
242
  'upload.bothSuccess': '{skillName} published & installed!',
243
243
  'upload.discarded': 'Upload discarded',
244
+ 'upload.fileSelected': 'Selected: {name} ({size})',
244
245
  'upload.errorInvalidZip': 'Invalid or empty zip file',
245
246
  'upload.errorNoFile': 'Please select a zip file first',
246
247
  'upload.uploadError': 'Upload failed: {error}',
@@ -487,6 +488,7 @@ const translations = {
487
488
  'upload.installSuccess': '{skillName} 已安装到本地!',
488
489
  'upload.bothSuccess': '{skillName} 已发布并安装!',
489
490
  'upload.discarded': '上传已丢弃',
491
+ 'upload.fileSelected': '已选择: {name} ({size})',
490
492
  'upload.errorInvalidZip': '无效或空的 zip 文件',
491
493
  'upload.errorNoFile': '请先选择一个 zip 文件',
492
494
  'upload.uploadError': '上传失败:{error}',
@@ -2094,6 +2096,40 @@ const uploadState = {
2094
2096
  /** 上传文件大小限制:50 MB */
2095
2097
  const MAX_UPLOAD_SIZE = 50 * 1024 * 1024;
2096
2098
 
2099
+ /** 格式化文件大小 */
2100
+ function formatFileSize(bytes) {
2101
+ if (bytes < 1024) return bytes + ' B';
2102
+ if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';
2103
+ return (bytes / 1024 / 1024).toFixed(1) + ' MB';
2104
+ }
2105
+
2106
+ /** 更新 dropzone 显示已选文件信息 */
2107
+ function showUploadFileInfo(file) {
2108
+ const info = document.getElementById('upload-file-info');
2109
+ const dropzone = document.getElementById('upload-dropzone');
2110
+ if (!info || !dropzone) return;
2111
+
2112
+ const sizeStr = formatFileSize(file.size);
2113
+ const fileName = file.name;
2114
+
2115
+ info.textContent = t('upload.fileSelected', { name: fileName, size: sizeStr });
2116
+ info.classList.remove('hidden');
2117
+ dropzone.classList.add('selected');
2118
+ }
2119
+
2120
+ /** 清除 dropzone 已选文件信息 */
2121
+ function clearUploadFileInfo() {
2122
+ const info = document.getElementById('upload-file-info');
2123
+ const dropzone = document.getElementById('upload-dropzone');
2124
+ if (info) {
2125
+ info.classList.add('hidden');
2126
+ info.textContent = '';
2127
+ }
2128
+ if (dropzone) {
2129
+ dropzone.classList.remove('selected');
2130
+ }
2131
+ }
2132
+
2097
2133
  /** 初始化 Upload 控件 */
2098
2134
  function initializeUploadControls() {
2099
2135
  const dropzone = document.getElementById('upload-dropzone');
@@ -2120,6 +2156,7 @@ function initializeUploadControls() {
2120
2156
  }
2121
2157
  uploadState.file = file;
2122
2158
  submitBtn.disabled = false;
2159
+ showUploadFileInfo(file);
2123
2160
  }
2124
2161
  });
2125
2162
 
@@ -2151,6 +2188,7 @@ function initializeUploadControls() {
2151
2188
  }
2152
2189
  uploadState.file = file;
2153
2190
  submitBtn.disabled = false;
2191
+ showUploadFileInfo(file);
2154
2192
  }
2155
2193
  });
2156
2194
 
@@ -2199,6 +2237,7 @@ function resetUploadView() {
2199
2237
  document.getElementById('upload-progress').classList.add('hidden');
2200
2238
  document.getElementById('upload-file-input').value = '';
2201
2239
  document.getElementById('upload-skill-name').value = '';
2240
+ clearUploadFileInfo();
2202
2241
  }
2203
2242
 
2204
2243
  /** 上传 zip 到后端 */
package/gui/index.html CHANGED
@@ -121,6 +121,7 @@
121
121
  <div class="upload-dropzone-icon">📦</div>
122
122
  <p class="upload-dropzone-text" id="upload-dropzone-text">Drop a skill .zip file here, or click to select</p>
123
123
  <p class="upload-dropzone-hint" id="upload-dropzone-hint">The zip should contain SKILL.md and optionally package.json</p>
124
+ <div id="upload-file-info" class="upload-file-info hidden"></div>
124
125
  <input type="file" id="upload-file-input" accept=".zip" style="display:none">
125
126
  <button id="upload-select-btn" class="btn btn-primary" style="margin-top:12px;">Choose File</button>
126
127
  </div>
package/gui/style.css CHANGED
@@ -938,6 +938,27 @@ body {
938
938
  background: var(--bg-secondary);
939
939
  }
940
940
 
941
+ .upload-dropzone.selected {
942
+ border-color: var(--success);
943
+ background: rgba(76, 175, 80, 0.08);
944
+ }
945
+
946
+ .upload-file-info {
947
+ margin-top: 12px;
948
+ padding: 6px 14px;
949
+ background: rgba(76, 175, 80, 0.12);
950
+ border: 1px solid var(--success);
951
+ border-radius: 6px;
952
+ color: var(--success);
953
+ font-size: 0.85rem;
954
+ display: inline-block;
955
+ transition: all 0.2s;
956
+ }
957
+
958
+ .upload-file-info.hidden {
959
+ display: none;
960
+ }
961
+
941
962
  .upload-dropzone:hover,
942
963
  .upload-dropzone.drag-over {
943
964
  border-color: var(--accent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itismyskillmarket",
3
- "version": "1.3.42",
3
+ "version": "1.3.44",
4
4
  "description": "Cross-platform skill manager for AI coding tools",
5
5
  "type": "module",
6
6
  "bin": {