AgentSkillsCN

coding-standards

Python/Terraform编码规范。适用于代码编写、修改与评审时的参考。涵盖类型提示、dataclass、Ruff规则、CIDR配置等内容。

SKILL.md
--- frontmatter
name: coding-standards
description: Python/Terraformのコーディング規約。コード作成、修正、レビュー時に参照。型ヒント、dataclass、Ruff、CIDR設定など。
user-invocable: false
allowed-tools: Read, Grep, Glob

Coding Standards

Python

ルール詳細
型ヒント必須。Python 3.11+ union syntax `X
データ構造dataclass で定義
環境変数os.getenv() で取得
フォーマッタRuff (line-length=88)
エラー処理適切にハンドリングしてUIに表示

python
from dataclasses import dataclass

@dataclass
class RepoInfo:
    name: str
    description: str | None
    language: str | None
    stars: int

Streamlit

ルール詳細
状態管理st.session_state でフラグ管理
ボタン処理on_click コールバック使用、st.rerun() は避ける
レイアウトst.columnsvertical_alignment で揃える

ボタン + 状態管理パターン

python
# NG: st.rerun() を使う
if st.button("実行"):
    do_something()
    st.rerun()  # 避ける

# OK: on_click + session_state
def on_click_handler(arg: str) -> None:
    st.session_state["should_execute"] = True
    st.session_state["arg"] = arg

st.button("実行", on_click=on_click_handler, args=("value",))

if st.session_state.get("should_execute", False):
    st.session_state["should_execute"] = False  # リセット
    do_something(st.session_state["arg"])

Terraform

ルール詳細
ingressINGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER のみ
egressVPC Connector経由 ALL_TRAFFIC
CIDR重複禁止: connector=10.8.0.0/28, subnet=10.10.0.0/24
ポートStreamlit=8501 (container_port設定)
イメージタグmain.tf と gcloud builds submit で一致

コマンド

bash
cd terraform
terraform fmt && terraform validate
terraform plan
terraform apply