moai-adk 0.4.4__py3-none-any.whl → 0.4.7__py3-none-any.whl

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.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

Files changed (191) hide show
  1. moai_adk/__init__.py +1 -1
  2. moai_adk/core/project/initializer.py +12 -5
  3. moai_adk/templates/.claude/agents/alfred/skill-factory.md +829 -0
  4. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +78 -77
  5. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/examples.md +29 -0
  6. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/reference.md +28 -0
  7. moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +87 -77
  8. moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/examples.md +29 -0
  9. moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/reference.md +28 -0
  10. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +76 -66
  11. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
  12. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
  13. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +86 -59
  14. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
  15. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
  16. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
  17. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
  18. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
  19. moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +87 -79
  20. moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/examples.md +29 -0
  21. moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/reference.md +28 -0
  22. moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +87 -71
  23. moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/examples.md +29 -0
  24. moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/reference.md +28 -0
  25. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +78 -62
  26. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
  27. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
  28. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +78 -55
  29. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
  30. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
  31. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +78 -64
  32. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
  33. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
  34. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +604 -56
  35. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +974 -44
  36. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/reference.md +801 -0
  37. moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +88 -61
  38. moai_adk/templates/.claude/skills/moai-claude-code/examples.md +16 -500
  39. moai_adk/templates/.claude/skills/moai-claude-code/reference.md +15 -420
  40. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
  41. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
  42. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
  43. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
  44. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
  45. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
  46. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
  47. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
  48. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
  49. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
  50. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
  51. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
  52. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
  53. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
  54. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
  55. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +98 -73
  56. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
  57. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
  58. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
  59. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
  60. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
  61. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
  62. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
  63. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
  64. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
  65. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
  66. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
  67. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
  68. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
  69. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
  70. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +656 -60
  71. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1107 -0
  72. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1533 -0
  73. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
  74. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
  75. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
  76. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
  77. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
  78. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
  79. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
  80. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
  81. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
  82. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +77 -62
  83. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
  84. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
  85. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +88 -56
  86. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
  87. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
  88. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
  89. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
  90. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
  91. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
  92. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
  93. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
  94. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
  95. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
  96. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
  97. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
  98. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  99. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
  100. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
  101. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
  102. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
  103. moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +97 -74
  104. moai_adk/templates/.claude/skills/moai-lang-clojure/examples.md +29 -0
  105. moai_adk/templates/.claude/skills/moai-lang-clojure/reference.md +30 -0
  106. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
  107. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
  108. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
  109. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +97 -74
  110. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
  111. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
  112. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +86 -61
  113. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
  114. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
  115. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +98 -73
  116. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +29 -0
  117. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +31 -0
  118. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +98 -74
  119. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
  120. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
  121. moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +98 -74
  122. moai_adk/templates/.claude/skills/moai-lang-haskell/examples.md +29 -0
  123. moai_adk/templates/.claude/skills/moai-lang-haskell/reference.md +31 -0
  124. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +87 -61
  125. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
  126. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
  127. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +88 -59
  128. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
  129. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
  130. moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +86 -61
  131. moai_adk/templates/.claude/skills/moai-lang-julia/examples.md +29 -0
  132. moai_adk/templates/.claude/skills/moai-lang-julia/reference.md +30 -0
  133. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +98 -73
  134. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
  135. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
  136. moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +86 -61
  137. moai_adk/templates/.claude/skills/moai-lang-lua/examples.md +29 -0
  138. moai_adk/templates/.claude/skills/moai-lang-lua/reference.md +30 -0
  139. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +86 -61
  140. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
  141. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
  142. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +388 -53
  143. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
  144. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
  145. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
  146. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
  147. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
  148. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
  149. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
  150. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
  151. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +98 -74
  152. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
  153. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
  154. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +97 -74
  155. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
  156. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
  157. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
  158. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
  159. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
  160. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
  161. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
  162. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
  163. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +97 -73
  164. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
  165. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
  166. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +90 -59
  167. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
  168. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
  169. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
  170. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +52 -0
  171. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
  172. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
  173. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
  174. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +560 -0
  175. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
  176. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
  177. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +69 -0
  178. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
  179. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
  180. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
  181. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
  182. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
  183. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
  184. moai_adk/templates/CLAUDE.md +43 -11
  185. moai_adk-0.4.7.dist-info/METADATA +1162 -0
  186. moai_adk-0.4.7.dist-info/RECORD +275 -0
  187. moai_adk-0.4.4.dist-info/METADATA +0 -369
  188. moai_adk-0.4.4.dist-info/RECORD +0 -152
  189. {moai_adk-0.4.4.dist-info → moai_adk-0.4.7.dist-info}/WHEEL +0 -0
  190. {moai_adk-0.4.4.dist-info → moai_adk-0.4.7.dist-info}/entry_points.txt +0 -0
  191. {moai_adk-0.4.4.dist-info → moai_adk-0.4.7.dist-info}/licenses/LICENSE +0 -0
