devex-cli 0.26.0__tar.gz → 0.26.1__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.
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.github/workflows/test.yml +41 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/CHANGELOG.md +10 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/CLAUDE.md +3 -3
- {devex_cli-0.26.0 → devex_cli-0.26.1}/PKG-INFO +1 -1
- {devex_cli-0.26.0 → devex_cli-0.26.1}/pyproject.toml +16 -1
- {devex_cli-0.26.0 → devex_cli-0.26.1}/sonar-project.properties +6 -7
- {devex_cli-0.26.0 → devex_cli-0.26.1}/uv.lock +1 -1
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/agent-config/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/agent-config/scripts/show.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/cicd/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/communicate/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/run-tests/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/think/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/think/scripts/think.sh +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/version-bump/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.flake8 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.github/workflows/publish.yml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.gitignore +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/.python-version +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/LICENSE +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/README.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/culture.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/docs/skill-sources.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/docs/superpowers/plans/2026-04-18-agex-v0.1.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/docs/superpowers/plans/2026-05-10-agex-pr.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/docs/superpowers/specs/2026-04-18-agex-design.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/docs/superpowers/specs/2026-04-26-agex-doctor.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/docs/superpowers/specs/2026-05-10-agex-pr-design.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/__main__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/acp/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/acp/probe.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/capabilities/acp.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/capabilities/claude-code.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/capabilities/codex.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/capabilities/copilot.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/claude_code/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/claude_code/probe.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/codex/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/codex/probe.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/copilot/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/backends/copilot/probe.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/cli.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/doctor/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/doctor/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/doctor/assets/report.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/doctor/references/design.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/doctor/scripts/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/doctor/scripts/doctor.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/explain/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/explain/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/explain/assets/topics/devex.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/explain/references/.gitkeep +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/explain/scripts/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/explain/scripts/explain.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/gamify/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/gamify/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/gamify/assets/hooks/claude-code.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/gamify/references/.gitkeep +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/gamify/scripts/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/gamify/scripts/install.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/hook/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/hook/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/hook/assets/table.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/hook/references/.gitkeep +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/hook/scripts/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/hook/scripts/read.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/hook/scripts/write.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/menu.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/cicd/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/gamify/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/gamify/assets/skill-template/claude-code/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/introspect/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/introspect/assets/skill-template/claude-code/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/levelup/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/levelup/assets/skill-template/claude-code/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/visualize/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/visualize/assets/skill-template/claude-code/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/references/.gitkeep +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/scripts/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/scripts/learn.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/backends/acp.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/backends/claude-code.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/backends/codex.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/backends/copilot.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/sections.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/references/.gitkeep +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/scripts/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/scripts/overview.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/backends/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/backends/acp.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/backends/claude-code.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/backends/codex.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/backends/copilot.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/rules/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/rules/lint_rules.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/rules/next_step_rules.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/delta.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/footer.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/lint_result.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_await_detached.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_briefing.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_open_result.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_reply_result.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_review_result.md.j2 +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_await_worker.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_deploy.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_detach.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_footer.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_journal.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_qodo.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_readiness.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/_sonar.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/await_.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/delta.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/lint.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/open_.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/read.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/reply.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/scripts/review.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/_jsonl.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/backend.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/capabilities.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/config.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/github.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/hook_io.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/journal.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/paths.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/prog.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/render.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/core/skill_loader.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tester-agents/claude/.claude/settings.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tester-agents/claude/.claude/skills +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tester-agents/claude/CLAUDE.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tester-agents/claude/README.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tester-agents/claude/culture.yaml +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/backends/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/backends/test_claude_code_probe.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/backends/test_stub_probes.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/fixtures/gh/.gitkeep +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/fixtures/gh/pr_checks_42.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/fixtures/gh/pr_comments_42.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/fixtures/gh/qodo_summary_comment.html +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/fixtures/journals/dogfood_40.jsonl +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_await.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_await_detach.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_delta.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_deploy.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_footer.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_lint.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_lint_rules.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_open.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_qodo.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_read.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_readiness.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_reply.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/test_review.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/test_doctor.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/test_explain.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/test_gamify.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/test_hook.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/test_learn.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/test_overview.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/test_prog_propagation.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/__init__.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_backend.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_capabilities.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_config.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_github.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_hook_io.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_journal.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_paths.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_prog.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_render.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_resolve_backend.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_skill_loader.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/core/test_version_lookup.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/empty/.gitkeep +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/malformed/.claude/hooks.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/malformed/.claude/settings.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/malformed/.claude/skills/bad/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/malformed/.claude/skills/broken-yaml/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/typical/.claude/hooks.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/typical/.claude/settings.json +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/typical/.claude/skills/example/SKILL.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/typical/CLAUDE.md +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/test_cli_dispatch.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/test_cli_errors.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/test_cli_smoke.py +0 -0
- {devex_cli-0.26.0 → devex_cli-0.26.1}/tests/test_skill_md_consistency.py +0 -0
|
@@ -23,6 +23,47 @@ jobs:
|
|
|
23
23
|
- run: uv pip install -e ".[dev]"
|
|
24
24
|
- run: uv run pytest
|
|
25
25
|
|
|
26
|
+
# --------------------------------------------------------------------------
|
|
27
|
+
# SonarCloud CI-based analysis + coverage. SonarCloud is no longer in
|
|
28
|
+
# Automatic Analysis mode (the two modes are mutually exclusive), so this job
|
|
29
|
+
# is the sole analysis path: it generates coverage.xml (with repo-relative
|
|
30
|
+
# paths via pyproject [tool.coverage.run] so Sonar can match files) and runs
|
|
31
|
+
# the scanner, which
|
|
32
|
+
# reads sonar-project.properties (projectKey / organization / reportPaths)
|
|
33
|
+
# and the SONAR_TOKEN repo secret. Runs on PRs (new-code decoration) and on
|
|
34
|
+
# pushes to main (baseline). fetch-depth: 0 gives Sonar the full history it
|
|
35
|
+
# needs for accurate new-code / blame attribution.
|
|
36
|
+
# --------------------------------------------------------------------------
|
|
37
|
+
sonarcloud:
|
|
38
|
+
name: SonarCloud
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
# Promote a *presence flag* (not the secret) to job env so the scan step
|
|
41
|
+
# can gate on it — `secrets.*` isn't allowed in `if:`. Lets forks /
|
|
42
|
+
# token-less runs skip the scan rather than hard-fail. (Pattern from the
|
|
43
|
+
# sibling agentfront repo, whose CI-based SonarCloud scan is green.)
|
|
44
|
+
env:
|
|
45
|
+
SONAR_TOKEN_PRESENT: ${{ secrets.SONAR_TOKEN != '' }}
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
48
|
+
with:
|
|
49
|
+
fetch-depth: 0
|
|
50
|
+
- uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3
|
|
51
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
52
|
+
with:
|
|
53
|
+
python-version: "3.12"
|
|
54
|
+
- run: uv venv
|
|
55
|
+
- run: uv pip install -e ".[dev]"
|
|
56
|
+
- run: uv run pytest --cov=src/devex --cov-report=xml --cov-report=term
|
|
57
|
+
# Pinned to v6 to match the sibling agentfront repo's working scan.
|
|
58
|
+
# The v7+/v8 scanner engine 404s on `api.sonarcloud.io/analysis/analyses`
|
|
59
|
+
# against SonarQube Cloud; v6 posts to sonarcloud.io directly.
|
|
60
|
+
- name: SonarCloud Scan
|
|
61
|
+
if: env.SONAR_TOKEN_PRESENT == 'true'
|
|
62
|
+
uses: SonarSource/sonarqube-scan-action@fd88b7d7ccbaefd23d8f36f73b59db7a3d246602 # v6
|
|
63
|
+
env:
|
|
64
|
+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
|
65
|
+
SONAR_HOST_URL: https://sonarcloud.io
|
|
66
|
+
|
|
26
67
|
# --------------------------------------------------------------------------
|
|
27
68
|
# Enforces that every PR touching code (src/, tests/, pyproject.toml) also
|
|
28
69
|
# bumps the version in pyproject.toml. Without this, a merge to main that
|
|
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.26.1] - 2026-05-29
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- SonarCloud CI-based analysis + coverage upload: a `sonarcloud` job in test.yml runs `pytest --cov` and the SHA-pinned `sonarqube-scan-action` (v6), reading `sonar-project.properties` + the `SONAR_TOKEN` secret. Coverage config lives in `pyproject.toml [tool.coverage.run]` (`relative_files` so coverage.xml paths map to `sonar.sources=src`).
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- SonarCloud moved from Automatic Analysis to CI-based analysis (the two are mutually exclusive); project now under the `agentculture` org. Updated CLAUDE.md / sonar-project.properties notes accordingly.
|
|
19
|
+
|
|
10
20
|
## [0.26.0] - 2026-05-29
|
|
11
21
|
|
|
12
22
|
### Added
|
|
@@ -78,15 +78,15 @@ uv run devex --version
|
|
|
78
78
|
uv run devex explain devex
|
|
79
79
|
uv run devex explain explain
|
|
80
80
|
|
|
81
|
-
# Coverage (matches
|
|
81
|
+
# Coverage (matches the `sonarcloud` job in test.yml; SonarCloud reads coverage.xml)
|
|
82
82
|
uv run pytest --cov=src/devex --cov-report=xml --cov-report=term
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
## CI surface
|
|
86
86
|
|
|
87
|
-
- `.github/workflows/test.yml` — matrix: 3 OS × 4 Python (3.10–3.13) running `uv run pytest`. Also runs a `version-check` job on PRs that fails (with a sticky `<!-- version-check -->` comment) when `pyproject.toml`'s version on the PR matches the one on `main` and any code file under `src/` / `tests/` / `pyproject.toml` changed. Docs-only PRs skip the check.
|
|
87
|
+
- `.github/workflows/test.yml` — matrix: 3 OS × 4 Python (3.10–3.13) running `uv run pytest`. Also runs (1) a `sonarcloud` job that generates `coverage.xml` (`pytest --cov`, repo-relative paths via `pyproject [tool.coverage.run]`) and runs the SHA-pinned `sonarqube-scan-action` (needs the `SONAR_TOKEN` repo secret); and (2) a `version-check` job on PRs that fails (with a sticky `<!-- version-check -->` comment) when `pyproject.toml`'s version on the PR matches the one on `main` and any code file under `src/` / `tests/` / `pyproject.toml` changed. Docs-only PRs skip the version check.
|
|
88
88
|
- `.github/workflows/publish.yml` — builds sdist + wheel. PRs publish a per-PR dev version to TestPyPI (sticky install-command comment); pushes to `main` publish the stable version to TestPyPI (canary), then an `autotag` job pushes `v<version>` if missing, which gates the inline `publish-pypi` + `github-release` jobs. No manual tagging — bumping `pyproject.toml` is the release signal.
|
|
89
|
-
- SonarCloud
|
|
89
|
+
- SonarCloud runs in **CI-based analysis** mode (Automatic Analysis is off — the two are mutually exclusive). The `sonarcloud` job in `test.yml` uploads coverage + triggers the scan via `sonarqube-scan-action`, reading `sonar-project.properties` and the `SONAR_TOKEN` secret. The quality gate decorates PRs and gates merges.
|
|
90
90
|
- All third-party actions are **pinned to full commit SHAs** with trailing `# vN` comments (rule `githubactions:S7637`). Keep new actions pinned the same way.
|
|
91
91
|
|
|
92
92
|
## SonarCloud notes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devex-cli
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.1
|
|
4
4
|
Summary: Agent-operated developer-experience CLI — deterministic per-backend markdown briefings for autonomous agents.
|
|
5
5
|
Project-URL: Homepage, https://culture.dev/devex/
|
|
6
6
|
Project-URL: Repository, https://github.com/agentculture/devex
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "devex-cli"
|
|
3
|
-
version = "0.26.
|
|
3
|
+
version = "0.26.1"
|
|
4
4
|
description = "Agent-operated developer-experience CLI — deterministic per-backend markdown briefings for autonomous agents."
|
|
5
5
|
authors = [{name = "Ori Nachum"}]
|
|
6
6
|
license = {text = "MIT"}
|
|
@@ -45,6 +45,21 @@ packages = ["src/devex"]
|
|
|
45
45
|
testpaths = ["tests"]
|
|
46
46
|
addopts = "-n auto -v"
|
|
47
47
|
|
|
48
|
+
[tool.coverage.run]
|
|
49
|
+
source = ["src/devex"]
|
|
50
|
+
# Emit repo-relative paths in coverage.xml so SonarCloud maps them to
|
|
51
|
+
# sonar.sources=src (absolute / .venv paths fail to map → empty coverage).
|
|
52
|
+
relative_files = true
|
|
53
|
+
|
|
54
|
+
[tool.coverage.report]
|
|
55
|
+
show_missing = true
|
|
56
|
+
fail_under = 60
|
|
57
|
+
exclude_lines = [
|
|
58
|
+
"pragma: no cover",
|
|
59
|
+
"if __name__ == .__main__.",
|
|
60
|
+
"if TYPE_CHECKING:",
|
|
61
|
+
]
|
|
62
|
+
|
|
48
63
|
[tool.black]
|
|
49
64
|
line-length = 100
|
|
50
65
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
sonar.projectKey=agentculture_devex
|
|
2
|
-
sonar.organization=
|
|
2
|
+
sonar.organization=agentculture
|
|
3
3
|
|
|
4
4
|
# Displayed in SonarCloud UI
|
|
5
5
|
sonar.projectName=devex
|
|
@@ -12,12 +12,11 @@ sonar.sourceEncoding=UTF-8
|
|
|
12
12
|
# Python: target versions (matches CI matrix)
|
|
13
13
|
sonar.python.version=3.10, 3.11, 3.12, 3.13
|
|
14
14
|
|
|
15
|
-
# Coverage report path. SonarCloud runs in
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
# coverage
|
|
19
|
-
#
|
|
20
|
-
# coverage and is what gates the PR quality gate today.
|
|
15
|
+
# Coverage report path. SonarCloud now runs in CI-based analysis mode
|
|
16
|
+
# (Automatic Analysis is OFF — the two are mutually exclusive). The `sonarcloud`
|
|
17
|
+
# job in .github/workflows/test.yml runs `pytest --cov` (repo-relative paths
|
|
18
|
+
# via pyproject [tool.coverage.run], so Sonar can match files) and the
|
|
19
|
+
# sonarqube-scan-action uploads this report. Requires the SONAR_TOKEN repo secret.
|
|
21
20
|
sonar.python.coverage.reportPaths=coverage.xml
|
|
22
21
|
|
|
23
22
|
# S5496 triggers on render_string() because it renders a Jinja template with a
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/gamify/assets/hooks/claude-code.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/gamify/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/introspect/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/levelup/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/learn/assets/topics/visualize/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/backends/claude-code.yaml
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/backends/codex.yaml
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/overview/assets/backends/copilot.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/backends/claude-code.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/lint_result.md.j2
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_await_detached.md.j2
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_briefing.md.j2
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_open_result.md.j2
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_reply_result.md.j2
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/src/devex/commands/pr/assets/templates/pr_review_result.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/tests/commands/pr/fixtures/gh/qodo_summary_comment.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/malformed/.claude/hooks.json
RENAMED
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/malformed/.claude/settings.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{devex_cli-0.26.0 → devex_cli-0.26.1}/tests/fixtures/claude-code/typical/.claude/settings.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|