Borrowing it
Nothing to install: this file belongs to irahardianto/rugged-gemini. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/irahardianto/rugged-gemini/main/.gemini/skills/typescript-idioms/SKILL.mdgit clone --depth 1 https://github.com/irahardianto/rugged-geminiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/irahardianto/rugged-gemini/typescript-idioms)<a href="https://agentmods.dev/skills/irahardianto/rugged-gemini/typescript-idioms"><img src="https://agentmods.dev/badge/skills/irahardianto/rugged-gemini/typescript-idioms/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/irahardianto/rugged-gemini/typescript-idioms"><img src="https://agentmods.dev/badge/skills/irahardianto/rugged-gemini/typescript-idioms.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.02263 |
| Opus 5 | $0.00000 | $0.01131 |
| Sonnet 5 | $0.00000 | $0.00453 |
| Haiku 4.5 | $0.00000 | $0.00226 |
Grade A, and why
typescript-idioms scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 282 lines — stays where its author put it; the contents beside it link to each section on GitHub.
TypeScript Idioms and Patterns
TS type system = documentation + test + specification. Encode domain invariants so invalid states are unrepresentable. Lean into the compiler.
Scope: TS-specific type system and language idioms. Quality commands: GEMINI.md § Code Completion Mandate. Logging:
@.gemini/skills/logging-and-observability-principles/SKILL.md.
Framework Detection
When working on .ts/.tsx files, detect the project framework from imports and load the corresponding idiom skill:
| Import Pattern | Framework | Load Skill |
|---|---|---|
from 'vue', from 'pinia', from 'vue-router', from '@vueuse/*' |
Vue 3 | @.gemini/skills/vue-idioms/SKILL.md |
from 'react', from 'react-dom', from '@reduxjs/*', from 'zustand' |
React | @.gemini/skills/react-idioms/SKILL.md |
from '@angular/core', from '@angular/*' |
Angular | @.gemini/skills/angular-idioms/SKILL.md |
from 'next', from 'next/*' |
Next.js | @.gemini/skills/nextjs-idioms/SKILL.md |
Framework-specific file types (.vue, .jsx) auto-activate their skills directly. This table covers .ts/.tsx files that use framework APIs (composables, hooks, stores, services).
Strict Mode — Non-Negotiable
{
"compilerOptions": {
"strict": true,
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true
}
}
Never disable per-file without // STRICT-DISABLE: rationale comment.
Type System
-
unknownoverany— always:// ✅ Forces narrowing function parse(data: unknown): User { if (!isUser(data)) throw new Error('Invalid user shape'); return data; } // ❌ Disables type checker function parse(data: any): User { return data; } -
readonlyfor immutability:interface TaskState { readonly id: string; readonly items: readonly Task[]; } function process(tasks: readonly Task[]): Summary { ... } -
Discriminated unions for state machines:
type AsyncState<T> = | { status: 'idle' } | { status: 'loading' } | { status: 'success'; data: T } | { status: 'error'; error: Error }; function render(state: AsyncState<User>): string { switch (state.status) { case 'idle': return 'Waiting...'; case 'loading': return 'Loading...'; case 'success': return state.data.name; case 'error': return state.error.message; } }
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 282 lines · 0 tokens per session scan A 4cca61d209af
typescript-idioms is a skill published in the GitHub repository irahardianto/rugged-gemini (5 stars, last pushed 4mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,263 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
fast-typescript-check
Keep www-sacred's TypeScript fast to type-check and fast to run. Use when touching the ASCII/canvas animation components (the only real per-frame code here), tightening type-check wall-clock, or auditing a change for runtime or compiler regressions. Scoped to this repo — a React 19 / Next.js 16 component library plus…
onejs-setup-and-overview
Use this skill whenever the user wants to build or set up user interface in a Unity project using OneJS, React, TypeScript, or JSX, e.g. 'add a main menu to my game', 'build a settings screen', 'make a HUD', 'set up OneJS', 'my OneJS panel is blank', 'the UI is not hot reloading'. Covers confirming OneJS is installed…
coding-standards
A set of general coding standards and practical patterns for TypeScript, JavaScript, React, and Node.js. It covers readable naming, simple designs, avoiding repetition, and delaying unnecessary features.
typescript-rules
React/TypeScript frontend development rules including type safety, component design, state management, and error handling. Use when implementing React components, TypeScript code, or frontend features.
electron-development
Electron development guidelines for building cross-platform desktop applications with JavaScript/TypeScript.
typescript-best-practices
TypeScript best practices. Use when reading or editing any .ts or .tsx file.