python-plus

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

Enhanced Python with async/await patterns, type hints, dataclasses, testing strategies, performance optimization, and project structure templates.

一句话选型结论

按资料字段整理

python-plus是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_15292d5a/yjkj-python-plus
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_15292d5a仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791619557
正文体量6.2 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
python-plus当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

6.2 KB
模型实际读到的说明书原文,来自技能仓库

Python Plus

Enhanced Python with async patterns, type hints, testing, and performance optimization.

Features

  • Async/Await Patterns: asyncio, aiohttp, async generators
  • Advanced Type Hints: Generics, protocols, type guards
  • Data Classes: attrs, pydantic, dataclasses
  • Testing Strategies: pytest fixtures, parametrize, mocking
  • Performance: Profiling, caching, optimization

Quick Reference

Task Tool
Type checking mypy, pyright
Formatting black, ruff
Testing pytest
Profiling cProfile, py-spy
Linting ruff, flake8

Async/Await Patterns

Basic Async

import asyncio

async def fetch_data(url: str) -> dict:
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.json()

# Run async function
result = asyncio.run(fetch_data("https://api.example.com"))

Async Generators

async def fetch_pages(url: str):
    page = 1
    while True:
        async with aiohttp.ClientSession() as session:
            async with session.get(f"{url}?page={page}") as response:
                data = await response.json()
                if not data:
                    break
                yield data
                page += 1

# Usage
async for page_data in fetch_pages("https://api.example.com/items"):
    process(page_data)

Async Context Managers

class AsyncDatabase:
    async def __aenter__(self):
        self.conn = await asyncpg.connect()
        return self

    async def __aexit__(self, exc_type, exc_val, exc_tb):
        await self.conn.close()

# Usage
async with AsyncDatabase() as db:
    await db.execute("SELECT * FROM users")

Task Groups

async def main():
    async with asyncio.TaskGroup() as tg:
        task1 = tg.create_task(fetch_data(url1))
        task2 = tg.create_task(fetch_data(url2))

    # Both tasks completed
    result1 = task1.result()
    result2 = task2.result()

Advanced Type Hints

Generics

from typing import TypeVar, Generic

T = TypeVar('T')

class Repository(Generic[T]):
    def __init__(self, items: list[T]):
        self.items = items

    def get(self, index: int) -> T:
        return self.items[index]

# Usage
repo = Repository[int]([1, 2, 3])

Protocols

from typing import Protocol

class Drawable(Protocol):
    def draw(self) -> None: ...

class Circle:
    def draw(self) -> None:
        print("Drawing circle")

def render(shape: Drawable) -> None:
    shape.draw()

Type Guards

from typing import TypeGuard

def is_string_list(val: list[object]) -> TypeGuard[list[str]]:
    return all(isinstance(x, str) for x in val)

def process(data: list[object]) -> None:
    if is_string_list(data):
        # data is now list[str]
        print("\n".join(data))

Literal Types

from typing import Literal

def set_mode(mode: Literal["read", "write", "append"]) -> None:
    pass

set_mode("read")  # OK
set_mode("invalid")  # Error

Data Classes

Pydantic

from pydantic import BaseModel, Field

class User(BaseModel):
    name: str = Field(..., min_length=1)
    email: str = Field(..., pattern=r'^[\w\.-]+@[\w\.-]+\.\w+$')
    age: int = Field(..., ge=0, le=150)

# Validation
user = User(name="Alice", email="alice@example.com", age=30)

attrs

import attrs

@attrs.define
class User:
    name: str
    email: str
    age: int = attrs.field(validator=attrs.validators.ge(0))

Testing Strategies

Pytest Fixtures

import pytest
from myapp import create_app

@pytest.fixture
def app():
    app = create_app(testing=True)
    yield app

@pytest.fixture
def client(app):
    return app.test_client()

def test_homepage(client):
    response = client.get("/")
    assert response.status_code == 200

Parametrize

@pytest.mark.parametrize("input,expected", [
    ("hello", "HELLO"),
    ("world", "WORLD"),
    ("", ""),
])
def test_upper(input, expected):
    assert input.upper() == expected

Mocking

from unittest.mock import patch, MagicMock

@patch('myapp.external_api.fetch')
def test_with_mock(mock_fetch):
    mock_fetch.return_value = {"status": "ok"}
    result = my_function()
    assert result["status"] == "ok"

Performance Optimization

Caching

from functools import lru_cache

@lru_cache(maxsize=128)
def expensive_function(n: int) -> int:
    return n * n

# Async caching
from aiocache import cached

@cached(ttl=300)
async def get_user(user_id: int) -> dict:
    return await db.get_user(user_id)

Profiling

import cProfile

def profile_function():
    # Code to profile
    pass

cProfile.run('profile_function()')

Slots

class Point:
    __slots__ = ('x', 'y')

    def __init__(self, x: int, y: int):
        self.x = x
        self.y = y

Project Structure

project/
├── src/
│   └── mypackage/
│       ├── __init__.py
│       ├── core.py
│       └── utils.py
├── tests/
│   ├── __init__.py
│   ├── test_core.py
│   └── test_utils.py
├── pyproject.toml
├── README.md
└── .github/
    └── workflows/
        └── ci.yml

pyproject.toml

[project]
name = "mypackage"
version = "0.1.0"
requires-python = ">=3.10"

[tool.pytest.ini_options]
testpaths = ["tests"]

[tool.mypy]
python_version = "3.10"
strict = true

[tool.ruff]
line-length = 88

Best Practices

  1. Use type hints - Improve code clarity and tooling support
  2. Write docstrings - Document public APIs
  3. Use virtual environments - Isolate dependencies
  4. Follow PEP 8 - Consistent code style
  5. Write tests - Aim for high coverage
  6. Profile before optimizing - Don't guess bottlenecks
  7. Use async for I/O - Don't block the event loop
  8. Prefer composition - Over inheritance

常见问题

5 问
答案由本站依据条目字段整理
python-plus怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_15292d5a/yjkj-python-plus。安装方式为未标注。装完刷新技能列表或重开客户端。

python-plus支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

python-plus权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

python-plus收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

python-plus用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。