qodo-cli 0.3.1__tar.gz → 0.3.2__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 (72) hide show
  1. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/CHANGELOG.md +13 -0
  2. qodo_cli-0.3.2/CLAUDE.md +180 -0
  3. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/PKG-INFO +1 -1
  4. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/pyproject.toml +1 -1
  5. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/explain/catalog.py +4 -0
  6. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/tests/test_cli.py +8 -0
  7. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/uv.lock +1 -1
  8. qodo_cli-0.3.1/CLAUDE.md +0 -28
  9. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/agent-config/SKILL.md +0 -0
  10. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  11. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/agent-config/scripts/show.sh +0 -0
  12. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/ask-colleague/SKILL.md +0 -0
  13. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
  14. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/ask-colleague/prompts/review.md +0 -0
  15. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/ask-colleague/prompts/write.md +0 -0
  16. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
  17. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  18. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  19. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/cicd/SKILL.md +0 -0
  20. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  21. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  22. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  23. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  24. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  25. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/communicate/SKILL.md +0 -0
  26. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  27. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  28. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  29. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  30. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  31. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  32. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  33. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  34. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  35. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  36. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/run-tests/SKILL.md +0 -0
  37. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/run-tests/scripts/test.sh +0 -0
  38. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/sonarclaude/SKILL.md +0 -0
  39. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  40. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  41. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  42. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/think/SKILL.md +0 -0
  43. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/think/scripts/think.sh +0 -0
  44. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/version-bump/SKILL.md +0 -0
  45. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills/version-bump/scripts/bump.py +0 -0
  46. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.claude/skills.local.yaml.example +0 -0
  47. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.flake8 +0 -0
  48. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.github/workflows/publish.yml +0 -0
  49. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.github/workflows/tests.yml +0 -0
  50. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.gitignore +0 -0
  51. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/.markdownlint-cli2.yaml +0 -0
  52. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/AGENTS.colleague.md +0 -0
  53. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/LICENSE +0 -0
  54. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/README.md +0 -0
  55. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/culture.yaml +0 -0
  56. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/docs/skill-sources.md +0 -0
  57. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/__init__.py +0 -0
  58. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/__main__.py +0 -0
  59. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/__init__.py +0 -0
  60. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_commands/__init__.py +0 -0
  61. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_commands/cli.py +0 -0
  62. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_commands/doctor.py +0 -0
  63. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_commands/explain.py +0 -0
  64. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_commands/learn.py +0 -0
  65. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_commands/overview.py +0 -0
  66. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_commands/whoami.py +0 -0
  67. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_errors.py +0 -0
  68. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/cli/_output.py +0 -0
  69. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/qodo/explain/__init__.py +0 -0
  70. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/sonar-project.properties +0 -0
  71. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/tests/__init__.py +0 -0
  72. {qodo_cli-0.3.1 → qodo_cli-0.3.2}/tests/test_cli_introspection.py +0 -0
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/). This project
6
6
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.2] - 2026-06-16
9
+
10
+ ### Fixed
11
+
12
+ - `explain` now resolves the console-script name `qodo` (not only the dist name
13
+ `qodo-cli`), so the agent-first rubric's `explain <self>` check passes — the
14
+ rubric derives the self-token from `[project.scripts]` (`qodo`). Pinned by a
15
+ regression test.
16
+
17
+ ### Changed
18
+
19
+ - CLAUDE.md: re-initialized from the seed placeholder into a full runtime prompt via /init — documents the agent-first CLI dispatch/contracts, the rubric gate, colleague-backend mesh identity (AGENTS.colleague.md), vendored-skill provenance, version-bump-every-PR + cicd PR lane, and the add-a-command/rename procedures. Flags known drift where stale text still says backend: claude and that the console script is qodo (not qodo-cli).
20
+
8
21
  ## [0.3.1] - 2026-06-13
9
22
 
10
23
  ### Changed
