huhaa-myskills 0.2.13 → 0.3.4
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 +9 -375
- package/bin/huhaa-myskills.mjs +194 -12
- package/{scripts → build}/verify.mjs +3 -1
- package/docs/Frontend-Spec.md +1149 -0
- package/docs/assets/layout-wireframe.png +0 -0
- package/docs/assets/theme-reference.png +0 -0
- package/docs/scan_rules.md +172 -0
- package/package.json +33 -9
- package/packages/scanner/src/adapters/directory-skill.mjs +239 -0
- package/packages/scanner/src/adapters/skill-adapter.mjs +345 -0
- package/packages/scanner/src/icon/brand-map.mjs +84 -0
- package/packages/scanner/src/icon/icon-extractor.mjs +246 -0
- package/packages/scanner/src/index.mjs +107 -82
- package/packages/scanner/src/types.d.ts +18 -0
- package/packages/scanner/test/icon.test.mjs +61 -0
- package/packages/scanner/test/scanner.test.mjs +37 -41
- package/packages/scanner/test/skill-adapter.test.mjs +70 -0
- package/packages/scanner/tests/directory-skill.test.mjs +93 -0
- package/packages/scanner/tests/scanner-integration.test.mjs +139 -0
- package/packages/server/src/index.mjs +164 -12
- package/packages/server/src/labels.mjs +62 -0
- package/packages/server/test/server.test.mjs +1 -1
- package/packages/web/README.md +33 -2
- package/packages/web/dist/assets/index-BCY2cRaO.js +175 -0
- package/packages/web/dist/assets/index-DALKjJPi.css +1 -0
- package/packages/web/dist/favicon-16x16.png +0 -0
- package/packages/web/dist/favicon-192x192.png +0 -0
- package/packages/web/dist/favicon-32x32.png +0 -0
- package/packages/web/dist/favicon-512x512.png +0 -0
- package/packages/web/dist/favicon-source.svg +5 -0
- package/packages/web/dist/index.html +23 -9
- package/packages/web/index.html +22 -8
- package/packages/web/package-lock.json +2989 -0
- package/packages/web/package.json +21 -8
- package/packages/web/postcss.config.js +6 -0
- package/packages/web/public/favicon-16x16.png +0 -0
- package/packages/web/public/favicon-192x192.png +0 -0
- package/packages/web/public/favicon-32x32.png +0 -0
- package/packages/web/public/favicon-512x512.png +0 -0
- package/packages/web/public/favicon-source.svg +5 -0
- package/packages/web/src/App.test.ts +40 -0
- package/packages/web/src/App.tsx +177 -0
- package/packages/web/src/components/ComingSoon.tsx +14 -0
- package/packages/web/src/components/layout/Sidebar.test.tsx +74 -0
- package/packages/web/src/components/layout/Sidebar.tsx +114 -0
- package/packages/web/src/components/layout/Topbar.tsx +74 -0
- package/packages/web/src/components/ui/ActionButton.tsx +48 -0
- package/packages/web/src/components/ui/button.tsx +48 -0
- package/packages/web/src/components/ui/card.tsx +45 -0
- package/packages/web/src/components/views/DashboardView.tsx +122 -0
- package/packages/web/src/components/views/OtherSkillsView.test.tsx +126 -0
- package/packages/web/src/components/views/OtherSkillsView.tsx +306 -0
- package/packages/web/src/components/views/SettingsView.tsx +95 -0
- package/packages/web/src/components/views/SkillDetail.test.tsx +57 -0
- package/packages/web/src/components/views/SkillDetail.tsx +81 -0
- package/packages/web/src/components/views/SkillsView.test.ts +28 -0
- package/packages/web/src/components/views/SkillsView.tsx +226 -0
- package/packages/web/src/hooks/QUICK_REFERENCE.md +165 -0
- package/packages/web/src/hooks/README.md +378 -0
- package/packages/web/src/hooks/__tests__/useOtherSkills.test.ts +422 -0
- package/packages/web/src/hooks/__tests__/useSkillIcons.test.ts +272 -0
- package/packages/web/src/hooks/useLiveReload.ts +20 -0
- package/packages/web/src/hooks/useOtherSkills.ts +387 -0
- package/packages/web/src/hooks/useSkillIcons.ts +248 -0
- package/packages/web/src/hooks/useTheme.ts +36 -0
- package/packages/web/src/index.css +161 -0
- package/packages/web/src/lib/api.test.ts +47 -0
- package/packages/web/src/lib/api.ts +77 -0
- package/packages/web/src/lib/cn.ts +7 -0
- package/packages/web/src/lib/editors.test.ts +30 -0
- package/packages/web/src/lib/editors.ts +70 -0
- package/packages/web/src/lib/markdown.test.ts +27 -0
- package/packages/web/src/lib/markdown.ts +14 -0
- package/packages/web/src/main.tsx +13 -0
- package/packages/web/src/types/index.ts +62 -0
- package/packages/web/src/types/other-skill.ts +88 -0
- package/packages/web/src/types/skill.ts +136 -0
- package/packages/web/src/types.ts +47 -0
- package/packages/web/src/vite-env.d.ts +1 -0
- package/packages/web/tailwind.config.ts +66 -0
- package/packages/web/tsconfig.json +28 -0
- package/packages/web/vite.config.ts +36 -0
- package/packages/web/vitest.config.ts +21 -0
- package/packages/web/vitest.setup.ts +1 -0
- package/scripts/activate-data-sources.sh +223 -0
- package/scripts/brand-completion.py +586 -0
- package/scripts/init-nextjs-project.sh +421 -0
- package/scripts/install-and-sync.sh +209 -0
- package/scripts/start-dev.sh +72 -0
- package/docs/GUIDE.md +0 -190
- package/docs/PLAN.md +0 -359
- package/docs/RULES.md +0 -329
- package/docs/RUNBOOK-myskills.md +0 -258
- package/docs/SYNC-SKILLS.md +0 -259
- package/docs/releases/README.md +0 -47
- package/docs/releases/v0.1.0.md +0 -256
- package/docs/releases/v0.1.1.md +0 -297
- package/docs/releases/v0.1.2.md +0 -207
- package/docs/releases/v0.1.3.md +0 -269
- package/docs/todo/v0.1.2.md +0 -98
- package/docs/todo/v0.1.3.md +0 -40
- package/docs/todo/v0.1.4.md +0 -36
- package/docs/todo/v0.1.5.md +0 -41
- package/docs/todo/v0.1.6.md +0 -43
- package/docs/todo/v0.1.7.md +0 -38
- package/docs/todo/v0.1.8.md +0 -36
- package/docs/todo/v0.1.9.md +0 -54
- package/packages/web/dist/assets/index-BPepSb3q.js +0 -36
- package/packages/web/dist/assets/index-CIGkgT5w.css +0 -1
- package/packages/web/src/App.vue +0 -483
- package/packages/web/src/components/AppTree.vue +0 -230
- package/packages/web/src/components/DirectoryTree.vue +0 -263
- package/packages/web/src/components/SkillTree.vue +0 -208
- package/packages/web/src/lib/api.js +0 -43
- package/packages/web/src/main.js +0 -6
- package/packages/web/src/stores/i18n.js +0 -161
- package/packages/web/src/stores/skills.js +0 -287
- package/packages/web/src/styles.css +0 -365
- package/packages/web/vite.config.js +0 -17
- /package/{scripts → build}/build-web.mjs +0 -0
- /package/{scripts → build}/prepare-publish.mjs +0 -0
package/docs/RULES.md
DELETED
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
# 版本发布规范
|
|
2
|
-
|
|
3
|
-
本文档定义 HuHaa-MySkills 版本发布、更新日志、Issue 和 Pull Request 的标准格式。
|
|
4
|
-
|
|
5
|
-
## 版本号规则
|
|
6
|
-
|
|
7
|
-
遵循 Semantic Versioning:
|
|
8
|
-
|
|
9
|
-
- `v0.1.x` - Alpha 阶段(核心功能开发)
|
|
10
|
-
- `v1.0.0+` - 稳定版(计划 v0.1.9 之后)
|
|
11
|
-
|
|
12
|
-
### 版本发布清单
|
|
13
|
-
|
|
14
|
-
| 环节 | 检查项 |
|
|
15
|
-
|------|--------|
|
|
16
|
-
| 代码 | [ ] 所有测试通过 / [ ] 代码审查完成 / [ ] 无 TODO 注释 |
|
|
17
|
-
| 文档 | [ ] README 更新 / [ ] CHANGELOG 更新 / [ ] API 文档更新 |
|
|
18
|
-
| 发布 | [ ] git tag 创建 / [ ] GitHub Release 发布 / [ ] npm publish(如适用) |
|
|
19
|
-
| 验证 | [ ] 真实环境测试 / [ ] 向后兼容性检查 |
|
|
20
|
-
|
|
21
|
-
## CHANGELOG 格式
|
|
22
|
-
|
|
23
|
-
参考 [Keep a Changelog](https://keepachangelog.com/):
|
|
24
|
-
|
|
25
|
-
```markdown
|
|
26
|
-
# Changelog
|
|
27
|
-
|
|
28
|
-
## [v0.1.2] - 2026-06-25
|
|
29
|
-
|
|
30
|
-
### Added
|
|
31
|
-
- Keyboard shortcuts support (/, Escape, arrow keys)
|
|
32
|
-
- Virtual scrolling for 800+ items
|
|
33
|
-
- `/api/search` endpoint with filter syntax
|
|
34
|
-
|
|
35
|
-
### Fixed
|
|
36
|
-
- Search performance optimization
|
|
37
|
-
- YAML frontmatter parsing robustness
|
|
38
|
-
|
|
39
|
-
### Changed
|
|
40
|
-
- Improved error handling in adapters
|
|
41
|
-
|
|
42
|
-
### Removed
|
|
43
|
-
- Legacy cache format
|
|
44
|
-
|
|
45
|
-
### Deprecated
|
|
46
|
-
- Old search API (use `/api/search` instead)
|
|
47
|
-
|
|
48
|
-
## [v0.1.1] - 2026-06-18
|
|
49
|
-
|
|
50
|
-
### Added
|
|
51
|
-
- npm global install support
|
|
52
|
-
- Normalized bin path for cross-platform compatibility
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Git Commit 格式
|
|
56
|
-
|
|
57
|
-
遵循 Conventional Commits:
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
<type>(<scope>): <subject>
|
|
61
|
-
|
|
62
|
-
<body>
|
|
63
|
-
|
|
64
|
-
<footer>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### 类型(type)
|
|
68
|
-
|
|
69
|
-
- **feat** - 新功能
|
|
70
|
-
- **fix** - Bug 修复
|
|
71
|
-
- **docs** - 文档变更
|
|
72
|
-
- **style** - 代码风格(不影响功能)
|
|
73
|
-
- **refactor** - 重构(不改变外部行为)
|
|
74
|
-
- **perf** - 性能优化
|
|
75
|
-
- **test** - 测试相关
|
|
76
|
-
- **chore** - 工具、依赖更新
|
|
77
|
-
|
|
78
|
-
### 范围(scope)
|
|
79
|
-
|
|
80
|
-
- `scanner` - 扫描器模块
|
|
81
|
-
- `server` - HTTP 服务器
|
|
82
|
-
- `web` - 前端界面
|
|
83
|
-
- `adapter` - 适配器系列
|
|
84
|
-
- `cli` - 命令行工具
|
|
85
|
-
- `docs` - 文档
|
|
86
|
-
|
|
87
|
-
### 示例
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
feat(web): add keyboard shortcuts support
|
|
91
|
-
|
|
92
|
-
- Implement / key to focus search box
|
|
93
|
-
- Implement Escape to clear search
|
|
94
|
-
- Implement arrow keys to navigate list
|
|
95
|
-
|
|
96
|
-
Closes #42
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## GitHub Issues 模板
|
|
100
|
-
|
|
101
|
-
### Bug Report
|
|
102
|
-
|
|
103
|
-
```markdown
|
|
104
|
-
## 描述问题
|
|
105
|
-
|
|
106
|
-
清晰简洁的问题描述。
|
|
107
|
-
|
|
108
|
-
## 复现步骤
|
|
109
|
-
|
|
110
|
-
1. ...
|
|
111
|
-
2. ...
|
|
112
|
-
3. ...
|
|
113
|
-
|
|
114
|
-
## 期望行为
|
|
115
|
-
|
|
116
|
-
应该发生什么?
|
|
117
|
-
|
|
118
|
-
## 实际行为
|
|
119
|
-
|
|
120
|
-
实际发生了什么?
|
|
121
|
-
|
|
122
|
-
## 环境
|
|
123
|
-
|
|
124
|
-
- 操作系统:macOS / Linux / Windows
|
|
125
|
-
- Node.js 版本:20.x
|
|
126
|
-
- HuHaa-MySkills 版本:v0.1.1
|
|
127
|
-
|
|
128
|
-
## 额外信息
|
|
129
|
-
|
|
130
|
-
日志、截图等。
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Feature Request
|
|
134
|
-
|
|
135
|
-
```markdown
|
|
136
|
-
## 功能描述
|
|
137
|
-
|
|
138
|
-
这个功能要解决什么问题?
|
|
139
|
-
|
|
140
|
-
## 使用场景
|
|
141
|
-
|
|
142
|
-
什么时候会用到?
|
|
143
|
-
|
|
144
|
-
## 建议的实现方式
|
|
145
|
-
|
|
146
|
-
你有什么想法吗?
|
|
147
|
-
|
|
148
|
-
## 替代方案
|
|
149
|
-
|
|
150
|
-
有其他可能的实现吗?
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## Pull Request 模板
|
|
154
|
-
|
|
155
|
-
```markdown
|
|
156
|
-
## 变更说明
|
|
157
|
-
|
|
158
|
-
这个 PR 做了什么?简要描述关键变更。
|
|
159
|
-
|
|
160
|
-
## 类型
|
|
161
|
-
|
|
162
|
-
- [ ] Bug 修复
|
|
163
|
-
- [ ] 新功能
|
|
164
|
-
- [ ] 文档更新
|
|
165
|
-
- [ ] 性能优化
|
|
166
|
-
|
|
167
|
-
## 相关 Issue
|
|
168
|
-
|
|
169
|
-
Fixes #123
|
|
170
|
-
|
|
171
|
-
## 测试
|
|
172
|
-
|
|
173
|
-
- [ ] 本地测试通过
|
|
174
|
-
- [ ] 新增单元测试
|
|
175
|
-
- [ ] 回归测试通过
|
|
176
|
-
|
|
177
|
-
## 检查清单
|
|
178
|
-
|
|
179
|
-
- [ ] 代码风格符合项目规范
|
|
180
|
-
- [ ] 无新的 linting 警告
|
|
181
|
-
- [ ] CHANGELOG 已更新
|
|
182
|
-
- [ ] 文档已更新
|
|
183
|
-
- [ ] 提交消息格式正确
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
## Release Notes 模板
|
|
187
|
-
|
|
188
|
-
```markdown
|
|
189
|
-
# v0.1.2: 搜索与交互优化
|
|
190
|
-
|
|
191
|
-
## 概览
|
|
192
|
-
|
|
193
|
-
这个版本改进了搜索体验和 UI 交互,支持键盘快捷键和高性能虚拟滚动。
|
|
194
|
-
|
|
195
|
-
## ✨ 新功能
|
|
196
|
-
|
|
197
|
-
### 键盘快捷键
|
|
198
|
-
- `/ ` - 聚焦搜索框
|
|
199
|
-
- `Esc` - 清空搜索
|
|
200
|
-
- `↑ ↓` - 导航列表
|
|
201
|
-
|
|
202
|
-
### 快速搜索 API
|
|
203
|
-
```
|
|
204
|
-
GET /api/search?q=...&source=hermes&brand=OpenAI
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
## 🐛 Bug 修复
|
|
208
|
-
|
|
209
|
-
- 修复 frontmatter 解析容错性 (#45)
|
|
210
|
-
- 改进 SSE 连接稳定性 (#48)
|
|
211
|
-
|
|
212
|
-
## 📊 性能
|
|
213
|
-
|
|
214
|
-
- 列表虚拟滚动:支持 800+ 条目无卡顿
|
|
215
|
-
- 搜索延迟:< 5ms(Fuse.js)
|
|
216
|
-
- 内存占用:保持 ~50MB
|
|
217
|
-
|
|
218
|
-
## 🔄 更新指南
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
# 从 npm 全局安装更新
|
|
222
|
-
npm update -g github:aquarkgn/HuHaa-MySkills
|
|
223
|
-
|
|
224
|
-
# 或从源码
|
|
225
|
-
cd ~/Project/HuHaa-MySkills
|
|
226
|
-
git pull origin main
|
|
227
|
-
npm install
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## 🙏 贡献者
|
|
231
|
-
|
|
232
|
-
感谢 @contributor1 @contributor2 的贡献。
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
**完整变更日志** - [CHANGELOG.md](../CHANGELOG.md)
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
## GitHub Actions 工作流
|
|
240
|
-
|
|
241
|
-
### 验证工作流 (.github/workflows/verify.yml)
|
|
242
|
-
|
|
243
|
-
```yaml
|
|
244
|
-
name: Verify
|
|
245
|
-
|
|
246
|
-
on:
|
|
247
|
-
push:
|
|
248
|
-
branches: [main]
|
|
249
|
-
pull_request:
|
|
250
|
-
branches: [main]
|
|
251
|
-
|
|
252
|
-
jobs:
|
|
253
|
-
verify:
|
|
254
|
-
runs-on: macos-latest
|
|
255
|
-
steps:
|
|
256
|
-
- uses: actions/checkout@v4
|
|
257
|
-
- uses: actions/setup-node@v4
|
|
258
|
-
with:
|
|
259
|
-
node-version: '20'
|
|
260
|
-
- run: npm ci
|
|
261
|
-
- run: npm run verify
|
|
262
|
-
- run: npm test
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### 发布工作流 (.github/workflows/release.yml)
|
|
266
|
-
|
|
267
|
-
```yaml
|
|
268
|
-
name: Release
|
|
269
|
-
|
|
270
|
-
on:
|
|
271
|
-
push:
|
|
272
|
-
tags:
|
|
273
|
-
- 'v*'
|
|
274
|
-
|
|
275
|
-
jobs:
|
|
276
|
-
release:
|
|
277
|
-
runs-on: macos-latest
|
|
278
|
-
steps:
|
|
279
|
-
- uses: actions/checkout@v4
|
|
280
|
-
- uses: actions/setup-node@v4
|
|
281
|
-
with:
|
|
282
|
-
node-version: '20'
|
|
283
|
-
- run: npm ci
|
|
284
|
-
- run: npm run verify
|
|
285
|
-
- run: npm publish # 如果要发布到 npm
|
|
286
|
-
- name: Create Release
|
|
287
|
-
uses: actions/create-release@v1
|
|
288
|
-
env:
|
|
289
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
## 文档结构
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
docs/
|
|
296
|
-
├── README.md # 项目总览
|
|
297
|
-
├── GUIDE.md # 快速启动指南(本文件)
|
|
298
|
-
├── PLAN.md # 架构和设计文档
|
|
299
|
-
├── RULES.md # 本发布规范
|
|
300
|
-
├── CHANGELOG.md # 变更日志
|
|
301
|
-
├── RUNBOOK-*.md # 操作手册
|
|
302
|
-
├── ARCHITECTURE.md # 详细架构(TODO)
|
|
303
|
-
├── API.md # API 参考(TODO)
|
|
304
|
-
├── CONTRIBUTING.md # 贡献指南(TODO)
|
|
305
|
-
└── todo/
|
|
306
|
-
├── v0.1.2.md
|
|
307
|
-
├── v0.1.3.md
|
|
308
|
-
└── ...
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
## 标签(Labels)
|
|
312
|
-
|
|
313
|
-
推荐在 GitHub Issues 中使用以下标签:
|
|
314
|
-
|
|
315
|
-
| 标签 | 说明 |
|
|
316
|
-
|------|------|
|
|
317
|
-
| `bug` | 缺陷报告 |
|
|
318
|
-
| `enhancement` | 功能请求 |
|
|
319
|
-
| `documentation` | 文档改进 |
|
|
320
|
-
| `good first issue` | 适合新贡献者 |
|
|
321
|
-
| `help wanted` | 寻求帮助 |
|
|
322
|
-
| `question` | 提问 |
|
|
323
|
-
| `wontfix` | 无意修复 |
|
|
324
|
-
| `duplicate` | 重复问题 |
|
|
325
|
-
| `v0.1.x` | 版本标记 |
|
|
326
|
-
|
|
327
|
-
---
|
|
328
|
-
|
|
329
|
-
**相关文档** → [CONTRIBUTING.md(待完善)](./CONTRIBUTING.md)
|
package/docs/RUNBOOK-myskills.md
DELETED
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
# RUNBOOK: HuHaa-MySkills
|
|
2
|
-
|
|
3
|
-
This runbook is the production/operator note for the local HuHaa-MySkills service.
|
|
4
|
-
|
|
5
|
-
## Service identity
|
|
6
|
-
|
|
7
|
-
- Name: HuHaa-MySkills
|
|
8
|
-
- Purpose: local browser catalog for AI-agent skills, plugins, MCP configs, and runbooks
|
|
9
|
-
- Default URL: `http://127.0.0.1:11520`
|
|
10
|
-
- Default data dir: `~/.config/huhaa-myskills/`
|
|
11
|
-
- Override data dir: `HUHAA_HOME=/path/to/dir`
|
|
12
|
-
- Default preferred port: `11520`
|
|
13
|
-
- Override port: `PORT=11530`
|
|
14
|
-
- Bind address: `127.0.0.1` only
|
|
15
|
-
|
|
16
|
-
## Main commands
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npm install
|
|
20
|
-
npm run init
|
|
21
|
-
npm start
|
|
22
|
-
npm test
|
|
23
|
-
npm run verify
|
|
24
|
-
npm run purge
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Files and directories
|
|
28
|
-
|
|
29
|
-
Runtime/user data:
|
|
30
|
-
|
|
31
|
-
```text
|
|
32
|
-
~/.config/huhaa-myskills/sources.yaml
|
|
33
|
-
~/.config/huhaa-myskills/cache.json
|
|
34
|
-
~/.config/huhaa-myskills/state.json
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Repository layout:
|
|
38
|
-
|
|
39
|
-
```text
|
|
40
|
-
service/bin/huhaa-myskills.mjs
|
|
41
|
-
service/config/sources.example.yaml
|
|
42
|
-
service/packages/scanner/src/index.mjs
|
|
43
|
-
service/packages/server/src/index.mjs
|
|
44
|
-
service/packages/web/src/App.vue
|
|
45
|
-
service/scripts/verify.mjs
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Healthy state
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
curl -s http://127.0.0.1:11520/api/health
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Expected shape:
|
|
55
|
-
|
|
56
|
-
```json
|
|
57
|
-
{"ok":true,"port":11520,"items":188,"version":"0.1.0","phase":"P6"}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
The exact `items` count depends on local sources.
|
|
61
|
-
|
|
62
|
-
## Full verification
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
npm run verify
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Expected final line:
|
|
69
|
-
|
|
70
|
-
```text
|
|
71
|
-
[verify] PASS build + tests + HTTP/API/static smoke checks
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
The verify script proves:
|
|
75
|
-
|
|
76
|
-
1. Vue SPA builds.
|
|
77
|
-
2. Scanner/server tests pass.
|
|
78
|
-
3. A real Fastify server starts on loopback.
|
|
79
|
-
4. `/api/health`, `/api/skills`, `/api/skills/:id`, `/api/stats`, and `/api/reload` work.
|
|
80
|
-
5. Built JS/CSS assets are served with correct content types.
|
|
81
|
-
6. Temporary runtime data is removed.
|
|
82
|
-
|
|
83
|
-
## Troubleshooting
|
|
84
|
-
|
|
85
|
-
### Page does not open
|
|
86
|
-
|
|
87
|
-
Check service:
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
curl -s http://127.0.0.1:11520/api/health
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
If it fails, start manually:
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
npm start
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
If port is busy:
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
PORT=11530 npm start
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
The CLI will also try fallback ports when the preferred port is unavailable.
|
|
106
|
-
|
|
107
|
-
### Page opens but is blank
|
|
108
|
-
|
|
109
|
-
Build assets:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
npm run build:web
|
|
113
|
-
npm start
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Check static assets from `index.html`:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
curl -I http://127.0.0.1:11520/
|
|
120
|
-
curl -I http://127.0.0.1:11520/assets/<asset>.js
|
|
121
|
-
curl -I http://127.0.0.1:11520/assets/<asset>.css
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Expected content types:
|
|
125
|
-
|
|
126
|
-
```text
|
|
127
|
-
text/html; charset=utf-8
|
|
128
|
-
text/javascript; charset=utf-8
|
|
129
|
-
text/css; charset=utf-8
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### No skills or too few skills
|
|
133
|
-
|
|
134
|
-
Check config:
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
sed -n '1,220p' ~/.config/huhaa-myskills/sources.yaml
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Run scan debug:
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
HUHAA_DEBUG=1 npm run scan >/tmp/huhaa-skills.json
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
Common causes:
|
|
147
|
-
|
|
148
|
-
- source root path does not exist
|
|
149
|
-
- source is disabled
|
|
150
|
-
- file is larger than `limits.maxFileBytes`
|
|
151
|
-
- glob does not match the target file
|
|
152
|
-
- project runbooks are outside configured roots
|
|
153
|
-
|
|
154
|
-
### MCP secrets appear in UI
|
|
155
|
-
|
|
156
|
-
They should not. Verify using tests:
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
npm test
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Specific redaction behavior lives in:
|
|
163
|
-
|
|
164
|
-
```text
|
|
165
|
-
service/packages/scanner/src/adapters/mcp-config.mjs
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
The adapter redacts keys matching token/key/secret/password/auth/cookie-style names and common inline secret patterns before writing `raw` or `preview`.
|
|
169
|
-
|
|
170
|
-
### Reload does not update page
|
|
171
|
-
|
|
172
|
-
Manual reload:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
curl -s -X POST http://127.0.0.1:11520/api/reload
|
|
176
|
-
curl -s http://127.0.0.1:11520/api/reload-state
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
Watch events endpoint:
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
curl -N http://127.0.0.1:11520/api/events
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
If watcher is unreliable on a synced/cloud directory, use manual reload. The server never clears the old snapshot on reload failure; it keeps the last good data.
|
|
186
|
-
|
|
187
|
-
### Copy buttons do not work
|
|
188
|
-
|
|
189
|
-
On macOS, copy uses `pbcopy` on the server side.
|
|
190
|
-
|
|
191
|
-
Check:
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
command -v pbcopy
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
The tests use a fake temporary `pbcopy` and do not touch the real clipboard.
|
|
198
|
-
|
|
199
|
-
### Open in Cursor does not work
|
|
200
|
-
|
|
201
|
-
Check Cursor CLI:
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
command -v cursor
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
If missing, install Cursor shell command from Cursor itself, or use the path copy/reveal buttons instead.
|
|
208
|
-
|
|
209
|
-
### Finder reveal does not work
|
|
210
|
-
|
|
211
|
-
Finder reveal uses:
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
open -R <path>
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
This is macOS-only.
|
|
218
|
-
|
|
219
|
-
## Public release checklist
|
|
220
|
-
|
|
221
|
-
Before pushing a public repository:
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
npm run verify
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
Then check ignored/generated files:
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
git status --short
|
|
231
|
-
git check-ignore -v node_modules service/packages/web/dist 2>/dev/null || true
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
Check for obvious secrets outside ignored directories:
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
git grep -n -E '(ghp_|sk-[A-Za-z0-9_-]{12,}|Bearer [A-Za-z0-9._~+/=-]{12,}|API[_-]?KEY|SECRET|PASSWORD|TOKEN)' -- . ':!service/packages/scanner/test/scanner.test.mjs'
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
Expected matches should be code patterns/documentation only, not real credential values.
|
|
241
|
-
|
|
242
|
-
## Recovery
|
|
243
|
-
|
|
244
|
-
Reset runtime config:
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
npm run purge
|
|
248
|
-
npm run init
|
|
249
|
-
npm start
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
Remove code checkout:
|
|
253
|
-
|
|
254
|
-
```bash
|
|
255
|
-
rm -rf /path/to/HuHaa-MySkills
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
`purge` intentionally touches only the runtime data dir, never the repository.
|