@@ -1,96 +1,431 @@
1
1
  ---
2
2
 
3
3
  name: moai-lang-python
4
- description: Python best practices with pytest, mypy, ruff, black, and uv package management. Use when writing or reviewing Python code in project workflows.
4
+ version: 2.0.0
5
+ created: 2025-10-22
6
+ updated: 2025-10-22
7
+ status: active
8
+ description: Python 3.13+ best practices with pytest 8.4.2, mypy 1.8.0, ruff 0.13.1, and uv 0.9.3. Use when writing or reviewing Python code in project workflows.
9
+ keywords: [python, testing, pytest, mypy, ruff, uv, async, fastapi, pydantic]
5
10
  allowed-tools:
6
11
  - Read
7
12
  - Bash
8
13
  ---
9
14
 
10
- # Python Expert
15
+ # Python 3.13 Expert Skill
11
16
 
12
17
  ## Skill Metadata
18
+
13
19
  | Field | Value |
14
20
  | ----- | ----- |
15
- | Allowed tools | Read (read_file), Bash (terminal) |
16
- | Auto-load | On demand when language keywords are detected |
17
- | Trigger cues | Python code discussions, framework guidance, or file extensions such as .py. |
18
- | Tier | 3 |
21
+ | **Skill Name** | moai-lang-python |
22
+ | **Version** | 2.0.0 (2025-10-22) |
23
+ | **Python Support** | 3.13.1 (latest), 3.12.7 (LTS), 3.11.10 (maintenance) |
24
+ | **Allowed tools** | Read (read_file), Bash (terminal) |
25
+ | **Auto-load** | On demand when language keywords detected |
26
+ | **Trigger cues** | `.py` files, Python frameworks, TDD discussions, async patterns |
27
+ | **Tier** | Language / 23 (comprehensive coverage) |
28
+
29
+ ---
30
+
31
+ ## What It Does
19
32
 
20
- ## What it does
33
+ Provides **Python 3.13+ expertise** for modern TDD development, including:
21
34
 
22
- Provides Python-specific expertise for TDD development, including pytest testing, mypy type checking, ruff linting, black formatting, and modern uv package management.
35
+ - **Testing Framework**: pytest 8.4.2 (fixtures, asyncio, parametrization)
36
+ - ✅ **Code Quality**: ruff 0.13.1 (unified linter + formatter, replaces black/pylint)
37
+ - ✅ **Type Safety**: mypy 1.8.0 + Pydantic 2.7.0 (static + runtime validation)
38
+ - ✅ **Package Management**: uv 0.9.3 (10x faster than pip)
39
+ - ✅ **Python 3.13 Features**: PEP 695 (type params), PEP 701 (f-strings), PEP 698 (@override)
40
+ - ✅ **Async/Await**: asyncio.TaskGroup, context variables, concurrent patterns
41
+ - ✅ **Security**: Secrets module, secure hashing, SQLAlchemy 2.0.28
23
42
 
24
- ## When to use
43
+ ---
44
+
45
+ ## When to Use
25
46
 
26
- - Engages when the conversation references Python work, frameworks, or files like .py.
27
- - “Writing Python tests”, “How to use pytest”, “Python type hints”
28
- - Automatically invoked when working with Python projects
47
+ **Automatic triggers**:
48
+ - Python code discussions, `.py` files, framework guidance
49
+ - "Writing Python tests", "How to use pytest", "Python type hints"
29
50
  - Python SPEC implementation (`/alfred:2-run`)
