agex-cli 0.16.0__tar.gz → 0.18.0__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 (219) hide show
  1. {agex_cli-0.16.0 → agex_cli-0.18.0}/CHANGELOG.md +44 -0
  2. {agex_cli-0.16.0 → agex_cli-0.18.0}/CLAUDE.md +13 -2
  3. {agex_cli-0.16.0 → agex_cli-0.18.0}/PKG-INFO +1 -1
  4. agex_cli-0.18.0/docs/superpowers/plans/2026-05-10-agex-pr.md +3739 -0
  5. agex_cli-0.18.0/docs/superpowers/specs/2026-05-10-agex-pr-design.md +417 -0
  6. {agex_cli-0.16.0 → agex_cli-0.18.0}/pyproject.toml +1 -1
  7. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/cli.py +176 -1
  8. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/hook/scripts/read.py +24 -9
  9. agex_cli-0.18.0/src/agent_experience/commands/learn/assets/topics/cicd/SKILL.md +103 -0
  10. agex_cli-0.18.0/src/agent_experience/commands/pr/SKILL.md +51 -0
  11. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/backends/acp.yaml +19 -0
  12. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/backends/claude-code.yaml +19 -0
  13. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/backends/codex.yaml +19 -0
  14. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/backends/copilot.yaml +19 -0
  15. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/rules/lint_rules.py +79 -0
  16. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/rules/next_step_rules.py +71 -0
  17. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/templates/delta.md.j2 +32 -0
  18. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/templates/footer.md.j2 +2 -0
  19. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/templates/lint_result.md.j2 +19 -0
  20. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/templates/pr_briefing.md.j2 +53 -0
  21. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/templates/pr_open_result.md.j2 +13 -0
  22. agex_cli-0.18.0/src/agent_experience/commands/pr/assets/templates/pr_reply_result.md.j2 +15 -0
  23. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/_footer.py +32 -0
  24. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/_journal.py +21 -0
  25. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/_readiness.py +56 -0
  26. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/_sonar.py +29 -0
  27. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/await_.py +152 -0
  28. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/delta.py +82 -0
  29. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/lint.py +72 -0
  30. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/open_.py +82 -0
  31. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/read.py +157 -0
  32. agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/reply.py +158 -0
  33. agex_cli-0.18.0/src/agent_experience/core/__init__.py +0 -0
  34. agex_cli-0.18.0/src/agent_experience/core/backend.py +43 -0
  35. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/core/config.py +4 -0
  36. agex_cli-0.18.0/src/agent_experience/core/github.py +305 -0
  37. agex_cli-0.18.0/src/agent_experience/core/journal.py +90 -0
  38. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/core/render.py +6 -3
  39. agex_cli-0.18.0/tests/__init__.py +0 -0
  40. agex_cli-0.18.0/tests/backends/__init__.py +0 -0
  41. agex_cli-0.18.0/tests/commands/__init__.py +0 -0
  42. agex_cli-0.18.0/tests/commands/pr/__init__.py +0 -0
  43. agex_cli-0.18.0/tests/commands/pr/fixtures/gh/.gitkeep +0 -0
  44. agex_cli-0.18.0/tests/commands/pr/fixtures/gh/pr_checks_42.json +7 -0
  45. agex_cli-0.18.0/tests/commands/pr/fixtures/gh/pr_comments_42.json +11 -0
  46. agex_cli-0.18.0/tests/commands/pr/fixtures/journals/dogfood_40.jsonl +19 -0
  47. agex_cli-0.18.0/tests/commands/pr/test_await.py +188 -0
  48. agex_cli-0.18.0/tests/commands/pr/test_delta.py +57 -0
  49. agex_cli-0.18.0/tests/commands/pr/test_footer.py +40 -0
  50. agex_cli-0.18.0/tests/commands/pr/test_lint.py +44 -0
  51. agex_cli-0.18.0/tests/commands/pr/test_lint_rules.py +50 -0
  52. agex_cli-0.18.0/tests/commands/pr/test_open.py +157 -0
  53. agex_cli-0.18.0/tests/commands/pr/test_read.py +210 -0
  54. agex_cli-0.18.0/tests/commands/pr/test_reply.py +129 -0
  55. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/commands/test_hook.py +18 -0
  56. agex_cli-0.18.0/tests/core/__init__.py +0 -0
  57. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_config.py +12 -0
  58. agex_cli-0.18.0/tests/core/test_github.py +250 -0
  59. agex_cli-0.18.0/tests/core/test_journal.py +48 -0
  60. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_render.py +8 -0
  61. agex_cli-0.18.0/tests/core/test_resolve_backend.py +38 -0
  62. agex_cli-0.18.0/tests/fixtures/claude-code/empty/.gitkeep +0 -0
  63. {agex_cli-0.16.0 → agex_cli-0.18.0}/uv.lock +1 -1
  64. agex_cli-0.16.0/.claude/skills/cicd/SKILL.md +0 -163
  65. agex_cli-0.16.0/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -43
  66. agex_cli-0.16.0/.claude/skills/cicd/scripts/create-pr-and-wait.sh +0 -100
  67. agex_cli-0.16.0/.claude/skills/cicd/scripts/poll-readiness.sh +0 -222
  68. agex_cli-0.16.0/.claude/skills/cicd/scripts/portability-lint.sh +0 -57
  69. agex_cli-0.16.0/.claude/skills/cicd/scripts/pr-batch.sh +0 -57
  70. agex_cli-0.16.0/.claude/skills/cicd/scripts/pr-comments.sh +0 -141
  71. agex_cli-0.16.0/.claude/skills/cicd/scripts/pr-reply.sh +0 -77
  72. agex_cli-0.16.0/.claude/skills/cicd/scripts/pr-status.sh +0 -164
  73. agex_cli-0.16.0/.claude/skills/cicd/scripts/wait-and-check.sh +0 -63
  74. agex_cli-0.16.0/.claude/skills/cicd/scripts/workflow.sh +0 -211
  75. agex_cli-0.16.0/src/agent_experience/core/backend.py +0 -16
  76. {agex_cli-0.16.0 → agex_cli-0.18.0}/.claude/skills/communicate/SKILL.md +0 -0
  77. {agex_cli-0.16.0 → agex_cli-0.18.0}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  78. {agex_cli-0.16.0 → agex_cli-0.18.0}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  79. {agex_cli-0.16.0 → agex_cli-0.18.0}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  80. {agex_cli-0.16.0 → agex_cli-0.18.0}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  81. {agex_cli-0.16.0 → agex_cli-0.18.0}/.flake8 +0 -0
  82. {agex_cli-0.16.0 → agex_cli-0.18.0}/.github/workflows/docs.yml +0 -0
  83. {agex_cli-0.16.0 → agex_cli-0.18.0}/.github/workflows/publish.yml +0 -0
  84. {agex_cli-0.16.0 → agex_cli-0.18.0}/.github/workflows/test.yml +0 -0
  85. {agex_cli-0.16.0 → agex_cli-0.18.0}/.gitignore +0 -0
  86. {agex_cli-0.16.0 → agex_cli-0.18.0}/.python-version +0 -0
  87. {agex_cli-0.16.0 → agex_cli-0.18.0}/LICENSE +0 -0
  88. {agex_cli-0.16.0 → agex_cli-0.18.0}/README.md +0 -0
  89. {agex_cli-0.16.0 → agex_cli-0.18.0}/culture.yaml +0 -0
  90. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/.gitignore +0 -0
  91. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/404.md +0 -0
  92. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/Gemfile +0 -0
  93. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/_config.yml +0 -0
  94. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/_includes/head_custom.html +0 -0
  95. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/_sass/color_schemes/anthropic.scss +0 -0
  96. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/_sass/color_schemes/dark-terminal.scss +0 -0
  97. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/_sass/custom/custom.scss +0 -0
  98. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/assets/images/apple-touch-icon.png +0 -0
  99. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/assets/images/favicon-16x16.png +0 -0
  100. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/assets/images/favicon-32x32.png +0 -0
  101. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/assets/images/favicon.ico +0 -0
  102. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/assets/images/og-agex.png +0 -0
  103. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/assets/images/og-culture.png +0 -0
  104. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/commands/explain.md +0 -0
  105. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/commands/gamify.md +0 -0
  106. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/commands/hook.md +0 -0
  107. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/commands/index.md +0 -0
  108. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/commands/learn.md +0 -0
  109. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/commands/overview.md +0 -0
  110. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/getting-started.md +0 -0
  111. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/index.md +0 -0
  112. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/skill-sources.md +0 -0
  113. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/superpowers/plans/2026-04-18-agex-v0.1.md +0 -0
  114. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/superpowers/specs/2026-04-18-agex-design.md +0 -0
  115. {agex_cli-0.16.0 → agex_cli-0.18.0}/docs/superpowers/specs/2026-04-26-agex-doctor.md +0 -0
  116. {agex_cli-0.16.0 → agex_cli-0.18.0}/scripts/sync_skill_md.py +0 -0
  117. {agex_cli-0.16.0 → agex_cli-0.18.0}/sonar-project.properties +0 -0
  118. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/__init__.py +0 -0
  119. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/__main__.py +0 -0
  120. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/__init__.py +0 -0
  121. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/acp/__init__.py +0 -0
  122. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/acp/probe.py +0 -0
  123. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/capabilities/acp.yaml +0 -0
  124. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/capabilities/claude-code.yaml +0 -0
  125. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/capabilities/codex.yaml +0 -0
  126. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/capabilities/copilot.yaml +0 -0
  127. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/claude_code/__init__.py +0 -0
  128. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/claude_code/probe.py +0 -0
  129. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/codex/__init__.py +0 -0
  130. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/codex/probe.py +0 -0
  131. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/copilot/__init__.py +0 -0
  132. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/backends/copilot/probe.py +0 -0
  133. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/__init__.py +0 -0
  134. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/doctor/SKILL.md +0 -0
  135. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/doctor/__init__.py +0 -0
  136. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/doctor/assets/report.md.j2 +0 -0
  137. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/doctor/references/design.md +0 -0
  138. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/doctor/scripts/__init__.py +0 -0
  139. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/doctor/scripts/doctor.py +0 -0
  140. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/explain/SKILL.md +0 -0
  141. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/explain/__init__.py +0 -0
  142. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/explain/assets/topics/agex.md +0 -0
  143. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/explain/references/.gitkeep +0 -0
  144. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/explain/scripts/__init__.py +0 -0
  145. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/explain/scripts/explain.py +0 -0
  146. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/gamify/SKILL.md +0 -0
  147. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/gamify/__init__.py +0 -0
  148. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/gamify/assets/hooks/claude-code.json +0 -0
  149. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/gamify/references/.gitkeep +0 -0
  150. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/gamify/scripts/__init__.py +0 -0
  151. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/gamify/scripts/install.py +0 -0
  152. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/hook/SKILL.md +0 -0
  153. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/hook/__init__.py +0 -0
  154. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/hook/assets/table.md.j2 +0 -0
  155. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/hook/references/.gitkeep +0 -0
  156. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/hook/scripts/__init__.py +0 -0
  157. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/hook/scripts/write.py +0 -0
  158. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/SKILL.md +0 -0
  159. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/__init__.py +0 -0
  160. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/menu.md.j2 +0 -0
  161. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/gamify/SKILL.md +0 -0
  162. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/gamify/assets/skill-template/claude-code/SKILL.md +0 -0
  163. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/introspect/SKILL.md +0 -0
  164. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/introspect/assets/skill-template/claude-code/SKILL.md +0 -0
  165. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/levelup/SKILL.md +0 -0
  166. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/levelup/assets/skill-template/claude-code/SKILL.md +0 -0
  167. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/visualize/SKILL.md +0 -0
  168. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/assets/topics/visualize/assets/skill-template/claude-code/SKILL.md +0 -0
  169. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/references/.gitkeep +0 -0
  170. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/scripts/__init__.py +0 -0
  171. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/learn/scripts/learn.py +0 -0
  172. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/SKILL.md +0 -0
  173. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/__init__.py +0 -0
  174. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/assets/backends/acp.yaml +0 -0
  175. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/assets/backends/claude-code.yaml +0 -0
  176. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/assets/backends/codex.yaml +0 -0
  177. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/assets/backends/copilot.yaml +0 -0
  178. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/assets/sections.md.j2 +0 -0
  179. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/references/.gitkeep +0 -0
  180. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/scripts/__init__.py +0 -0
  181. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/commands/overview/scripts/overview.py +0 -0
  182. {agex_cli-0.16.0/src/agent_experience/core → agex_cli-0.18.0/src/agent_experience/commands/pr}/__init__.py +0 -0
  183. {agex_cli-0.16.0/tests → agex_cli-0.18.0/src/agent_experience/commands/pr/assets}/__init__.py +0 -0
  184. {agex_cli-0.16.0/tests → agex_cli-0.18.0/src/agent_experience/commands/pr/assets}/backends/__init__.py +0 -0
  185. {agex_cli-0.16.0/tests/commands → agex_cli-0.18.0/src/agent_experience/commands/pr/assets/rules}/__init__.py +0 -0
  186. {agex_cli-0.16.0/tests/core → agex_cli-0.18.0/src/agent_experience/commands/pr/assets/templates}/__init__.py +0 -0
  187. /agex_cli-0.16.0/tests/fixtures/claude-code/empty/.gitkeep → /agex_cli-0.18.0/src/agent_experience/commands/pr/scripts/__init__.py +0 -0
  188. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/core/capabilities.py +0 -0
  189. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/core/hook_io.py +0 -0
  190. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/core/paths.py +0 -0
  191. {agex_cli-0.16.0 → agex_cli-0.18.0}/src/agent_experience/core/skill_loader.py +0 -0
  192. {agex_cli-0.16.0 → agex_cli-0.18.0}/tester-agents/claude/.claude/settings.json +0 -0
  193. {agex_cli-0.16.0 → agex_cli-0.18.0}/tester-agents/claude/CLAUDE.md +0 -0
  194. {agex_cli-0.16.0 → agex_cli-0.18.0}/tester-agents/claude/README.md +0 -0
  195. {agex_cli-0.16.0 → agex_cli-0.18.0}/tester-agents/claude/culture.yaml +0 -0
  196. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/backends/test_claude_code_probe.py +0 -0
  197. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/backends/test_stub_probes.py +0 -0
  198. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/commands/test_doctor.py +0 -0
  199. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/commands/test_explain.py +0 -0
  200. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/commands/test_gamify.py +0 -0
  201. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/commands/test_learn.py +0 -0
  202. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/commands/test_overview.py +0 -0
  203. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_backend.py +0 -0
  204. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_capabilities.py +0 -0
  205. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_hook_io.py +0 -0
  206. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_paths.py +0 -0
  207. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_skill_loader.py +0 -0
  208. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/core/test_version_lookup.py +0 -0
  209. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/malformed/.claude/hooks.json +0 -0
  210. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/malformed/.claude/settings.json +0 -0
  211. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/malformed/.claude/skills/bad/SKILL.md +0 -0
  212. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/malformed/.claude/skills/broken-yaml/SKILL.md +0 -0
  213. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/typical/.claude/hooks.json +0 -0
  214. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/typical/.claude/settings.json +0 -0
  215. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/typical/.claude/skills/example/SKILL.md +0 -0
  216. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/fixtures/claude-code/typical/CLAUDE.md +0 -0
  217. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/test_cli_errors.py +0 -0
  218. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/test_cli_smoke.py +0 -0
  219. {agex_cli-0.16.0 → agex_cli-0.18.0}/tests/test_skill_md_consistency.py +0 -0
