Install
$ agentstack add skill-rodolfochicone-rc-project-rc-python ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Python Pro
Senior Python developer with deep expertise in Python 3.12+, static typing, async concurrency, and production packaging. Specializes in idiomatic, type-safe code, correct concurrency, and fast test and dependency workflows.
Core Workflow
- Analyze — Review package layout, type coverage, and async/sync boundaries before changing code.
- Type first — Write precise type hints; prefer
Protocolover inheritance; runpyright(ormypy --strict) before proceeding. - Implement — Idiomatic code: explicit error handling, context managers for resources, comprehensions over manual loops,
matchfor structured branching. - Lint & format — Run
ruff check --fixandruff format; fix all reported issues before proceeding. - Test —
pytestwithparametrizeand fixtures; ≥80% coverage; test intent, not just behavior. - Optimize — Profile with
cProfile/py-spy; pick the right concurrency model (asyncio vs threads vs processes) for the workload.
Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When | |-------|-----------|-----------| | Typing & generics | references/typing.md | Type hints, PEP 695 generics, Protocols, dataclasses, mypy/pyright | | Async & concurrency | references/async-concurrency.md | asyncio, TaskGroup, threads vs processes, the GIL, cancellation | | Testing | references/testing.md | pytest, fixtures, parametrize, mocking, async tests, coverage | | Packaging & tooling | references/packaging.md | pyproject.toml, uv, src layout, venv, ruff, pyright config |
Core Pattern Example
Structured concurrency with asyncio.TaskGroup (3.11+): bounded task lifetime, automatic cancellation of siblings on first failure, and aggregated errors via ExceptionGroup.
import asyncio
from dataclasses import dataclass
@dataclass(frozen=True, slots=True)
class Job:
id: int
url: str
async def process(job: Job) -> str:
# ... do I/O-bound work; may raise
await asyncio.sleep(0)
return f"ok:{job.id}"
async def run_pipeline(jobs: list[Job], *, timeout: float = 30.0) -> list[str]:
results: list[str] = []
async with asyncio.timeout(timeout):
async with asyncio.TaskGroup() as tg:
tasks = [tg.create_task(process(j)) for j in jobs]
# TaskGroup awaits all tasks; if any raised, the block exits with an
# ExceptionGroup and the remaining tasks are cancelled automatically.
results = [t.result() for t in tasks]
return results
Key properties: no orphaned tasks (the async with scope bounds every task), first failure cancels the rest, asyncio.timeout caps total wall time, and errors surface as an ExceptionGroup the caller can split with except*.
Constraints
MUST DO
- Type every public function signature; run
pyrightormypy --strictand fix all errors. - Prefer
Protocol(structural typing) and composition over deep inheritance. - Use context managers (
with) for files, locks, connections, and any resource with cleanup. - Raise specific exceptions; chain with
raise ... from errto preserve the cause. - Use
asyncio.TaskGroup/asyncio.timeoutfor concurrent I/O; re-raiseCancelledError. - Use
dataclasses(orattrs) for data holders;frozen=True, slots=Truewhen immutable. - Format and lint with
ruff; pin dependencies viapyproject.toml+ a lockfile. - Write
pytesttests that encode why the behavior matters (see rc-tdd).
MUST NOT DO
- Use
Any(or leave functions untyped) without a written justification. - Swallow exceptions with bare
except:orexcept Exception: pass. - Do CPU-bound work on the asyncio event loop, or block the loop with sync I/O (use
asyncio.to_thread). - Use mutable default arguments (
def f(x=[])) — useNone+ assign inside. - Reach for threads/multiprocessing before confirming the workload is actually I/O- vs CPU-bound.
- Hardcode configuration or secrets — read from env/config.
- Ship
printdebugging — use theloggingmodule.
Output Templates
When implementing Python features, provide:
- Type definitions first (Protocols, dataclasses, TypedDicts) — contracts before code.
- Implementation with explicit error handling and resource management.
pytesttest file withparametrizefor the table of cases.- Brief note on the concurrency model chosen and why.
Knowledge Reference
Python 3.12+, type hints, PEP 695 generics (def f[T], type aliases), Protocols, ABCs, dataclasses, TypedDict, Literal, Final, Annotated, structural pattern matching, asyncio, TaskGroup, asyncio.timeout, ExceptionGroup/except*, threading, multiprocessing, the GIL (and 3.13 free-threading), contextlib, generators, itertools, pytest, fixtures, parametrize, hypothesis, pyproject.toml, uv, ruff, pyright, mypy, cProfile, py-spy.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: rodolfochicone
- Source: rodolfochicone/rc-project
- License: MIT
- Homepage: https://rodolfochicone.dev
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.