51
+ - Async pattern requests
52
+
53
+ **Manual invocation**:
54
+ - Review Python code for TRUST 5 compliance
55
+ - Design Python microservices (FastAPI 0.115.0 recommended)
56
+ - Upgrade from Python 3.12 to 3.13
57
+ - Refactor async code to use TaskGroup
58
+
59
+ ---
60
+
61
+ ## How It Works (Best Practices)
62
+
63
+ ### 1. TDD Framework (pytest 8.4.2)
64
+
65
+ ```python
66
+ # Test discovery & fixtures
67
+ import pytest
68
+ from src.calculator import add
69
+
70
+ def test_add_positive_numbers():
71
+ """Verify addition of positive integers."""
72
+ assert add(2, 3) == 5
73
+
74
+ @pytest.mark.asyncio
75
+ async def test_async_operation():
76
+ """Test async functions with pytest-asyncio."""
77
+ result = await async_fetch_data()
78
+ assert result is not None
79
+ ```
80
+
81
+ **Key Points**:
82
+ - ✅ Use pytest 8.4.2+ (not unittest)
83
+ - ✅ One assertion per test (clarity)
84
+ - ✅ Fixtures for setup/teardown
85
+ - ✅ `pytest.mark.asyncio` for async tests
86
+ - ✅ `pytest-mock` for mocking (not mock.patch)
87
+ - ✅ Coverage ≥85% enforced by quality gate
30
88
 
31
- ## How it works
89
+ **CLI Commands**:
90
+ ```bash
91
+ pytest # Run all tests
92
+ pytest -v # Verbose output
93
+ pytest --cov=src --cov-report=term # Coverage report (≥85% required)
94
+ pytest -k "pattern" # Run matching tests
95
+ pytest -m asyncio # Run async tests only
96
+ ```
32
97
 
33
- **TDD Framework**:
34
- - **pytest**: Test discovery, fixtures, parametrize, markers
35
- - **coverage.py**: Test coverage ≥85% enforcement
36
- - **pytest-mock**: Mocking and patching
98
+ ### 2. Code Quality (ruff 0.13.1 — NEW STANDARD)
37
99
 
38
- **Type Safety**:
39
- - **mypy**: Static type checking with strict mode
40
- - Type hints for function signatures, return types
41
- - Generic types, Protocols, TypedDict
100
+ **⚠️ BREAKING CHANGE**: Ruff 0.13.1 replaces black + pylint + isort. Update workflows:
42
101
 
43
- **Code Quality**:
44
- - **ruff**: Fast Python linter (replaces flake8, isort, pylint)
45
- - **black**: Opinionated code formatter
46
- - Complexity checks (≤10), line length (≤88)
102
+ ```yaml
103
+ # OLD (deprecated)
104
+ - black . # Format
105
+ - pylint src/ # Lint
106
+ - isort . # Import sort
107
+
108
+ # NEW (ruff 0.13.1)
109
+ - ruff check . --fix # Lint + fix
110
+ - ruff format . # Format (replaces black)
111
+ ```
47
112
 
48
- **Package Management**:
49
- - **uv**: Modern, fast package installer
50
- - `pyproject.toml` for project configuration
51
- - Virtual environment management
113
+ **Configuration** (`pyproject.toml`):
114
+ ```toml
115
+ [tool.ruff]
116
+ line-length = 100
117
+ target-version = "py313"
52
118
 
53
- **Best Practices**:
54
- - File ≤300 LOC, function ≤50 LOC
55
- - Meaningful variable names (no single letters except loops)
56
- - Guard clauses over nested conditions
57
- - Docstrings for public APIs
119
+ [tool.ruff.lint]
120
+ select = ["E", "F", "W"] # Errors, formatting, warnings
121
+ extend-select = ["I"] # Import sorting (replaces isort)
122
+ ```
58
123
 
