ipman-cli 0.1.88__tar.gz → 0.2.12__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 (186) hide show
  1. ipman_cli-0.2.12/.claude/archive/sprint-10.md +25 -0
  2. ipman_cli-0.2.12/.claude/archive/sprint-11.md +13 -0
  3. ipman_cli-0.2.12/.claude/archive/sprint-12.md +12 -0
  4. ipman_cli-0.2.12/.claude/archive/sprint-13.md +15 -0
  5. ipman_cli-0.2.12/.claude/archive/sprint-7.md +30 -0
  6. ipman_cli-0.2.12/.claude/current-sprint.md +13 -0
  7. ipman_cli-0.2.12/.claude/settings.local.json +16 -0
  8. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/sprint-plan.md +91 -0
  9. ipman_cli-0.1.88/.github/workflows/e2e.yml → ipman_cli-0.2.12/.github/workflows/e2e-docker-legacy.yml +4 -8
  10. ipman_cli-0.2.12/.github/workflows/e2e-fast.yml +43 -0
  11. ipman_cli-0.2.12/.github/workflows/e2e-full.yml +102 -0
  12. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/CLAUDE.md +10 -0
  13. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/PKG-INFO +13 -2
  14. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/README.md +12 -1
  15. ipman_cli-0.2.12/VERSION +1 -0
  16. ipman_cli-0.2.12/docs/reports/ipman-final-summary-zh.md +308 -0
  17. ipman_cli-0.2.12/docs/reports/ipman-openclaw-test-20260323-consolidated-report.md +295 -0
  18. ipman_cli-0.2.12/docs/superpowers/plans/2026-03-16-cross-platform-e2e-testing.md +2550 -0
  19. ipman_cli-0.2.12/docs/superpowers/plans/2026-03-16-iphub-ip-format-enhancement.md +757 -0
  20. ipman_cli-0.2.12/docs/superpowers/plans/2026-03-16-shell-init.md +847 -0
  21. ipman_cli-0.2.12/docs/superpowers/plans/2026-03-17-local-skill-install.md +489 -0
  22. ipman_cli-0.2.12/docs/superpowers/plans/2026-03-24-openclaw-bugfix-and-e2e.md +1909 -0
  23. ipman_cli-0.2.12/docs/superpowers/specs/2026-03-16-cross-platform-e2e-testing-design.md +655 -0
  24. ipman_cli-0.2.12/docs/superpowers/specs/2026-03-16-iphub-ip-format-enhancement-design.md +592 -0
  25. ipman_cli-0.2.12/docs/superpowers/specs/2026-03-16-shell-init-design.md +250 -0
  26. ipman_cli-0.2.12/docs/superpowers/specs/2026-03-17-local-skill-install-design.md +188 -0
  27. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/pyproject.toml +13 -0
  28. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/agents/base.py +38 -8
  29. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/agents/claude_code.py +20 -3
  30. ipman_cli-0.2.12/src/ipman/agents/openclaw.py +146 -0
  31. ipman_cli-0.2.12/src/ipman/cli/_common.py +55 -0
  32. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/cli/env.py +58 -32
  33. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/cli/hub.py +86 -17
  34. ipman_cli-0.2.12/src/ipman/cli/init.py +56 -0
  35. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/cli/main.py +2 -0
  36. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/cli/skill.py +52 -24
  37. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/core/config.py +10 -0
  38. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/core/environment.py +60 -6
  39. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/core/package.py +25 -0
  40. ipman_cli-0.2.12/src/ipman/core/shell_init.py +201 -0
  41. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/hub/client.py +11 -2
  42. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/hub/publisher.py +29 -3
  43. ipman_cli-0.2.12/tests/e2e/conftest.py +190 -0
  44. ipman_cli-0.2.12/tests/e2e/conftest_mock.py +83 -0
  45. ipman_cli-0.2.12/tests/e2e/fixtures/ips/clean-kit.ip.yaml +6 -0
  46. ipman_cli-0.2.12/tests/e2e/fixtures/ips/with-deps.ip.yaml +9 -0
  47. ipman_cli-0.2.12/tests/e2e/fixtures/skills/claude-code/hello-world/SKILL.md +7 -0
  48. ipman_cli-0.2.12/tests/e2e/fixtures/skills/openclaw/hello-world/SKILL.md +7 -0
  49. ipman_cli-0.2.12/tests/e2e/helpers/agent_manager.py +134 -0
  50. ipman_cli-0.2.12/tests/e2e/helpers/github_cleanup.py +43 -0
  51. ipman_cli-0.2.12/tests/e2e/helpers/platform_utils.py +65 -0
  52. ipman_cli-0.2.12/tests/e2e/helpers/run.py +61 -0
  53. ipman_cli-0.2.12/tests/e2e/mock_clawhub/clawhub +78 -0
  54. ipman_cli-0.2.12/tests/e2e/mock_clawhub/clawhub.bat +62 -0
  55. ipman_cli-0.2.12/tests/e2e/mock_clawhub/clawhub_mock.py +106 -0
  56. ipman_cli-0.2.12/tests/e2e/test_agent_session.py +268 -0
  57. ipman_cli-0.2.12/tests/e2e/test_env_lifecycle.py +196 -0
  58. ipman_cli-0.2.12/tests/e2e/test_init_order.py +224 -0
  59. ipman_cli-0.2.12/tests/e2e/test_openclaw_compat.py +588 -0
  60. ipman_cli-0.2.12/tests/e2e/test_pack_roundtrip.py +113 -0
  61. ipman_cli-0.2.12/tests/e2e/test_publish_workflow.py +605 -0
  62. ipman_cli-0.2.12/tests/e2e/test_skill_install.py +140 -0
  63. ipman_cli-0.2.12/tests/e2e/test_symlink_integrity.py +168 -0
  64. ipman_cli-0.2.12/tests/test_agents/test_adapters_cli.py +491 -0
  65. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_env.py +3 -3
  66. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_hub.py +174 -1
  67. ipman_cli-0.2.12/tests/test_cli/test_init.py +56 -0
  68. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_skill.py +27 -1
  69. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_environment.py +73 -0
  70. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_package.py +73 -0
  71. ipman_cli-0.2.12/tests/test_core/test_shell_init.py +194 -0
  72. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_hub/test_client.py +80 -0
  73. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_hub/test_publisher.py +76 -2
  74. ipman_cli-0.2.12/tests/test_integration/__init__.py +0 -0
  75. ipman_cli-0.2.12/tests/test_market/__init__.py +0 -0
  76. ipman_cli-0.2.12/uv.lock +1066 -0
  77. ipman_cli-0.1.88/.claude/archive/sprint-7.md +0 -32
  78. ipman_cli-0.1.88/.claude/current-sprint.md +0 -3
  79. ipman_cli-0.1.88/VERSION +0 -1
  80. ipman_cli-0.1.88/src/ipman/agents/openclaw.py +0 -74
  81. ipman_cli-0.1.88/src/ipman/cli/_common.py +0 -21
  82. ipman_cli-0.1.88/tests/test_agents/test_adapters_cli.py +0 -219
  83. ipman_cli-0.1.88/uv.lock +0 -1033
  84. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/COLLABORATION.md +0 -0
  85. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/arch-spec-registry.md +0 -0
  86. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/.gitkeep +0 -0
  87. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-0.md +0 -0
  88. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-1.md +0 -0
  89. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-2.md +0 -0
  90. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-3.md +0 -0
  91. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-4.md +0 -0
  92. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-5.md +0 -0
  93. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-6.md +0 -0
  94. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-8.md +0 -0
  95. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/archive/sprint-9.md +0 -0
  96. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/module-spec-registry.md +0 -0
  97. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/research/agent-skill-cli-comparison.md +0 -0
  98. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/research/iphub-design.md +0 -0
  99. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/tech-spec-registry.md +0 -0
  100. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/test-registry.md +0 -0
  101. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.claude/validation-registry.md +0 -0
  102. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.githooks/pre-commit +0 -0
  103. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.github/workflows/ci.yml +0 -0
  104. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.github/workflows/docs.yml +0 -0
  105. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.github/workflows/publish.yml +0 -0
  106. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.github/workflows/sync-rankings.yml +0 -0
  107. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/.gitignore +0 -0
  108. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/LICENSE +0 -0
  109. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/README.zh-cn.md +0 -0
  110. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/RELEASING.md +0 -0
  111. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/cliff.toml +0 -0
  112. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/PRD.md +0 -0
  113. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/PRD.zh-cn.md +0 -0
  114. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/ip-package-spec.md +0 -0
  115. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/ip-package-spec.zh-cn.md +0 -0
  116. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/iphub-workflows/rebuild-index.yml +0 -0
  117. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/iphub-workflows/sync-cnb.yml +0 -0
  118. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/iphub-workflows/update-stats.yml +0 -0
  119. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs/iphub-workflows/validate-pr.yml +0 -0
  120. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/cli-reference.md +0 -0
  121. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/getting-started/installation.md +0 -0
  122. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/getting-started/quickstart.md +0 -0
  123. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/guide/configuration.md +0 -0
  124. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/guide/environments.md +0 -0
  125. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/guide/iphub.md +0 -0
  126. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/guide/packages.md +0 -0
  127. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/guide/security.md +0 -0
  128. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/guide/skills.md +0 -0
  129. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/images/IpMan.jpg +0 -0
  130. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/index.md +0 -0
  131. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/ip-package-spec.md +0 -0
  132. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/security/modes.md +0 -0
  133. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/security/risk-assessment.md +0 -0
  134. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/zh/getting-started/installation.md +0 -0
  135. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/zh/getting-started/quickstart.md +0 -0
  136. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/zh/guide/security.md +0 -0
  137. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/docs-src/zh/index.md +0 -0
  138. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/images/IpMan.jpg +0 -0
  139. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/install.sh +0 -0
  140. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/mkdocs.yml +0 -0
  141. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/scripts/bump.py +0 -0
  142. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/scripts/pyinstaller-entry.py +0 -0
  143. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/__init__.py +0 -0
  144. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/agents/__init__.py +0 -0
  145. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/agents/registry.py +0 -0
  146. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/cli/__init__.py +0 -0
  147. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/cli/pack.py +0 -0
  148. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/core/__init__.py +0 -0
  149. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/core/resolver.py +0 -0
  150. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/core/security.py +0 -0
  151. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/core/vetter.py +0 -0
  152. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/hub/__init__.py +0 -0
  153. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/hub/stats.py +0 -0
  154. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/utils/__init__.py +0 -0
  155. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/utils/i18n.py +0 -0
  156. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/src/ipman/utils/symlink.py +0 -0
  157. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/__init__.py +0 -0
  158. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/conftest.py +0 -0
  159. {ipman_cli-0.1.88/tests/test_agents → ipman_cli-0.2.12/tests/e2e}/__init__.py +0 -0
  160. {ipman_cli-0.1.88/tests/test_cli → ipman_cli-0.2.12/tests/e2e/helpers}/__init__.py +0 -0
  161. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/Dockerfile.claude-code +0 -0
  162. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/Dockerfile.openclaw +0 -0
  163. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/docker-compose.yml +0 -0
  164. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/run-e2e.sh +0 -0
  165. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/run-tests.sh +0 -0
  166. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/scenarios/test_env_lifecycle.sh +0 -0
  167. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/scenarios/test_hub_search.sh +0 -0
  168. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/scenarios/test_install_security.sh +0 -0
  169. {ipman_cli-0.1.88/tests/e2e → ipman_cli-0.2.12/tests/e2e-legacy}/scenarios/test_pack_roundtrip.sh +0 -0
  170. {ipman_cli-0.1.88/tests/test_core → ipman_cli-0.2.12/tests/test_agents}/__init__.py +0 -0
  171. {ipman_cli-0.1.88/tests/test_hub → ipman_cli-0.2.12/tests/test_cli}/__init__.py +0 -0
  172. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_install_hub.py +0 -0
  173. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_install_ip.py +0 -0
  174. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_install_security.py +0 -0
  175. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_main.py +0 -0
  176. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_cli/test_pack.py +0 -0
  177. {ipman_cli-0.1.88/tests/test_integration → ipman_cli-0.2.12/tests/test_core}/__init__.py +0 -0
  178. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_config.py +0 -0
  179. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_i18n.py +0 -0
  180. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_resolver.py +0 -0
  181. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_security.py +0 -0
  182. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_symlink.py +0 -0
  183. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_core/test_vetter.py +0 -0
  184. {ipman_cli-0.1.88/tests/test_market → ipman_cli-0.2.12/tests/test_hub}/__init__.py +0 -0
  185. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_hub/test_stats.py +0 -0
  186. {ipman_cli-0.1.88 → ipman_cli-0.2.12}/tests/test_integration/test_security_flow.py +0 -0
