codexspec 0.6.4__tar.gz → 0.6.5__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 (57) hide show
  1. {codexspec-0.6.4 → codexspec-0.6.5}/PKG-INFO +1 -1
  2. {codexspec-0.6.4 → codexspec-0.6.5}/pyproject.toml +1 -1
  3. {codexspec-0.6.4 → codexspec-0.6.5}/src/codexspec/__init__.py +12 -6
  4. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/implement-tasks.md +98 -5
  5. {codexspec-0.6.4 → codexspec-0.6.5}/.gitignore +0 -0
  6. {codexspec-0.6.4 → codexspec-0.6.5}/LICENSE +0 -0
  7. {codexspec-0.6.4 → codexspec-0.6.5}/README.md +0 -0
  8. {codexspec-0.6.4 → codexspec-0.6.5}/codexspec-icon.svg +0 -0
  9. {codexspec-0.6.4 → codexspec-0.6.5}/codexspec-logo-dark.svg +0 -0
  10. {codexspec-0.6.4 → codexspec-0.6.5}/codexspec-logo-light.svg +0 -0
  11. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/bash/check-i18n-completeness.sh +0 -0
  12. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/bash/check-i18n-structure.sh +0 -0
  13. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/bash/check-prerequisites.sh +0 -0
  14. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/bash/common.sh +0 -0
  15. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/bash/create-new-feature.sh +0 -0
  16. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/powershell/check-prerequisites.ps1 +0 -0
  17. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/powershell/common.ps1 +0 -0
  18. {codexspec-0.6.4 → codexspec-0.6.5}/scripts/powershell/create-new-feature.ps1 +0 -0
  19. {codexspec-0.6.4 → codexspec-0.6.5}/src/codexspec/commands/__init__.py +0 -0
  20. {codexspec-0.6.4 → codexspec-0.6.5}/src/codexspec/commands/installer.py +0 -0
  21. {codexspec-0.6.4 → codexspec-0.6.5}/src/codexspec/i18n.py +0 -0
  22. {codexspec-0.6.4 → codexspec-0.6.5}/src/codexspec/idea.md +0 -0
  23. {codexspec-0.6.4 → codexspec-0.6.5}/src/codexspec/translator.py +0 -0
  24. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/analyze.md +0 -0
  25. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/checklist.md +0 -0
  26. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/clarify.md +0 -0
  27. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/commit-staged.md +0 -0
  28. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/config.md +0 -0
  29. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/constitution.md +0 -0
  30. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/generate-spec.md +0 -0
  31. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/plan-to-tasks.md +0 -0
  32. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/pr.md +0 -0
  33. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/quick.md +0 -0
  34. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/review-code.md +0 -0
  35. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/review-plan.md +0 -0
  36. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/review-spec.md +0 -0
  37. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/review-tasks.md +0 -0
  38. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/spec-to-plan.md +0 -0
  39. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/specify.md +0 -0
  40. {codexspec-0.6.4 → codexspec-0.6.5}/templates/commands/tasks-to-issues.md +0 -0
  41. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/checklist-template.md +0 -0
  42. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/constitution-template.md +0 -0
  43. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/plan-template-detailed.md +0 -0
  44. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/plan-template-simple.md +0 -0
  45. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/requirements-template.md +0 -0
  46. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/spec-template-detailed.md +0 -0
  47. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/spec-template-simple.md +0 -0
  48. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/tasks-template-detailed.md +0 -0
  49. {codexspec-0.6.4 → codexspec-0.6.5}/templates/docs/tasks-template-simple.md +0 -0
  50. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/de.json +0 -0
  51. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/en.json +0 -0
  52. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/es.json +0 -0
  53. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/fr.json +0 -0
  54. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/ja.json +0 -0
  55. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/ko.json +0 -0
  56. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/pt-BR.json +0 -0
  57. {codexspec-0.6.4 → codexspec-0.6.5}/templates/translations/zh-CN.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codexspec
3
- Version: 0.6.4
3
+ Version: 0.6.5
4
4
  Summary: CodexSpec - A Requirements-First SDD toolkit for Claude Code
