programming
MUST USE for ANY work on .py .pyi .rs .ts .tsx .mts .cts .go files. One philosophy: strict types, modern stacks (Pydantic v2 / serde+thiserror / Zod / gin+sqlc+pgx+slog), modern toolchains (uv+basedpyright+ruff / cargo+clippy+miri / Bun+Biome+tsc / gofumpt+golangci-lint v2+nilaway+go-race), parse-don't-validate, exhaustive match, typed errors, no any/unwrap/panic, 250 LOC ceiling, TDD, consumer-routed logging. Routes to references/{python,rust,typescript,rust-ub,go}/ + references/logging.md. Triggers: write/edit Python/Rust/TypeScript/Go code, new project, gin server, bubbletea TUI, CJK IME, c
npx skills add code-yeongyu/oh-my-openagent --skill programming --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
The skill prescribes language-specific workflows for writing or editing code in Python, Rust, TypeScript, or Go, anchored to strong typing, explicit boundaries, and exhaustive variant handling. It enforces a TDD-driven approach with red/green/refactor cycles and requires loading the language reference set before coding.
How it works
- It begins with selecting the target language by file extension or user request, then loads the corresponding reference (Python, Rust, TypeScript, or Go, and related ub/Go references if applicable).
- It applies a shared philosophy: emphasize minimal, type-safe implementations; parse-don't-validate at boundaries; exhaustively match and clearly separate semantic primitives; avoid nulls and unsafe patterns; and adhere to a test-driven workflow.
- The workflow follows red → green → refactor: write a failing test for the desired behavior, implement the minimum code to pass, then refactor while keeping tests green.
- Tests should be unit, integration, and E2E as appropriate, with clear Given/When/Then structure and no prose assertions in prompt tests.
- It uses per-language iron rules from references and respects immutable defaults, branded primitives, and exhaustive matching as dictated by the specific language reference.
When to use it
Use this skill whenever writing or editing code in the supported languages (Python, Rust, TypeScript, Go), creating a new project, or performing tasks like adding servers, TUI interfaces, or complex integrations that require strict typing and observable, testable behavior.
What it can touch
The skill expects to operate within the codebase files for Python, Rust, TypeScript, and Go as guided by the loaded references. It mentions interacting with toolchains and linters in the philosophy but does not enumerate external touchpoints beyond the language references.
Caveats
All guidance and constraints are sourced from the language reference sets loaded for the target language and the shared philosophy. It emphasizes not introducing unsafe patterns or runtime unwraps and requires tests to prove behavior.
# Programming You are a lazy senior engineer — lazy meaning efficient, never careless. **The best code is the code never written; the code you do write is type-strict, stack-first, async-correct, and architecturally honest about size.** This skill is an index. The hard per-language rules live under `references/`. Load the language-specific reference **before** writing a single line of code. --- ## PHASE 0 — LANGUAGE GATE (RUN THIS FIRST, EVERY TIME) **DO NOT WRITE OR EDIT A SINGLE LINE OF CODE BEFORE COMPLETING THIS GATE.** 1. **Identify the language** from the file extension or the user's request. 2. **STOP** and read the matching reference set: | File / Language | MANDATORY reading (load `Read` tool on every file below) | |---|---| | `.py`, `.pyi`, "Python" | `references/python/README.md` + every file under `references/python/` that the README tells you to load on demand | | `.rs`, `Cargo.toml`, "Rust" | `references/rust/README.md` + every file under `references/rust/` that the README tells you to load on demand. **IF the change touches `unsafe`, `*mut`, `*const`, `MaybeUninit`, FFI, `unsafe impl Send/Sync`, or a custom lock-free primitive: ALSO load `references/rust-ub/README.md
- PHASE 0 — LANGUAGE GATE (RUN THIS FIRST, EVERY TIME)
- Shared philosophy (all three languages)
- TDD DISCIPLINE — NON-NEGOTIABLE
- The order
- The shape of the test pyramid
- Given / When / Then is mandatory
- Less mock, the better
- Efficient AND accurate — both, not either
- Prompt tests: NEVER assert prose
- Anti-patterns the skill rejects
- Cross-language iron list
- Modern ecosystem - canonical libraries (2026)
- Modern toolchain - the only acceptable setup
- CODE SMELLS — AUTOMATIC REVIEW TRIGGERS
awk '!/^[[:space:]]*$/ && !/^[[:space:]]*(\/\/|#|--)/' <file> | wc -l Python uv run scripts/python/check-no-excuse-rules.py <changed paths> Rust bash scripts/rust/check-no-excuse-rules.sh <changed paths> TypeScript bun run scripts/typescript/check-no-excuse-rules.ts <changed paths>
What does the programming skill do?
MUST USE for ANY work on .py .pyi .rs .ts .tsx .mts .cts .go files. One philosophy: strict types, modern stacks (Pydantic v2 / serde+thiserror / Zod / gin+sqlc+pgx+slog), modern toolchains (uv+basedpyright+ruff / cargo+clippy+miri / Bun+Biome+tsc / gofumpt+golangci-lint v2+nilaway+go-race), parse-don't-validate, exhaustive match, typed errors, no any/unwrap/panic, 250 LOC ceiling, TDD, consumer-routed logging. Routes to references/{python,rust,typescript,rust-ub,go}/ + references/logging.md. Triggers: write/edit Python/Rust/TypeScript/Go code, new project, gin server, bubbletea TUI, CJK IME, c
How do I install it?
Run `npx skills add code-yeongyu/oh-my-openagent --skill programming --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From code-yeongyu/oh-my-openagent, a repository with 67,209 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.