@@ -0,0 +1,25 @@
1
+ # 当前 Sprint
2
+
3
+ ## Sprint 10(Phase 5 — IpHub Awesome-List 转型, Sub-1)
4
+
5
+ **状态:** ✅ 全部完成
6
+
7
+ ### Chunk 1: ipman CLI 数据模型改动 ✅
8
+ - IPPackage 6 个新字段 + parse/dump ✅
9
+ - Publisher tags/summary/changelog ✅
10
+ - Client --tag search ✅
11
+ - CLI hub search/top --tag, info 新字段 ✅
12
+
13
+ ### Chunk 2: iphub 仓库模板 + 脚本 + 工作流 ✅
14
+ - i18n 翻译文件 (en + zh-cn) ✅
15
+ - README.md + HTML Landing Page 模板 ✅
16
+ - generate_pages.py + generate_trending.py ✅
17
+ - sync_tag_labels.py ✅
18
+ - rebuild-index.yml 更新(tag 聚合 + trending) ✅
19
+ - rebuild-pages.yml 新建 ✅
20
+ - validate-pr.yml tag 校验 ✅
21
+
22
+ ### Chunk 3: 集成验证 + 人工事项 ✅
23
+ - [x] GitHub Pages 启用(/docs 目录)
24
+ - [x] 触发 rebuild-pages workflow
25
+ - [x] 触发 rebuild-index workflow
@@ -0,0 +1,13 @@
1
+ # Sprint 11(Phase 5 — Sub-2: Tag 搜索 + 排名 + 趋势推荐)— 已完成
2
+
3
+ **状态:** ✅ 全部完成
4
+
5
+ ### 交付清单
6
+
7
+ | 任务 | 仓库 | 状态 |
8
+ |------|------|------|
9
+ | `ipman hub trending` CLI 命令 | ipman | ✅ 340 tests |
10
+ | IpHub 首页模板 (index-page.html.j2) | iphub | ✅ |
11
+ | Tag 浏览页模板 (tag-page.html.j2) | iphub | ✅ |
12
+ | i18n 新增 11 个 key (en + zh-cn) | iphub | ✅ |
13
+ | generate_pages.py 首页 + tag 页生成 | iphub | ✅ |
@@ -0,0 +1,12 @@
1
+ # Sprint 12(Phase 5 — Sub-3: 个人页面 + IP Landing Page 完善)— 已完成
2
+
3
+ **状态:** ✅ 全部完成
4
+
5
+ ### 交付清单
6
+
7
+ | 任务 | 仓库 | 状态 |
8
+ |------|------|------|
9
+ | Author 个人页面模板 (author-page.html.j2) | iphub | ✅ |
10
+ | generate_pages.py 生成个人页面 | iphub | ✅ |
11
+ | 首页新增 "Active Authors" 区域 | iphub | ✅ |
12
+ | i18n 新增 7 key (en + zh-cn) | iphub | ✅ |
@@ -0,0 +1,15 @@
1
+ # Sprint 13(Phase 5 — Sub-4: 社交媒体机器人 + 自动 IP 生成)— 已完成
2
+
3
+ **状态:** ✅ 核心功能完成(Batch 2/3 暂缓)
4
+
5
+ > 代码在私有仓库 `twisker/iphub-bot`
6
+
7
+ ### 交付清单
8
+
9
+ | Batch | 内容 | 状态 |
10
+ |-------|------|------|
11
+ | Batch 1 | Cloudflare Worker 骨架 + AI 分析管道 + GitHub PR 提交 + 去重 + 限速 | ✅ 已部署 |
12
+ | Batch 4 | GitHub Trending 轮询 | ✅ 已部署 |
13
+ | Batch 5 | HN + Reddit + ProductHunt + Dev.to 轮询 | ✅ 已完成 |
14
+ | Batch 2 | X (Twitter) webhook | 暂缓 |
15
+ | Batch 3 | 微博 webhook | 暂缓 |
@@ -0,0 +1,30 @@
1
+ # 当前 Sprint
2
+
3
+ ## Sprint 7(Phase 4 — 用户体验改进 + 持续质量保障)— 已完成
4
+
5
+ **目标:** 简化虚拟环境操作体验,扩展 install 命令支持本地 skill
6
+
7
+ **状态:** ✅ 全部完成
8
+
9
+ ### A 组:activate/deactivate 脚本改进 ✅
10
+
11
+ | 任务 | 状态 |
12
+ |------|------|
13
+ | `ipman init` 命令(bash/zsh/fish/powershell) | ✅ |
14
+ | Shell function wrapper 注入/移除/备份 | ✅ |
15
+ | `--reverse` 撤销 + `--dry-run` 预览 | ✅ |
16
+ | env.py activate/deactivate 消息更新 | ✅ |
17
+
18
+ ### B 组:install 本地 skill 支持 ✅
19
+
20
+ | 任务 | 状态 |
21
+ |------|------|
22
+ | `_classify_source()` 三分类(ip_file / local_skill / hub_name) | ✅ |
23
+ | `ClaudeCodeAdapter` 本地目录 → copytree | ✅ |
24
+ | `OpenClawAdapter` 本地目录 → copytree | ✅ |
25
+ | E2E 3 个 skip 测试已解锁 | ✅ |
26
+
27
+ ### 测试统计
28
+
29
+ - 单元测试:321 passed
30
+ - E2E 测试:320 collected(含解锁的 3 个 skill install 测试)
@@ -0,0 +1,13 @@
1
+ # 当前 Sprint
2
+
3
+ (Phase 5 IpHub Awesome-List 转型已完成。Sprint 14 暂缓——自动化已基本就位。无活跃 Sprint。)
4
+
5
+ ## 项目整体进度
6
+
7
+ | Phase | 内容 | 状态 |
8
+ |-------|------|------|
9
+ | Phase 1 | 核心功能(虚拟环境 + 技能管理) | ✅ |
10
+ | Phase 2 | IpHub + 安全审查 + 依赖解析 | ✅ |
11
+ | Phase 3 | 国际化 + 多渠道分发 | ✅ |
12
+ | Phase 4 | 用户体验改进(ipman init + local skill install + E2E 测试) | ✅ |
13
+ | Phase 5 | IpHub Awesome-List 转型(格式增强 + 趋势 + 页面 + 机器人) | ✅ |
@@ -0,0 +1,16 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(git config:*)",
5
+ "Bash(ls:*)",
6
+ "Bash(xargs wc:*)",
7
+ "Bash(find /d/repos/ipman/src/ipman -type f -name \"*.py\" -exec wc -l {} +)",
8
+ "Bash(find /d/repos/ipman -name *.clawhub -o -name .clawhub -o -name lock.json)",
9
+ "Bash(xargs grep:*)",
10
+ "Bash(find /d/repos/ipman/docs/reports -name *.md -type f)",
11
+ "Bash(rtk uv:*)",
12
+ "Bash(rtk git:*)",
13
+ "Bash(python -c \"import os; os.environ[''MOCK_CLAWHUB_STATE'']=''/tmp/test''; os.environ[''PATH'']=''C:/test;''+os.environ[''PATH'']; import subprocess; r=subprocess.run\\([''which'', ''clawhub''], capture_output=True, text=True\\); print\\(r.stdout, r.stderr\\)\")"
14
+ ]
15
+ }
16
+ }
@@ -173,3 +173,94 @@
173
173
  | P1 | iphub 定时统计 + README Top 排名 Action | CI/CD | AI | 已完成 |