5
5
  Project-URL: Homepage, https://github.com/Zts0hg/codexspec
6
6
  Project-URL: Repository, https://github.com/Zts0hg/codexspec
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "codexspec"
3
- version = "0.6.4"
3
+ version = "0.6.5"
4
4
  description = "CodexSpec - A Requirements-First SDD toolkit for Claude Code"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -471,9 +471,11 @@ def init(
471
471
  "--force",
472
472
  "-f",
473
473
  help=(
474
- "Overwrite existing files and auto-confirm prompts (skips the language "
475
- "prompt and command-update/migration confirms). Language config is updated "
476
- "surgically, never fully regenerated."
474
+ "Overwrite regenerable files (commands/scripts) and auto-confirm prompts "
475
+ "(skips the language prompt and command-update/migration confirms). "
476
+ "User-authored content is preserved: language config is updated surgically "
477
+ "and an existing CLAUDE.md body is never overwritten (only the constitution "
478
+ "@import is prepended if missing)."
477
479
  ),
478
480
  ),
479
481
  no_git: bool = typer.Option(
@@ -772,15 +774,19 @@ def init(
772
774
  console.print(f"[dim]{translate('cli.init.language_dimensions_hint', normalized_lang)}[/dim]")
773
775
 
774
776
  # Create CLAUDE.md
777
+ # CLAUDE.md is user-authored content (like the constitution), not a
778
+ # regenerable artifact (like commands/scripts). Never overwrite an existing
779
+ # body -- even under --force. --force only auto-confirms the one safe,
780
+ # idempotent change: prepending the constitution @import if it is missing.
775
781
  claude_md = target_dir / "CLAUDE.md"
776
- if not claude_md.exists() or force:
782
+ if not claude_md.exists():
777
783
  project_name = target_dir.name
778
784
  claude_md.write_text(_get_claude_md_content(project_name), encoding="utf-8")
779
785
  console.print(f"[green]{translate('cli.init.created_file', normalized_lang, file='CLAUDE.md')}[/green]")
780
786
  else:
781
- # Check if existing CLAUDE.md has compliance section
787
+ # Existing CLAUDE.md: ensure the compliance @import, never clobber the body.
782
788
  if not has_compliance_section(claude_md):
783
- if confirm_add_compliance(normalized_lang):
789
+ if force or confirm_add_compliance(normalized_lang):
784
790
  prepend_compliance_section(claude_md)
785
791
  console.print(f"[green]{translate('cli.init.compliance_added', normalized_lang)}[/green]")
786
792
 
@@ -133,10 +133,103 @@ When encountering problems, create/update `issues.md` in the same directory as `
133
133
  - **Status**: Blocked / Workaround Found / Needs Discussion
134
134
  ```
135
135
 
136
- ### 6. Completion
136
+ ### 6. Pre-Review Baseline
137
137
 
138
- After all tasks:
138
+ After all tasks are implemented:
139
139
 
140
- - Run full test suite (if applicable)
141
- - Final commit if needed
142
- - Report completion summary with files modified
140
+ - Run the full test suite.
141
+ - Confirm the suite is green. This green state is the baseline for the Final
142
+ Code Review Loop; no auto-fix may regress it. If the suite is already red at
143
+ this point, stop and fix the implementation before reviewing.
144
+
145
+ ### 7. Final Code Review Loop
146
+
147
+ After the baseline is green, review the implemented code and auto-fix verified
148
+ defects. This mirrors the `review-spec` / `review-plan` / `review-tasks` loops
149
+ the sibling generation commands run.
150
+
151
+ #### 7.1 Determine the Review Target
152
+
153
+ Review only the analyzable code changed by this implementation, not the whole
154
+ repository and not per task. Compute the candidate file set:
155
+
156
+ ```
157
+ git diff --name-only $(git merge-base HEAD <main>)..HEAD
158
+ git diff --name-only # uncommitted tracked changes
159
+ git ls-files --others --exclude-standard # untracked files
160
+ ```
161
+
162
+ `<main>` is the project's default branch, resolved from `git.main_branches` in
163
+ `.codexspec/config.yml` (default: `main`, `master`, `develop`).
164
+
165
+ Then filter the candidate set:
166
+
167
+ - Keep only analyzable source extensions: `.py .ts .tsx .js .jsx .go .rs .java
168
+ .kt .kts .rb .sh .bash .zsh .c .h .cpp .hpp .cc .cxx .cs .swift .php`.
169
+ - Exclude `.codexspec/specs/` and generated/vendored paths (e.g. `dist/`,
170
+ lockfiles, `.venv/`).
171
+
172
+ If the filtered set is empty (e.g. the implementation produced only docs,
173
+ config, or assets), report "no code to review", skip this loop, and proceed to
174
+ step 8.
175
+
176
+ Fallback: if git is unavailable or the current branch is not a feature branch
177
+ (so the diff base cannot be determined), review the project's primary source
178
+ directory as `/codexspec:review-code` would by default, and explicitly note the
179
+ degraded fidelity (the review may include pre-existing code).
180
+
181
+ #### 7.2 Invoke the Review
182
+
183
+ Invoke `/codexspec:review-code <filtered-paths>`.
184
+
185
+ `/codexspec:review-code` is **review-only**; it produces findings and scores but
186
+ does not edit code. Apply every fix **yourself**, under this command's tool
187
+ scope (which includes `Edit`/`Write` and running the test suite via `Bash`).
188
+
189
+ #### 7.3 Auto-Fix Scope
190
+
191
+ - Auto-fix **CRITICAL, HIGH, and MEDIUM** findings only.
192
+ - **LOW** (suggestion) findings are report-only; never auto-fix them.
193
+ - A **MEDIUM** finding is auto-fixed only when it is grounded in
194
+ `.codexspec/memory/constitution.md` and the confirmed requirements/spec, and
195
+ it concerns **maintainability, readability, or testability**. Ungrounded or
196
+ purely stylistic MEDIUM findings are report-only.
197
+ - Do not auto-fix advisories or design opportunities, and do not introduce any
198
+ new product decision.
199
+
200
+ #### 7.4 Test-Safe Fixes (never ship red)
201
+
202
+ Every fix must be test-safe. A fix that breaks tests is, by definition, an
203
+ incorrect change — it is never shipped and never silently skipped.
204
+
205
+ - **Functional defects** (logic, correctness, security): follow TDD — add a
206
+ failing test that reproduces the defect (red), apply the fix until that test
207
+ passes (green), then refactor while tests stay green.
208
+ - **Non-functional fixes** (refactors for maintainability, readability,
209
+ testability): run the suite before and after the change. If the change turns
210
+ any test red, revert it, confirm the suite is green again, and re-attempt the
211
+ refactor.
212
+ - If a fix cannot be made green after retry, treat it as **unresolved** and stop
213
+ (see 7.5).
214
+
215
+ #### 7.5 Loop Bounds and Stop Conditions
216
+
217
+ - Run at most **two** fix-and-review rounds. (The per-fix TDD retry in 7.4
218
+ happens within a round; the two-round limit bounds overall effort.)
219
+ - Stop when a defect repeats, remains unresolved, or requires a user or
220
+ architecture decision.
221
+ - After each green round, commit the fixes (see step 8).
222
+
223
+ #### 7.6 Terminal Status
224
+
225
+ - If CRITICAL or HIGH defects remain unresolved after the maximum rounds, the
226
+ status is **"needs work"** — do not claim success.
227
+ - Otherwise report the review outcome: scores, items fixed, items deferred, and
228
+ the final test status.
229
+
230
+ ### 8. Final Report and Commit
231
+
232
+ - Commit any review-driven changes from step 7 that are not already committed.
233
+ - Report the completion summary: files modified, review status (scores, items
234
+ fixed, items deferred, final test status), and the overall status (success or
235
+ "needs work").
File without changes
File without changes
File without changes
File without changes