Install
$ agentstack add skill-fcakyon-claude-codex-settings-python-guidelines ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ● Filesystem access Used
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Python Guidelines
Integrate into existing code. Don't append to it.
> Simple is better than complex. Flat is better than nested. > Errors should never pass silently. Unless explicitly silenced. > If the implementation is hard to explain, it's a bad idea. > > -- The Zen of Python (PEP 20)
Code Philosophy
- Match existing naming, importing, and signature patterns. Use existing utilities and data structures.
- Functions have a single purpose. Don't hardcode behavior that makes them less general.
- No trivial wrappers for 2 lines or less. Inline it.
- Inline single-use variables at the usage site.
- No try/except unless critical. Let errors surface.
- No duplicate code.
- Functions handle their own input validation. No if-else checks in main.
- Use pathlib, not os.path.
- Consider API and time costs for MongoDB/Gemini/OpenAI/Claude/Voyage.
Don't do this:
# Generate comment report only if requested
if include_comments:
comment_report = generate_comments_report(start_date, end_date, team, verbose)
else:
comment_report = ""
print(" Skipping comment analysis (disabled)")
Do this:
comment_report = generate_comments_report(start_date, end_date, team, verbose) if include_comments else ""
Ask yourself: "Am I adding code, or integrating into what exists?"
Simplicity Over Abstraction
YAGNI: You Aren't Gonna Need It.
Don't build for hypothetical future requirements. Add complexity only when the current task demands it.
Avoid:
- Abstract base classes for a single implementation
- Configuration options nobody asked for
- Error handling for impossible scenarios
- Wrapper classes around a single function
- Dependency injection when direct calls work
- Generic type parameters for one concrete type
Three similar lines of code is better than a premature abstraction. Refactor when the third real use case appears, not before.
But simplicity does not mean chaos. Always maintain:
- Clear function names that describe what they do
- Logical grouping of related code into modules
- Consistent naming conventions across the project
- Clean separation between I/O and logic
- Explicit parameters over global state or side effects
Ask yourself: "Is this abstraction solving a problem I have right now, or one I'm imagining?"
Environment
- Package manager: uv (NOT pip)
- Virtual env:
source .venv/bin/activateoruv run python -c "..." - 3rd party packages: Find source with
python -c "import pkg; print(pkg.__file__)", then Read.
Testing Discipline
Never assume anything. Run python -c "..." to verify hypotheses about code behavior, package functions, or data structures before suggesting a plan or exiting plan mode.
Ask yourself: "Did I verify this with python -c before building on it?"
Google-Style Docstrings
- Summary: Imperative mood ("Calculate", not "Calculates")
- Args: All parameters with types and descriptions. No default values. Indent 4 spaces.
- Types:
int | strunions, uppercase shapes(N, M), lowercase builtinslist/dict/tuple, capitalizeAny/Path - Optional:
name (type, optional): Description - Returns: Always
(type)in parentheses. Never tuple types. Separate named values for multiple returns. - Sections: Examples (>>>), Notes, References (plaintext only). Section titles at 0 indent.
- Omit: "Returns:" if nothing returned, "Args:" if no args, "Raises:" unless critical
- Classes: Attributes section only, omit Methods/Args. Don't convert single-line to multiline.
__init__: Args only. No Examples/Notes/Methods/References.- Tests: Single-line docstrings only.
- Erase default values from existing arg descriptions. Optionally include minimal Examples.
Ask yourself: "Would a new developer understand this function from the docstring alone?"
Reference Files
For deeper guidance, see the reference files in references/:
zen-of-python.md-- Full Zen of Python (PEP 20) with annotationsgoogle-style-guide.md-- Curated sections: exceptions, defaults, imports, naming, commentsidiomatic-patterns.md-- 18 Python idioms with before/after code exampleseffective-python-tips.md-- Key tips from "Effective Python" by Brett Slatkin, organized by category
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: fcakyon
- Source: fcakyon/claude-codex-settings
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.