huhaa-myskills 0.1.5

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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +384 -0
  3. package/docs/GUIDE.md +190 -0
  4. package/docs/PLAN.md +359 -0
  5. package/docs/RULES.md +329 -0
  6. package/docs/RUNBOOK-myskills.md +258 -0
  7. package/docs/SYNC-SKILLS.md +259 -0
  8. package/docs/releases/README.md +47 -0
  9. package/docs/releases/v0.1.0.md +256 -0
  10. package/docs/releases/v0.1.1.md +297 -0
  11. package/docs/releases/v0.1.2.md +207 -0
  12. package/docs/releases/v0.1.3.md +269 -0
  13. package/docs/todo/v0.1.2.md +98 -0
  14. package/docs/todo/v0.1.3.md +40 -0
  15. package/docs/todo/v0.1.4.md +36 -0
  16. package/docs/todo/v0.1.5.md +41 -0
  17. package/docs/todo/v0.1.6.md +43 -0
  18. package/docs/todo/v0.1.7.md +38 -0
  19. package/docs/todo/v0.1.8.md +36 -0
  20. package/docs/todo/v0.1.9.md +54 -0
  21. package/install-and-sync.sh +209 -0
  22. package/package.json +68 -0
  23. package/service/bin/huhaa-myskills.mjs +314 -0
  24. package/service/bin/lib/paths.mjs +57 -0
  25. package/service/bin/lib/port.mjs +23 -0
  26. package/service/config/sources.example.yaml +121 -0
  27. package/service/packages/scanner/src/adapters/file-docs.mjs +158 -0
  28. package/service/packages/scanner/src/adapters/hermes-plugin.mjs +149 -0
  29. package/service/packages/scanner/src/adapters/markdown-skill.mjs +219 -0
  30. package/service/packages/scanner/src/adapters/mcp-config.mjs +171 -0
  31. package/service/packages/scanner/src/index.mjs +234 -0
  32. package/service/packages/scanner/src/types.d.ts +88 -0
  33. package/service/packages/scanner/src/utils.mjs +186 -0
  34. package/service/packages/server/src/index.mjs +549 -0
  35. package/service/packages/web/README.md +5 -0
  36. package/service/packages/web/dist/assets/index-CTh5OdBd.js +36 -0
  37. package/service/packages/web/dist/assets/index-CtoiGnQ7.css +1 -0
  38. package/service/packages/web/dist/index.html +13 -0
  39. package/service/scripts/build-web.mjs +29 -0
  40. package/service/scripts/prepare-publish.mjs +44 -0
  41. package/service/scripts/restore-publish.mjs +17 -0
  42. package/service/scripts/sync-skills.sh +427 -0
  43. package/service/scripts/verify.mjs +132 -0