@@ -0,0 +1,180 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## What this is
6
+
7
+ **qodo-cli** — an unofficial, community CLI and agent to manage **Qodo** (the AI
8
+ code reviewer and Qodo's other agents; requires a Qodo subscription). Not
9
+ affiliated with, authorized, or endorsed by Qodo; the Qodo name and trademark
10
+ belong to Qodo Ltd.
11
+
12
+ **Current reality vs. intended domain.** The intended domain is managing Qodo,
13
+ but no Qodo-management surface exists yet. Today the runtime is still the
14
+ **agent-first scaffold** cited from teken's `afi-cli` `python-cli` reference: a
15
+ self-describing introspection CLI (`whoami`, `learn`, `explain`, `overview`,
16
+ `doctor`, `cli`). Several artifacts still self-describe this repo as "a clonable
17
+ template" (the `learn`/`explain`/`overview` text, the README "Make it your own"
18
+ section). When you build the actual Qodo surface, add it as new noun groups (see
19
+ *Adding a command*) and update that self-describing text to match.
20
+
21
+ The runtime has **zero third-party dependencies** (`dependencies = []` in
22
+ `pyproject.toml`); `teken` is a dev-only dependency used by the rubric gate.
23
+ Requires Python ≥ 3.12.
24
+
25
+ ## Commands
26
+
27
+ ```bash
28
+ uv sync # install runtime + dev deps into .venv
29
+ uv run qodo whoami # run the CLI (console script is `qodo`)
30
+ uv run pytest -n auto # full test suite, parallel (xdist)
31
+ uv run pytest tests/test_cli.py::test_whoami_text # a single test
32
+ uv run teken cli doctor . --strict # the agent-first rubric gate CI enforces
33
+ ```
34
+
35
+ > The installed console script is **`qodo`**, even though the dist/package is
36
+ > `qodo-cli` and the CLI identifies itself (argparse `prog`) as `qodo-cli`.
37
+ > `uv run qodo …`, not `uv run qodo-cli …` (the README example is wrong).
38
+
39
+ Lint (CI runs each of these; all must pass):
40
+
41
+ ```bash
42
+ uv run black --check qodo tests
43
+ uv run isort --check-only qodo tests
44
+ uv run flake8 qodo tests
45
+ uv run bandit -c pyproject.toml -r qodo
46
+ markdownlint-cli2 "**/*.md" "#node_modules" "#.local" "#.claude/skills" "#.teken"
47
+ ```
48
+
49
+ Black/isort/flake8 all use line length 100. Bandit skips B101/B404/B603.
50
+
51
+ ## Architecture
52
+
53
+ ### CLI dispatch (`qodo/cli/`)
54
+
55
+ `main(argv)` in `qodo/cli/__init__.py` is the single entry point. Flow:
56
+
57
+ 1. `_build_parser()` constructs the argparse tree and calls each command
58
+ module's `register(sub)` to attach its subparser + handler.
59
+ 2. `parse_args` resolves `args.func`; `_dispatch(args)` invokes it.
60
+ 3. A handler returns `None`/`int` on success and **raises `CliError` on
61
+ failure**. `_dispatch` catches `CliError` and routes it through `_output`;
62
+ any *other* exception is wrapped into a `CliError` so **no Python traceback
63
+ ever leaks to stderr**.
64
+
65
+ Each verb/noun lives in its own module under `qodo/cli/_commands/` exposing a
66
+ `register(sub)` function and a handler. Noun groups (like `cli`) add their own
67
+ nested subparsers inside `register`.
68
+
69
+ ### Stable contracts (don't break these — tests and the rubric pin them)
70
+
71
+ - **stdout/stderr split** (`_output.py`): command *results* go to stdout,
72
+ *errors and diagnostics* go to stderr. Never mixed, in text or JSON mode.
73
+ - **Structured errors** (`_errors.py`): every failure is a
74
+ `CliError{code, message, remediation}`. Text mode renders `error: <msg>` then
75
+ `hint: <remediation>`; the `hint:` prefix is required by the rubric.
76
+ - **Exit codes**: `0` success, `1` user error, `2` environment error, `3+`
77
+ reserved (`EXIT_*` constants in `_errors.py`).
78
+ - **`--json` everywhere**: every command accepts `--json`. Argparse-level errors
79
+ (unknown verb/flag) also honor it — `_CliArgumentParser.error()` routes through
80
+ `emit_error`, and `main` pre-scans raw argv into the class-level `_json_hint`
81
+ *before* `parse_args` so JSON mode is known even at parse time. New subparsers
82
+ must be built with `parser_class=_CliArgumentParser` to inherit this.
83
+ - **Explain catalog** (`qodo/explain/catalog.py`): markdown keyed by command-path
84
+ tuples; `resolve()` raises `CliError` on an unknown path. The test
85
+ `test_every_catalog_path_resolves` asserts every catalog entry resolves, so a
86
+ new command needs a matching catalog entry.
87
+
88
+ ### The agent-first rubric (`teken cli doctor . --strict`)
89
+
90
+ This gate is **load-bearing and CI-enforced** — it is why the scaffold verbs
91
+ exist and constrains how you add new ones:
92
+
93
+ - `learn` must be ≥ 200 chars and mention purpose, command map, exit codes,
94
+ `--json`, and `explain`.
95
+ - Any noun with action-verbs must also expose `overview` (the `cli` noun exists
96
+ solely to satisfy this — `cli overview` describes the CLI surface, distinct
97
+ from the global `overview` that describes the agent).
98
+ - Descriptive verbs (`overview`) must not hard-fail on a bad/missing target path
99
+ (hence `overview` accepts and ignores a positional `target`).
100
+ - `doctor` must emit the rubric-shaped contract
101
+ `{healthy, checks: [{id, passed, severity, message, remediation}]}`.
102
+
103
+ When you add real commands, keep `learn`, `overview`, and the explain catalog in
104
+ sync or this gate fails.
105
+
106
+ ### Mesh identity (`culture.yaml` + resident prompt file)
107
+
108
+ `culture.yaml` declares the agent: `suffix` (nick), `backend`, `model`. The
109
+ **backend is `colleague`**, so the resident prompt file is **`AGENTS.colleague.md`**,
110
+ *not* `CLAUDE.md`. `whoami`/`doctor` parse `culture.yaml` **without a YAML
111
+ dependency** (hand-rolled parser in `whoami.py`, reading the first agent block)
112
+ to keep runtime deps empty.
113
+
114
+ `doctor` enforces the backend→prompt-file map (mirrors `steward doctor`):
115
+ `claude → CLAUDE.md`, `colleague → AGENTS.colleague.md`, `acp → AGENTS.md`,
116
+ `gemini → GEMINI.md`, plus a `.claude/skills/`-present check. If you change the
117
+ backend in `culture.yaml`, teach `doctor._PROMPT_FILE` the new mapping or the
118
+ backend-consistency invariant breaks (`test_doctor_recognizes_declared_backend`
119
+ guards this).
120
+
121
+ > **Known drift:** several artifacts still say `backend: claude` / `CLAUDE.md`
122
+ > (README, `overview`'s `_ARTIFACTS`, the `_ROOT`/`_DOCTOR` explain entries,
123
+ > `docs/skill-sources.md`). The live source of truth is `culture.yaml` + the
124
+ > tests, which assert `backend: colleague`. Fix the stale text when you touch
125
+ > those files; don't trust them over `culture.yaml`.
126
+
127
+ ### Vendored skills (`.claude/skills/`)
128
+
129
+ The skill kit is **cite-don't-import**: vendored verbatim from **guildmaster**
130
+ (the AgentCulture skills supplier), provenance + re-sync procedure + tracked
131
+ local divergences in `docs/skill-sources.md`. **Do not reformat vendored
132
+ skills** — markdownlint and SonarCloud both exclude `.claude/skills/**`. Every
133
+ `SKILL.md` must carry `type: command` (load-bearing for the culture backend's
134
+ `core.skill_loader`, which silently skips files lacking it). To update a skill,
135
+ follow the re-sync steps in `docs/skill-sources.md` rather than hand-editing.
136
+
137
+ ## Workflow conventions
138
+
139
+ - **Version-bump on every PR** — even docs/config/CI-only changes. The CI
140
+ `version-check` job (PR events only) blocks merge if `pyproject.toml`'s
141
+ `version` matches `main`. Use the `version-bump` skill
142
+ (`python3 .claude/skills/version-bump/scripts/bump.py patch|minor|major`),
143
+ which also prepends a Keep-a-Changelog entry to `CHANGELOG.md`. The version is
144
+ single-sourced in `pyproject.toml`; `qodo/__init__.py` reads it via
145
+ `importlib.metadata` (no separate `__version__` literal to sync).
146
+ - **PR lane** — use the `cicd` skill (`.claude/skills/cicd/scripts/workflow.sh`,
147
+ a thin layer over `devex pr`). Branch naming: `fix/`, `feat/`, `docs/`,
148
+ `skill/`. The signature `- <nick> (Claude)` is auto-appended by `devex` from
149
+ `culture.yaml`. When implementation is done and tests pass, the standing
150
+ AgentCulture default is **push and open a PR** — don't pause on a
151
+ merge/keep/discard menu.
152
+ - **SonarCloud** gates CI when `SONAR_TOKEN` is set (project key
153
+ `agentculture_qodo-cli`); token-less repos and fork PRs stay green.
154
+ `relative_files = true` in `[tool.coverage.run]` is required so `coverage.xml`
155
+ emits repo-relative paths Sonar can map to `sonar.sources=qodo`. Coverage
156
+ `fail_under = 60`.
157
+
158
+ ## Adding a command
159
+
160
+ 1. Create `qodo/cli/_commands/<name>.py` with a handler and a `register(sub)`
161
+ (mirror `whoami.py`). Add a `--json` flag; raise `CliError` on failure.
162
+ 2. Wire it into `_build_parser()` in `qodo/cli/__init__.py`.
163
+ 3. Add a catalog entry in `qodo/explain/catalog.py` (and to `ENTRIES`).
164
+ 4. Add it to the verb lists in `learn.py` and `overview.py` so the rubric and
165
+ self-description stay consistent.
166
+ 5. Add tests under `tests/` and bump the version.
167
+
168
+ ## Renaming the package (when cloning as a template)
169
+
170
+ The scaffold name is hard-coded in ~100 places (package `qodo/`, dist `qodo-cli`,
171
+ the `_ISSUES_URL` in `qodo/cli/__init__.py`, the CLI command files, `tests/`,
172
+ `sonar-project.properties`, README). List every occurrence first:
173
+
174
+ ```bash
175
+ git grep -nI -e 'qodo-cli' -e 'qodo' -e 'agentculture/qodo-cli'
176
+ ```
177
+
178
+ Then rename the package dir, update `[project.scripts]`/`name` in
179
+ `pyproject.toml`, edit `culture.yaml` (`suffix`/`backend`), rewrite the resident
180
+ prompt file, and re-vendor only the skills you need (`docs/skill-sources.md`).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qodo-cli
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Community CLI and agent to manage Qodo — the AI code reviewer and Qodo's other agents (requires a Qodo subscription). Unofficial: not affiliated with, authorized, or endorsed by Qodo; the Qodo name and trademark belong to Qodo Ltd.
5
5
  Project-URL: Homepage, https://github.com/agentculture/qodo-cli