@@ -7,6 +7,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.18.0] - 2026-05-12
11
+
12
+ ### Added
13
+
14
+ - `agex pr await [<PR>] [--max-wait SECS]` — combo verb that polls
15
+ reviewer readiness, runs CI + SonarCloud quality gate, and dumps the
16
+ unified briefing. **Exits 1 on quality-gate `ERROR`, unresolved
17
+ review threads, or failing CI checks**, 0 on clean state or timeout.
18
+ Use this when a script should fail if the PR isn't triage-able.
19
+ Closes [#41](https://github.com/agentculture/agex-cli/issues/41).
20
+ - `SONAR_PROJECT_KEY` env var (and `[pr].sonar_project_key` config key)
21
+ override the default `<owner>_<repo>` SonarCloud project-key
22
+ derivation, for repos with non-standard project naming.
23
+ - `agex learn cicd` lesson now documents the 5-minute Anthropic prompt
24
+ cache TTL and recommends running long waits inside a background
25
+ subagent so the parent session's cache stays warm.
26
+
27
+ ### Changed
28
+
29
+ - Polling helpers (`is_ready`, `threads_unresolved`, `required_reviewers`,
30
+ `POLL_INTERVAL_SEC`) moved from `commands/pr/scripts/read.py` to a
31
+ shared `commands/pr/scripts/_readiness.py` so `pr read --wait` and
32
+ `pr await` share one implementation. No behavior change for
33
+ `pr read`.
34
+
35
+ ## [0.17.0] - 2026-05-10
36
+
37
+ ### Added
38
+
39
+ - `agex pr` command namespace: `lint`, `open`, `read`, `reply`, `delta`. Supersedes the bash `cicd` skill.
40
+ - `agex pr open --delayed-read` chains to `agex pr read --wait 180` after creating the PR.
41
+ - `agex pr read --wait SECS` polls for required reviewer readiness (default `qodo`; configurable via `[pr].required_reviewers`) before rendering the briefing.
42
+ - Per-command "Next step:" footers driven by `commands/pr/assets/rules/next_step_rules.py` and per-backend phrasing under `commands/pr/assets/backends/<backend>.yaml`.
43
+ - `core/github.py` — thin `gh` shellout wrapper; future zero-trust httpx swap touches only this file.
44
+ - `core/journal.py` — nested-stream JSONL append/load for `.agex/data/<dir>/<stream>.jsonl`.
45
+ - `core/backend.resolve_backend()` — `--agent` resolution with `culture.yaml` fallback.
46
+ - `agex learn cicd` lesson teaching the new workflow.
47
+ - `agex hook read` discovers nested `data/<dir>/*.jsonl` streams.
48
+
49
+ ### Changed
50
+
51
+ - Invariant carve-out: the `agex pr` namespace is allowed scoped network I/O and bounded `--wait` sleep. No silent retries anywhere.
52
+ - Side-effect inventory extended to include `pr open`, `pr reply`, and `pr read` (journal writes).
53
+
10
54
  ## [0.16.0] — 2026-05-10
11
55
 
12
56
  ### Added
@@ -19,7 +19,7 @@ Read the spec before any non-trivial change — the design invariants below are
19
19
  1. **Zero LLM calls inside agex.** All output is deterministic markdown from Jinja templates + Python.
20
20
  2. **Markdown is the only output format.** No `--json` flag.
21
21
  3. **`--agent <backend>` is required** on backend-sensitive commands. The CLI never auto-detects.
22
- 4. **Side effects only in** `gamify`, `gamify --uninstall`, `hook write`, and first-run `.agex/` init. Everything else is read-only.
22
+ 4. **Side effects only in** `gamify`, `gamify --uninstall`, `hook write`, `pr open`, `pr reply`, `pr read` (journal writes), and first-run `.agex/` init. Everything else is read-only. The `agex pr` namespace allows scoped network I/O (via `gh`) and bounded `--wait` sleep — a deliberate carve-out from the no-network/no-sleep invariants.
23
23
  5. **"Unsupported" is success** — exit 0 with a markdown notice that links to the issue tracker, not a non-zero exit.
24
24
  6. **Skills are authored by the agent, not shipped by agex.** `agex learn <topic>` teaches; `agex explain <topic>` describes; agex never writes a user skill file on the agent's behalf in v0.1.
25
25
 
@@ -41,6 +41,17 @@ cli.py ──► commands/<name>/scripts/<name>.py ──► core/render.py
41
41
  - `core/` is shared plumbing — backend enum, `.agex/` paths, Jinja renderer (`StrictUndefined`), TOML config, SKILL.md frontmatter parser, capability matrix loader, hook JSON I/O. Command- and content-agnostic.
42
42
  - A backend lives in three places: `core/backend.Backend` (enum entry), `backends/<name>/probe.py` (optional Python probe), and one YAML per relevant command under `commands/*/assets/backends/<name>.yaml`. Adding a backend touches only those locations.
43
43
 
44
+ ## `agex pr` namespace (v0.17.0+)
45
+
46
+ `lint`, `open`, `read`, `reply`, `delta`. Each command ends with a deterministic "Next step:" footer. The `pr` namespace allows scoped network I/O (via `gh`) and bounded `--wait` sleep — a deliberate carve-out from the no-network/no-sleep invariants. Key modules:
47
+
48
+ - `core/github.py` — thin `gh` shellout wrapper; future zero-trust httpx swap touches only this file.
49
+ - `core/journal.py` — nested-stream JSONL append/load for `.agex/data/<dir>/<stream>.jsonl`.
50
+ - `core/backend.resolve_backend()` — `--agent` resolution with `culture.yaml` fallback.
51
+ - `commands/pr/assets/rules/next_step_rules.py` — "Next step:" footer decision logic, per-backend phrasing under `commands/pr/assets/backends/<backend>.yaml`.
52
+
53
+ Spec: `docs/superpowers/specs/2026-05-10-agex-pr-design.md`. Plan: `docs/superpowers/plans/2026-05-10-agex-pr.md`.
54
+
44
55
  ## Conventions worth following
45
56
 
46
57
  - **Resource loading: use `importlib.resources.files(...)` and treat the result as a `Traversable`.** Call `.joinpath()` / `.is_file()` / `.read_text(encoding="utf-8")` directly. Wrap with `importlib.resources.as_file()` only when a third-party API needs a real `pathlib.Path`. Do NOT do `Path(str(files(...)))` — it's not zipapp/PEX safe.
@@ -90,6 +101,6 @@ uv run pytest --cov=src/agent_experience --cov-report=xml --cov-report=term
90
101
  - Push, open a PR, let CI + SonarCloud + Qodo + Copilot run. Address inline comments + resolve threads before merge.
91
102
  - Merging to `main` publishes to PyPI automatically (via `autotag` → `publish-pypi` → `github-release` in `publish.yml`). No manual tagging.
92
103
  - When posting on GitHub on the user's behalf (PR descriptions, issue replies, review-thread replies), sign so it's clear the message came from an AI. Three conventions, in priority order:
93
- - **Inside `cicd` workflow scripts** (`pr-reply.sh`, `pr-batch.sh`) the script auto-appends `- agex-cli (Claude)` from the repo's `culture.yaml`. Don't sign manually.
104
+ - **`agex pr open` / `agex pr reply`** — auto-append `- agex-cli (Claude)` (the nick is resolved from `culture.yaml` via `core.github.resolve_nick`, falling back to the repo basename). Don't sign manually.
94
105
  - **Inside `communicate` workflow scripts** (`post-issue.sh`, `post-comment.sh`) — `agtag` resolves the same nick from `culture.yaml`. Don't sign manually.
95
106
  - **Manual posts the scripts didn't author** (a hand-typed `gh pr create --body …`, a one-off review reply) — sign explicitly as `- agex-cli (Claude)`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agex-cli
3
- Version: 0.16.0
3
+ Version: 0.18.0
4
4
  Summary: Agent-operated developer-experience CLI — deterministic per-backend markdown briefings for autonomous agents.
5
5
  Project-URL: Homepage, https://culture.dev/agex/
6
6
  Project-URL: Repository, https://github.com/agentculture/agex-cli