59
- ## Examples
124
+ **CLI Commands**:
60
125
  ```bash
61
- python -m pytest && ruff check . && black --check .
126
+ ruff check . # Lint all files
127
+ ruff format . # Format with auto-fix
128
+ ruff check --show-fixes . # Show what would be fixed
129
+ ruff check --select E501 . # Check specific rule (line length)
130
+ ```
131
+
132
+ ### 3. Type Safety (mypy 1.8.0 + Pydantic 2.7.0)
133
+
134
+ **Static Type Checking** (mypy):
135
+
136
+ ```python
137
+ from typing import override
138
+
139
+ class Parent:
140
+ def method(self, x: int) -> str: ...
141
+
142
+ class Child(Parent):
143
+ @override # NEW in Python 3.13 — mypy validates this
144
+ def method(self, x: int) -> str:
145
+ return str(x)
146
+ ```
147
+
148
+ **Runtime Validation** (Pydantic 2.7.0):
149
+
150
+ ```python
151
+ from pydantic import BaseModel, Field
152
+
153
+ class User(BaseModel):
154
+ id: int = Field(gt=0) # Must be > 0
155
+ name: str = Field(min_length=1)
156
+ email: str # Auto-validated as email
62
157
  ```
63
158
 
159
+ **CLI Commands**:
160
+ ```bash
161
+ mypy . # Run type checker
162
+ mypy --strict . # Strict mode (recommended)
163
+ mypy --show-column-numbers . # Precise error locations
164
+ ```
165
+
166
+ ### 4. Package Management (uv 0.9.3)
167
+
168
+ **Why uv?**: 10x faster than pip, integrated with ruff + pytest
169
+
170
+ ```bash
171
+ # Create virtual environment
172
+ uv venv # Create .venv/
173
+ source .venv/bin/activate # Activate
174
+
175
+ # Install dependencies
176
+ uv add pytest ruff mypy # Add to pyproject.toml
177
+ uv add --dev pytest-asyncio # Add as dev dependency
178
+ uv sync # Install all (from lock file)
179
+
180
+ # Publish
181
+ uv publish # Push to PyPI
182
+ ```
183
+
184
+ **pyproject.toml** (uv config):
185
+ ```toml
186
+ [project]
187
+ name = "my-project"
188
+ version = "2.0.0"
189
+ requires-python = ">=3.13"
190
+
191
+ [project.optional-dependencies]
192
+ dev = ["pytest>=8.4.2", "ruff>=0.13.1", "mypy>=1.8.0"]
193
+
194
+ [build-system]
195
+ requires = ["hatchling"]
196
+ build-backend = "hatchling.build"
197
+ ```
198
+
199
+ ### 5. Async Patterns (Python 3.13)
200
+
201
+ **TaskGroup** (cleaner than `asyncio.gather`):
202
+
203
+ ```python
204
+ import asyncio
205
+
206
+ async def main():
207
+ async with asyncio.TaskGroup() as tg:
208
+ task1 = tg.create_task(fetch_user(1))
209
+ task2 = tg.create_task(fetch_posts(1))
210
+ # Tasks run concurrently
211
+ # Exceptions propagate automatically (no need for gather)
212
+
213
+ asyncio.run(main())
214
+ ```
215
+
216
+ **Context Variables** (thread-safe in async):
217
+
218
+ ```python
219
+ from contextvars import ContextVar
220
+
221
+ request_id = ContextVar('request_id', default=None)
222
+
223
+ async def handle_request(req_id):
224
+ token = request_id.set(req_id)
225
+ # All spawned tasks inherit this context var
226
+ await process_async()
227
+ ```
228
+
229
+ ### 6. Security Best Practices
230
+
231
+ **Secrets Module** (token generation):
232
+ ```python
233
+ import secrets
234
+
235
+ api_key = secrets.token_urlsafe(32) # Safe random tokens
236
+ nonce = secrets.token_bytes(16) # Cryptographic nonce
237
+ ```
238
+
239
+ **Secure Hashing** (sha256, not md5):
240
+ ```python
241
+ import hashlib
242
+
243
+ # ✅ SECURE
244
+ hash_obj = hashlib.sha256(b"password")
245
+
246
+ # ❌ INSECURE (removed in Python 3.13)
247
+ hash_obj = hashlib.md5(b"password") # ValueError!
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Python 3.13 New Features
253
+
254
+ ### PEP 695 — Type Parameter Syntax
255
+
256
+ ```python
257
+ # OLD (3.12)
258
+ from typing import TypeVar, Generic
259
+ T = TypeVar('T')
260
+ class Stack(Generic[T]):
261
+ def push(self, item: T) -> None: ...
262
+
263
+ # NEW (3.13)
264
+ class Stack[T]:
265
+ def push(self, item: T) -> None: ...
266
+ ```
267
+
268
+ ### PEP 701 — Improved F-Strings
269
+
270
+ ```python
271
+ # NEW: Nested f-strings, arbitrary expressions
272
+ user = {"name": "Alice", "age": 30}
273
+ print(f"User: {user['name']}, Age: {user['age']}") # Works!
274
+
275
+ # Nested f-strings
276
+ x = 10
277
+ print(f"Result: {f'{x:>10}'}") # Works in 3.13!
278
+ ```
279
+
280
+ ### PEP 698 — Override Decorator
281
+
282
+ ```python
283
+ from typing import override
284
+
285
+ class Parent:
286
+ def method(self) -> None: ...
287
+
288
+ class Child(Parent):
289
+ @override # mypy checks this is actually overriding
290
+ def method(self) -> None: ...
291
+ ```
292
+
293
+ ---
294
+
295
+ ## Example Workflow
296
+
297
+ **Setup** (uv + Python 3.13):
298
+ ```bash
299
+ uv venv --python 3.13 # Create venv with Python 3.13
300
+ source .venv/bin/activate
301
+ uv add pytest ruff mypy fastapi pydantic
302
+ ```
303
+
304
+ **TDD Loop** (pytest):
305
+ ```bash
306
+ pytest # RED: Watch tests fail
307
+ # [implement code]
308
+ pytest # GREEN: Watch tests pass
309
+ ruff check --fix . # REFACTOR: Fix code quality
310
+ ```
311
+
312
+ **Quality Gate** (before commit):
313
+ ```bash
314
+ pytest --cov=src --cov-report=term # Coverage ≥85%?
315
+ ruff check . # Lint pass?
316
+ mypy --strict . # Type check pass?
317
+ ```
318
+
319
+ ---
320
+
321
+ ## Tool Version Matrix (2025-10-22)
322
+
323
+ | Tool | Version | Purpose | Status |
324
+ |------|---------|---------|--------|
325
+ | **Python** | 3.13.1 | Runtime | ✅ Latest |
326
+ | **pytest** | 8.4.2 | Testing | ✅ Current |
327
+ | **ruff** | 0.13.1 | Lint/Format | ✅ New standard |
328
+ | **mypy** | 1.8.0 | Type checking | ✅ Current |
329
+ | **uv** | 0.9.3 | Package manager | ✅ Recommended |
330
+ | **FastAPI** | 0.115.0 | Web framework | ✅ Latest |
331
+ | **Pydantic** | 2.7.0 | Validation | ✅ Latest |
332
+ | **SQLAlchemy** | 2.0.28 | ORM | ✅ Latest |
333
+
334
+ ---
335
+
336
+ ## Inputs
337
+
338
+ - Python source directories (e.g., `src/`, `app/`)
339
+ - Configuration files (`pyproject.toml`, `pytest.ini`)
340
+ - Test suites and sample data
341
+ - Existing CI/CD workflows
342
+
343
+ ## Outputs
344
+
345
+ - Test/lint execution plan for Python 3.13
346
+ - Code review checklist (TRUST 5 principles)
347
+ - Migration guide (3.12 → 3.13)
348
+ - Performance optimization recommendations
349
+
350
+ ## Failure Modes
351
+
352
+ - ❌ Python 3.13 not installed → Recommend `uv venv --python 3.13`
353
+ - ❌ Dependencies missing → Run `uv sync`
354
+ - ❌ Tests fail → Use `debug-helper` agent for triage
355
+
356
+ ---
357
+
64
358
  ## Inputs
359
+
65
360
  - Language-specific source directories (e.g. `src/`, `app/`).
66
- - Language-specific build/test configuration files (e.g. `package.json`, `pyproject.toml`, `go.mod`).
361
+ - Language-specific build/test configuration files (e.g. `pyproject.toml`).
67
362
  - Relevant test suites and sample data.
68
363
 
69
364
  ## Outputs
70
- - Test/lint execution plan tailored to the selected language.
71
- - List of key language idioms and review checkpoints.
365
+
366
+ - Test/lint execution plan tailored to Python 3.13+.
367
+ - TRUST 5 review checkpoints (coverage, linting, types, security, tags).
368
+ - Migration path from older Python versions.
72
369
 
73
370
  ## Failure Modes
74
- - When the language runtime or package manager is not installed.
75
- - When the main language cannot be determined in a multilingual project.
371
+
372
+ - When Python 3.13 runtime is not installed.
373
+ - When project dependencies are not in pyproject.toml.
374
+ - When test coverage falls below 85%.
76
375
 
77
376
  ## Dependencies
78
- - Access to the project file is required using the Read/Grep tool.
79
- - When used with `Skill("moai-foundation-langs")`, it is easy to share cross-language conventions.
80
377
 
81
- ## References
82
- - Python Software Foundation. "Python Developer's Guide." https://docs.python.org/3/ (accessed 2025-03-29).
83
- - Pytest. "pytest Documentation." https://docs.pytest.org/en/stable/ (accessed 2025-03-29).
378
+ - Access to the project file is required using the Read/Bash tools.
379
+ - Integration with `moai-foundation-langs` for language detection.
380
+ - Integration with `moai-foundation-trust` for quality gate enforcement.
381
+
382
+ ---
383
+
384
+ ## References (Latest Documentation)
385
+
386
+ - **Python 3.13**: https://docs.python.org/3.13/ (accessed 2025-10-22)
387
+ - **pytest 8.4.2**: https://docs.pytest.org/en/stable/ (accessed 2025-10-22)
388
+ - **ruff 0.13.1**: https://docs.astral.sh/ruff/ (accessed 2025-10-22)
389
+ - **mypy 1.8.0**: https://mypy.readthedocs.io/ (accessed 2025-10-22)
390
+ - **uv 0.9.3**: https://docs.astral.sh/uv/ (accessed 2025-10-22)
391
+ - **FastAPI 0.115.0**: https://fastapi.tiangolo.com/ (accessed 2025-10-22)
392
+ - **Pydantic 2.7.0**: https://docs.pydantic.dev/ (accessed 2025-10-22)
393
+
394
+ ---
84
395
 
85
396
  ## Changelog
86
- - 2025-03-29: Input/output/failure response/reference information for each language has been specified.
87
397
 
88
- ## Works well with
398
+ - **v2.0.0** (2025-10-22): Major update with Python 3.13 support, ruff 0.13.1 standard, uv 0.9.3 package manager, async/await TaskGroup patterns, security best practices, PEP 695/701/698 features
399
+ - **v1.0.0** (2025-03-29): Initial Skill with pytest, mypy, ruff, black, uv coverage
89
400
 
90
- - alfred-trust-validation (coverage verification)
91
- - alfred-code-reviewer (Python-specific review)
92
- - alfred-debugger-pro (Python debugging)
401
+ ---
402
+
403
+ ## Works Well With
404
+
405
+ - `moai-foundation-trust` (coverage verification, quality gates)
406
+ - `moai-alfred-code-reviewer` (Python-specific code review)
407
+ - `moai-alfred-debugger-pro` (Python debugging with pdb, pudb)
408
+ - `moai-lang-sql` (SQLAlchemy integration)
409
+ - `moai-domain-backend` (FastAPI microservices)
410
+
411
+ ---
93
412
 
94
413
  ## Best Practices
95
- - Enable automatic validation by matching your linter with the language's official style guide.
96
- - Fix test/build pipelines with reproducible commands in CI.
414
+
415
+ **DO**:
416
+ - Use ruff 0.13.1 as linter + formatter (not black + pylint)
417
+ - Specify exact Python version: `requires-python = "^3.13"`
418
+ - Use pytest 8.4.2 for all tests
419
+ - Enable type checking: mypy --strict
420
+ - Run quality gate before each commit
421
+ - Use uv for package management (10x faster)
422
+ - Add docstrings to public APIs
423
+ - Use f-strings (PEP 701 supports nested expressions)
424
+
425
+ ❌ **DON'T**:
426
+ - Use black + pylint (deprecated, use ruff instead)
427
+ - Use md5 hashing (removed in Python 3.13)
428
+ - Mix pytest with unittest
429
+ - Ignore coverage requirements (<85% fails)
430
+ - Use old type hint syntax (use PEP 695 `class Foo[T]:`)
431
+ - Use `asyncio.gather` without error handling (use TaskGroup instead)