Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jimmc414/claude-code-plugin-marketplace --skill define-domain-typesgit clone --depth 1 https://github.com/jimmc414/claude-code-plugin-marketplaceWrote 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/jimmc414/claude-code-plugin-marketplace/define-domain-types)<a href="https://agentmods.dev/skills/jimmc414/claude-code-plugin-marketplace/define-domain-types"><img src="https://agentmods.dev/badge/skills/jimmc414/claude-code-plugin-marketplace/define-domain-types/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/jimmc414/claude-code-plugin-marketplace/define-domain-types"><img src="https://agentmods.dev/badge/skills/jimmc414/claude-code-plugin-marketplace/define-domain-types.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.00026 | $0.00603 |
| Opus 5 | $0.00013 | $0.00302 |
| Sonnet 5 | $0.00005 | $0.00121 |
| Haiku 4.5 | $0.00003 | $0.00060 |
Grade A, and why
define-domain-types 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 8d 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 — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.
define-domain-types
When to Use
- Starting a new module or problem domain
- Want code to read like prose
- Types would clarify function signatures
- Building a mini-DSL
- Complex nested types (list of tuples of...)
When NOT to Use
- Simple scripts with obvious types
- Types would just add noise
- No domain-specific vocabulary needed
The Pattern
Define type aliases at the top of your module to establish vocabulary.
from typing import List, Dict, Set, Tuple, Optional
# Domain vocabulary
Point = Tuple[int, int]
Grid = Dict[Point, str]
Path = List[Point]
Score = float
# Now signatures are self-documenting
def find_path(grid: Grid, start: Point, goal: Point) -> Optional[Path]:
...
def calculate_score(path: Path) -> Score:
...
Example (from pytudes)
# Cryptarithmetic.ipynb - problem domain types
Formula = str # "NUM + BER = PLAY"
Pformula = str # Python formula: "NUM + BER == PLAY"
Solution = str # "587 + 439 = 1026"
def solve(formula: Formula) -> Iterable[Solution]:
...
# Probability.ipynb - probability domain
Space = set # Sample space of outcomes
Event = set # Subset of sample space
Probability = float # Value between 0 and 1
def P(event: Event, space: Space) -> Probability:
...
# TSP.ipynb - traveling salesman domain
City = complex # Cities as points in complex plane
Cities = frozenset # Set of cities
Tour = list # Ordered visit sequence
Segment = list # Part of a tour
def tour_length(tour: Tour) -> float:
...
def valid_tour(tour: Tour, cities: Cities) -> bool:
...
# Sudoku - constraint satisfaction domain
Digit = str # '1' to '9'
Square = str # 'A1' to 'I9'
Unit = List[Square] # Row, column, or box
Grid = Dict[Square, str] # Square -> possible digits
def eliminate(grid: Grid, square: Square, digit: Digit) -> Optional[Grid]:
...
Key Principles
- Top of file: Types as module header
- Simple names:
City, notCityPointType - Comments for meaning: What does this type represent?
- Signatures tell story:
solve(formula) -> Solution - Gradual typing: Add types where they help clarity
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.
- 8d ago First seen · 88 lines · 26 tokens per session scan A 1c0664f4ba55
define-domain-types is a skill published in the GitHub repository jimmc414/claude-code-plugin-marketplace (4 stars, last pushed yesterday), licensed MIT. It adds 26 tokens to every session and 603 once invoked, about $0.0001 per session on Opus 5. 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-08-31.
Other skills, from other repositories
ai-ml-development
AI and machine learning development with PyTorch, TensorFlow, and LLM integration. Use when building ML models, training pipelines, fine-tuning LLMs, or implementing AI features.
codexer
Python research assistant with Context7 MCP. Use for Python library research, evaluating packages, enforcing strict Python coding standards, or fetching up-to-date library docs via Context7.
fastapi
Skill "fastapi" from ashish7802/awesome-api-skills, covering fastapi skill, ecosystem graph, quick start, production patterns and dependency injection.
dependency-manager
Manage Python dependencies using UV, pip-tools, or requirements.txt. Use when setting up dependency management, resolving conflicts, or choosing between UV, pip-tools, and requirements.txt workflows.
python-packaging
Configure Python package metadata, setup.py, and pyproject.toml for distribution using UV or setuptools. Use when setting up Python packages, configuring build systems, or preparing projects for PyPI publication.
clean-code
Use when the user writes new Python, or asks for review, refactor, or cleanup of Python code, names, comments/docstrings, functions, or tests. Applies Robert Martin's complete Clean Code catalog -- naming, functions, comments, DRY, boundary conditions, and tests -- to the code being changed.