codexspec 0.6.0__tar.gz → 0.6.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.
- {codexspec-0.6.0 → codexspec-0.6.2}/.gitignore +4 -9
- {codexspec-0.6.0 → codexspec-0.6.2}/PKG-INFO +29 -23
- {codexspec-0.6.0 → codexspec-0.6.2}/README.md +26 -20
- codexspec-0.6.2/codexspec-logo-dark.svg +36 -0
- codexspec-0.6.2/codexspec-logo-light.svg +36 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/pyproject.toml +13 -5
- {codexspec-0.6.0 → codexspec-0.6.2}/src/codexspec/__init__.py +58 -7
- {codexspec-0.6.0 → codexspec-0.6.2}/src/codexspec/commands/installer.py +10 -10
- {codexspec-0.6.0 → codexspec-0.6.2}/src/codexspec/i18n.py +123 -15
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/analyze.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/checklist.md +5 -5
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/clarify.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/config.md +12 -8
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/constitution.md +5 -4
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/generate-spec.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/implement-tasks.md +5 -5
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/plan-to-tasks.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/quick.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/review-code.md +5 -5
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/review-plan.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/review-spec.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/review-tasks.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/spec-to-plan.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/specify.md +6 -1
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/tasks-to-issues.md +5 -5
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/de.json +20 -18
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/en.json +26 -24
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/es.json +20 -18
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/fr.json +20 -18
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/ja.json +20 -18
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/ko.json +20 -18
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/pt-BR.json +20 -18
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/translations/zh-CN.json +20 -18
- codexspec-0.6.0/codexspec-logo-dark.svg +0 -34
- codexspec-0.6.0/codexspec-logo-light.svg +0 -34
- codexspec-0.6.0/scripts/python/README.md +0 -91
- codexspec-0.6.0/scripts/python/claude_auto_responder.en.md +0 -545
- codexspec-0.6.0/scripts/python/claude_auto_responder.py +0 -967
- codexspec-0.6.0/scripts/python/claude_auto_responder.zh-CN.md +0 -545
- codexspec-0.6.0/scripts/python/claude_auto_responder_demo.en.md +0 -139
- codexspec-0.6.0/scripts/python/claude_auto_responder_demo.zh-CN.md +0 -139
- codexspec-0.6.0/scripts/python/claude_ctl.py +0 -392
- codexspec-0.6.0/scripts/python/claude_monitor.py +0 -1240
- codexspec-0.6.0/scripts/python/notify_telegram.py +0 -950
- {codexspec-0.6.0 → codexspec-0.6.2}/LICENSE +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/codexspec-icon.svg +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/bash/check-i18n-completeness.sh +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/bash/check-i18n-structure.sh +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/bash/check-prerequisites.sh +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/bash/common.sh +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/bash/create-new-feature.sh +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/powershell/common.ps1 +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/scripts/powershell/create-new-feature.ps1 +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/src/codexspec/commands/__init__.py +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/src/codexspec/idea.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/src/codexspec/translator.py +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/commit-staged.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/commands/pr.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/checklist-template.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/constitution-template.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/plan-template-detailed.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/plan-template-simple.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/requirements-template.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/spec-template-detailed.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/spec-template-simple.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/tasks-template-detailed.md +0 -0
- {codexspec-0.6.0 → codexspec-0.6.2}/templates/docs/tasks-template-simple.md +0 -0
|
@@ -7,15 +7,10 @@
|
|
|
7
7
|
/local-ref/
|
|
8
8
|
|
|
9
9
|
# Project specific
|
|
10
|
-
# .codexspec/ holds per-project SDD state (specs, plans, tasks, scripts, config
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
.codexspec/*
|
|
15
|
-
!.codexspec/.gitkeep
|
|
16
|
-
!.codexspec/memory/
|
|
17
|
-
.codexspec/memory/*
|
|
18
|
-
!.codexspec/memory/constitution.md
|
|
10
|
+
# .codexspec/ holds per-project SDD state (specs, plans, tasks, scripts, config,
|
|
11
|
+
# memory). The entire directory is tracked in version control so the project's
|
|
12
|
+
# full SDD history is public and reproducible. Add per-file ignores below only
|
|
13
|
+
# if a specific artifact must stay local (none currently).
|
|
19
14
|
|
|
20
15
|
# Promotion content archive (local drafts, not meant for the repo)
|
|
21
16
|
promotion-posts.md
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codexspec
|
|
3
|
-
Version: 0.6.
|
|
4
|
-
Summary: CodexSpec - A
|
|
3
|
+
Version: 0.6.2
|
|
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
|
|
7
7
|
Project-URL: Issues, https://github.com/Zts0hg/codexspec/issues
|
|
8
8
|
Author: CodexSpec Team
|
|
9
9
|
License: MIT
|
|
10
10
|
License-File: LICENSE
|
|
11
|
-
Keywords: ai,claude,cli,sdd,spec-driven-development
|
|
11
|
+
Keywords: ai,claude,cli,requirements-driven,requirements-first,sdd,spec-driven-development
|
|
12
12
|
Classifier: Development Status :: 3 - Alpha
|
|
13
13
|
Classifier: Environment :: Console
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
@@ -51,18 +51,24 @@ Description-Content-Type: text/markdown
|
|
|
51
51
|
</picture>
|
|
52
52
|
</div>
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
<h1 align="center">CodexSpec</h1>
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
<p align="center">
|
|
57
|
+
<b>English</b> | <a href="README.zh-CN.md">中文</a> | <a href="README.ja.md">日本語</a> | <a href="README.es.md">Español</a> | <a href="README.pt-BR.md">Português</a> | <a href="README.ko.md">한국어</a> | <a href="README.de.md">Deutsch</a> | <a href="README.fr.md">Français</a>
|
|
58
|
+
</p>
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
<p align="center">
|
|
61
|
+
<a href="https://pypi.org/project/codexspec/"><img src="https://img.shields.io/pypi/v/codexspec.svg?style=for-the-badge" alt="PyPI version"></a>
|
|
62
|
+
<a href="https://pypi.org/project/codexspec/"><img src="https://img.shields.io/pypi/pyversions/codexspec.svg?style=for-the-badge" alt="Python versions"></a>
|
|
63
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="License: MIT"></a>
|
|
64
|
+
</p>
|
|
61
65
|
|
|
62
|
-
|
|
66
|
+
<p align="center">
|
|
67
|
+
<strong>A Requirements-First SDD toolkit for Claude Code</strong>
|
|
68
|
+
</p>
|
|
63
69
|
|
|
64
|
-
CodexSpec helps you build high-quality software through
|
|
65
|
-
Instead of jumping straight to code, you
|
|
70
|
+
CodexSpec helps you build high-quality software through **Requirements-First Spec-Driven Development (SDD)** — confirmed requirements come first, and nothing is binding until you explicitly confirm it.
|
|
71
|
+
Instead of jumping straight to code, you confirm **what** to build and **why** before deciding **how** to build it.
|
|
66
72
|
|
|
67
73
|
[📖 Documentation](https://zts0hg.github.io/codexspec/) | [中文文档](https://zts0hg.github.io/codexspec/zh/) | [日本語ドキュメント](https://zts0hg.github.io/codexspec/ja/) | [한국어 문서](https://zts0hg.github.io/codexspec/ko/) | [Documentación](https://zts0hg.github.io/codexspec/es/) | [Documentation](https://zts0hg.github.io/codexspec/fr/) | [Dokumentation](https://zts0hg.github.io/codexspec/de/) | [Documentação](https://zts0hg.github.io/codexspec/pt-BR/)
|
|
68
74
|
|
|
@@ -71,7 +77,7 @@ Instead of jumping straight to code, you define **what** to build and **why** be
|
|
|
71
77
|
## Table of Contents
|
|
72
78
|
|
|
73
79
|
- [Why Choose CodexSpec?](#why-choose-codexspec)
|
|
74
|
-
- [What is
|
|
80
|
+
- [What is Requirements-First SDD?](#what-is-requirements-first-sdd)
|
|
75
81
|
- [Design Philosophy: Human-AI Collaboration](#design-philosophy-human-ai-collaboration)
|
|
76
82
|
- [30-Second Quick Start](#-30-second-quick-start)
|
|
77
83
|
- [Installation](#installation)
|
|
@@ -96,23 +102,23 @@ Why use CodexSpec on top of Claude Code? Here's the comparison:
|
|
|
96
102
|
|
|
97
103
|
---
|
|
98
104
|
|
|
99
|
-
## What is
|
|
105
|
+
## What is Requirements-First SDD?
|
|
100
106
|
|
|
101
|
-
**Spec-Driven Development (SDD)**
|
|
107
|
+
**Requirements-First SDD** is the Spec-Driven Development (SDD) methodology with one upgrade: **confirmed requirements are the highest-priority authority**. You define and confirm *what* to build and *why* before deciding *how* — and nothing becomes binding until you explicitly confirm it.
|
|
102
108
|
|
|
103
109
|
```
|
|
104
110
|
Traditional: Idea → Code → Debug → Rewrite
|
|
105
111
|
SDD: Idea → Confirmed Requirements → Spec → Plan → Tasks → Code
|
|
106
112
|
```
|
|
107
113
|
|
|
108
|
-
**Why use SDD?**
|
|
114
|
+
**Why use Requirements-First SDD?**
|
|
109
115
|
|
|
110
|
-
| Problem | SDD Solution
|
|
111
|
-
| -------------------- |
|
|
112
|
-
| AI misunderstandings |
|
|
113
|
-
| Missing requirements | Interactive clarification
|
|
114
|
-
| Architecture drift | Review checkpoints ensure correct direction
|
|
115
|
-
| Wasted rework | Problems are found before code is written
|
|
116
|
+
| Problem | Requirements-First SDD Solution |
|
|
117
|
+
| -------------------- | -------------------------------------------------------- |
|
|
118
|
+
| AI misunderstandings | Confirmed requirements tell AI "what to build"; AI stops guessing |
|
|
119
|
+
| Missing requirements | Interactive clarification + a confirmation gate surface edge cases |
|
|
120
|
+
| Architecture drift | Review checkpoints ensure correct direction |
|
|
121
|
+
| Wasted rework | Problems are found and confirmed before code is written |
|
|
116
122
|
|
|
117
123
|
<details>
|
|
118
124
|
<summary>✨ Key Features</summary>
|
|
@@ -595,7 +601,7 @@ CodexSpec is inspired by GitHub spec-kit with key differences:
|
|
|
595
601
|
|
|
596
602
|
| Feature | spec-kit | CodexSpec |
|
|
597
603
|
| ------------------- | ----------------------- | --------------------------------------------- |
|
|
598
|
-
| Core Philosophy | Spec-driven development |
|
|
604
|
+
| Core Philosophy | Spec-driven development | Requirements-First SDD + Human-AI collaboration |
|
|
599
605
|
| CLI Name | `specify` | `codexspec` |
|
|
600
606
|
| Primary AI | Multi-agent support | Focused on Claude Code |
|
|
601
607
|
| Constitution System | Basic | Full constitution + cross-artifact validation |
|
|
@@ -614,7 +620,7 @@ CodexSpec is inspired by GitHub spec-kit with key differences:
|
|
|
614
620
|
1. **Review-First Culture**: Every major artifact has a dedicated review command
|
|
615
621
|
2. **Constitution Governance**: Principles are validated, not just documented
|
|
616
622
|
3. **Evidence-Based Review**: Defects require concrete evidence; advisory design ideas do not affect acceptance
|
|
617
|
-
4. **
|
|
623
|
+
4. **Confirmation Gate**: Requirements, specs, plans, and tasks become binding only after explicit human confirmation
|
|
618
624
|
|
|
619
625
|
---
|
|
620
626
|
|
|
@@ -6,18 +6,24 @@
|
|
|
6
6
|
</picture>
|
|
7
7
|
</div>
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
<h1 align="center">CodexSpec</h1>
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<p align="center">
|
|
12
|
+
<b>English</b> | <a href="README.zh-CN.md">中文</a> | <a href="README.ja.md">日本語</a> | <a href="README.es.md">Español</a> | <a href="README.pt-BR.md">Português</a> | <a href="README.ko.md">한국어</a> | <a href="README.de.md">Deutsch</a> | <a href="README.fr.md">Français</a>
|
|
13
|
+
</p>
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
<p align="center">
|
|
16
|
+
<a href="https://pypi.org/project/codexspec/"><img src="https://img.shields.io/pypi/v/codexspec.svg?style=for-the-badge" alt="PyPI version"></a>
|
|
17
|
+
<a href="https://pypi.org/project/codexspec/"><img src="https://img.shields.io/pypi/pyversions/codexspec.svg?style=for-the-badge" alt="Python versions"></a>
|
|
18
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="License: MIT"></a>
|
|
19
|
+
</p>
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
<p align="center">
|
|
22
|
+
<strong>A Requirements-First SDD toolkit for Claude Code</strong>
|
|
23
|
+
</p>
|
|
18
24
|
|
|
19
|
-
CodexSpec helps you build high-quality software through
|
|
20
|
-
Instead of jumping straight to code, you
|
|
25
|
+
CodexSpec helps you build high-quality software through **Requirements-First Spec-Driven Development (SDD)** — confirmed requirements come first, and nothing is binding until you explicitly confirm it.
|
|
26
|
+
Instead of jumping straight to code, you confirm **what** to build and **why** before deciding **how** to build it.
|
|
21
27
|
|
|
22
28
|
[📖 Documentation](https://zts0hg.github.io/codexspec/) | [中文文档](https://zts0hg.github.io/codexspec/zh/) | [日本語ドキュメント](https://zts0hg.github.io/codexspec/ja/) | [한국어 문서](https://zts0hg.github.io/codexspec/ko/) | [Documentación](https://zts0hg.github.io/codexspec/es/) | [Documentation](https://zts0hg.github.io/codexspec/fr/) | [Dokumentation](https://zts0hg.github.io/codexspec/de/) | [Documentação](https://zts0hg.github.io/codexspec/pt-BR/)
|
|
23
29
|
|
|
@@ -26,7 +32,7 @@ Instead of jumping straight to code, you define **what** to build and **why** be
|
|
|
26
32
|
## Table of Contents
|
|
27
33
|
|
|
28
34
|
- [Why Choose CodexSpec?](#why-choose-codexspec)
|
|
29
|
-
- [What is
|
|
35
|
+
- [What is Requirements-First SDD?](#what-is-requirements-first-sdd)
|
|
30
36
|
- [Design Philosophy: Human-AI Collaboration](#design-philosophy-human-ai-collaboration)
|
|
31
37
|
- [30-Second Quick Start](#-30-second-quick-start)
|
|
32
38
|
- [Installation](#installation)
|
|
@@ -51,23 +57,23 @@ Why use CodexSpec on top of Claude Code? Here's the comparison:
|
|
|
51
57
|
|
|
52
58
|
---
|
|
53
59
|
|
|
54
|
-
## What is
|
|
60
|
+
## What is Requirements-First SDD?
|
|
55
61
|
|
|
56
|
-
**Spec-Driven Development (SDD)**
|
|
62
|
+
**Requirements-First SDD** is the Spec-Driven Development (SDD) methodology with one upgrade: **confirmed requirements are the highest-priority authority**. You define and confirm *what* to build and *why* before deciding *how* — and nothing becomes binding until you explicitly confirm it.
|
|
57
63
|
|
|
58
64
|
```
|
|
59
65
|
Traditional: Idea → Code → Debug → Rewrite
|
|
60
66
|
SDD: Idea → Confirmed Requirements → Spec → Plan → Tasks → Code
|
|
61
67
|
```
|
|
62
68
|
|
|
63
|
-
**Why use SDD?**
|
|
69
|
+
**Why use Requirements-First SDD?**
|
|
64
70
|
|
|
65
|
-
| Problem | SDD Solution
|
|
66
|
-
| -------------------- |
|
|
67
|
-
| AI misunderstandings |
|
|
68
|
-
| Missing requirements | Interactive clarification
|
|
69
|
-
| Architecture drift | Review checkpoints ensure correct direction
|
|
70
|
-
| Wasted rework | Problems are found before code is written
|
|
71
|
+
| Problem | Requirements-First SDD Solution |
|
|
72
|
+
| -------------------- | -------------------------------------------------------- |
|
|
73
|
+
| AI misunderstandings | Confirmed requirements tell AI "what to build"; AI stops guessing |
|
|
74
|
+
| Missing requirements | Interactive clarification + a confirmation gate surface edge cases |
|
|
75
|
+
| Architecture drift | Review checkpoints ensure correct direction |
|
|
76
|
+
| Wasted rework | Problems are found and confirmed before code is written |
|
|
71
77
|
|
|
72
78
|
<details>
|
|
73
79
|
<summary>✨ Key Features</summary>
|
|
@@ -550,7 +556,7 @@ CodexSpec is inspired by GitHub spec-kit with key differences:
|
|
|
550
556
|
|
|
551
557
|
| Feature | spec-kit | CodexSpec |
|
|
552
558
|
| ------------------- | ----------------------- | --------------------------------------------- |
|
|
553
|
-
| Core Philosophy | Spec-driven development |
|
|
559
|
+
| Core Philosophy | Spec-driven development | Requirements-First SDD + Human-AI collaboration |
|
|
554
560
|
| CLI Name | `specify` | `codexspec` |
|
|
555
561
|
| Primary AI | Multi-agent support | Focused on Claude Code |
|
|
556
562
|
| Constitution System | Basic | Full constitution + cross-artifact validation |
|
|
@@ -569,7 +575,7 @@ CodexSpec is inspired by GitHub spec-kit with key differences:
|
|
|
569
575
|
1. **Review-First Culture**: Every major artifact has a dedicated review command
|
|
570
576
|
2. **Constitution Governance**: Principles are validated, not just documented
|
|
571
577
|
3. **Evidence-Based Review**: Defects require concrete evidence; advisory design ideas do not affect acceptance
|
|
572
|
-
4. **
|
|
578
|
+
4. **Confirmation Gate**: Requirements, specs, plans, and tasks become binding only after explicit human confirmation
|
|
573
579
|
|
|
574
580
|
---
|
|
575
581
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<svg viewBox="0 0 420 96" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.mono {
|
|
5
|
+
font-family: 'JetBrains Mono','Fira Code','SF Mono','Consolas','Courier New',monospace;
|
|
6
|
+
}
|
|
7
|
+
</style>
|
|
8
|
+
</defs>
|
|
9
|
+
|
|
10
|
+
<!-- Background -->
|
|
11
|
+
<rect width="420" height="96" rx="12" fill="#0d1117"/>
|
|
12
|
+
|
|
13
|
+
<!-- ── Wordmark: {code} × <spec> ── -->
|
|
14
|
+
|
|
15
|
+
<!-- { -->
|
|
16
|
+
<text class="mono" x="51" y="47" font-size="40" font-weight="700" fill="#58a6ff" dominant-baseline="middle">{</text>
|
|
17
|
+
<!-- code -->
|
|
18
|
+
<text class="mono" x="77" y="47" font-size="33" font-weight="500" fill="#e6edf3" dominant-baseline="middle">code</text>
|
|
19
|
+
<!-- } -->
|
|
20
|
+
<text class="mono" x="160" y="47" font-size="40" font-weight="700" fill="#58a6ff" dominant-baseline="middle">}</text>
|
|
21
|
+
|
|
22
|
+
<!-- × operator -->
|
|
23
|
+
<text class="mono" x="210" y="46" font-size="26" font-weight="700" fill="#f0883e" dominant-baseline="middle" text-anchor="middle">×</text>
|
|
24
|
+
|
|
25
|
+
<!-- < -->
|
|
26
|
+
<text class="mono" x="236" y="47" font-size="40" font-weight="700" fill="#3fb950" dominant-baseline="middle"><</text>
|
|
27
|
+
<!-- spec -->
|
|
28
|
+
<text class="mono" x="262" y="47" font-size="33" font-weight="500" fill="#e6edf3" dominant-baseline="middle">spec</text>
|
|
29
|
+
<!-- > -->
|
|
30
|
+
<text class="mono" x="345" y="47" font-size="40" font-weight="700" fill="#3fb950" dominant-baseline="middle">></text>
|
|
31
|
+
|
|
32
|
+
<!-- Tagline: three words centered under the wordmark columns {code} × <spec> -->
|
|
33
|
+
<text class="mono" x="118.5" y="75" font-size="9" font-weight="400" fill="#6e7681" text-anchor="middle" letter-spacing="2.8">SPEC</text>
|
|
34
|
+
<text class="mono" x="211.0" y="75" font-size="9" font-weight="400" fill="#6e7681" text-anchor="middle" letter-spacing="2.8">DRIVEN</text>
|
|
35
|
+
<text class="mono" x="304.0" y="75" font-size="9" font-weight="400" fill="#6e7681" text-anchor="middle" letter-spacing="2.8">DEVELOPMENT</text>
|
|
36
|
+
</svg>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<svg viewBox="0 0 420 96" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.mono {
|
|
5
|
+
font-family: 'JetBrains Mono','Fira Code','SF Mono','Consolas','Courier New',monospace;
|
|
6
|
+
}
|
|
7
|
+
</style>
|
|
8
|
+
</defs>
|
|
9
|
+
|
|
10
|
+
<!-- Background -->
|
|
11
|
+
<rect width="420" height="96" rx="12" fill="#ffffff" stroke="#d0d7de" stroke-width="1"/>
|
|
12
|
+
|
|
13
|
+
<!-- ── Wordmark: {code} × <spec> ── -->
|
|
14
|
+
|
|
15
|
+
<!-- { -->
|
|
16
|
+
<text class="mono" x="51" y="47" font-size="40" font-weight="700" fill="#0969da" dominant-baseline="middle">{</text>
|
|
17
|
+
<!-- code -->
|
|
18
|
+
<text class="mono" x="77" y="47" font-size="33" font-weight="500" fill="#1f2328" dominant-baseline="middle">code</text>
|
|
19
|
+
<!-- } -->
|
|
20
|
+
<text class="mono" x="160" y="47" font-size="40" font-weight="700" fill="#0969da" dominant-baseline="middle">}</text>
|
|
21
|
+
|
|
22
|
+
<!-- × operator -->
|
|
23
|
+
<text class="mono" x="210" y="46" font-size="26" font-weight="700" fill="#bc4c00" dominant-baseline="middle" text-anchor="middle">×</text>
|
|
24
|
+
|
|
25
|
+
<!-- < -->
|
|
26
|
+
<text class="mono" x="236" y="47" font-size="40" font-weight="700" fill="#1a7f37" dominant-baseline="middle"><</text>
|
|
27
|
+
<!-- spec -->
|
|
28
|
+
<text class="mono" x="262" y="47" font-size="33" font-weight="500" fill="#1f2328" dominant-baseline="middle">spec</text>
|
|
29
|
+
<!-- > -->
|
|
30
|
+
<text class="mono" x="345" y="47" font-size="40" font-weight="700" fill="#1a7f37" dominant-baseline="middle">></text>
|
|
31
|
+
|
|
32
|
+
<!-- Tagline: three words centered under the wordmark columns {code} × <spec> -->
|
|
33
|
+
<text class="mono" x="118.5" y="75" font-size="9" font-weight="400" fill="#8c959f" text-anchor="middle" letter-spacing="2.8">SPEC</text>
|
|
34
|
+
<text class="mono" x="211.0" y="75" font-size="9" font-weight="400" fill="#8c959f" text-anchor="middle" letter-spacing="2.8">DRIVEN</text>
|
|
35
|
+
<text class="mono" x="304.0" y="75" font-size="9" font-weight="400" fill="#8c959f" text-anchor="middle" letter-spacing="2.8">DEVELOPMENT</text>
|
|
36
|
+
</svg>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "codexspec"
|
|
3
|
-
version = "0.6.
|
|
4
|
-
description = "CodexSpec - A
|
|
3
|
+
version = "0.6.2"
|
|
4
|
+
description = "CodexSpec - A Requirements-First SDD toolkit for Claude Code"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
7
7
|
license = { text = "MIT" }
|
|
8
8
|
authors = [
|
|
9
9
|
{ name = "CodexSpec Team" }
|
|
10
10
|
]
|
|
11
|
-
keywords = ["sdd", "spec-driven-development", "claude", "ai", "cli"]
|
|
11
|
+
keywords = ["requirements-first", "sdd", "spec-driven-development", "requirements-driven", "claude", "ai", "cli"]
|
|
12
12
|
classifiers = [
|
|
13
13
|
"Development Status :: 3 - Alpha",
|
|
14
14
|
"Environment :: Console",
|
|
@@ -64,13 +64,21 @@ build-backend = "hatchling.build"
|
|
|
64
64
|
|
|
65
65
|
[tool.hatch.build.targets.wheel]
|
|
66
66
|
packages = ["src/codexspec"]
|
|
67
|
-
|
|
67
|
+
# scripts/ is split by AUDIENCE:
|
|
68
|
+
# - bash/ + powershell/ -> user-facing, copied verbatim by `codexspec init`
|
|
69
|
+
# - python/ -> maintainer-only tooling (auto-responder, notifier...)
|
|
70
|
+
# force-include does NOT honor .gitignore, so we ship ONLY the two user subdirs;
|
|
71
|
+
# including all of scripts/ would leak scripts/python/.env (secrets), notify
|
|
72
|
+
# logs, and maintainer-only scripts. Other maintainer tools live in /internal
|
|
73
|
+
# (outside scripts/ entirely). The sdist `include` below mirrors this boundary.
|
|
74
|
+
force-include = { "templates" = "codexspec/templates", "scripts/bash" = "codexspec/scripts/bash", "scripts/powershell" = "codexspec/scripts/powershell" }
|
|
68
75
|
|
|
69
76
|
[tool.hatch.build.targets.sdist]
|
|
70
77
|
include = [
|
|
71
78
|
"/src",
|
|
72
79
|
"/templates",
|
|
73
|
-
"/scripts",
|
|
80
|
+
"/scripts/bash",
|
|
81
|
+
"/scripts/powershell",
|
|
74
82
|
"/codexspec-icon.svg",
|
|
75
83
|
"/codexspec-logo-dark.svg",
|
|
76
84
|
"/codexspec-logo-light.svg",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""
|
|
3
|
-
CodexSpec - A
|
|
3
|
+
CodexSpec - A Requirements-First SDD toolkit for Claude Code.
|
|
4
4
|
|
|
5
5
|
This toolkit provides a structured approach to software development using
|
|
6
6
|
executable specifications that guide AI-assisted implementation.
|
|
@@ -30,12 +30,13 @@ from .commands.installer import (
|
|
|
30
30
|
from .i18n import (
|
|
31
31
|
generate_config_content,
|
|
32
32
|
get_commit_language,
|
|
33
|
+
get_interaction_language,
|
|
33
34
|
get_language_name,
|
|
34
|
-
get_project_language,
|
|
35
35
|
get_supported_languages,
|
|
36
36
|
is_supported_language,
|
|
37
37
|
normalize_locale,
|
|
38
38
|
update_config_language,
|
|
39
|
+
update_language_field,
|
|
39
40
|
update_output_language,
|
|
40
41
|
)
|
|
41
42
|
from .translator import translate
|
|
@@ -51,7 +52,7 @@ MARKDOWNLINT_DISABLE_MD041 = "<!-- markdownlint-disable MD041 -->\n"
|
|
|
51
52
|
|
|
52
53
|
app = typer.Typer(
|
|
53
54
|
name="codexspec",
|
|
54
|
-
help="CodexSpec - A
|
|
55
|
+
help="CodexSpec - A Requirements-First SDD toolkit for Claude Code",
|
|
55
56
|
add_completion=False,
|
|
56
57
|
)
|
|
57
58
|
console = Console()
|
|
@@ -185,6 +186,16 @@ def config(
|
|
|
185
186
|
"-c",
|
|
186
187
|
help="Set the commit message language (defaults to output language)",
|
|
187
188
|
),
|
|
189
|
+
set_interaction_lang: Optional[str] = typer.Option(
|
|
190
|
+
None,
|
|
191
|
+
"--set-interaction-lang",
|
|
192
|
+
help="Set the interaction language (LLM dialogue + codexspec CLI terminal output)",
|
|
193
|
+
),
|
|
194
|
+
set_document_lang: Optional[str] = typer.Option(
|
|
195
|
+
None,
|
|
196
|
+
"--set-document-lang",
|
|
197
|
+
help="Set the document language (generated requirements/spec/plan/tasks files)",
|
|
198
|
+
),
|
|
188
199
|
list_langs: bool = typer.Option(
|
|
189
200
|
False,
|
|
190
201
|
"--list-langs",
|
|
@@ -322,6 +333,45 @@ def config(
|
|
|
322
333
|
console.print(f"[green]Commit message language set to:[/green] {normalized} ({lang_name})")
|
|
323
334
|
return
|
|
324
335
|
|
|
336
|
+
# Handle set interaction language
|
|
337
|
+
if set_interaction_lang:
|
|
338
|
+
normalized = normalize_locale(set_interaction_lang)
|
|
339
|
+
if not is_supported_language(normalized):
|
|
340
|
+
console.print(
|
|
341
|
+
f"[yellow]Warning: '{set_interaction_lang}' is not in the list of "
|
|
342
|
+
"commonly supported languages.[/yellow]"
|
|
343
|
+
)
|
|
344
|
+
console.print(
|
|
345
|
+
"It may still work if Claude supports it. "
|
|
346
|
+
"Run [cyan]codexspec config --list-langs[/cyan] to see supported languages."
|
|
347
|
+
)
|
|
348
|
+
if update_language_field(config_file, "interaction", normalized):
|
|
349
|
+
lang_name = get_language_name(normalized)
|
|
350
|
+
console.print(f"[green]Interaction language set to:[/green] {normalized} ({lang_name})")
|
|
351
|
+
else:
|
|
352
|
+
console.print("[red]Failed to update interaction language setting[/red]")
|
|
353
|
+
raise typer.Exit(1)
|
|
354
|
+
return
|
|
355
|
+
|
|
356
|
+
# Handle set document language
|
|
357
|
+
if set_document_lang:
|
|
358
|
+
normalized = normalize_locale(set_document_lang)
|
|
359
|
+
if not is_supported_language(normalized):
|
|
360
|
+
console.print(
|
|
361
|
+
f"[yellow]Warning: '{set_document_lang}' is not in the list of commonly supported languages.[/yellow]"
|
|
362
|
+
)
|
|
363
|
+
console.print(
|
|
364
|
+
"It may still work if Claude supports it. "
|
|
365
|
+
"Run [cyan]codexspec config --list-langs[/cyan] to see supported languages."
|
|
366
|
+
)
|
|
367
|
+
if update_language_field(config_file, "document", normalized):
|
|
368
|
+
lang_name = get_language_name(normalized)
|
|
369
|
+
console.print(f"[green]Document language set to:[/green] {normalized} ({lang_name})")
|
|
370
|
+
else:
|
|
371
|
+
console.print("[red]Failed to update document language setting[/red]")
|
|
372
|
+
raise typer.Exit(1)
|
|
373
|
+
return
|
|
374
|
+
|
|
325
375
|
# Display current configuration
|
|
326
376
|
console.print(
|
|
327
377
|
Panel(
|
|
@@ -340,8 +390,8 @@ def list_commands() -> None:
|
|
|
340
390
|
showing their display names and descriptions.
|
|
341
391
|
"""
|
|
342
392
|
|
|
343
|
-
# Get user's language preference
|
|
344
|
-
language =
|
|
393
|
+
# Get user's language preference (CLI terminal output uses the interaction language)
|
|
394
|
+
language = get_interaction_language()
|
|
345
395
|
|
|
346
396
|
metadata = get_installed_commands_metadata()
|
|
347
397
|
|
|
@@ -935,8 +985,9 @@ This document provides comprehensive context and guidelines for Claude Code when
|
|
|
935
985
|
|
|
936
986
|
## Project Overview
|
|
937
987
|
|
|
938
|
-
This project uses the **CodexSpec** methodology - a Spec-Driven Development (SDD)
|
|
939
|
-
|
|
988
|
+
This project uses the **CodexSpec** methodology - a Requirements-First Spec-Driven Development (SDD)
|
|
989
|
+
approach where confirmed requirements are the highest-priority authority, and nothing is binding
|
|
990
|
+
until explicitly confirmed. Specifications and plans are executable artifacts that guide implementation.
|
|
940
991
|
|
|
941
992
|
## Available Commands
|
|
942
993
|
|
|
@@ -57,49 +57,49 @@ def get_commands_metadata() -> list[CommandMetadata]:
|
|
|
57
57
|
{
|
|
58
58
|
"name": "specify",
|
|
59
59
|
"display_name": "/codexspec:specify",
|
|
60
|
-
"description": "
|
|
60
|
+
"description": "讨论、确认并固化权威的需求记录",
|
|
61
61
|
"category": "core",
|
|
62
62
|
"file_name": "specify.md",
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"name": "generate-spec",
|
|
66
66
|
"display_name": "/codexspec:generate-spec",
|
|
67
|
-
"description": "
|
|
67
|
+
"description": "将已确认的需求编写为可追溯的 spec.md",
|
|
68
68
|
"category": "core",
|
|
69
69
|
"file_name": "generate-spec.md",
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
"name": "spec-to-plan",
|
|
73
73
|
"display_name": "/codexspec:spec-to-plan",
|
|
74
|
-
"description": "
|
|
74
|
+
"description": "将已确认的规格转换为可追溯的技术计划",
|
|
75
75
|
"category": "core",
|
|
76
76
|
"file_name": "spec-to-plan.md",
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"name": "plan-to-tasks",
|
|
80
80
|
"display_name": "/codexspec:plan-to-tasks",
|
|
81
|
-
"description": "
|
|
81
|
+
"description": "将已批准的计划展开为可追溯、可执行的任务",
|
|
82
82
|
"category": "core",
|
|
83
83
|
"file_name": "plan-to-tasks.md",
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
86
|
"name": "review-spec",
|
|
87
87
|
"display_name": "/codexspec:review-spec",
|
|
88
|
-
"description": "
|
|
88
|
+
"description": "审查规格的忠实度、内部质量与计划就绪度",
|
|
89
89
|
"category": "core",
|
|
90
90
|
"file_name": "review-spec.md",
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
"name": "review-plan",
|
|
94
94
|
"display_name": "/codexspec:review-plan",
|
|
95
|
-
"description": "
|
|
95
|
+
"description": "审查计划的忠实度、可行性与实现就绪度",
|
|
96
96
|
"category": "core",
|
|
97
97
|
"file_name": "review-plan.md",
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
100
|
"name": "review-tasks",
|
|
101
101
|
"display_name": "/codexspec:review-tasks",
|
|
102
|
-
"description": "
|
|
102
|
+
"description": "审查任务的忠实度、可执行性、依赖关系与验证",
|
|
103
103
|
"category": "core",
|
|
104
104
|
"file_name": "review-tasks.md",
|
|
105
105
|
},
|
|
@@ -114,14 +114,14 @@ def get_commands_metadata() -> list[CommandMetadata]:
|
|
|
114
114
|
{
|
|
115
115
|
"name": "clarify",
|
|
116
116
|
"display_name": "/codexspec:clarify",
|
|
117
|
-
"description": "
|
|
117
|
+
"description": "解决需求歧义,并将 requirements.md 与 spec.md 同步",
|
|
118
118
|
"category": "enhanced",
|
|
119
119
|
"file_name": "clarify.md",
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"name": "analyze",
|
|
123
123
|
"display_name": "/codexspec:analyze",
|
|
124
|
-
"description": "
|
|
124
|
+
"description": "分析 SDD 工件间的端到端可追溯性与一致性",
|
|
125
125
|
"category": "enhanced",
|
|
126
126
|
"file_name": "analyze.md",
|
|
127
127
|
},
|
|
@@ -173,7 +173,7 @@ def get_commands_metadata() -> list[CommandMetadata]:
|
|
|
173
173
|
{
|
|
174
174
|
"name": "quick",
|
|
175
175
|
"display_name": "/codexspec:quick",
|
|
176
|
-
"description": "
|
|
176
|
+
"description": "为小型变更运行精简的 Requirements-First SDD 流程",
|
|
177
177
|
"category": "utility",
|
|
178
178
|
"file_name": "quick.md",
|
|
179
179
|
},
|