174
174
  | P1 | 多平台 PyInstaller 打包(Linux/macOS/Windows) | CI/CD | AI | 已完成 |
175
175
  | P2 | GitHub Actions 发布时自动构建 + GitHub Release 上传 | CI/CD | AI | 已完成 |
176
+
177
+ ---
178
+
179
+ ## Phase 4 -- 用户体验改进 + 持续质量保障
180
+
181
+ ### Sprint 7(activate/deactivate 脚本 + install 增强 + E2E 完善)
182
+
183
+ **目标:** 简化虚拟环境操作体验,扩展 install 命令,完善 E2E 测试覆盖
184
+
185
+ | 优先级 | 任务 | 所属模块 | 责任人 | 状态 |
186
+ |-------|------|----------|--------|------|
187
+ | P0 | 为各平台提供 activate/deactivate 脚本(参考 conda):`ipman init` 命令注入 shell function wrapper,支持 bash/zsh/fish/powershell | core/shell_init + CLI | AI | 已完成 |
188
+ | P0 | 扩展 `ipman install` 支持本地 skill 目录(`_classify_source()` 三分类,两个 adapter 用 `shutil.copytree`) | cli/skill + agents | AI | 已完成 |
189
+ | P0 | 解锁 3 个 E2E Layer 2 测试(本地 skill install/uninstall/persistence) | tests/e2e/test_skill_install | AI | 已完成 |
190
+ | P1 | Shell 集成:`ipman init` 注入后 activate/deactivate 直接生效,含 `--reverse` 撤销 + `--dry-run` 预览 | core/shell_init + CLI | AI | 已完成 |
191
+ | P1 | Windows PowerShell 兼容:`Invoke-Expression` + 正确 splatting,替代不可用的 eval | core/shell_init | AI | 已完成 |
192
+ | P1 | `ClaudeCodeAdapter`:本地路径 → `copytree` 到 `.claude/skills/`,远程名称 → `claude plugin install` | agents/claude_code | AI | 已完成 |
193
+ | P1 | `OpenClawAdapter`:本地路径 → `copytree` 到 `.openclaw/skills/`,远程名称 → `clawhub install` | agents/openclaw | AI | 已完成 |
194
+ | P2 | E2E 测试框架持续改进:根据运行结果修复测试用例 | tests/e2e | AI | 已完成 |
195
+
196
+ ---
197
+
198
+ ## Phase 5 -- IpHub Awesome-List 转型
199
+
200
+ > **总体目标:** 将 IpHub 从扁平注册表升级为 awesome-list 式的策展与传播平台
201
+ > **设计文档:** `docs/superpowers/specs/2026-03-16-iphub-ip-format-enhancement-design.md`
202
+ > **实施计划:** `docs/superpowers/plans/2026-03-16-iphub-ip-format-enhancement.md`
203
+
204
+ ### Sprint 10(Sub-1: IP 格式增强 + 版本迭代 + Tag + 页面生成)
205
+
206
+ **目标:** 扩展 IP 数据模型,建立三层架构(yaml → md → html),支持 tag 搜索、趋势统计、i18n Landing Page
207
+
208
+ | 优先级 | 任务 | 所属模块 | 责任人 | 状态 |
209
+ |-------|------|----------|--------|------|
210
+ | P0 | IPPackage 扩展:新增 tags/summary/homepage/repository/icon/links 字段 | core/package | AI | 已完成 |
211
+ | P0 | Publisher 适配:registry 输出新字段 + 版本文件含 changelog | hub/publisher | AI | 已完成 |
212
+ | P0 | Client 适配:search() 支持 --tag 过滤 | hub/client | AI | 已完成 |
213
+ | P0 | CLI 适配:hub search --tag, hub info 展示新字段 | cli/hub | AI | 已完成 |
214
+ | P1 | i18n 翻译文件(en + zh-cn)| iphub/templates | AI | 已完成 |
215
+ | P1 | README.md 生成模板(含新手引导)| iphub/templates | AI | 已完成 |
216
+ | P1 | HTML Landing Page 模板(i18n + 响应式)| iphub/templates | AI | 已完成 |
217
+ | P1 | 页面生成脚本 generate_pages.py | iphub/scripts | AI | 已完成 |
218
+ | P1 | 趋势计算脚本 generate_trending.py | iphub/scripts | AI | 已完成 |
219
+ | P2 | rebuild-index.yml:tag 聚合 + 趋势 + Labels 同步 | iphub/CI | AI | 已完成 |
220
+ | P2 | rebuild-pages.yml:自动生成页面工作流 | iphub/CI | AI | 已完成 |
221
+ | P2 | validate-pr.yml:tag 格式校验 | iphub/CI | AI | 已完成 |
222
+ | P2 | GitHub Pages 启用(人工) | iphub 仓库设置 | 人工 | 已完成 |
223
+
224
+ ### Sprint 11(Sub-2: Tag 搜索 + 排名 + 趋势推荐) — 已完成
225
+
226
+ | 任务 | 仓库 | 状态 |
227
+ |------|------|------|
228
+ | `ipman hub trending` CLI 命令 | ipman | 已完成 |
229
+ | IpHub 首页模板 + trending 展示 | iphub | 已完成 |
230
+ | Tag 浏览页模板 | iphub | 已完成 |
231
+ | i18n 新增 11 key + generate_pages 首页/tag 生成 | iphub | 已完成 |
232
+
233
+ ### Sprint 12(Sub-3: 个人页面 + IP Landing Page 完善) — 已完成
234
+
235
+ | 任务 | 仓库 | 状态 |
236
+ |------|------|------|
237
+ | Author 个人页面模板 + generate_pages 生成 | iphub | 已完成 |
238
+ | 首页 "Active Authors" 区域 | iphub | 已完成 |
239
+ | i18n 新增 7 key | iphub | 已完成 |
240
+
241
+ ### Sprint 13(Sub-4: 社交媒体机器人 + 自动 IP 生成)— 已完成
242
+
243
+ > 代码和设计文档在私有仓库 `twisker/iphub-bot` 中。
244
+
245
+ | Batch | 内容 | 状态 |
246
+ |-------|------|------|
247
+ | Batch 1+4 | 核心管道 + GitHub Trending 轮询 | 已完成 ✅ 已部署 |
248
+ | Batch 5 | HN/Reddit/ProductHunt/Dev.to 轮询 | 已完成 |
249
+ | Batch 2 | X webhook | 暂缓(需 X API $100/月) |
250
+ | Batch 3 | 微博 webhook | 暂缓(需开发者认证) |
251
+
252
+ ### Sprint 14(Sub-5: 自动化编排层)— 暂缓
253
+
254
+ > 自动化已基本就位(CI/CD workflows + Cloudflare Worker crons)。如需补充监控告警或健康检查,后续按需启动。
255
+
256
+ ---
257
+
258
+ ## Phase 5 完成总结
259
+
260
+ | Sub | Sprint | 内容 | 状态 |
261
+ |-----|--------|------|------|
262
+ | Sub-1 | Sprint 10 | IP 格式增强 + tags + changelog + 页面生成 | ✅ |
263
+ | Sub-2 | Sprint 11 | Tag 搜索 + 趋势推荐 + hub trending 命令 | ✅ |
264
+ | Sub-3 | Sprint 12 | 个人页面 + IP Landing Page | ✅ |
265
+ | Sub-4 | Sprint 13 | 社交媒体机器人 + 5 数据源自动 IP 生成 | ✅ |
266
+ | Sub-5 | Sprint 14 | 自动化编排层 | 暂缓(已基本就位) |
@@ -1,19 +1,15 @@
1
- # E2E tests — nightly + manual + pre-release
1
+ # LEGACY: Docker-based E2E tests — replaced by e2e-fast.yml + e2e-full.yml
2
2
  # Runs real ipman against Docker containers with Claude Code / OpenClaw
