Adk Style
google/adk-python
Python style and codebase conventions for ADK (Agent Development Kit): private-by-default file visibility, imports, type hints, Pydantic v2 models, formatting, docstrings, logging, async I/O, file…
Pythonic code with modern type hints, dataclasses, async patterns, packaging, and testing
$ npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rohitg00/awesome-claude-code-toolkit python-best-practices --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/rohitg00/awesome-claude-code-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/python-best-practices .claude/skills/python-best-practices && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "python-best-practices" agent skill from https://github.com/rohitg00/awesome-claude-code-toolkit/tree/main/skills/python-best-practices into .claude/skills/python-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-best-practices", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/rohitg00/awesome-claude-code-toolkit/tree/main/skills/python-best-practicesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rohitg00/awesome-claude-code-toolkit python-best-practices --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rohitg00/awesome-claude-code-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/python-best-practices .agents/skills/python-best-practices && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "python-best-practices" agent skill from https://github.com/rohitg00/awesome-claude-code-toolkit/tree/main/skills/python-best-practices into .agents/skills/python-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-best-practices", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rohitg00/awesome-claude-code-toolkit python-best-practices --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rohitg00/awesome-claude-code-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/python-best-practices .cursor/skills/python-best-practices && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "python-best-practices" agent skill from https://github.com/rohitg00/awesome-claude-code-toolkit/tree/main/skills/python-best-practices into .cursor/skills/python-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-best-practices", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/rohitg00/awesome-claude-code-toolkit.git --path skills/python-best-practices--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rohitg00/awesome-claude-code-toolkit python-best-practices --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rohitg00/awesome-claude-code-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/python-best-practices .gemini/skills/python-best-practices && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "python-best-practices" agent skill from https://github.com/rohitg00/awesome-claude-code-toolkit/tree/main/skills/python-best-practices into .gemini/skills/python-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-best-practices", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install rohitg00/awesome-claude-code-toolkit python-best-practicesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rohitg00/awesome-claude-code-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/python-best-practices .github/skills/python-best-practices && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "python-best-practices" agent skill from https://github.com/rohitg00/awesome-claude-code-toolkit/tree/main/skills/python-best-practices into .github/skills/python-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-best-practices", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rohitg00/awesome-claude-code-toolkit python-best-practices --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rohitg00/awesome-claude-code-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/python-best-practices .opencode/skills/python-best-practices && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "python-best-practices" agent skill from https://github.com/rohitg00/awesome-claude-code-toolkit/tree/main/skills/python-best-practices into .opencode/skills/python-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "python-best-practices", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
python-best-practicesPythonic code with modern type hints, dataclasses, async patterns, packaging, and testing
Python Best Practices is an agent skill from rohitg00/awesome-claude-code-toolkit. Pythonic code with modern type hints, dataclasses, async patterns, packaging, and testing
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Type safety. It works with Python and Pydantic. The repository describes itself as: The most comprehensive toolkit for Claude Code -- 135 agents, 35 curated skills, 42 commands, 176+ plugins, 20 hooks, 15 rules, 7 templates, 14 MCP configs, 26 companion apps, 52… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit ebdf1d5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
uvpippythonmypyFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv and pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Python Best Practices loads about 1.8k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 209 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from rohitg00/awesome-claude-code-toolkit at commit ebdf1d5, republished under its Apache-2.0 licence (© rohitg00). 209 words, ~1,843 tokens.
.claude/skills/python-best-practices/SKILL.md (or your agent's skills folder).# Use built-in generics (3.9+), no need for typing.List, typing.Dict
def process_items(items: list[str]) -> dict[str, int]:
return {item: len(item) for item in items}
# Union with | syntax (3.10+)
def find_user(user_id: int) -> User | None:
...
# Type parameter syntax (3.12+)
type Vector[T] = list[T]
type Matrix[T] = list[Vector[T]]
def first[T](items: list[T]) -> T:
return items[0]
# TypedDict for structured dicts
from typing import TypedDict
class UserResponse(TypedDict):
id: int
name: str
email: str
active: boolAlways type function signatures. Use mypy --strict or pyright in CI. Use type: ignore comments sparingly with justification.
from dataclasses import dataclass, field
@dataclass(frozen=True, slots=True)
class Point:
x: float
y: float
def distance_to(self, other: "Point") -> float:
return ((self.x - other.x) ** 2 + (self.y - other.y) ** 2) ** 0.5
@dataclass
class Config:
host: str = "localhost"
port: int = 8080
tags: list[str] = field(default_factory=list)Use frozen=True for immutable value objects. Use slots=True for memory efficiency.
from pydantic import BaseModel, Field, field_validator
class CreateUserRequest(BaseModel):
model_config = {"strict": True}
email: str = Field(max_length=255)
name: str = Field(min_length=1, max_length=100)
age: int = Field(ge=13, le=150)
@field_validator("email")
@classmethod
def validate_email(cls, v: str) -> str:
if "@" not in v:
raise ValueError("Invalid email format")
return v.lower()Rule: Use dataclasses for domain models and internal structs. Use Pydantic for API boundaries, config files, and external data parsing.
import asyncio
import httpx
async def fetch_user(client: httpx.AsyncClient, user_id: int) -> User:
response = await client.get(f"/users/{user_id}")
response.raise_for_status()
return User(**response.json())
async def fetch_all_users(user_ids: list[int]) -> list[User]:
async with httpx.AsyncClient(base_url="https://api.example.com") as client:
tasks = [fetch_user(client, uid) for uid in user_ids]
return await asyncio.gather(*tasks)
async def process_with_semaphore(items: list[str], max_concurrent: int = 10):
semaphore = asyncio.Semaphore(max_concurrent)
async def bounded_process(item: str):
async with semaphore:
return await process_item(item)
return await asyncio.gather(*[bounded_process(i) for i in items])Rules:
httpx instead of requests for async HTTPasyncio.gather for concurrent tasks, asyncio.Semaphore for rate limitingasyncio.to_thread for legacy code)async with for resource management (connections, sessions)my-project/
src/
my_project/
__init__.py
main.py
models.py
services/
__init__.py
user_service.py
api/
__init__.py
routes.py
tests/
conftest.py
test_models.py
test_services/
test_user_service.py
pyproject.tomlUse src layout to prevent accidental imports from the project root.
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "my-project"
version = "1.0.0"
requires-python = ">=3.12"
dependencies = [
"httpx>=0.27",
"pydantic>=2.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-cov",
"pytest-asyncio",
"mypy",
"ruff",
]
[project.scripts]
my-project = "my_project.main:cli"
[tool.ruff]
line-length = 100
target-version = "py312"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "SIM", "RUF"]
[tool.mypy]
strict = true
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]Use pyproject.toml for all tool configuration. Use Ruff instead of flake8 + isort + black (single tool, 10-100x faster).
# Use uv for fast dependency management
uv venv
uv pip install -e ".[dev]"
# Or standard venv
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"Always use virtual environments. Never install packages globally. Pin exact versions in a lockfile (uv.lock or requirements.txt generated from pip freeze).
import pytest
from unittest.mock import AsyncMock, patch
@pytest.fixture
def user_service(db_session):
return UserService(session=db_session)
async def test_create_user_returns_user_with_hashed_password(user_service):
user = await user_service.create(email="test@example.com", password="secret")
assert user.email == "test@example.com"
assert user.password_hash != "secret"
async def test_create_user_rejects_duplicate_email(user_service):
await user_service.create(email="test@example.com", password="secret")
with pytest.raises(DuplicateEmailError):
await user_service.create(email="test@example.com", password="other")
@pytest.fixture
def mock_http_client():
client = AsyncMock(spec=httpx.AsyncClient)
client.get.return_value = httpx.Response(200, json={"id": 1, "name": "Alice"})
return client
async def test_fetch_user_parses_response(mock_http_client):
user = await fetch_user(mock_http_client, user_id=1)
assert user.name == "Alice"
mock_http_client.get.assert_called_once_with("/users/1")Use conftest.py for shared fixtures. Use pytest.mark.parametrize for test variations. Use tmp_path fixture for file system tests.
# Unpacking
first, *rest = items
x, y = point
# Comprehensions over map/filter
squares = [x**2 for x in numbers if x > 0]
lookup = {u.id: u for u in users}
# Context managers for resource cleanup
with open(path) as f:
data = f.read()
# Walrus operator for assign-and-test
if (match := pattern.search(text)) is not None:
process(match.group(1))
# Structural pattern matching (3.10+)
match command:
case {"action": "move", "direction": d}:
move(d)
case {"action": "quit"}:
sys.exit(0)
case _:
raise ValueError(f"Unknown command: {command}")class AppError(Exception):
def __init__(self, message: str, code: str):
super().__init__(message)
self.code = code
class NotFoundError(AppError):
def __init__(self, resource: str, id: str):
super().__init__(f"{resource} {id} not found", "NOT_FOUND")
# Specific exceptions, never bare except
try:
user = await get_user(user_id)
except NotFoundError:
return {"error": "User not found"}, 404
except DatabaseError as e:
logger.exception("Database error fetching user")
return {"error": "Internal error"}, 500Never use bare except:. Catch the most specific exception. Use logger.exception() to include tracebacks. Define custom exception hierarchies for your application.
© rohitg00, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/python-best-practices of rohitg00/awesome-claude-code-toolkit.
Open the folder on GitHubat commit ebdf1d5
Python Best Practices next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Python Best Practices this skillrohitg00/awesome-claude-code-toolkit | 2.7k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Adk Stylegoogle/adk-python | 22k | — | ~748 | Automated safety check: Pass | Apache-2.0 | |
| Mastering Python SkillSpillwaveSolutions/agent-brain | 120 | — | ~1.4k | Automated safety check: Notes | MIT | |
| Code Reviewvectorize-io/hindsight | 46k | — | ~12k | Automated safety check: Pass | MIT | |
| Vibe Python Style Guidemistralai/mistral-vibe | 5.1k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Python Idiomsirahardianto/awesome-agv | 157 | — | ~4.4k | Automated safety check: Pass | MIT |
google/adk-python
Python style and codebase conventions for ADK (Agent Development Kit): private-by-default file visibility, imports, type hints, Pydantic v2 models, formatting, docstrings, logging, async I/O, file…
SpillwaveSolutions/agent-brain
Modern Python coaching covering language foundations through advanced production patterns.
vectorize-io/hindsight
Review changed code against project standards. An agent skill from vectorize-io/hindsight.
mistralai/mistral-vibe
Python conventions for the Mistral Vibe codebase covering style, strict typing, imports, Pydantic patterns, logging, error handling and file I/O.
irahardianto/awesome-agv
Modern Python (3.11+) idioms: type annotations, typing Protocols, Pydantic models, asyncio, pytest fixtures, and Ruff/Mypy strict compliance.
FerroxLabs/wayland
Guides expert-level Python project initialization with modern tooling: pyproject.toml configuration, uv for dependency management, src layout decisions, mypy strict mode, and ruff for…
rohitg00/awesome-claude-code-toolkit
Web accessibility patterns for WCAG 2.2 compliance including ARIA, keyboard navigation, screen readers, and testing
rohitg00/awesome-claude-code-toolkit
REST API design with resource naming, pagination, versioning, and OpenAPI spec generation
rohitg00/awesome-claude-code-toolkit
Authentication and authorization patterns including OAuth2, JWT, RBAC, session management, and PKCE flows
rohitg00/awesome-claude-code-toolkit
AWS cloud patterns for Lambda, ECS, S3, DynamoDB, and Infrastructure as Code with CDK/Terraform
rohitg00/awesome-claude-code-toolkit
CI/CD pipeline patterns for GitHub Actions, GitLab CI, testing strategies, and deployment automation
rohitg00/awesome-claude-code-toolkit
Auto-extract patterns from coding sessions, track corrections, and build reusable knowledge with confidence scoring
Categories
Pythonic code with modern type hints, dataclasses, async patterns, packaging, and testing. Python Best Practices is an agent skill from rohitg00/awesome-claude-code-toolkit.
Python Best Practices fits situations like: tasks that involve Type safety.
Run `npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a claude-code`. Or copy the skill folder (skills/python-best-practices in rohitg00/awesome-claude-code-toolkit) into .claude/skills/python-best-practices in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a codex`. Or copy the skill folder (skills/python-best-practices in rohitg00/awesome-claude-code-toolkit) into .agents/skills/python-best-practices in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rohitg00/awesome-claude-code-toolkit --skill python-best-practices -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/python-best-practices, .gemini/skills/python-best-practices, .github/skills/python-best-practices and .opencode/skills/python-best-practices in your project.
Going by SKILL.md and its folder, Python Best Practices needs the command-line tools its instructions call (uv, pip, python and mypy). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Python Best Practices is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Python Best Practices: Adk Style (google/adk-python, 22k stars), Mastering Python Skill (SpillwaveSolutions/agent-brain, 120 stars), Code Review (vectorize-io/hindsight, 46k stars) and Vibe Python Style Guide (mistralai/mistral-vibe, 5.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rohitg00 (a GitHub user) maintains it in rohitg00/awesome-claude-code-toolkit, which has 2,683 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on May 12, 2026.
Source: rohitg00/awesome-claude-code-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.