@@ -0,0 +1,43 @@
1
+ # v0.1.6:增量扫描与缓存优化
2
+
3
+ ## 目标
4
+ 优化扫描性能,实现增量更新,减少首启动时间和 CPU 占用。
5
+
6
+ ## 关键任务
7
+
8
+ ### 增量扫描
9
+ - [ ] 实现 file hash 缓存:记录每个文件的 mtime + size
10
+ - [ ] 扫描器跳过未改动文件
11
+ - [ ] 启动时快速比对
12
+ - [ ] watch 事件中已处理
13
+ - [ ] 单源增量刷新
14
+ - [ ] 某源文件变化 → 只重扫该源
15
+ - [ ] SSE 通知前端只更新该源
16
+
17
+ ### 缓存
18
+ - [ ] 改进 `cache.json` 结构:
19
+ - [ ] 记录 IR 版本、生成时间、文件哈希
20
+ - [ ] 源级别缓存:
21
+ - [ ] 每个源单独缓存文件
22
+ - [ ] 允许源级别的失效时间设置
23
+
24
+ ### 性能指标
25
+ - [ ] 启动无变化 < 100ms
26
+ - [ ] 单文件改动响应 < 300ms
27
+ - [ ] 内存占用保持 < 50MB
28
+
29
+ ## 测试
30
+ - [ ] 增量扫描正确性(无遗漏/无误更新)
31
+ - [ ] 缓存一致性
32
+
33
+ ## 验收标准
34
+ - 热启动 < 100ms
35
+ - 改动响应 < 300ms
36
+ - 无缓存遗漏
37
+
38
+ ## 预期周期
39
+ 1.5 周
40
+
41
+ ## 不包含
42
+ - 不做分布式缓存
43
+ - 不做 CDN 策略
@@ -0,0 +1,38 @@
1
+ # v0.1.7:跨平台完整支持
2
+
3
+ ## 目标
4
+ 确保 Windows 和 Linux 一等公民支持,改进平台特定工具集成。
5
+
6
+ ## 关键任务
7
+
8
+ ### Windows 支持
9
+ - [ ] 剪贴板:用 powershell / `clip.exe` 替代 `pbcopy`
10
+ - [ ] 文件打开:支持 `explorer.exe` / `start`
11
+ - [ ] 编辑器启动:支持 VSCode / Cursor (Windows)
12
+ - [ ] 路径规范化:统一处理 `\` 和 `/`
13
+
14
+ ### Linux 支持
15
+ - [ ] 剪贴板:支持 `xclip` / `xsel` / `wl-copy`
16
+ - [ ] 文件打开:支持 `xdg-open`
17
+ - [ ] 编辑器启动:支持 code / cursor / vim
18
+ - [ ] Wayland 兼容性
19
+
20
+ ### 测试
21
+ - [ ] Windows / Linux 上运行 `npm test` 全绿
22
+ - [ ] 路径穿越防护在各平台有效
23
+
24
+ ### 文档
25
+ - [ ] 更新 README 平台支持说明
26
+ - [ ] 添加 Windows / Linux 快速启动指南
27
+
28
+ ## 验收标准
29
+ - Windows 上 `npm start` 完全可用
30
+ - Linux 上 `npm start` 完全可用
31
+ - 三个平台功能等价
32
+
33
+ ## 预期周期
34
+ 1.5 周
35
+
36
+ ## 不包含
37
+ - 不做移动端
38
+ - 不做容器内环境(Docker)
@@ -0,0 +1,36 @@
1
+ # v0.1.8:开发者工具与调试
2
+
3
+ ## 目标
4
+ 增强 CLI 和调试能力,方便用户自定义和二次开发。
5
+
6
+ ## 关键任务
7
+
8
+ ### CLI 增强
9
+ - [ ] `huhaa-myskills` 新命令:
10
+ - [ ] `huhaa-myskills doctor` — 诊断配置和数据问题
11
+ - [ ] `huhaa-myskills validate-config` — 验证 sources.yaml
12
+ - [ ] `huhaa-myskills export <format>` — 导出 IR
13
+ - [ ] 支持配置文件路径覆盖:`HUHAA_CONFIG` env
14
+ - [ ] 支持日志级别:`LOG_LEVEL=debug npm start`
15
+
16
+ ### 调试工具
17
+ - [ ] 前端 DevTools:集成 Pinia inspector 快捷启用
18
+ - [ ] API 响应时间统计:`/api/stats?verbose=1`
19
+ - [ ] 扫描性能分析:按适配器统计耗时
20
+
21
+ ### 文档
22
+ - [ ] 编写适配器开发指南(如何新增源类型)
23
+ - [ ] 配置参考文档
24
+ - [ ] 常见问题排查指南
25
+
26
+ ## 验收标准
27
+ - `doctor` 命令能检测常见问题
28
+ - 调试日志清晰可读
29
+ - 开发指南可用于第三方扩展
30
+
31
+ ## 预期周期
32
+ 1 周
33
+
34
+ ## 不包含
35
+ - 不做 GUI 配置工具
36
+ - 不做 web 端配置修改
@@ -0,0 +1,54 @@
1
+ # v0.1.9:完成度冲刺与稳定性
2
+
3
+ ## 目标
4
+ 完善文档、加固安全、建立性能基准,为 v1.0 做准备。
5
+
6
+ ## 关键任务
7
+
8
+ ### 文档完善
9
+ - [ ] 写完整的 README(多语言支持)
10
+ - [ ] 贡献者指南(CONTRIBUTING.md)
11
+ - [ ] 架构文档(ARCHITECTURE.md)
12
+ - [ ] API 文档(OpenAPI spec)
13
+ - [ ] 中文用户指南
14
+
15
+ ### 安全加固
16
+ - [ ] 安全审计:路径穿越、命令注入、XSS 等
17
+ - [ ] 更新依赖安全补丁
18
+ - [ ] 添加依赖审计工作流(GitHub Actions)
19
+ - [ ] OWASP 检查清单
20
+
21
+ ### 性能基准
22
+ - [ ] 建立性能基准测试套件
23
+ - [ ] 首启动时间
24
+ - [ ] 搜索延迟分布
25
+ - [ ] 内存峰值
26
+ - [ ] 网络传输大小
27
+ - [ ] 性能衰退告警
28
+
29
+ ### 打包与发布
30
+ - [ ] 验证 npm 全局安装流程(真实测试)
31
+ - [ ] 生成 CHANGELOG
32
+ - [ ] 标记 v0.1.9 release
33
+
34
+ ### 用户反馈收集
35
+ - [ ] 添加反馈渠道(GitHub Issues)
36
+ - [ ] 收集 3+ 个真实用户场景
37
+ - [ ] 修复高优反馈
38
+
39
+ ## 测试
40
+ - [ ] 集成测试覆盖率 > 90%
41
+ - [ ] 性能基准记录
42
+ - [ ] 安全检查通过
43
+
44
+ ## 验收标准
45
+ - 文档完整可用
46
+ - 安全漏洞 0
47
+ - 性能满足预期
48
+
49
+ ## 预期周期
50
+ 2 周
51
+
52
+ ## 后续
53
+ - 计划 v1.0(稳定版)
54
+ - 考虑 v2.0 方向(跨机器聚合、团队共享等)
@@ -0,0 +1,209 @@
1
+ #!/bin/bash
2
+
3
+ ###############################################################################
4
+ # HuHaa-MySkills 远程安装与技能同步入口 (v0.1.5)
5
+ #
6
+ # 用法:
7
+ # curl -fsSL https://raw.githubusercontent.com/aquarkgn/HuHaa-MySkills/main/install-and-sync.sh | bash
8
+ # 或
9
+ # curl -fsSL https://raw.githubusercontent.com/aquarkgn/HuHaa-MySkills/main/install-and-sync.sh | bash -s -- --sync-only
10
+ #
11
+ # 参数:
12
+ # --sync-only 只执行同步,不安装
13
+ # --local PATH 使用本地项目路径
14
+ # --branch NAME 指定分支(默认 main)
15
+ #
16
+ ###############################################################################
17
+
18
+ set -euo pipefail
19
+
20
+ # 配置
21
+ REPO_URL="https://github.com/aquarkgn/HuHaa-MySkills.git"
22
+ REPO_RAW="https://raw.githubusercontent.com/aquarkgn/HuHaa-MySkills"
23
+ BRANCH="main"
24
+ SYNC_ONLY=false
25
+ LOCAL_PATH=""
26
+
27
+ # 颜色定义
28
+ readonly BLUE='\033[0;34m'
29
+ readonly GREEN='\033[0;32m'
30
+ readonly YELLOW='\033[1;33m'
31
+ readonly RED='\033[0;31m'
32
+ readonly CYAN='\033[0;36m'
33
+ readonly NC='\033[0m'
34
+
35
+ # 日志函数
36
+ log_info() { echo -e "${BLUE}ℹ${NC} $*"; }
37
+ log_success() { echo -e "${GREEN}✓${NC} $*"; }
38
+ log_warn() { echo -e "${YELLOW}⚠${NC} $*"; }
39
+ log_error() { echo -e "${RED}✗${NC} $*" >&2; }
40
+
41
+ # 解析命令行参数
42
+ parse_args() {
43
+ while [[ $# -gt 0 ]]; do
44
+ case "$1" in
45
+ --sync-only)
46
+ SYNC_ONLY=true
47
+ shift
48
+ ;;
49
+ --local)
50
+ LOCAL_PATH="$2"
51
+ SYNC_ONLY=true
52
+ shift 2
53
+ ;;
54
+ --branch)
55
+ BRANCH="$2"
56
+ shift 2
57
+ ;;
58
+ *)
59
+ log_error "未知参数: $1"
60
+ exit 1
61
+ ;;
62
+ esac
63
+ done
64
+ }
65
+
66
+ # 获取临时目录
67
+ get_temp_dir() {
68
+ if command -v mktemp &>/dev/null; then
69
+ mktemp -d
70
+ else
71
+ local tmpdir="/tmp/huhaa-myskills-$$"
72
+ mkdir -p "$tmpdir"
73
+ echo "$tmpdir"
74
+ fi
75
+ }
76
+
77
+ # 检查依赖
78
+ check_deps() {
79
+ if ! command -v curl &>/dev/null; then
80
+ log_error "需要 curl,请先安装"
81
+ exit 1
82
+ fi
83
+
84
+ if ! $SYNC_ONLY && ! command -v git &>/dev/null; then
85
+ log_error "需要 git,请先安装"
86
+ exit 1
87
+ fi
88
+ }
89
+
90
+ # 下载并执行同步脚本
91
+ download_and_sync() {
92
+ local sync_script_url="$REPO_RAW/$BRANCH/service/scripts/sync-skills.sh"
93
+
94
+ log_info "下载同步脚本..."
95
+
96
+ local temp_script
97
+ temp_script=$(mktemp)
98
+ trap "rm -f '$temp_script'" EXIT
99
+
100
+ if ! curl -fsSL "$sync_script_url" -o "$temp_script"; then
101
+ log_error "下载失败: $sync_script_url"
102
+ return 1
103
+ fi
104
+
105
+ if [[ -n "$LOCAL_PATH" ]]; then
106
+ export HUHAA_LOCAL_PATH="$LOCAL_PATH"
107
+ fi
108
+
109
+ log_success "同步脚本已下载"
110
+
111
+ # 执行同步脚本
112
+ bash "$temp_script"
113
+ }
114
+
115
+ # 本地安装(git clone)
116
+ local_install() {
117
+ local temp_dir
118
+ temp_dir=$(get_temp_dir)
119
+ trap "rm -rf '$temp_dir'" EXIT
120
+
121
+ log_info "克隆项目仓库..."
122
+
123
+ if ! git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$temp_dir"; then
124
+ log_error "克隆失败"
125
+ return 1
126
+ fi
127
+
128
+ local_path="$temp_dir"
129
+ log_success "项目已克隆到临时目录"
130
+
131
+ # 执行同步
132
+ export HUHAA_LOCAL_PATH="$local_path"
133
+ download_and_sync
134
+ }
135
+
136
+ # 检查 npm 全局安装
137
+ npm_install() {
138
+ if ! command -v npm &>/dev/null; then
139
+ log_warn "未安装 npm,跳过全局安装"
140
+ return 0
141
+ fi
142
+
143
+ log_info "正在进行 npm 全局安装..."
144
+
145
+ if npm install -g "github:aquarkgn/HuHaa-MySkills#$BRANCH"; then
146
+ log_success "npm 全局安装完成"
147
+
148
+ # 获取安装位置
149
+ local npm_prefix
150
+ npm_prefix=$(npm prefix -g)
151
+ export HUHAA_LOCAL_PATH="$npm_prefix/node_modules/huhaa-myskills"
152
+
153
+ return 0
154
+ else
155
+ log_warn "npm 全局安装失败,将使用远程脚本"
156
+ return 1
157
+ fi
158
+ }
159
+
160
+ # 主函数
161
+ main() {
162
+ echo -e "\n${CYAN}╔════════════════════════════════════════════════════════╗${NC}"
163
+ echo -e "${CYAN}║ HuHaa-MySkills v0.1.5 - 编辑器技能自动同步 ║${NC}"
164
+ echo -e "${CYAN}╚════════════════════════════════════════════════════════╝${NC}\n"
165
+
166
+ parse_args "$@"
167
+ check_deps
168
+
169
+ if $SYNC_ONLY; then
170
+ log_info "执行同步模式"
171
+ if [[ -z "$LOCAL_PATH" ]]; then
172
+ # 只下载并执行远程脚本
173
+ download_and_sync
174
+ else
175
+ # 使用本地路径
176
+ if [[ ! -d "$LOCAL_PATH" ]]; then
177
+ log_error "本地路径不存在: $LOCAL_PATH"
178
+ exit 1
179
+ fi
180
+ export HUHAA_LOCAL_PATH="$LOCAL_PATH"
181
+ download_and_sync
182
+ fi
183
+ else
184
+ log_info "执行完整安装 + 同步流程"
185
+
186
+ # 尝试 npm 全局安装
187
+ if ! npm_install; then
188
+ # 如果 npm 安装失败,使用 git clone
189
+ log_info "使用 git clone 方式安装"
190
+ local_install
191
+ else
192
+ # npm 安装成功,执行同步
193
+ download_and_sync
194
+ fi
195
+ fi
196
+
197
+ echo -e "\n${GREEN}╔════════════════════════════════════════════════════════╗${NC}"
198
+ echo -e "${GREEN}║ ✨ 同步完成! ✨ ║${NC}"
199
+ echo -e "${GREEN}╚════════════════════════════════════════════════════════╝${NC}\n"
200
+
201
+ log_info "后续步骤:"
202
+ echo " 1. 启动 HuHaa: npm start"
203
+ echo " 2. 查看技能中心: http://localhost:11520"
204
+ echo " 3. 在编辑器中使用你的技能"
205
+ echo -e "\n更多信息: https://github.com/aquarkgn/HuHaa-MySkills\n"
206
+ }
207
+
208
+ # 执行主程序
209
+ main "$@"
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "huhaa-myskills",
3
+ "version": "0.1.5",
4
+ "private": false,
5
+ "description": "Local skill / plugin / MCP aggregation hub. Browse all your AI agent skills at http://localhost:11520.",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/aquarkgn/HuHaa-MySkills#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/aquarkgn/HuHaa-MySkills.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/aquarkgn/HuHaa-MySkills/issues"
14
+ },
15
+ "type": "module",
16
+ "workspaces": [
17
+ "service/packages/*"
18
+ ],
19
+ "engines": {
20
+ "node": ">=20.0.0"
21
+ },
22
+ "bin": {
23
+ "huhaa-myskills": "service/bin/huhaa-myskills.mjs"
24
+ },
25
+ "files": [
26
+ "service/bin/",
27
+ "service/config/",
28
+ "service/packages/scanner/src/",
29
+ "service/packages/server/src/",
30
+ "service/packages/web/dist/",
31
+ "service/scripts/",
32
+ "docs/",
33
+ "README.md",
34
+ "LICENSE",
35
+ "install-and-sync.sh"
36
+ ],
37
+ "scripts": {
38
+ "start": "node service/bin/huhaa-myskills.mjs start",
39
+ "scan": "node service/bin/huhaa-myskills.mjs scan",
40
+ "stats": "node service/bin/huhaa-myskills.mjs stats",
41
+ "duplicates": "node service/bin/huhaa-myskills.mjs duplicates",
42
+ "init": "node service/bin/huhaa-myskills.mjs init",
43
+ "purge": "node service/bin/huhaa-myskills.mjs purge",
44
+ "dev": "node service/bin/huhaa-myskills.mjs dev",
45
+ "sync": "bash service/scripts/sync-skills.sh",
46
+ "sync:remote": "curl -fsSL https://raw.githubusercontent.com/aquarkgn/HuHaa-MySkills/main/install-and-sync.sh | bash -s -- --sync-only",
47
+ "build:web": "node service/scripts/build-web.mjs",
48
+ "test": "node --test service/packages/scanner/test/*.test.mjs service/packages/server/test/*.test.mjs",
49
+ "verify": "node service/scripts/verify.mjs"
50
+ },
51
+ "dependencies": {
52
+ "@huhaa/scanner": "file:service/packages/scanner",
53
+ "@huhaa/server": "file:service/packages/server",
54
+ "chokidar": "^4.0.3",
55
+ "fast-glob": "^3.3.2",
56
+ "fastify": "^5.0.0",
57
+ "yaml": "^2.6.0"
58
+ },
59
+ "devDependencies": {
60
+ "@huhaa/web": "file:service/packages/web",
61
+ "@vitejs/plugin-vue": "^5.2.1",
62
+ "fuse.js": "^7.0.0",
63
+ "markdown-it": "^14.1.0",
64
+ "pinia": "^2.3.0",
65
+ "vite": "^6.0.0",
66
+ "vue": "^3.5.13"
67
+ }
68
+ }