3
3
 
4
- name: E2E Tests
4
+ name: E2E Tests (Legacy)
5
5
 
6
6
  on:
7
- schedule:
8
- - cron: "0 4 * * *" # Daily at 04:00 UTC
9
7
  workflow_dispatch:
10
8
  inputs:
11
9
  agent:
12
10
  description: "Agent to test (claude-code, openclaw, all)"
13
11
  required: false
14
12
  default: "all"
15
- push:
16
- tags: ["v*"] # Also run before releases
17
13
 
18
14
  jobs:
19
15
  e2e:
@@ -27,9 +23,9 @@ jobs:
27
23
  - uses: actions/checkout@v4
28
24
 
29
25
  - name: Build test container
30
- working-directory: tests/e2e
26
+ working-directory: tests/e2e-legacy
31
27
  run: docker compose build ${{ matrix.agent }}
32
28
 
33
29
  - name: Run E2E tests
34
- working-directory: tests/e2e
30
+ working-directory: tests/e2e-legacy
35
31
  run: docker compose run --rm ${{ matrix.agent }}
@@ -0,0 +1,43 @@
1
+ name: E2E Fast
2
+
3
+ on:
4
+ push:
5
+ branches: [main, dev, "release/*"]
6
+ pull_request:
7
+ branches: [main, dev]
8
+
9
+ jobs:
10
+ e2e-platform:
11
+ name: E2E Platform (${{ matrix.os }})
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest, macos-latest, windows-latest]
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v6
23
+
24
+ - name: Set up Python
25
+ run: uv python install 3.12
26
+
27
+ - name: Install dependencies
28
+ run: uv sync --group dev --group e2e
29
+
30
+ - name: Run E2E platform tests (Layer 1)
31
+ run: >
32
+ uv run pytest tests/e2e/
33
+ -m "platform"
34
+ --junit-xml=e2e-fast-results.xml
35
+ --timeout=60
36
+ -v
37
+
38
+ - name: Upload test results
39
+ if: always()
40
+ uses: actions/upload-artifact@v4
41
+ with:
42
+ name: e2e-fast-${{ matrix.os }}
43
+ path: e2e-fast-results.xml
@@ -0,0 +1,102 @@
1
+ name: E2E Full
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "0 4 * * *"
6
+ push:
7
+ tags: ["v*"]
8
+ workflow_dispatch:
9
+ inputs:
10
+ layers:
11
+ description: "Marker expression (e.g. 'agent_session', 'publish')"
12
+ required: false
13
+ default: "e2e"
14
+
15
+ jobs:
16
+ e2e-agents:
17
+ name: E2E (${{ matrix.os }}, ${{ matrix.agent }})
18
+ runs-on: ${{ matrix.os }}
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ os: [ubuntu-latest, macos-latest, windows-latest]
23
+ agent: [claude-code, openclaw]
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - uses: actions/setup-node@v4
29
+ with:
30
+ node-version: "22"
31
+
32
+ - name: Install uv
33
+ uses: astral-sh/setup-uv@v6
34
+
35
+ - name: Set up Python
36
+ run: uv python install 3.12
37
+
38
+ - name: Install dependencies
39
+ run: uv sync --group dev --group e2e
40
+
41
+ - name: Install agent CLI
42
+ run: >
43
+ npm install -g ${{
44
+ matrix.agent == 'claude-code'
45
+ && '@anthropic-ai/claude-code'
46
+ || 'openclaw'
47
+ }}
48
+
49
+ - name: Run E2E tests
50
+ env:
51
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
52
+ run: >
53
+ uv run pytest tests/e2e/
54
+ -m "platform or agent_cli or agent_session"
55
+ --agent ${{ matrix.agent }}
56
+ --junit-xml=e2e-full-results.xml
57
+ --timeout=300
58
+ --reruns 1 --reruns-delay 5
59
+ -v
60
+
61
+ - name: Upload test results
62
+ if: always()
63
+ uses: actions/upload-artifact@v4
64
+ with:
65
+ name: e2e-full-${{ matrix.os }}-${{ matrix.agent }}
66
+ path: e2e-full-results.xml
67
+
68
+ e2e-publish-security:
69
+ name: Publish Security
70
+ runs-on: ubuntu-latest
71
+ steps:
72
+ - uses: actions/checkout@v4
73
+
74
+ - name: Install uv
75
+ uses: astral-sh/setup-uv@v6
76
+
77
+ - name: Set up Python
78
+ run: uv python install 3.12
79
+
80
+ - name: Install dependencies
81
+ run: uv sync --group dev --group e2e
82
+
83
+ - name: Run publish security tests
84
+ env:
85
+ GH_TOKEN_OWNER: ${{ secrets.GH_TOKEN_OWNER }}
86
+ GH_TOKEN_USER_A: ${{ secrets.GH_TOKEN_USER_A }}
87
+ GH_TOKEN_USER_B: ${{ secrets.GH_TOKEN_USER_B }}
88
+ IPHUB_TEST_REPO: ${{ vars.IPHUB_TEST_REPO }}
89
+ run: >
90
+ uv run pytest tests/e2e/test_publish_workflow.py
91
+ -m "publish"
92
+ --junit-xml=publish-results.xml
93
+ --timeout=300
94
+ --reruns 2 --reruns-delay 10
95
+ -v
96
+
97
+ - name: Upload test results
98
+ if: always()
99
+ uses: actions/upload-artifact@v4
100
+ with:
101
+ name: e2e-publish-security
102
+ path: publish-results.xml
@@ -30,6 +30,16 @@
30
30
 