6
6
  Project-URL: Issues, https://github.com/agentculture/qodo-cli/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "qodo-cli"
3
- version = "0.3.1"
3
+ version = "0.3.2"
4
4
  description = "Community CLI and agent to manage Qodo — the AI code reviewer and Qodo's other agents (requires a Qodo subscription). Unofficial: not affiliated with, authorized, or endorsed by Qodo; the Qodo name and trademark belong to Qodo Ltd."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -9,6 +9,9 @@ context without chaining reads.
9
9
 
10
10
  from __future__ import annotations
11
11
 
12
+ # The console script is `qodo` while the CLI self-identifies (argparse prog) and
13
+ # the dist are `qodo-cli`. The agent-first rubric runs `explain <script-name>`,
14
+ # i.e. `explain qodo`, so the root entry is keyed under both spellings below.
12
15
  _ROOT = """\
13
16
  # qodo-cli
14
17
 
@@ -119,6 +122,7 @@ itself (distinct from the global `overview`, which describes the agent).
119
122
  ENTRIES: dict[tuple[str, ...], str] = {
120
123
  (): _ROOT,
121
124
  ("qodo-cli",): _ROOT,
125
+ ("qodo",): _ROOT, # console-script name; satisfies the rubric's `explain <self>` check
122
126
  ("whoami",): _WHOAMI,
123
127
  ("learn",): _LEARN,
124
128
  ("explain",): _EXPLAIN,
@@ -92,6 +92,14 @@ def test_explain_self(capsys: pytest.CaptureFixture[str]) -> None:
92
92
  assert capsys.readouterr().out.startswith("#")
93
93
 
94
94
 
95
+ def test_explain_console_script_name(capsys: pytest.CaptureFixture[str]) -> None:
96
+ # The agent-first rubric runs `explain <console-script-name>` (= `qodo`).
97
+ # Keep that resolvable even though the CLI self-identifies as `qodo-cli`.
98
+ rc = main(["explain", "qodo"])
99
+ assert rc == 0
100
+ assert capsys.readouterr().out.startswith("#")
101
+
102
+
95
103
  def test_explain_json(capsys: pytest.CaptureFixture[str]) -> None:
96
104
  rc = main(["explain", "whoami", "--json"])
97
105
  assert rc == 0
@@ -417,7 +417,7 @@ wheels = [
417
417
 
418
418
  [[package]]
419
419
  name = "qodo-cli"
420
- version = "0.3.1"
420
+ version = "0.3.2"
421
421
  source = { editable = "." }
422
422
 
423
423
  [package.dev-dependencies]
qodo_cli-0.3.1/CLAUDE.md DELETED
@@ -1,28 +0,0 @@
1
- # CLAUDE.md — seed / bootstrap placeholder
2
-
3
- > **This is a self-initializing seed, not a finished runtime prompt.**
4
- > Run `/init` (or describe the agent's domain to your AI assistant) to
5
- > re-initialize this file into a full runtime prompt, using the description
6
- > below and the scaffolded repo as context.
7
-
8
- ## Agent
9
-
10
- This repository hosts the **qodo-cli** agent.
11
-
12
- ## Description
13
-
14
- Community CLI and agent to manage Qodo — the AI code reviewer and Qodo's other agents (requires a Qodo subscription). Unofficial: not affiliated with, authorized, or endorsed by Qodo; the Qodo name and trademark belong to Qodo Ltd.
15
-
16
- ## Re-init instruction
17
-
18
- This file is a seed. To expand it into your full runtime prompt:
19
-
20
- 1. Open this repo in Claude Code (or your preferred AI assistant).
21
- 2. Run `/init` — the assistant will read the repo, incorporate the description
22
- above, and replace this seed with a complete `CLAUDE.md`.
23
- 3. Commit the result.
24
-
25
- Until you run `/init`, `qodo-cli` satisfies the `steward doctor`
26
- `prompt-file-present` and `backend-consistency` invariants (a `CLAUDE.md`
27
- exists and `culture.yaml` declares `backend: claude`) but the prompt is not
28
- yet tailored to this agent's domain.
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