oh-my-customcode 0.1.1 → 0.1.3
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.
- package/README.md +45 -32
- package/dist/cli/index.js +12 -20
- package/dist/index.js +3 -3
- package/package.json +2 -2
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +25 -0
- package/templates/agents/index.yaml +6 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +169 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +26 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +143 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +279 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +27 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +284 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +262 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +26 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +274 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +26 -0
- package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/creator/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/creator/refs/rules/index.yaml +125 -0
- package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +169 -0
- package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +143 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +42 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +107 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +90 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +129 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +165 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +100 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +58 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +80 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +89 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +51 -0
- package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +284 -0
- package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +262 -0
- package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +232 -0
- package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +21 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +243 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +212 -0
- package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +282 -0
- package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +309 -0
- package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +250 -0
- package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/guides/index.yaml +101 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +247 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +234 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/python/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +202 -0
- package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +79 -0
- package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +262 -0
- package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +180 -0
- package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +361 -0
- package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +22 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +225 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +219 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +66 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +20 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +102 -0
- package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/supplier/refs/rules/index.yaml +125 -0
- package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/SKILL.md +269 -0
- package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/SKILL.md +337 -0
- package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +356 -0
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +202 -0
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +255 -0
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +221 -0
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +100 -0
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +39 -0
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +266 -0
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +320 -0
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +28 -0
- package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/SKILL.md +73 -0
- package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/SKILL.md +117 -0
- package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +34 -0
- package/templates/agents/manager/supplier/refs/skills/index.yaml +129 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +279 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/SKILL.md +274 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +214 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +342 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +188 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/system/memory-management/SKILL.md +194 -0
- package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +163 -0
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +36 -0
- package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/updater/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/updater/refs/rules/index.yaml +125 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +125 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +232 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +21 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +269 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +26 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +243 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +212 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +337 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +26 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +361 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +22 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +356 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +27 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +100 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +39 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +73 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +30 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +66 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +20 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +102 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +117 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +34 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +202 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +282 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +309 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +250 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +27 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +247 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +234 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/SKILL.md +255 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +27 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +202 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +79 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/SKILL.md +221 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +262 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +180 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/SKILL.md +266 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +225 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +219 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +320 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +28 -0
- package/templates/agents/tutor/go-tutor/AGENT.md +130 -0
- package/templates/agents/tutor/go-tutor/index.yaml +48 -0
- package/templates/manifest.json +55 -0
- package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +9 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# PEP 8 - Style Guide for Python Code
|
|
2
|
+
|
|
3
|
+
> Source: https://peps.python.org/pep-0008/
|
|
4
|
+
|
|
5
|
+
## Introduction
|
|
6
|
+
|
|
7
|
+
This document gives coding conventions for the Python code comprising the standard library. The key insight is that code is read much more often than it is written. Prioritize readability.
|
|
8
|
+
|
|
9
|
+
## Code Layout
|
|
10
|
+
|
|
11
|
+
### Indentation
|
|
12
|
+
|
|
13
|
+
Use 4 spaces per indentation level.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
# Aligned with opening delimiter
|
|
17
|
+
foo = long_function_name(var_one, var_two,
|
|
18
|
+
var_three, var_four)
|
|
19
|
+
|
|
20
|
+
# Hanging indent with additional level
|
|
21
|
+
def long_function_name(
|
|
22
|
+
var_one, var_two, var_three,
|
|
23
|
+
var_four):
|
|
24
|
+
print(var_one)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Maximum Line Length
|
|
28
|
+
|
|
29
|
+
- Limit all lines to 79 characters
|
|
30
|
+
- Docstrings/comments: limit to 72 characters
|
|
31
|
+
- Teams may agree on longer lines (up to 99)
|
|
32
|
+
|
|
33
|
+
### Binary Operators
|
|
34
|
+
|
|
35
|
+
Break before binary operators:
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
# Correct:
|
|
39
|
+
income = (gross_wages
|
|
40
|
+
+ taxable_interest
|
|
41
|
+
+ (dividends - qualified_dividends))
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Blank Lines
|
|
45
|
+
|
|
46
|
+
- Two blank lines around top-level definitions
|
|
47
|
+
- One blank line between method definitions
|
|
48
|
+
- Extra blank lines sparingly to separate logical sections
|
|
49
|
+
|
|
50
|
+
## Imports
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
# Standard library
|
|
54
|
+
import os
|
|
55
|
+
import sys
|
|
56
|
+
|
|
57
|
+
# Third party
|
|
58
|
+
import numpy as np
|
|
59
|
+
|
|
60
|
+
# Local
|
|
61
|
+
from myproject import mymodule
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Rules:
|
|
65
|
+
- One import per line
|
|
66
|
+
- Absolute imports preferred
|
|
67
|
+
- Avoid wildcard imports
|
|
68
|
+
|
|
69
|
+
## Whitespace
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
# Correct:
|
|
73
|
+
spam(ham[1], {eggs: 2})
|
|
74
|
+
x = 1
|
|
75
|
+
y = 2
|
|
76
|
+
long_variable = 3
|
|
77
|
+
|
|
78
|
+
# Wrong:
|
|
79
|
+
spam( ham[ 1 ], { eggs: 2 } )
|
|
80
|
+
x = 1
|
|
81
|
+
y = 2
|
|
82
|
+
long_variable = 3
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Comments
|
|
86
|
+
|
|
87
|
+
### Block Comments
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
# This is a block comment that
|
|
91
|
+
# spans multiple lines and describes
|
|
92
|
+
# the following code block.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Inline Comments
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
x = x + 1 # Increment x
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Docstrings
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
def complex(real=0.0, imag=0.0):
|
|
105
|
+
"""Form a complex number.
|
|
106
|
+
|
|
107
|
+
Keyword arguments:
|
|
108
|
+
real -- the real part (default 0.0)
|
|
109
|
+
imag -- the imaginary part (default 0.0)
|
|
110
|
+
"""
|
|
111
|
+
pass
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Naming Conventions
|
|
115
|
+
|
|
116
|
+
| Type | Convention | Example |
|
|
117
|
+
|------|------------|---------|
|
|
118
|
+
| Module | lowercase_underscore | `my_module` |
|
|
119
|
+
| Package | lowercase | `mypackage` |
|
|
120
|
+
| Class | CapWords | `MyClass` |
|
|
121
|
+
| Exception | CapWords + Error | `CustomError` |
|
|
122
|
+
| Function | lowercase_underscore | `my_function` |
|
|
123
|
+
| Variable | lowercase_underscore | `my_var` |
|
|
124
|
+
| Constant | UPPER_UNDERSCORE | `MAX_SIZE` |
|
|
125
|
+
| Method | lowercase_underscore | `my_method` |
|
|
126
|
+
|
|
127
|
+
### Special Naming
|
|
128
|
+
|
|
129
|
+
- `_single_leading`: weak "internal use" indicator
|
|
130
|
+
- `__double_leading`: name mangling in classes
|
|
131
|
+
- `__double_both__`: "magic" methods
|
|
132
|
+
|
|
133
|
+
## Programming Recommendations
|
|
134
|
+
|
|
135
|
+
### Comparisons
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
# Correct:
|
|
139
|
+
if foo is not None:
|
|
140
|
+
if isinstance(obj, int):
|
|
141
|
+
|
|
142
|
+
# Wrong:
|
|
143
|
+
if foo != None:
|
|
144
|
+
if type(obj) is int:
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Sequences
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
# Correct:
|
|
151
|
+
if not seq:
|
|
152
|
+
if seq:
|
|
153
|
+
|
|
154
|
+
# Wrong:
|
|
155
|
+
if len(seq) == 0:
|
|
156
|
+
if len(seq) > 0:
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Exception Handling
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
# Correct:
|
|
163
|
+
try:
|
|
164
|
+
value = collection[key]
|
|
165
|
+
except KeyError:
|
|
166
|
+
return key_not_found(key)
|
|
167
|
+
|
|
168
|
+
# Wrong:
|
|
169
|
+
try:
|
|
170
|
+
value = collection[key]
|
|
171
|
+
except: # Bare except
|
|
172
|
+
return key_not_found(key)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Context Managers
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
# Correct:
|
|
179
|
+
with open('file.txt') as f:
|
|
180
|
+
contents = f.read()
|
|
181
|
+
|
|
182
|
+
# Wrong:
|
|
183
|
+
f = open('file.txt')
|
|
184
|
+
contents = f.read()
|
|
185
|
+
f.close()
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Return Statements
|
|
189
|
+
|
|
190
|
+
```python
|
|
191
|
+
# Correct:
|
|
192
|
+
def foo(x):
|
|
193
|
+
if x >= 0:
|
|
194
|
+
return math.sqrt(x)
|
|
195
|
+
else:
|
|
196
|
+
return None
|
|
197
|
+
|
|
198
|
+
# Wrong:
|
|
199
|
+
def foo(x):
|
|
200
|
+
if x >= 0:
|
|
201
|
+
return math.sqrt(x)
|
|
202
|
+
```
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# The Zen of Python (PEP 20)
|
|
2
|
+
|
|
3
|
+
> Source: https://peps.python.org/pep-0020/
|
|
4
|
+
|
|
5
|
+
Long time Pythoneer Tim Peters succinctly channels the BDFL's guiding principles for Python's design into 20 aphorisms, only 19 of which have been written down.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
>>> import this
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## The 19 Aphorisms
|
|
12
|
+
|
|
13
|
+
1. **Beautiful is better than ugly.**
|
|
14
|
+
- Write elegant, readable code
|
|
15
|
+
|
|
16
|
+
2. **Explicit is better than implicit.**
|
|
17
|
+
- Don't hide behavior; make intentions clear
|
|
18
|
+
|
|
19
|
+
3. **Simple is better than complex.**
|
|
20
|
+
- Choose straightforward solutions
|
|
21
|
+
|
|
22
|
+
4. **Complex is better than complicated.**
|
|
23
|
+
- When complexity is needed, keep it manageable
|
|
24
|
+
|
|
25
|
+
5. **Flat is better than nested.**
|
|
26
|
+
- Avoid deep nesting; keep structures flat
|
|
27
|
+
|
|
28
|
+
6. **Sparse is better than dense.**
|
|
29
|
+
- Don't pack too much into one line
|
|
30
|
+
|
|
31
|
+
7. **Readability counts.**
|
|
32
|
+
- Code is read more often than written
|
|
33
|
+
|
|
34
|
+
8. **Special cases aren't special enough to break the rules.**
|
|
35
|
+
- Consistency matters
|
|
36
|
+
|
|
37
|
+
9. **Although practicality beats purity.**
|
|
38
|
+
- Be pragmatic when needed
|
|
39
|
+
|
|
40
|
+
10. **Errors should never pass silently.**
|
|
41
|
+
- Handle or propagate errors explicitly
|
|
42
|
+
|
|
43
|
+
11. **Unless explicitly silenced.**
|
|
44
|
+
- Intentional suppression is acceptable
|
|
45
|
+
|
|
46
|
+
12. **In the face of ambiguity, refuse the temptation to guess.**
|
|
47
|
+
- Ask for clarification; don't assume
|
|
48
|
+
|
|
49
|
+
13. **There should be one-- and preferably only one --obvious way to do it.**
|
|
50
|
+
- Python favors one canonical approach
|
|
51
|
+
|
|
52
|
+
14. **Although that way may not be obvious at first unless you're Dutch.**
|
|
53
|
+
- (A nod to Guido van Rossum)
|
|
54
|
+
|
|
55
|
+
15. **Now is better than never.**
|
|
56
|
+
- Don't over-plan; start implementing
|
|
57
|
+
|
|
58
|
+
16. **Although never is often better than *right* now.**
|
|
59
|
+
- But don't rush without thought
|
|
60
|
+
|
|
61
|
+
17. **If the implementation is hard to explain, it's a bad idea.**
|
|
62
|
+
- Complexity is a warning sign
|
|
63
|
+
|
|
64
|
+
18. **If the implementation is easy to explain, it may be a good idea.**
|
|
65
|
+
- Simplicity suggests good design
|
|
66
|
+
|
|
67
|
+
19. **Namespaces are one honking great idea -- let's do more of those!**
|
|
68
|
+
- Organize code into clear namespaces
|
|
69
|
+
|
|
70
|
+
## Application
|
|
71
|
+
|
|
72
|
+
When writing Python code, ask yourself:
|
|
73
|
+
- Is this beautiful or ugly?
|
|
74
|
+
- Is this explicit or implicit?
|
|
75
|
+
- Is this simple or complex?
|
|
76
|
+
- Is this readable?
|
|
77
|
+
- Could I easily explain this to someone else?
|
|
78
|
+
|
|
79
|
+
The Zen of Python is not just style guidance—it's a philosophy for writing maintainable, understandable code.
|
package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/SKILL.md
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Python Best Practices Skill
|
|
2
|
+
|
|
3
|
+
> **Category**: Development
|
|
4
|
+
> **Source**: Internal (based on PEP 8 and PEP 20)
|
|
5
|
+
|
|
6
|
+
## Purpose
|
|
7
|
+
|
|
8
|
+
Apply idiomatic Python patterns and best practices from official Python documentation.
|
|
9
|
+
|
|
10
|
+
## The Zen of Python (PEP 20)
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Beautiful is better than ugly.
|
|
14
|
+
Explicit is better than implicit.
|
|
15
|
+
Simple is better than complex.
|
|
16
|
+
Complex is better than complicated.
|
|
17
|
+
Flat is better than nested.
|
|
18
|
+
Sparse is better than dense.
|
|
19
|
+
Readability counts.
|
|
20
|
+
Special cases aren't special enough to break the rules.
|
|
21
|
+
Although practicality beats purity.
|
|
22
|
+
Errors should never pass silently.
|
|
23
|
+
Unless explicitly silenced.
|
|
24
|
+
In the face of ambiguity, refuse the temptation to guess.
|
|
25
|
+
There should be one-- and preferably only one --obvious way to do it.
|
|
26
|
+
Although that way may not be obvious at first unless you're Dutch.
|
|
27
|
+
Now is better than never.
|
|
28
|
+
Although never is often better than *right* now.
|
|
29
|
+
If the implementation is hard to explain, it's a bad idea.
|
|
30
|
+
If the implementation is easy to explain, it may be a good idea.
|
|
31
|
+
Namespaces are one honking great idea -- let's do more of those!
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Rules
|
|
35
|
+
|
|
36
|
+
### 1. Code Layout
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
indentation:
|
|
40
|
+
- Use 4 spaces per indentation level
|
|
41
|
+
- Never mix tabs and spaces
|
|
42
|
+
- Continuation lines align vertically or use hanging indent
|
|
43
|
+
|
|
44
|
+
line_length:
|
|
45
|
+
- Maximum 79 characters for code
|
|
46
|
+
- Maximum 72 characters for docstrings/comments
|
|
47
|
+
- Teams may agree on 99 characters for code
|
|
48
|
+
|
|
49
|
+
blank_lines:
|
|
50
|
+
- Two blank lines around top-level definitions
|
|
51
|
+
- One blank line between method definitions
|
|
52
|
+
- Use sparingly inside functions
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Imports
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
rules:
|
|
59
|
+
- One import per line
|
|
60
|
+
- Position at file top, after docstrings
|
|
61
|
+
- Group order: standard library → third-party → local
|
|
62
|
+
- Separate groups with blank lines
|
|
63
|
+
- Prefer absolute imports
|
|
64
|
+
- Avoid wildcard imports (from X import *)
|
|
65
|
+
|
|
66
|
+
example: |
|
|
67
|
+
import os
|
|
68
|
+
import sys
|
|
69
|
+
|
|
70
|
+
from third_party import lib
|
|
71
|
+
|
|
72
|
+
from myproject import module
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 3. Whitespace
|
|
76
|
+
|
|
77
|
+
```yaml
|
|
78
|
+
avoid:
|
|
79
|
+
- Extra spaces inside parentheses/brackets
|
|
80
|
+
- Spaces before commas or colons
|
|
81
|
+
- Spaces between function name and parenthesis
|
|
82
|
+
- Multiple spaces for alignment
|
|
83
|
+
|
|
84
|
+
required:
|
|
85
|
+
- Single space around binary operators
|
|
86
|
+
- Spaces around -> in annotations
|
|
87
|
+
- No spaces around = for default parameters
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 4. Naming Conventions
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
modules_packages:
|
|
94
|
+
style: lowercase_with_underscores
|
|
95
|
+
example: my_module
|
|
96
|
+
|
|
97
|
+
classes:
|
|
98
|
+
style: CapWords
|
|
99
|
+
example: MyClass
|
|
100
|
+
|
|
101
|
+
functions_variables:
|
|
102
|
+
style: lowercase_with_underscores
|
|
103
|
+
example: my_function, my_variable
|
|
104
|
+
|
|
105
|
+
constants:
|
|
106
|
+
style: ALL_CAPS_WITH_UNDERSCORES
|
|
107
|
+
example: MAX_SIZE, DEFAULT_VALUE
|
|
108
|
+
|
|
109
|
+
exceptions:
|
|
110
|
+
style: CapWords + Error suffix
|
|
111
|
+
example: ValueError, CustomError
|
|
112
|
+
|
|
113
|
+
private:
|
|
114
|
+
single_underscore: _internal (weak internal)
|
|
115
|
+
double_underscore: __private (name mangling)
|
|
116
|
+
trailing_underscore: class_ (avoid keyword conflict)
|
|
117
|
+
|
|
118
|
+
avoid:
|
|
119
|
+
- Single characters l, O, I (ambiguous)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 5. Comments and Docstrings
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
principles:
|
|
126
|
+
- Comments contradicting code are worse than none
|
|
127
|
+
- Use complete sentences
|
|
128
|
+
- Keep comments up to date
|
|
129
|
+
|
|
130
|
+
block_comments:
|
|
131
|
+
- Indent at same level as code
|
|
132
|
+
- Start each line with # and space
|
|
133
|
+
|
|
134
|
+
inline_comments:
|
|
135
|
+
- Minimum two spaces from code
|
|
136
|
+
- Avoid obvious statements
|
|
137
|
+
|
|
138
|
+
docstrings:
|
|
139
|
+
- Write for all public modules, functions, classes, methods
|
|
140
|
+
- Use triple quotes
|
|
141
|
+
- First line: concise summary
|
|
142
|
+
- Blank line before detailed description
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 6. Programming Recommendations
|
|
146
|
+
|
|
147
|
+
```yaml
|
|
148
|
+
comparisons:
|
|
149
|
+
- Use 'is' and 'is not' for None, True, False
|
|
150
|
+
- Prefer isinstance() over type()
|
|
151
|
+
- Use 'is not' rather than 'not ... is'
|
|
152
|
+
|
|
153
|
+
sequences:
|
|
154
|
+
- Test empty: if not seq: (not if len(seq) == 0)
|
|
155
|
+
- Use .startswith() and .endswith()
|
|
156
|
+
|
|
157
|
+
exceptions:
|
|
158
|
+
- Derive from Exception, not BaseException
|
|
159
|
+
- Catch specific exceptions
|
|
160
|
+
- Avoid bare except clauses
|
|
161
|
+
- Use 'raise X from Y' for chaining
|
|
162
|
+
|
|
163
|
+
functions:
|
|
164
|
+
- Use def, not lambda assignment
|
|
165
|
+
- Consistent return statements
|
|
166
|
+
- Use with for resource management
|
|
167
|
+
|
|
168
|
+
type_hints:
|
|
169
|
+
- Follow PEP 484 syntax
|
|
170
|
+
- Space after colon in annotations
|
|
171
|
+
- No space before colon
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### 7. Pythonic Idioms
|
|
175
|
+
|
|
176
|
+
```yaml
|
|
177
|
+
list_comprehension:
|
|
178
|
+
prefer: "[x*2 for x in items if x > 0]"
|
|
179
|
+
over: |
|
|
180
|
+
result = []
|
|
181
|
+
for x in items:
|
|
182
|
+
if x > 0:
|
|
183
|
+
result.append(x*2)
|
|
184
|
+
|
|
185
|
+
context_managers:
|
|
186
|
+
prefer: "with open('file') as f:"
|
|
187
|
+
over: |
|
|
188
|
+
f = open('file')
|
|
189
|
+
try:
|
|
190
|
+
...
|
|
191
|
+
finally:
|
|
192
|
+
f.close()
|
|
193
|
+
|
|
194
|
+
unpacking:
|
|
195
|
+
prefer: "a, b = b, a"
|
|
196
|
+
over: |
|
|
197
|
+
temp = a
|
|
198
|
+
a = b
|
|
199
|
+
b = temp
|
|
200
|
+
|
|
201
|
+
enumerate:
|
|
202
|
+
prefer: "for i, item in enumerate(items):"
|
|
203
|
+
over: "for i in range(len(items)):"
|
|
204
|
+
|
|
205
|
+
dictionary:
|
|
206
|
+
prefer: "d.get(key, default)"
|
|
207
|
+
over: "d[key] if key in d else default"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Application
|
|
211
|
+
|
|
212
|
+
When writing or reviewing Python code:
|
|
213
|
+
|
|
214
|
+
1. **Always** follow PEP 8 formatting
|
|
215
|
+
2. **Always** write docstrings for public APIs
|
|
216
|
+
3. **Prefer** explicit over implicit
|
|
217
|
+
4. **Prefer** simple over complex
|
|
218
|
+
5. **Prefer** flat over nested
|
|
219
|
+
6. **Avoid** premature optimization
|
|
220
|
+
7. **Use** list comprehensions when readable
|
|
221
|
+
8. **Use** context managers for resources
|
package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Python Best Practices Skill
|
|
2
|
+
|
|
3
|
+
metadata:
|
|
4
|
+
name: python-best-practices
|
|
5
|
+
category: development
|
|
6
|
+
description: Pythonic patterns from PEP 8 and PEP 20
|
|
7
|
+
|
|
8
|
+
source:
|
|
9
|
+
type: internal
|
|
10
|
+
reference:
|
|
11
|
+
- https://peps.python.org/pep-0008/
|
|
12
|
+
- https://peps.python.org/pep-0020/
|
|
13
|
+
- https://google.github.io/styleguide/pyguide.html
|
|
14
|
+
|
|
15
|
+
provides:
|
|
16
|
+
- Python code formatting standards
|
|
17
|
+
- Naming conventions
|
|
18
|
+
- Import organization
|
|
19
|
+
- Whitespace rules
|
|
20
|
+
- Comment and docstring guidelines
|
|
21
|
+
- Programming recommendations
|
|
22
|
+
- Pythonic idioms
|
|
23
|
+
|
|
24
|
+
used_by:
|
|
25
|
+
- python-expert
|