31
31
  ## CLAUDE CODING 规范(必须遵守)
32
32
 
33
+ ### Git Hooks 初始化(每次新会话必检)
34
+
35
+ **每次会话开始时,必须检查 `git config core.hooksPath` 是否为 `.githooks`。如果未设置,立即执行:**
36
+
37
+ ```bash
38
+ git config core.hooksPath .githooks
39
+ ```
40
+
41
+ 这确保 `.githooks/pre-commit`(自动版本 bump)能正常工作。此配置是本地的,不跟随 git clone,因此每次换机器或 clone 新仓库后都需要重新设置。
42
+
33
43
  ### Git 提交纪律(最高优先级)
34
44
 
35
45
  **每次完成一组有意义的改动后,必须立即执行 `git add` + `git commit`,不得拖延、不得遗忘、不得等用户提醒。**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ipman-cli
3
- Version: 0.1.88
3
+ Version: 0.2.12
4
4
  Summary: Intelligence Package Manager - Agent skill virtual environment manager
5
5
  Project-URL: Homepage, https://github.com/twisker/ipman
6
6
  Project-URL: Repository, https://github.com/twisker/ipman
@@ -132,10 +132,21 @@ See the **[Security Guide](https://twisker.github.io/ipman/guide/security/)** fo
132
132
  ## IpHub Rankings
133
133
 
134
134
  <!-- TOP_SKILLS_START -->
135
- *Rankings will appear here once IpHub has install data.*
135
+ ## Top 10 Skills
136
+
137
+ *Updated: 2026-03-23T04:30:04Z*
138
+
139
+ | # | Name | Type | Installs | Users |
140
+ |---|------|------|----------|-------|
136
141
  <!-- TOP_SKILLS_END -->
137
142
 
138
143
  <!-- TOP_PACKAGES_START -->
144
+ ## Top 10 Packages
145
+
146
+ *Updated: 2026-03-23T04:30:04Z*
147
+
148
+ | # | Name | Type | Installs | Users |
149
+ |---|------|------|----------|-------|
139
150
  <!-- TOP_PACKAGES_END -->
140
151
 
141
152
  ## Star History
@@ -102,10 +102,21 @@ See the **[Security Guide](https://twisker.github.io/ipman/guide/security/)** fo
102
102
  ## IpHub Rankings
103
103
 
104
104
  <!-- TOP_SKILLS_START -->
105
- *Rankings will appear here once IpHub has install data.*
105
+ ## Top 10 Skills
106
+
107
+ *Updated: 2026-03-23T04:30:04Z*
108
+
109
+ | # | Name | Type | Installs | Users |
110
+ |---|------|------|----------|-------|
106
111
  <!-- TOP_SKILLS_END -->
107
112
 
108
113
  <!-- TOP_PACKAGES_START -->
114
+ ## Top 10 Packages
115
+
116
+ *Updated: 2026-03-23T04:30:04Z*
117
+
118
+ | # | Name | Type | Installs | Users |
119
+ |---|------|------|----------|-------|
109
120
  <!-- TOP_PACKAGES_END -->
110
121
 
111
122
  ## Star History
@@ -0,0 +1 @@
1
+ 0.2.12