validate

validate is a skill for Claude Code, Codex from LeoLin990405/r-analytics-skill. It costs 18 tokens per session (485 once invoked), scanned A, original, MIT.

An R package for declaring rules about data and checking whether a data set follows them. Rules can check ranges, text patterns, missing values, uniqueness, relationships between fields, and summary values.

In plain words
What is it for?
Use it to check imported data, validate fields such as ages and dates, measure missing or invalid records, and save or reload validation rules in YAML files.
Why use it?
It replaces ad hoc checks with named rules whose results can be reviewed and exported.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/leolin990405/r-analytics-skill/validate
Any agent
npx skills add LeoLin990405/r-analytics-skill --skill validate
Clone the repo
git clone --depth 1 https://github.com/LeoLin990405/r-analytics-skill

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for validate

README.md
[![agentmods](https://agentmods.dev/badge/skills/leolin990405/r-analytics-skill/validate.svg)](https://agentmods.dev/skills/leolin990405/r-analytics-skill/validate)
Your own site
<a href="https://agentmods.dev/skills/leolin990405/r-analytics-skill/validate"><img src="https://agentmods.dev/badge/skills/leolin990405/r-analytics-skill/validate.svg" alt="Measured on agentmods" height="20"></a>
Per session 18 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 485 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00018 $0.00485
Opus 5 $0.00009 $0.00243
Sonnet 5 $0.00004 $0.00097
Haiku 4.5 $0.00002 $0.00049

Measured 4d ago against content hash 17c9e2adff68, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

validate 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 4d 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.

sub-skills/r-data/r-data-validation/validate/SKILL.md · 131 lines

What it actually says

validate

Data validation infrastructure.

Define Rules

library(validate)

# Create validator
rules <- validator(
  age >= 0,
  age <= 120,
  income >= 0,
  !is.na(name)
)

# From expressions
rules <- validator(
  positive_age = age >= 0,
  valid_income = income > 0,
  has_name = nchar(name) > 0
)

Check Data

# Confront data with rules
result <- confront(df, rules)

# Summary
summary(result)

# Values (TRUE/FALSE/NA)
values(result)

# As data frame
as.data.frame(result)

Rule Types

rules <- validator(
  # Range checks
  age %in% 0:120,

  # Pattern matching
  grepl("^[A-Z]", name),

  # Cross-field validation
  end_date >= start_date,

  # Aggregates
  mean(income) > 0,

  # Uniqueness
  is_unique(id),

  # Completeness
  is_complete(name, age)
)

Indicators

# Define indicators (metrics)
ind <- indicator(
  mean_age = mean(age, na.rm = TRUE),
  pct_missing = mean(is.na(income)) * 100,
  n_records = .N
)

# Add to confrontation
add_indicator(result, ind)

Export Rules

# Export to YAML
export_yaml(rules, "rules.yaml")

# Import from YAML
rules <- validator(.file = "rules.yaml")

# Export to data frame
as.data.frame(rules)

Reporting

# Barplot of results
barplot(result)

# Aggregate by rule
aggregate(result)

# Aggregate by record
aggregate(result, by = "record")

Error Localization

# Find erroneous values
errors <- values(result)
df[!errors[, "positive_age"], ]

Rule Metadata

# Add descriptions
rules <- validator(
  age >= 0,
  .description = "Age must be non-negative"
)

# Get rule info
meta(rules)
Changes

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.

  1. 4d ago First seen · 131 lines · 18 tokens per session scan A 17c9e2adff68

Subscribe to this mod's changes

validate is a skill published in the GitHub repository LeoLin990405/r-analytics-skill (5 stars, last pushed 5mo ago), licensed MIT. It adds 18 tokens to every session and 485 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.

Related

Other skills, from other repositories

definition-of-done

The ordered finish-line runner for any change in this repo — generators, then the asset-integrity refresh last on its own, then the full gate suite, then commit and push; use before declaring any change finished or whenever the stop hook reports uncommitted or untracked changes.

VincentChuWaiChow/vanguard-frontier-agentic · 61 tokens

fused-udfs

Comprehensive guide for writing Fused User Defined Functions (UDFs). Use when helping users create, optimize, or debug UDFs, including function structure, parameter handling, performance optimization, agent-friendly design, and security best practices.

fusedio/skills · 54 tokens

canvas-toml

Format reference for canvas.toml files that define a Fused canvas (nodes, edges, viewport) plus the surrounding folder layout ({udfName}.py, .json, .md, .html, shared.fused). Use when creating, editing, or validating any canvas.toml, adding/removing UDF nodes, wiring edges, defining folder groupings, or scaffolding a…

fusedio/skills · 91 tokens

bio-applied-immune-repertoire

Analyze TCR/BCR repertoires with scirpy: import MiXCR/10x/AIRR clonotypes, define clonotypes, compute clonal expansion/diversity/VDJ usage. Use when analyzing scTCR-seq/scBCR-seq, clonotype tables, or CDR3 spectratypes.

Pavel-Kravchenko/Bioinformatics · 76 tokens

bioinformatics-workflows-cicd

Build reproducible, resumable bioinformatics pipelines with Snakemake rules or Nextflow DSL2 processes, run nf-core pipelines, and add pytest unit tests plus GitHub Actions CI. Use when writing a Snakefile, defining Nextflow processes/channels, scaling a pipeline to SLURM/AWS/GCP, containerizing tools with…

Pavel-Kravchenko/Bioinformatics · 98 tokens

aws-ecs-fargate-platform-operator

Review Amazon ECS and Fargate platform operations across services, task definitions, task roles, execution roles, capacity providers, load balancers, deployment circuit breakers, blue/green, autoscaling, health checks, logs, secrets, networking, and rollback. Use only for ECS/Fargate; prefer EKS operator for…

VincentChuWaiChow/vanguard-frontier-agentic · 76 tokens