ipman-cli 0.1.73__tar.gz

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 (122) hide show
  1. ipman_cli-0.1.73/.claude/COLLABORATION.md +78 -0
  2. ipman_cli-0.1.73/.claude/arch-spec-registry.md +163 -0
  3. ipman_cli-0.1.73/.claude/archive/.gitkeep +0 -0
  4. ipman_cli-0.1.73/.claude/archive/sprint-0.md +61 -0
  5. ipman_cli-0.1.73/.claude/archive/sprint-1.md +30 -0
  6. ipman_cli-0.1.73/.claude/archive/sprint-2.md +34 -0
  7. ipman_cli-0.1.73/.claude/archive/sprint-3.md +48 -0
  8. ipman_cli-0.1.73/.claude/archive/sprint-4.md +46 -0
  9. ipman_cli-0.1.73/.claude/archive/sprint-5.md +30 -0
  10. ipman_cli-0.1.73/.claude/archive/sprint-6.md +42 -0
  11. ipman_cli-0.1.73/.claude/archive/sprint-7.md +32 -0
  12. ipman_cli-0.1.73/.claude/archive/sprint-8.md +23 -0
  13. ipman_cli-0.1.73/.claude/archive/sprint-9.md +29 -0
  14. ipman_cli-0.1.73/.claude/current-sprint.md +3 -0
  15. ipman_cli-0.1.73/.claude/module-spec-registry.md +95 -0
  16. ipman_cli-0.1.73/.claude/research/agent-skill-cli-comparison.md +215 -0
  17. ipman_cli-0.1.73/.claude/research/iphub-design.md +436 -0
  18. ipman_cli-0.1.73/.claude/sprint-plan.md +175 -0
  19. ipman_cli-0.1.73/.claude/tech-spec-registry.md +135 -0
  20. ipman_cli-0.1.73/.claude/test-registry.md +93 -0
  21. ipman_cli-0.1.73/.claude/validation-registry.md +92 -0
  22. ipman_cli-0.1.73/.githooks/pre-commit +15 -0
  23. ipman_cli-0.1.73/.github/workflows/ci.yml +38 -0
  24. ipman_cli-0.1.73/.github/workflows/docs.yml +30 -0
  25. ipman_cli-0.1.73/.github/workflows/publish.yml +112 -0
  26. ipman_cli-0.1.73/.github/workflows/sync-rankings.yml +52 -0
  27. ipman_cli-0.1.73/.gitignore +207 -0
  28. ipman_cli-0.1.73/CLAUDE.md +110 -0
  29. ipman_cli-0.1.73/LICENSE +201 -0
  30. ipman_cli-0.1.73/PKG-INFO +147 -0
  31. ipman_cli-0.1.73/README.md +117 -0
  32. ipman_cli-0.1.73/README.zh-cn.md +118 -0
  33. ipman_cli-0.1.73/RELEASING.md +108 -0
  34. ipman_cli-0.1.73/VERSION +1 -0
  35. ipman_cli-0.1.73/cliff.toml +42 -0
  36. ipman_cli-0.1.73/docs/PRD.md +301 -0
  37. ipman_cli-0.1.73/docs/PRD.zh-cn.md +303 -0
  38. ipman_cli-0.1.73/docs/ip-package-spec.md +204 -0
  39. ipman_cli-0.1.73/docs/ip-package-spec.zh-cn.md +204 -0
  40. ipman_cli-0.1.73/docs/iphub-workflows/sync-cnb.yml +29 -0
  41. ipman_cli-0.1.73/docs/iphub-workflows/update-stats.yml +128 -0
  42. ipman_cli-0.1.73/docs-src/cli-reference.md +106 -0
  43. ipman_cli-0.1.73/docs-src/getting-started/installation.md +56 -0
  44. ipman_cli-0.1.73/docs-src/getting-started/quickstart.md +53 -0
  45. ipman_cli-0.1.73/docs-src/guide/configuration.md +49 -0
  46. ipman_cli-0.1.73/docs-src/guide/environments.md +41 -0
  47. ipman_cli-0.1.73/docs-src/guide/iphub.md +43 -0
  48. ipman_cli-0.1.73/docs-src/guide/packages.md +35 -0
  49. ipman_cli-0.1.73/docs-src/guide/security.md +76 -0
  50. ipman_cli-0.1.73/docs-src/guide/skills.md +52 -0
  51. ipman_cli-0.1.73/docs-src/images/IpMan.jpg +0 -0
  52. ipman_cli-0.1.73/docs-src/index.md +29 -0
  53. ipman_cli-0.1.73/docs-src/ip-package-spec.md +204 -0
  54. ipman_cli-0.1.73/docs-src/security/modes.md +36 -0
  55. ipman_cli-0.1.73/docs-src/security/risk-assessment.md +52 -0
  56. ipman_cli-0.1.73/docs-src/zh/getting-started/installation.md +41 -0
  57. ipman_cli-0.1.73/docs-src/zh/getting-started/quickstart.md +63 -0
  58. ipman_cli-0.1.73/docs-src/zh/guide/security.md +76 -0
  59. ipman_cli-0.1.73/docs-src/zh/index.md +28 -0
  60. ipman_cli-0.1.73/images/IpMan.jpg +0 -0
  61. ipman_cli-0.1.73/install.sh +24 -0
  62. ipman_cli-0.1.73/mkdocs.yml +60 -0
  63. ipman_cli-0.1.73/pyproject.toml +106 -0
  64. ipman_cli-0.1.73/scripts/bump.py +58 -0
  65. ipman_cli-0.1.73/scripts/pyinstaller-entry.py +6 -0
  66. ipman_cli-0.1.73/src/ipman/__init__.py +5 -0
  67. ipman_cli-0.1.73/src/ipman/agents/__init__.py +0 -0
  68. ipman_cli-0.1.73/src/ipman/agents/base.py +85 -0
  69. ipman_cli-0.1.73/src/ipman/agents/claude_code.py +75 -0
  70. ipman_cli-0.1.73/src/ipman/agents/openclaw.py +74 -0
  71. ipman_cli-0.1.73/src/ipman/agents/registry.py +45 -0
  72. ipman_cli-0.1.73/src/ipman/cli/__init__.py +0 -0
  73. ipman_cli-0.1.73/src/ipman/cli/_common.py +21 -0
  74. ipman_cli-0.1.73/src/ipman/cli/env.py +271 -0
  75. ipman_cli-0.1.73/src/ipman/cli/hub.py +237 -0
  76. ipman_cli-0.1.73/src/ipman/cli/main.py +37 -0
  77. ipman_cli-0.1.73/src/ipman/cli/pack.py +67 -0
  78. ipman_cli-0.1.73/src/ipman/cli/skill.py +299 -0
  79. ipman_cli-0.1.73/src/ipman/core/__init__.py +0 -0
  80. ipman_cli-0.1.73/src/ipman/core/config.py +101 -0
  81. ipman_cli-0.1.73/src/ipman/core/environment.py +472 -0
  82. ipman_cli-0.1.73/src/ipman/core/package.py +188 -0
  83. ipman_cli-0.1.73/src/ipman/core/resolver.py +160 -0
  84. ipman_cli-0.1.73/src/ipman/core/security.py +84 -0
  85. ipman_cli-0.1.73/src/ipman/core/vetter.py +193 -0
  86. ipman_cli-0.1.73/src/ipman/hub/__init__.py +0 -0
  87. ipman_cli-0.1.73/src/ipman/hub/client.py +132 -0
  88. ipman_cli-0.1.73/src/ipman/hub/publisher.py +274 -0
  89. ipman_cli-0.1.73/src/ipman/hub/stats.py +52 -0
  90. ipman_cli-0.1.73/src/ipman/utils/__init__.py +0 -0
  91. ipman_cli-0.1.73/src/ipman/utils/i18n.py +113 -0
  92. ipman_cli-0.1.73/src/ipman/utils/symlink.py +84 -0
  93. ipman_cli-0.1.73/tests/__init__.py +0 -0
  94. ipman_cli-0.1.73/tests/conftest.py +1 -0
  95. ipman_cli-0.1.73/tests/test_agents/__init__.py +0 -0
  96. ipman_cli-0.1.73/tests/test_agents/test_adapters_cli.py +219 -0
  97. ipman_cli-0.1.73/tests/test_cli/__init__.py +0 -0
  98. ipman_cli-0.1.73/tests/test_cli/test_env.py +95 -0
  99. ipman_cli-0.1.73/tests/test_cli/test_hub.py +293 -0
  100. ipman_cli-0.1.73/tests/test_cli/test_install_hub.py +219 -0
  101. ipman_cli-0.1.73/tests/test_cli/test_install_ip.py +159 -0
  102. ipman_cli-0.1.73/tests/test_cli/test_install_security.py +166 -0
  103. ipman_cli-0.1.73/tests/test_cli/test_main.py +27 -0
  104. ipman_cli-0.1.73/tests/test_cli/test_pack.py +197 -0
  105. ipman_cli-0.1.73/tests/test_cli/test_skill.py +150 -0
  106. ipman_cli-0.1.73/tests/test_core/__init__.py +0 -0
  107. ipman_cli-0.1.73/tests/test_core/test_config.py +123 -0
  108. ipman_cli-0.1.73/tests/test_core/test_environment.py +295 -0
  109. ipman_cli-0.1.73/tests/test_core/test_i18n.py +66 -0
  110. ipman_cli-0.1.73/tests/test_core/test_package.py +272 -0
  111. ipman_cli-0.1.73/tests/test_core/test_resolver.py +239 -0
  112. ipman_cli-0.1.73/tests/test_core/test_security.py +129 -0
  113. ipman_cli-0.1.73/tests/test_core/test_symlink.py +88 -0
  114. ipman_cli-0.1.73/tests/test_core/test_vetter.py +179 -0
  115. ipman_cli-0.1.73/tests/test_hub/__init__.py +0 -0
  116. ipman_cli-0.1.73/tests/test_hub/test_client.py +181 -0
  117. ipman_cli-0.1.73/tests/test_hub/test_publisher.py +173 -0
  118. ipman_cli-0.1.73/tests/test_hub/test_stats.py +55 -0
  119. ipman_cli-0.1.73/tests/test_integration/__init__.py +0 -0
  120. ipman_cli-0.1.73/tests/test_integration/test_security_flow.py +341 -0
  121. ipman_cli-0.1.73/tests/test_market/__init__.py +0 -0
  122. ipman_cli-0.1.73/uv.lock +1033 -0
