testdino-hq/google-styleguides-skills · Archived

python

Google's official Python style guide extending PEP 8. Covers type annotations, Google-style docstrings, imports, naming conventions, f-strings, comprehensions, and exception handling. Enforces 80-char line length and 4-space indentation.

First seen Mar 2, 2026

Installation

$ npx skills add testdino-hq/google-styleguides-skills --skill python

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from testdino-hq/google-styleguides-skills · top by installs.

npx skills add testdino-hq/google-styleguides-skills

Browse all from testdino-hq/google-styleguides-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 9
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,054 B
  • docs SUMMARY.md 251 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 15 installs

SKILL.md

Google Python Style Guide

Official Google Python coding standards extending PEP 8.

Golden Rules

  1. Follow PEP 8 as baseline — Google's guide extends it
  2. Use type annotations for all public functions and methods
  3. 4-space indentation — no tabs
  4. Maximum line length: 80 characters
  5. Docstrings mandatory for all public modules, functions, classes, methods
  6. Prefer comprehensions over map()/filter()
  7. Use f-strings for string formatting (Python 3.6+)

Quick Reference

Naming Conventions

Element Convention Example
Modules snake_case user_service.py
Classes UpperCamelCase UserService
Functions/Methods snake_case getuserby_id
Variables snake_case user_count
Constants UPPERSNAKECASE MAX_RETRIES
Protected singleleading _internal
Private __double_leading __private

Type Annotations

# ✓ CORRECT
def get_user(user_id: int) -> Optional[dict]:
    ...

def process_items(items: List[str], max_count: int = 10) -> List[str]:
    ...

# ✗ INCORRECT
def get_user(user_id):  # missing type annotations
    ...

Docstrings (Google Style)

def fetch_data(url: str, timeout: int = 30) -> dict:
    """Fetches data from the given URL.

    Args:
        url: The URL to fetch data from.
        timeout: Request timeout in seconds. Defaults to 30.

    Returns:
        A dictionary containing the response data.

    Raises:
        ValueError: If the URL is invalid.
    """
    ...

Imports

# ✓ CORRECT - stdlib, then third-party, then local
import os
import sys
from typing import Optional, List

import numpy as np

from myproject import utils

# ✗ INCORRECT
import os, sys        # one import per line
from os.path import * # never wildcard imports

String Formatting

# ✓ CORRECT - f-strings
name = "Alice"
greeting = f"Hello, {name}!"

# ✗ INCORRECT
greeting = "Hello, " + name + "!"    # use f-strings
greeting = "Hello, %s!" % name       # use f-strings

Comprehensions

# ✓ CORRECT
squares = [x ** 2 for x in range(10)]
user_map = {user.id: user for user in users}
evens = [x for x in range(20) if x % 2 == 0]

# ✗ INCORRECT
squares = list(map(lambda x: x ** 2, range(10)))  # use comprehension

Exception Handling

# ✓ CORRECT - catch specific exceptions
try:
    data = json.loads(raw_input)
except json.JSONDecodeError as e:
    raise ValueError(f"Could not parse: {e}") from e

# ✗ INCORRECT
try:
    ...
except:     # never bare except
    pass

Default Arguments

# ✗ INCORRECT - mutable default arguments
def add_item(item: str, items: List[str] = []) -> List[str]:  # BAD!
    items.append(item)
    return items

# ✓ CORRECT - use None for mutable defaults
def add_item(item: str, items: Optional[List[str]] = None) -> List[str]:
    if items is None:
        items = []
    items.append(item)
    return items

Common Mistakes

Mistake Correct Approach
Mutable default args Use None as default
Wildcard imports Explicit imports only
Bare except Catch specific exceptions
% or .format() strings Use f-strings
map()/filter() Use comprehensions
Missing docstrings Add Google-style docstrings
Missing type annotations Annotate public functions

When to Use This Guide

  • Writing new Python code
  • Refactoring existing Python
  • Code reviews
  • Setting up linting rules (pylint, flake8)
  • Onboarding new team members

Install

npx skills add testdino-hq/google-styleguides-skills/python

Full Guide

See [python.md](python.md) for complete details, examples, and edge cases.