jikime/jikime-adk/jikime-lang-python

Claude Code and agent skill by jikime/jikime-adk

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Python 3.13+ development specialist covering FastAPI, Django, async patterns, and data science. Use when developing Python APIs, web applications, data pipelines, or writing tests.

Install

npx vskill@latest install jikime/jikime-adk/jikime-lang-python

SKILL.md

Python Development Guide

Python 3.13+ 개발을 위한 간결한 가이드.

Quick Reference

용도도구특징
Web FrameworkFastAPI빠름, 타입 힌트, OpenAPI
Web FrameworkDjango풀스택, 관리자, ORM
ValidationPydantic데이터 검증
Testingpytest유연한 테스팅

Project Setup

bash
# uv (권장)
uv init project && cd project
uv add fastapi uvicorn pydantic sqlalchemy
# poetry
poetry new project && cd project
poetry add fastapi uvicorn pydantic
# pip
python -m venv .venv && source .venv/bin/activate
pip install fastapi uvicorn pydantic

FastAPI Patterns

Basic API
python
from fastapi import FastAPI, Depends, HTTPException
from pydantic import BaseModel
app = FastAPI()
class UserCreate(BaseModel):
name: str
email: str
class UserResponse(BaseModel):
id: int
name: str
email: str
model_config = {"from_attributes": True}
@app.post("/users", response_model=UserResponse)
async def create_user(data: UserCreate):
user = await UserService.create(data)
return user
@app.get("/users/{user_id}")
async def get_user(user_id: int):
user = await UserService.get(user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
return user
Dependency Injection
python
from fastapi import Depends
from sqlalchemy.ext.asyncio import AsyncSession
async def get_db() -> AsyncGenerator[AsyncSession, None]:
async with async_session() as session:
yield session
@app.get("/users")
async def list_users(db: AsyncSession = Depends(get_db)):
return await UserRepository(db).list_all()
Authentication
python
from fastapi import Depends, HTTPException, status
from fastapi.security import HTTPBearer
security = HTTPBearer()
async def get_current_user(token: str = Depends(security)):
user = await verify_token(token.credentials)
if not user:
raise HTTPException(status_code=401, detail="Invalid token")
return user
@app.get("/me")
async def get_me(user: User = Depends(get_current_user)):
return user

Pydantic v2 Patterns

python
from pydantic import BaseModel, Field, field_validator
class User(BaseModel):
id: int
name: str = Field(min_length=2, max_length=50)
email: str
age: int | None = None
model_config = {"from_attributes": True, "str_strip_whitespace": True}
@field_validator("email")
@classmethod
def validate_email(cls, v: str) -> str:
if "@" not in v:
raise ValueError("Invalid email")
return v.lower()
# Usage
user = User.model_validate(orm_object)
user_dict = user.model_dump()
user_json = user.model_dump_json()

SQLAlchemy 2.0 Async

python
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = "users"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(String(50))
email: Mapped[str] = mapped_column(String(100), unique=True)
# Repository
class UserRepository:
def __init__(self, session: AsyncSession):
self.session = session
async def get(self, user_id: int) -> User | None:
return await self.session.get(User, user_id)
async def create(self, data: UserCreate) -> User:
user = User(**data.model_dump())
self.session.add(user)
await self.session.commit()
return user

pytest Patterns

python
import pytest
from httpx import AsyncClient
@pytest.fixture
async def client():
async with AsyncClient(app=app, base_url="http://test") as ac:
yield ac
@pytest.mark.asyncio
async def test_create_user(client: AsyncClient):
response = await client.post("/users", json={
"name": "John",
"email": "john@example.com"
})
assert response.status_code == 200
assert response.json()["name"] == "John"
# Parametrize
@pytest.mark.parametrize("email,expected", [
("valid@email.com", True),
("invalid", False),
("", False),
])
def test_validate_email(email, expected):
result = validate_email(email)
assert result == expected

Project Structure

project/
├── src/
│ └── project/
│ ├── __init__.py
│ ├── main.py
│ ├── api/
│ │ └── routes/
│ ├── core/
│ │ └── config.py
│ ├── models/
│ ├── schemas/
│ └── services/
├── tests/
├── pyproject.toml
└── README.md

Best Practices

  • Type Hints: 모든 함수에 타입 힌트 사용
  • Async: I/O 작업에 async/await 사용
  • Pydantic: 입출력 검증에 Pydantic 모델 사용
  • Dependency Injection: FastAPI Depends로 의존성 주입
  • 환경변수: pydantic-settings로 설정 관리

Last Updated: 2026-01-21 Version: 2.0.0

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/jikime/jikime-adk/jikime-lang-python/badge)](https://verified-skill.com/skills/jikime/jikime-adk/jikime-lang-python)

Something wrong with this skill or its page? Tell us.