@@ -0,0 +1,78 @@
1
+ # 项目协作框架
2
+
3
+ > 本文件定义 IpMan 项目的协作原则、角色分工和工作推进方式。
4
+
5
+ ---
6
+
7
+ ## 目标
8
+
9
+ 构建一款 Agent 技能虚拟环境管理器(类比 Python 的 conda/uv),实现技能的隔离、依赖管理和分发。
10
+
11
+ ## 角色
12
+
13
+ **人(产品负责人)**:掌握全局、做决策、审核关键节点。
14
+
15
+ **AI(技术合伙人)**:负责所有技术实现,但必须让人随时了解进展并掌握决策权。
16
+
17
+ ## 产品定位
18
+
19
+ IpMan 是一款面向开源社区的正式产品。目标是成为 Agent 技能生态的标准包管理工具,类比 pip/uv 在 Python 生态中的地位。初期以 MVP 形态快速验证核心功能(虚拟环境 + 技能安装),逐步迭代至完整产品(含 IpHub)。
20
+
21
+ ---
22
+
23
+ ## 工作步骤
24
+
25
+ ### 第一步:需求探索
26
+
27
+ - 通过提问来理解真正的需求(不仅仅是表面说的那些)
28
+ - 如果假设不合理,直接质疑
29
+ - 帮助区分"现在必须有"和"以后再加"的功能
30
+ - 如果想法太大,建议一个更聪明的切入点
31
+
32
+ ### 第二步:方案规划
33
+
34
+ - 明确提出第一版要构建什么
35
+ - 用通俗语言解释技术方案
36
+ - 评估复杂度(简单、中等、有挑战)
37
+ - 指出需要准备的东西(账号、服务、需要做的决定)
38
+ - 展示成品的大致轮廓
39
+
40
+ ### 第三步:开发构建
41
+
42
+ - 分阶段构建,让人能看到进展并及时反馈
43
+ - 边做边解释在做什么(让人能学习)
44
+ - 每个阶段完成后充分测试再继续
45
+ - 在关键决策点停下来确认
46
+ - 遇到问题时,展示有哪些选项,而不是自己直接做决定
47
+
48
+ ### 第四步:打磨完善
49
+
50
+ - 让产品看起来专业
51
+ - 优雅地处理边界情况和错误
52
+ - 确保运行速度快,在不同设备上都能正常工作
53
+ - 加入那些让产品感觉"完整"的小细节
54
+
55
+ ### 第五步:交付上线
56
+
57
+ - 帮助部署上线
58
+ - 对所有能自动化的步骤,提供自动化脚本
59
+ - 提供清晰的使用、维护和修改说明
60
+ - 完整记录文档,确保不依赖于某次对话
61
+ - 告诉第二版可以增加或改进什么
62
+
63
+ ---
64
+
65
+ ## 协作原则
66
+
67
+ - 把人当作产品负责人——人做决策,AI 负责实现
68
+ - 不要用技术术语轰炸——所有内容都要翻译成能听懂的话
69
+ - 如果方向不对或把事情搞复杂了,直接指出来
70
+ - 对能力边界坦诚——宁可调整预期,也不要最后失望
71
+ - 推进要快,但不要快到人跟不上
72
+
73
+ ## 代码提交原则
74
+
75
+ - 如果产生了新的源代码或文档,且不是一次性的辅助脚本,而是有永久储存的价值,则调用 git add 把它加入代码库进行跟踪管理。
76
+ - 每次完成一个功能,经过测试检验合格后,把此次改动以简略的文字进行总结,调用 git commit 并附带上前述总结作为提交 message。
77
+ - git push 需由人工触发,不得擅自自动推送。
78
+ - 无论前后端代码,均需建立一套自动版本更新机制,遵循 major.minor.patch 的格式,每次 git commit 后应有 patch 版本的自动更新。但 major 和 minor 版本的更新需要由人工触发。
@@ -0,0 +1,163 @@
1
+ # 架构规格登记表
2
+
3
+ 本文件记载项目的技术架构规格,包括环境规划、基础设施、部署方式、CI/CD 流水线等。
4
+
5
+ ---
6
+
7
+ ## 1. 架构总览
8
+
9
+ ### 系统分层
10
+
11
+ | 层级 | 说明 | 核心技术 |
12
+ |------|------|---------|
13
+ | CLI 层 | 命令解析、参数校验、用户交互 | Click |
14
+ | 核心层 | 虚拟环境管理、技能管理、IP 包管理 | Python stdlib + pathlib |
15
+ | Agent 适配层 | 不同 Agent 工具的技能目录适配 | 插件式架构 |
16
+ | IpHub 层 | IpHub 引用注册表交互、搜索、发布 | GitHub API (gh CLI) |
17
+ | 存储层 | 本地元数据、锁定文件、环境配置 | YAML + SQLite(可选) |
18
+
19
+ ### 核心设计原则
20
+
21
+ - **Agent 解耦**:不侵入 Agent 内部实现,所有 skill CRUD 通过 agent CLI 命令执行
22
+ - **插件式适配**:每个 Agent 工具一个适配器,新增 Agent 支持不影响核心逻辑
23
+ - **依赖最小化**:核心功能尽量使用 Python 标准库,减少外部依赖
24
+ - **跨平台一致性**:所有路径操作使用 pathlib,软链接在 Windows 上有降级方案
25
+ - **快速解析**:借鉴 uv 的依赖解析思路,IP 包依赖解析应快速高效
26
+
27
+ ---
28
+
29
+ ## 2. 环境规划
30
+
31
+ ### 环境矩阵
32
+
33
+ | 环境 | 标识 | 用途 | 发布方式 |
34
+ |------|------|------|---------|
35
+ | 本地开发 | `local` | 开发调试 | `uv run` 直接运行 |
36
+ | CI 测试 | `ci` | 跨平台自动测试 | GitHub Actions |
37
+ | PyPI 预发布 | `test-pypi` | 发布前验证 | `uv publish --index testpypi` |
38
+ | PyPI 正式 | `pypi` | 正式发布 | release 分支合并触发 |
39
+
40
+ ---
41
+
42
+ ## 3. CI/CD 流水线
43
+
44
+ ### 流水线概览
45
+
46
+ | 触发条件 | 执行内容 | 部署目标 |
47
+ |---------|---------|---------|
48
+ | push to dev | Lint + 类型检查 + 单元测试(三平台) | 无 |
49
+ | push to release/* | 全量测试 + 构建 + 发布到 TestPyPI | TestPyPI |
50
+ | merge release to main | 全量测试 + 构建 + 发布到 PyPI + GitHub Release | PyPI |
51
+ | tag v*.*.* | 构建 Windows 可执行文件 + 发布到 GitHub Release | GitHub Release |
52
+
53
+ ### CI 阶段(自动)
54
+
55
+ 1. **代码质量**:ruff lint + mypy 类型检查
56
+ 2. **测试**:pytest 单元测试 + 集成测试(Linux/macOS/Windows 矩阵)
57
+ 3. **构建**:`uv build` 生成 wheel 和 sdist
58
+ 4. **发布**:根据分支决定发布目标
59
+
60
+ ### CD 阶段(手动)
61
+
62
+ - **PyPI 发布**:release 分支合并到 main 时自动触发
63
+ - **Windows 可执行文件**:tag 创建时通过 PyInstaller 构建
64
+
65
+ ---
66
+
67
+ ## 4. 可观测性
68
+
69
+ | 层级 | 工具 |
70
+ |------|------|
71
+ | CLI 日志 | Python logging,支持 `--verbose` / `--debug` 参数调节日志级别 |
72
+ | 安装统计 | GitHub-based 计数(Phase 3) |
73
+ | 错误追踪 | GitHub Issues(用户报告) |
74
+
75
+ ---
76
+
77
+ ## 5. 版本管理与发布
78
+
79
+ ### 版本格式
80
+
81
+ `major.minor.patch`(如 `1.2.34`)
82
+
83
+ ### 分支策略(Git Flow)
84
+
85
+ | 分支 | 用途 | 合并目标 |
86
+ |------|------|---------|
87
+ | `main` | 稳定发布版本 | -- |
88
+ | `dev` | 开发集成分支 | release/* |
89
+ | `feature/*` | 功能开发 | dev |
90
+ | `release/*` | 发布准备 | main + dev |
91
+ | `hotfix/*` | 紧急修复 | main + dev |
92
+
93
+ ### 自动管理规则
94
+
95
+ | 版本段 | 更新方式 | 触发条件 |
96
+ |--------|---------|---------|
97
+ | patch | 自动(git hook) | 每次 git commit |
98
+ | minor | 人工脚本 | 人工调用 `scripts/bump-minor.sh` |
99
+ | major | 人工脚本 | 人工调用 `scripts/bump-major.sh` |
100
+
101
+ ---
102
+
103
+ ## 6. 项目目录结构
104
+
105
+ ```
106
+ ipman/
107
+ ├── src/
108
+ │ └── ipman/
109
+ │ ├── __init__.py # 包入口,版本号
110
+ │ ├── cli/ # CLI 命令定义(Click)
111
+ │ │ ├── __init__.py
112
+ │ │ ├── main.py # 主入口 cli group
113
+ │ │ ├── env.py # 虚拟环境命令(create/activate/deactivate/delete/list)
114
+ │ │ ├── skill.py # 技能命令(install/uninstall/upgrade/list)
115
+ │ │ ├── pack.py # IP 包命令(pack/unpack/export)
116
+ │ │ └── hub.py # IpHub 命令(search/publish/top)
117
+ │ ├── core/ # 核心业务逻辑
118
+ │ │ ├── __init__.py
119
+ │ │ ├── environment.py # 虚拟环境管理
120
+ │ │ ├── skill.py # 技能管理
121
+ │ │ ├── package.py # IP 包解析与管理
122
+ │ │ ├── resolver.py # 依赖解析
123
+ │ │ └── registry.py # 本地元数据注册表
124
+ │ ├── agents/ # Agent 适配器
125
+ │ │ ├── __init__.py
126
+ │ │ ├── base.py # 适配器基类
127
+ │ │ ├── claude_code.py # Claude Code 适配
128
+ │ │ └── openclaw.py # OpenClaw 适配
129
+ │ ├── hub/ # IpHub 交互
130
+ │ │ ├── __init__.py
131
+ │ │ ├── client.py # IpHub HTTP 客户端
132
+ │ │ └── publisher.py # 发布逻辑
133
+ │ └── utils/ # 通用工具
134
+ │ ├── __init__.py
135
+ │ ├── symlink.py # 跨平台软链接
136
+ │ ├── i18n.py # 国际化
137
+ │ └── detect.py # Agent 探测
138
+ ├── tests/
139
+ │ ├── conftest.py
140
+ │ ├── test_cli/
141
+ │ ├── test_core/
142
+ │ ├── test_agents/
143
+ │ └── test_hub/
144
+ ├── docs/
145
+ │ ├── PRD.md
146
+ │ ├── PRD.zh-cn.md
147
+ │ ├── en/ # 英文文档
148
+ │ └── zh-cn/ # 中文文档
149
+ ├── scripts/
150
+ │ ├── bump-patch.sh
151
+ │ ├── bump-minor.sh
152
+ │ └── bump-major.sh
153
+ ├── .githooks/
154
+ │ └── pre-commit
155
+ ├── .claude/
156
+ ├── .github/
157
+ │ └── workflows/
158
+ ├── pyproject.toml
159
+ ├── VERSION
160
+ ├── README.md
161
+ ├── CLAUDE.md
162
+ └── LICENSE
163
+ ```
File without changes
@@ -0,0 +1,61 @@
1
+ # 当前 Sprint
2
+
3
+ **Sprint 0 - 项目初始化**
4
+
5
+ **目标:** 建立开发框架,搭建 Python 项目骨架、CI/CD 流水线、测试框架
6
+
7
+ ---
8
+
9
+ ## 任务列表
10
+
11
+ | 优先级 | 任务 | 所属模块 | 责任人 | 状态 |
12
+ |-------|------|----------|--------|------|
13
+ | P0 | 初始化 pyproject.toml(uv 项目配置) | 基础设施 | AI | 已完成 |
14
+ | P0 | 创建 src/ipman 包目录结构 | 基础设施 | AI | 已完成 |
15
+ | P0 | 配置 ruff(lint + 格式化) | 基础设施 | AI | 已完成 |
16
+ | P0 | 配置 mypy(类型检查) | 基础设施 | AI | 已完成 |
17
+ | P0 | 配置 pytest(测试框架) | 测试 | AI | 已完成 |
18
+ | P1 | 实现 Click CLI 主入口(`ipman --help`) | CLI | AI | 已完成 |
19
+ | P1 | 搭建 GitHub Actions CI(三平台测试矩阵) | CI/CD | AI | 已完成 |
20
+ | P1 | 创建 GitHub 仓库描述和标签 | 基础设施 | 人工 | 已完成 |
21
+
22
+ ---
23
+
24
+ ## 模块状态
25
+
26
+ | 模块 | 状态 | 最后更新 | 当前目标 | 备注 |
27
+ |------|------|---------|---------|------|
28
+ | 基础设施 | 稳定 | 2026-03-13 | -- | pyproject.toml + 目录结构 + 版本管理 完成 |
29
+ | CLI | 稳定 | 2026-03-13 | -- | Click 主入口 + info 命令 完成 |
30
+ | 测试 | 稳定 | 2026-03-13 | -- | pytest 配置 + 3 个 CLI 测试通过 |
31
+ | CI/CD | 稳定 | 2026-03-13 | -- | GitHub Actions 三平台矩阵配置完成 |
32
+
33
+ ---
34
+
35
+ ## 活跃文件清单
36
+
37
+ 无(所有 AI 任务已完成)
38
+
39
+ ---
40
+
41
+ ## 近期改动记录
42
+
43
+ | 时间 | 改动目的 | 涉及模块/文件 |
44
+ |------|---------|-------------|
45
+ | 2026-03-13 | Sprint 0 启动 | .claude/current-sprint.md |
46
+ | 2026-03-13 | 项目骨架搭建 | pyproject.toml, src/ipman/**, tests/** |
47
+ | 2026-03-13 | CLI 主入口实现 | src/ipman/cli/main.py, tests/test_cli/test_main.py |
48
+ | 2026-03-13 | CI 配置 | .github/workflows/ci.yml |
49
+ | 2026-03-13 | README banner + slogan | README.md, images/IpMan.jpg |
50
+
51
+ ---
52
+
53
+ ## Sprint 0 总结
54
+
55
+ 所有 AI 任务已完成。剩余 1 项人工任务(H01: 创建 GitHub 仓库描述和标签)。
56
+
57
+ 验证结果:
58
+ - pytest: 3/3 通过
59
+ - ruff: 无问题
60
+ - mypy: strict 模式无问题
61
+ - `ipman --help`: 正常输出
@@ -0,0 +1,30 @@
1
+ # Sprint 1 - 虚拟环境管理(已完成)
2
+
3
+ **目标:** 设计并实现虚拟环境的创建/激活/停用/删除/列表功能
4
+
5
+ **完成日期:** 2026-03-14
6
+
7
+ ## 完成任务
8
+
9
+ | 优先级 | 任务 | 所属模块 | 状态 |
10
+ |-------|------|----------|------|
11
+ | P0 | 设计虚拟环境数据结构(目录布局、元数据格式) | core/environment | 已完成 |
12
+ | P0 | 实现跨平台软链接工具函数 | utils/symlink | 已完成 |
13
+ | P0 | 实现 `ipman create` 命令(project/user/machine scope) | CLI + core | 已完成 |
14
+ | P0 | 实现 `ipman activate` / `ipman deactivate` 命令 | CLI + core | 已完成 |
15
+ | P1 | 实现 `ipman delete` 命令 | CLI + core | 已完成 |
16
+ | P1 | 实现 `ipman list` 命令(列出所有环境) | CLI + core | 已完成 |
17
+ | P1 | 实现命令行提示符变更(环境激活标识) | core/environment | 已完成 |
18
+ | P2 | 编写虚拟环境管理单元测试 | tests | 已完成 |
19
+ | P2 | 编写虚拟环境管理集成测试 | tests | 已完成 |
20
+
21
+ ## 关键设计决策
22
+
23
+ - **软链接即接口**:Agent 配置目录(如 `.claude/`)作为软链接指向 `.ipman/envs/<name>/`
24
+ - **备份机制**:激活时将已有配置目录备份为 `.claude.bak/`,停用时恢复
25
+ - **Prompt Tag**:`[ip:<machine><user><project>]` 格式,`*`=machine, `-`=user, 全名=project
26
+ - **Agent 适配器架构**:ABC 基类 + 具体适配器 + 注册表模式
27
+
28
+ ## 测试覆盖
29
+
30
+ 53 个测试全部通过(30 core/environment + 10 symlink + 10 cli/env + 3 cli/main)
@@ -0,0 +1,34 @@
1
+ # Sprint 2 存档 — Agent CLI 适配 + IpHub 客户端基础
2
+
3
+ **日期:** 2026-03-14
4
+ **状态:** 已完成(10/10 任务)
5
+
6
+ ---
7
+
8
+ ## 完成的任务
9
+
10
+ | 任务 | 模块 |
11
+ |------|------|
12
+ | AgentAdapter 扩展:SkillInfo 数据类 + install/uninstall/list 抽象方法 | agents/base |
13
+ | Claude Code 适配器:封装 claude plugin install/uninstall/list CLI | agents/claude_code |
14
+ | OpenClaw 适配器:封装 clawhub install/uninstall/list CLI | agents/openclaw |
15
+ | `ipman install <name>` 命令(通过 agent CLI 安装) | cli/skill |
16
+ | `ipman uninstall <name>` 命令(通过 agent CLI 卸载) | cli/skill |
17
+ | `ipman skill list` 命令(通过 agent CLI 列出) | cli/skill |
18
+ | IpHub index.yaml 客户端读取与 TTL 缓存 | hub/client |
19
+ | `--agent` 参数覆盖自动探测 | cli/skill |
20
+ | Agent 适配器 CLI 封装测试(mock subprocess) | tests |
21
+ | IpHub 客户端测试 | tests |
22
+
23
+ ## 关键设计决策
24
+
25
+ 1. **subprocess delegation**:所有 skill CRUD 通过 `subprocess.run` 调用 agent 原生 CLI,不接触 agent 内部目录
26
+ 2. **SkillInfo 数据类**:统一不同 agent 的 skill 信息表示
27
+ 3. **IpHub 客户端缓存**:基于文件 mtime 的 TTL(1小时),`refresh=True` 绕过
28
+ 4. **OpenClaw 注册**:支持 `--hub` 自定义源参数
29
+
30
+ ## 测试覆盖
31
+
32
+ - 新增 37 个测试(16 adapter CLI + 9 CLI skill + 12 hub client)
33
+ - 全套 90 个测试全部通过
34
+ - ruff + mypy 检查通过
@@ -0,0 +1,48 @@
1
+ # Sprint 3 存档
2
+
3
+ **Sprint 3 - IP 包格式 + 打包/安装**
4
+
5
+ **目标:** 定义 IP 包 YAML schema,实现打包(pack)、安装(install from file)、IpHub 安装、依赖解析
6
+
7
+ **状态:** 已完成
8
+
9
+ **完成日期:** 2026-03-14
10
+
11
+ ---
12
+
13
+ ## 任务列表
14
+
15
+ | 优先级 | 任务 | 所属模块 | 状态 |
16
+ |-------|------|----------|------|
17
+ | P0 | 定义 IP 包 YAML schema(本地 .ip.yaml 文件格式) | core/package | 已完成 |
18
+ | P0 | 实现 IP 包解析器(加载 + 校验) | core/package | 已完成 |
19
+ | P0 | 实现 `ipman pack` 命令(从环境生成 .ip.yaml,合并原 export) | CLI + core | 已完成 |
20
+ | P1 | 实现 `ipman install <file.ip.yaml>` 本地 IP 文件安装 | CLI + core | 已完成 |
21
+ | P1 | 实现 `ipman install <short-name>` 基于 IpHub 的在线安装 | CLI + hub + core | 已完成 |
22
+ | P1 | 实现依赖解析引擎(版本匹配 + 递归依赖 + 循环检测) | core/resolver | 已完成 |
23
+ | P2 | IP 文件头部自动注入 IpMan 引用和安装说明 | core/package | 已完成 |
24
+ | P2 | 编写 IP 包解析/打包/安装/依赖解析测试 | tests | 已完成 |
25
+
26
+ ---
27
+
28
+ ## 模块状态
29
+
30
+ | 模块 | 测试数 | 备注 |
31
+ |------|--------|------|
32
+ | core/package | 16 | IP schema + 解析 + 序列化 |
33
+ | core/resolver | 19 | 版本匹配 + 递归解析 + 循环检测 |
34
+ | cli/pack | 10 | pack 命令(合并原 export) |
35
+ | cli/install (IP file) | 8 | .ip.yaml 本地安装 |
36
+ | cli/install (IpHub) | 7 | 短名称 IpHub 安装 + fetch_registry |
37
+ | hub/client (fetch_registry) | 3 | 注册文件获取 |
38
+
39
+ **Sprint 3 新增测试总计:63 tests(项目总计 150 tests)**
40
+
41
+ ---
42
+
43
+ ## 关键设计决策
44
+
45
+ 1. **合并 pack 和 export**:两者语义重叠,合并为单一 `ipman pack` 命令
46
+ 2. **install 三路由**:`.ip.yaml` 文件 → 本地安装;短名称 → IpHub 查询安装;自动判断
47
+ 3. **Resolver 函数式设计**:使用 `fetcher` 回调解耦 I/O,纯逻辑可测
48
+ 4. **版本约束四种语法**:`==`(精确)、`>=`、`^`(兼容)、`~`(补丁)
@@ -0,0 +1,46 @@
1
+ # Sprint 4 存档
2
+
3
+ **Sprint 4 - IpHub 搜索 + 发布**
4
+
5
+ **目标:** 实现 IpHub CLI 命令(search/info/top)和发布引擎(publish skill/IP 包 → GitHub PR)
6
+
7
+ **状态:** 已完成
8
+
9
+ **完成日期:** 2026-03-14
10
+
11
+ ---
12
+
13
+ ## 任务列表
14
+
15
+ | 优先级 | 任务 | 所属模块 | 状态 |
16
+ |-------|------|----------|------|
17
+ | P0 | `ipman hub search <query>` 命令 | cli/hub | 已完成 |
18
+ | P0 | `ipman hub info <name>` 命令 | cli/hub | 已完成 |
19
+ | P1 | `ipman hub top` 命令 | cli/hub | 已完成 |
20
+ | P1 | 发布引擎 hub/publisher.py | hub/publisher | 已完成 |
21
+ | P1 | `ipman hub publish <name>` Skill 发布 | cli/hub + hub/publisher | 已完成 |
22
+ | P1 | `ipman hub publish <file.ip.yaml>` IP 包发布 | cli/hub + hub/publisher | 已完成 |
23
+ | P2 | 安装统计上报 | hub/stats | 已完成 |
24
+ | P2 | 编写测试 | tests | 已完成 |
25
+
26
+ ---
27
+
28
+ ## 模块状态
29
+
30
+ | 模块 | 测试数 | 备注 |
31
+ |------|--------|------|
32
+ | cli/hub (search/info/top) | 8 | IpHub 浏览命令 |
33
+ | cli/hub (publish) | 4 | skill + IP 包发布 CLI |
34
+ | hub/publisher | 10 | fork → push → PR 引擎 |
35
+ | hub/stats | 4 | counter issue 上报 |
36
+
37
+ **Sprint 4 新增测试总计:26 tests(项目总计 176 tests)**
38
+
39
+ ---
40
+
41
+ ## 关键设计决策
42
+
43
+ 1. **gh CLI 驱动**:所有 GitHub 操作通过 `gh` CLI 执行,复用已有认证,零配置
44
+ 2. **GitHub API 文件推送**:通过 `gh api PUT contents/` 直接推送文件到 fork 分支,无需 clone
45
+ 3. **stats 非致命**:安装统计上报失败不影响安装结果
46
+ 4. **publish 路由**:与 install 一致,通过 `.ip.yaml` 后缀区分 skill 和 IP 包发布
@@ -0,0 +1,30 @@
1
+ # Sprint 5 存档
2
+
3
+ **Sprint 5 - 代码质量 + 发布准备**
4
+
5
+ **目标:** 代码去重、质量检查、文档完善、PyPI 发布准备
6
+
7
+ **状态:** 已完成
8
+
9
+ **完成日期:** 2026-03-14
10
+
11
+ ---
12
+
13
+ ## 任务列表
14
+
15
+ | 优先级 | 任务 | 状态 |
16
+ |-------|------|------|
17
+ | P0 | `_resolve_agent` 去重提取到 `cli/_common.py` | 已完成 |
18
+ | P0 | pyproject.toml 动态版本(VERSION → hatchling) | 已完成 |
19
+ | P1 | ruff + mypy 全量检查通过 | 已完成 |
20
+ | P1 | README.md 更新(CLI 参考 + Roadmap) | 已完成 |
21
+ | P2 | GitHub Actions 发布工作流(tag → PyPI) | 已完成 |
22
+
23
+ ---
24
+
25
+ ## 关键改动
26
+
27
+ 1. **版本统一**:VERSION 文件 → hatchling 动态注入 → importlib.metadata 读取
28
+ 2. **代码去重**:`_resolve_agent` 从 skill.py/pack.py 提取到 `cli/_common.py`
29
+ 3. **质量门禁**:ruff 0 errors, mypy 0 errors, 176 tests 全通过
30
+ 4. **发布管道**:`v*` tag push 触发 OIDC trusted publisher 发布到 PyPI
@@ -0,0 +1,42 @@
1
+ # Sprint 6 存档
2
+
3
+ **Sprint 6 - 风险评估引擎 + 配置文件**
4
+
5
+ **目标:** 配置文件加载、技能风险评估引擎、安全模式、安全日志
6
+
7
+ **状态:** 已完成
8
+
9
+ **完成日期:** 2026-03-14
10
+
11
+ ---
12
+
13
+ ## 任务列表
14
+
15
+ | 优先级 | 任务 | 状态 |
16
+ |-------|------|------|
17
+ | P0 | 配置文件加载 (`~/.ipman/config.yaml`) | 已完成 |
18
+ | P0 | 风险评估引擎(红旗检测 + 权限分析 + 风险分级) | 已完成 |
19
+ | P1 | 安全模式(PERMISSIVE/DEFAULT/CAUTIOUS/STRICT) | 已完成 |
20
+ | P1 | 安全日志 (`~/.ipman/security.log`) | 已完成 |
21
+ | P2 | 测试 | 已完成 |
22
+
23
+ ---
24
+
25
+ ## 模块状态
26
+
27
+ | 模块 | 测试数 | 备注 |
28
+ |------|--------|------|
29
+ | core/config | 12 | YAML 配置加载 + env 覆盖 + 优先级合并 |
30
+ | core/vetter | 21 | 红旗检测 + 元数据检查 + 风险分级 + 报告 |
31
+ | core/security | 19 | 4x4 决策矩阵 + 安全日志 |
32
+
33
+ **Sprint 6 新增测试:52 tests(项目总计 228 tests)**
34
+
35
+ ---
36
+
37
+ ## 关键设计决策
38
+
39
+ 1. **IpManConfig frozen dataclass** — 配置加载后不可变
40
+ 2. **RiskLevel 用 IntEnum** — 支持 max() 比较取最高风险
41
+ 3. **Pattern 表驱动** — 新增检测规则只需加一行
42
+ 4. **决策矩阵字典查表** — 避免 if/elif 链
@@ -0,0 +1,32 @@
1
+ # Sprint 7 存档
2
+
3
+ **Sprint 7 - 安装安全集成 + IpHub 举报 + 镜像**
4
+
5
+ **目标:** 将安全模块集成到 install/publish 命令,实现举报功能和镜像支持
6
+
7
+ **状态:** 已完成
8
+
9
+ **完成日期:** 2026-03-14
10
+
11
+ ---
12
+
13
+ ## 任务列表
14
+
15
+ | 优先级 | 任务 | 状态 |
16
+ |-------|------|------|
17
+ | P0 | install 命令集成安全策略(--security/--vet/--no-vet/--yes) | 已完成 |
18
+ | P0 | publish 命令集成发布时风险评估(阻止 HIGH/EXTREME) | 已完成 |
19
+ | P1 | `ipman hub report` 举报命令 | 已完成 |
20
+ | P1 | IpHub 镜像支持(config hub.url 驱动) | 已完成 |
21
+ | P2 | CNB 镜像同步工作流模板 | 已完成 |
22
+
23
+ **Sprint 7 新增测试:14 tests(项目总计 242 tests)**
24
+
25
+ ---
26
+
27
+ ## 关键设计决策
28
+
29
+ 1. **install 安全路由**:本地/URL → 强制 vet;IpHub → 信任标注(除 STRICT 模式或 --vet)
30
+ 2. **publish 门禁**:HIGH/EXTREME 直接阻止,无绕过选项
31
+ 3. **举报通过 gh issue create** 提交到 iphub 仓库
32
+ 4. **镜像通过 base_url** 参数传播到 IpHubClient 的所有 URL 构建
@@ -0,0 +1,23 @@
1
+ # Sprint 8 存档
2
+
3
+ **Sprint 8 - 国际化 + 文档完善**
4
+
5
+ **目标:** i18n 模块、CLI 中英文、文档翻译、主页动态内容
6
+
7
+ **状态:** 已完成
8
+
9
+ **完成日期:** 2026-03-14
10
+
11
+ ---
12
+
13
+ ## 任务列表
14
+
15
+ | 优先级 | 任务 | 状态 |
16
+ |-------|------|------|
17
+ | P0 | i18n 模块(LANG 检测 + 中英文消息目录) | 已完成 |
18
+ | P0 | CLI 入口初始化 i18n | 已完成 |
19
+ | P1 | MkDocs 中文文档(首页/安装/快速上手/安全指南) | 已完成 |
20
+ | P2 | README Star History 趋势图 | 已完成 |
21
+ | P2 | README Roadmap + test count 更新 | 已完成 |
22
+
23
+ **Sprint 8 新增测试:10 tests(项目总计 252 tests)**
@@ -0,0 +1,29 @@
1
+ # Sprint 9 存档
2
+
3
+ **Sprint 9 - 多渠道分发**
4
+
5
+ **目标:** Windows 打包、多平台二进制构建、CI 自动发布
6
+
7
+ **状态:** 已完成
8
+
9
+ **完成日期:** 2026-03-14
10
+
11
+ ---
12
+
13
+ ## 任务列表
14
+
15
+ | 优先级 | 任务 | 状态 |
16
+ |-------|------|------|
17
+ | P1 | curl+sh 一键安装脚本 | 已完成(Sprint 8 期间) |
18
+ | P1 | iphub 定时统计 + README Top 排名 Action | 已完成 |
19
+ | P1 | 多平台 PyInstaller 打包(Linux/macOS/Windows) | 已完成 |
20
+ | P2 | GitHub Actions 发布时自动构建 + Release 上传 | 已完成 |
21
+
22
+ ---
23
+
24
+ ## 关键设计决策
25
+
26
+ 1. **PyInstaller --onefile** — 单文件可执行,用户下载即用
27
+ 2. **三平台矩阵构建** — GitHub Actions matrix 同时构建 Linux/macOS/Windows
28
+ 3. **softprops/action-gh-release** — 二进制自动附加到 GitHub Release
29
+ 4. **排名文件独立存储** — top-10-skills.md / top-10-packages.md / top-50-all.md,双仓库嵌入
@@ -0,0 +1,3 @@
1
+ # 当前 Sprint
2
+
3
+ (Sprint 9 已完成并存档至 `.claude/archive/sprint-9.md`。Phase 6 全部完成。全部 6 个 Phase、9 个 Sprint 均已完成。)