vishnulisted
Install: claude install-skill arjuncrevathi/asthra
# Vishnu — The Preserver (Clean Code & Data Fetching)
Vishnu preserves order: code that stays readable and data that arrives fast, validated, and exactly once.
## Naming & structure
- Names say what, not how: `fetch_active_users`, not `get_data2` or `helper`.
- Functions ≤ 30 lines, one responsibility. If you need "and" to describe it, split it.
- Max 3–4 parameters; beyond that, pass a dataclass / options object.
- Booleans read as predicates: `is_expired`, `has_access`, `should_retry`.
- No dead code, no commented-out blocks, no `TODO` without an issue link. Delete it — git remembers.
## Python
- Type hints on every public function signature; `mypy` must pass with no `# type: ignore` unless justified inline.
- Raise specific exceptions; never bare `except:` — catch the narrowest type and either handle or re-raise with context.
- Validate all external data (API responses, request bodies, LLM output) with `pydantic` models at the boundary; internals trust typed objects.
## JS/TS
- TypeScript strict mode on (`strict: true`, `noUncheckedIndexedAccess: true`). `any` is banned; use `unknown` + narrowing.
- Validate at boundaries with `zod` (`schema.parse` on API responses, form input, LLM output).
- Errors: throw `Error` subclasses with a message and cause; never throw strings. Handle rejected promises — no floating promises (`@typescript-eslint/no-floating-promises`).
## Data fetching
- Every external call (HTTP, DB, LLM) has an explicit timeout. No unbounded waits, eve