원클릭으로
fix-types
Interactively fix any type checking issues in Python code
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Interactively fix any type checking issues in Python code
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | fix-types |
| description | Interactively fix any type checking issues in Python code |
| allowed-tools | ["Bash(uv run mypy *)"] |
To fix types, do the following.
uv run mypy .
cast() over type: ignoreWhen mypy can't infer the correct type, prefer using cast() over # type: ignore:
# Preferred - documents the expected type
choices = cast(list[tuple[str, str]], field.choices)
# Avoid when cast is possible - just silences the error
choices = list(field.choices) # type: ignore[arg-type]
Why: cast() explicitly documents what type you expect, making the code more readable and maintainable. It also doesn't silence other potential errors on the same line.
When adding null checks to satisfy mypy, prefer raising proper exceptions over using assert:
# Preferred - proper error handling
if obj.related_field is None:
raise ValueError("Object must have a related field")
result = obj.related_field.some_method()
# Avoid - assertions can be disabled with -O flag
assert obj.related_field is not None
result = obj.related_field.some_method()
Why: Assertions can be disabled in production with python -O, making them unreliable for runtime validation. Proper exceptions ensure the check always runs and provides better error handling.
type: ignore, add a commentIf type: ignore is necessary (e.g., mypy limitation with valid code), always add a short explanation:
# Good - explains why the ignore is needed
self.tier = tier # type: ignore[misc] # mypy can't handle Enum tuple values with custom __init__
# Bad - no explanation
self.tier = tier # type: ignore[misc]
When using type hints with Django's lazy translation strings (gettext_lazy), use the following pattern to avoid mypy errors while keeping the code working in production (where django-stubs-ext is not installed):
from __future__ import annotations # Must be the first import
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from django_stubs_ext import StrOrPromise
# Then use StrOrPromise in type hints
def my_function(name: StrOrPromise) -> StrOrPromise:
...
class MyData:
title: StrOrPromise
description: StrOrPromise
Why this pattern:
from __future__ import annotations makes type annotations strings at runtime (not evaluated)if TYPE_CHECKING: ensures the import only happens during type checking, not at runtimedjango-stubs-ext is a dev dependency and won't be available in productionUse when the user asks to create, view, or modify a SaaS Pegasus project via the `pegasus` CLI — e.g. "create a new Pegasus project for X", "add subscriptions to my Pegasus project", "show me my project settings", "switch the front-end framework to React", "what features can I use on my license tier".
Resolve merge conflicts when upgrading SaaS Pegasus. Use when the user has merge conflicts after running git merge during a Pegasus upgrade, or when they need help with the merge process. Also use when the user mentions 'merge pegasus".
Upgrade JavaScript dependencies using npm-check-updates, then run post-upgrade checks to ensure nothing is broken.
Upgrade to the latest version of SaaS Pegasus. Use when the user mentions 'upgrade pegasus,' or 'pegasus upgrade.'
Upgrade Python dependencies using uv, then run post-upgrade checks to ensure nothing is broken.