codexspec 0.4.6__tar.gz → 0.4.7__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.
- {codexspec-0.4.6 → codexspec-0.4.7}/PKG-INFO +1 -1
- {codexspec-0.4.6 → codexspec-0.4.7}/pyproject.toml +1 -1
- {codexspec-0.4.6 → codexspec-0.4.7}/src/codexspec/__init__.py +2 -1
- {codexspec-0.4.6 → codexspec-0.4.7}/src/codexspec/commands/installer.py +40 -1
- {codexspec-0.4.6 → codexspec-0.4.7}/.gitignore +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/LICENSE +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/README.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/bash/check-i18n-completeness.sh +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/bash/check-i18n-structure.sh +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/bash/check-prerequisites.sh +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/bash/common.sh +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/bash/create-new-feature.sh +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/powershell/common.ps1 +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/powershell/create-new-feature.ps1 +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/python/README.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/python/claude_monitor.py +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/python/notify_telegram.py +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/python/tests/__init__.py +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/scripts/python/tests/test_notify.py +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/src/codexspec/commands/__init__.py +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/src/codexspec/i18n.py +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/src/codexspec/idea.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/src/codexspec/translator.py +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/analyze.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/check-i18n-semantics.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/checklist.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/clarify.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/commit-staged.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/commit.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/constitution.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/generate-spec.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/implement-tasks.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/plan-to-tasks.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/pr.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/review-plan.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/review-spec.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/review-tasks.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/spec-to-plan.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/specify.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/tasks-to-issues.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/commands/translate-docs.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/checklist-template.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/constitution-template.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/plan-template-detailed.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/plan-template-simple.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/spec-template-detailed.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/spec-template-simple.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/tasks-template-detailed.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/docs/tasks-template-simple.md +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/de.json +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/en.json +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/es.json +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/fr.json +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/ja.json +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/ko.json +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/pt-BR.json +0 -0
- {codexspec-0.4.6 → codexspec-0.4.7}/templates/translations/zh-CN.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codexspec
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.7
|
|
4
4
|
Summary: CodexSpec - A Spec-Driven Development (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
|
|
@@ -22,6 +22,7 @@ from .commands.installer import (
|
|
|
22
22
|
COMMANDS_SUBDIR,
|
|
23
23
|
detect_old_structure,
|
|
24
24
|
get_commands_metadata,
|
|
25
|
+
get_installed_commands_metadata,
|
|
25
26
|
install_commands_to_subdir,
|
|
26
27
|
migrate_old_commands,
|
|
27
28
|
should_update_commands,
|
|
@@ -340,7 +341,7 @@ def list_commands() -> None:
|
|
|
340
341
|
# Get user's language preference
|
|
341
342
|
language = get_project_language()
|
|
342
343
|
|
|
343
|
-
metadata =
|
|
344
|
+
metadata = get_installed_commands_metadata()
|
|
344
345
|
|
|
345
346
|
# Group by category
|
|
346
347
|
categories: dict[str, list] = {
|
|
@@ -8,7 +8,7 @@ import shutil
|
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
from typing import Optional, TypedDict
|
|
10
10
|
|
|
11
|
-
from codexspec.translator import load_translation_cache, translate_template_frontmatter
|
|
11
|
+
from codexspec.translator import extract_frontmatter_fields, load_translation_cache, translate_template_frontmatter
|
|
12
12
|
|
|
13
13
|
# Constants
|
|
14
14
|
COMMANDS_SUBDIR = "codexspec" # Subdirectory name for commands
|
|
@@ -163,6 +163,45 @@ def get_commands_metadata() -> list[CommandMetadata]:
|
|
|
163
163
|
]
|
|
164
164
|
|
|
165
165
|
|
|
166
|
+
def get_installed_commands_metadata() -> list[CommandMetadata]:
|
|
167
|
+
"""Get metadata from installed command files with fallback to defaults.
|
|
168
|
+
|
|
169
|
+
This function reads the frontmatter from installed command files to get
|
|
170
|
+
translated descriptions. If a command file doesn't exist or doesn't have
|
|
171
|
+
a description in its frontmatter, falls back to the hardcoded default.
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
List of CommandMetadata with descriptions from installed files when available.
|
|
175
|
+
"""
|
|
176
|
+
# Get hardcoded default metadata
|
|
177
|
+
default_metadata = get_commands_metadata()
|
|
178
|
+
|
|
179
|
+
# Find installed commands directory
|
|
180
|
+
commands_dir = Path.cwd() / ".claude" / "commands" / COMMANDS_SUBDIR
|
|
181
|
+
|
|
182
|
+
if not commands_dir.exists():
|
|
183
|
+
return default_metadata
|
|
184
|
+
|
|
185
|
+
result = []
|
|
186
|
+
for cmd in default_metadata:
|
|
187
|
+
cmd_file = commands_dir / cmd["file_name"]
|
|
188
|
+
|
|
189
|
+
if cmd_file.exists():
|
|
190
|
+
# Read frontmatter from installed file
|
|
191
|
+
content = cmd_file.read_text(encoding="utf-8")
|
|
192
|
+
fields = extract_frontmatter_fields(content)
|
|
193
|
+
|
|
194
|
+
if fields.get("description"):
|
|
195
|
+
# Use translated description from installed file
|
|
196
|
+
result.append({**cmd, "description": fields["description"]})
|
|
197
|
+
else:
|
|
198
|
+
result.append(cmd)
|
|
199
|
+
else:
|
|
200
|
+
result.append(cmd)
|
|
201
|
+
|
|
202
|
+
return result
|
|
203
|
+
|
|
204
|
+
|
|
166
205
|
def detect_old_structure(claude_dir: Path) -> list[Path]:
|
|
167
206
|
"""Detect old structure command files that need migration.
|
|
168
207
|
|
|
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
|