{
  "markdown": "# Agent Skills for R and Tidyverse projects\n\nReusable Agent Skills for R development, reproducible analysis, and the\nTidyverse data workflow. Skills are loaded on demand so an agent can receive\nfocused R guidance without loading an entire language manual into every task.\n\nThis repository is an R counterpart to\n[`samber/cc-skills-golang`](https://github.com/samber/cc-skills-golang). The\ncollection contains 23 implemented skills, including focused coverage derived\nfrom Hadley Wickham's *Advanced R*. Evaluation results are recorded in\n[`EVALUATIONS.md`](EVALUATIONS.md) as the independent lifecycle is completed for\neach skill.\n\n## How to use\n\n### Skills CLI\n\nThe universal [`skills`](https://skills.sh/) CLI is the recommended\ninstallation method for any Agent Skills-compatible client:\n\n```bash\nnpx skills add https://github.com/tdstein/skills-r --all\n# or install one skill:\nnpx skills add https://github.com/tdstein/skills-r --skill r-dplyr\n```\n\nInstall the complete collection when work crosses import, transformation,\nvisualization, and testing boundaries. Install a subset when a project needs a\nnarrower context.\n\n### Claude Code\n\nIf the repository is published through a compatible marketplace, use that\nmarketplace's install command. Otherwise, clone it into a Claude-discoverable\nskills directory:\n\n```bash\ngit clone https://github.com/tdstein/skills-r.git ~/.claude/skills/skills-r\n```\n\n### OpenClaw\n\nClone the repository into either supported discovery directory:\n\n```bash\ngit clone https://github.com/tdstein/skills-r.git ~/.openclaw/skills/skills-r\n# or, for a workspace installation:\ngit clone https://github.com/tdstein/skills-r.git ~/.openclaw/workspace/skills/skills-r\n```\n\n### Gemini CLI\n\nInstall the extension directly:\n\n```bash\ngemini extensions install https://github.com/tdstein/skills-r\n```\n\nUpdate an existing installation with:\n\n```bash\ngemini extensions update skills-r\n```\n\n### Cursor\n\nClone into Cursor's cross-client discovery directory:\n\n```bash\ngit clone https://github.com/tdstein/skills-r.git ~/.cursor/skills/skills-r\n```\n\nCursor also discovers project-local skills from `.agents/skills/` and\n`.cursor/skills/`.\n\n### GitHub Copilot\n\nUse the plugin command when supported by the Copilot client:\n\n```text\n/plugin install https://github.com/tdstein/skills-r\n```\n\nOr clone into Copilot's discovery directory:\n\n```bash\ngit clone https://github.com/tdstein/skills-r.git ~/.copilot/skills/skills-r\n```\n\nCopilot discovers skills from `.copilot/skills/`.\n\n### OpenCode\n\nClone into a supported shared discovery directory:\n\n```bash\ngit clone https://github.com/tdstein/skills-r.git ~/.agents/skills/skills-r\n```\n\nOpenCode discovers skills from `.agents/skills/`, `.opencode/skills/`, and\n`.claude/skills/`.\n\n### Codex\n\nClone into the shared Agent Skills directory:\n\n```bash\ngit clone https://github.com/tdstein/skills-r.git ~/.agents/skills/skills-r\n```\n\nCodex discovers skills from `~/.agents/skills/` and project-local\n`.agents/skills/`. Update a clone with:\n\n```bash\ncd ~/.agents/skills/skills-r && git pull\n```\n\n### Antigravity\n\nClone into Antigravity's discovery directory:\n\n```bash\ngit clone https://github.com/tdstein/skills-r.git ~/.antigravity/skills/skills-r\n```\n\nThe exact discovery behavior can vary by client version. Prefer the universal\n`skills` CLI when available, and use each client's native discovery directory\nwhen installing manually.\n\n## Skill catalog\n\nThe skills are atomic, cross-referencing units. Each skill should own one\ncoherent concern, state when it should trigger, and identify neighboring skills\nthat should handle adjacent concerns.\n\nStatus legend:\n\n- **Implemented** — the skill directory and `SKILL.md` are available;\n  evaluation is pending.\n- **Evaluated** — the skill has a recorded evaluation result in\n  [`EVALUATIONS.md`](EVALUATIONS.md).\n\nAll catalogued skills are implemented. Skills with completed evaluations are\nmarked Evaluated, with details tracked in [`EVALUATIONS.md`](EVALUATIONS.md).\n\n### R foundations\n\n| Skill | Status | Responsibility | Trigger examples |\n| --- | --- | --- | --- |\n| [`r-core`](skills/r-core/) | Evaluated | R vectors, data frames, tibbles, recycling, missing values, pipes, and shared language semantics | Choosing an R object type, understanding vector behavior, or deciding how a tidy workflow should represent data |\n| [`r-style`](skills/r-style/) | Implemented | Readable R naming, formatting, project conventions, and Tidyverse style | Reviewing style, naming objects, formatting code, or choosing between equivalent idioms |\n| [`r-project-layout`](skills/r-project-layout/) | Implemented | R package, analysis-project, Quarto/R Markdown, and reproducible project structure | Starting or reorganizing an R project, package, report, or analysis repository |\n| [`r-dependencies`](skills/r-dependencies/) | Implemented | `DESCRIPTION`, `renv`, lockfiles, dependency selection, and reproducible package environments | Adding packages, pinning versions, restoring an environment, or auditing dependencies |\n| [`r-testing`](skills/r-testing/) | Implemented | `testthat`, fixtures, snapshots, mocking, integration tests, and reproducible test design | Writing or reviewing R tests, diagnosing flaky tests, or adding regression coverage |\n| [`r-errors`](skills/r-errors/) | Implemented | Conditions, `rlang` errors, structured diagnostics, backtraces, and user-facing failure messages | Designing errors, wrapping failures, inspecting backtraces, or handling conditions |\n\n### Tidyverse workflow\n\n| Skill | Status | Responsibility | Trigger examples |\n| --- | --- | --- | --- |\n| [`r-tidyverse-core`](skills/r-tidyverse-core/) | Implemented | Tidy data principles, tibbles, pipes, vector/type expectations, and shared tidy evaluation concepts | Choosing a tidy representation, clarifying data shape, or coordinating multiple Tidyverse skills |\n| [`r-dplyr`](skills/r-dplyr/) | Implemented | Rows, columns, values, grouping, summaries, joins, and relational transformations | `filter()`, `select()`, `mutate()`, `summarise()`, `group_by()`, joins, or window operations |\n| [`r-tidyr`](skills/r-tidyr/) | Implemented | Table shape, pivoting, nesting, unnesting, list-column structure, and missingness shape | `pivot_longer()`, `pivot_wider()`, `nest()`, `unnest()`, or reshaping data |\n| [`r-ggplot2`](skills/r-ggplot2/) | Implemented | Grammar-of-graphics layers, mappings, scales, facets, coordinates, and themes | Creating or reviewing a chart, choosing an aesthetic mapping, or diagnosing a plot |\n| [`r-purrr`](skills/r-purrr/) | Implemented | Type-stable iteration, mapping, list-columns, ad hoc functions, and iteration errors | `map_*()`, repeated function application, list-columns, or replacing an explicit loop |\n| [`r-readr`](skills/r-readr/) | Implemented | Delimited-file import, parsing, locales, missing values, column specifications, and diagnostics | Reading CSV/TSV or fixed-width text, parsing dates/numbers, or investigating import problems |\n\n### Advanced R programming\n\n| Skill | Status | Responsibility | Trigger examples |\n| --- | --- | --- | --- |\n| [`r-functions`](skills/r-functions/) | Implemented | Function contracts, calls, lexical scope, lazy evaluation, control flow, recursion, and composition | Designing an R function, debugging argument evaluation, or reviewing a loop |\n| [`r-environments`](skills/r-environments/) | Implemented | Bindings, parent chains, namespaces, closures, caller context, and persistent state | Investigating lookup, closures, `<<-`, package namespaces, or caches |\n| [`r-functional-programming`](skills/r-functional-programming/) | Implemented | Pure functions, higher-order design, factories, operators, memoisation, and effect boundaries | Building a function factory, operator, cache, or composable workflow |\n| [`r-object-oriented`](skills/r-object-oriented/) | Implemented | S3, S4, and R6 representation, construction, validation, dispatch, inheritance, and system choice | Designing an R class, generic, method, or mutable object |\n| [`r-metaprogramming`](skills/r-metaprogramming/) | Implemented | Expressions, calls, quotation, quasiquotation, quosures, data masks, evaluation, and translation | Capturing user code, generating calls, or building a small DSL |\n| [`r-debugging`](skills/r-debugging/) | Implemented | Reproducible diagnosis, tracebacks, interactive debugging, batch failures, and crash investigation | Debugging an R error, warning, hang, or R Markdown failure |\n| [`r-benchmarking`](skills/r-benchmarking/) | Implemented | Profiling, microbenchmarks, workload design, allocations, garbage collection, and scaling | Measuring an R bottleneck or comparing implementations |\n| [`r-performance`](skills/r-performance/) | Implemented | Evidence-based optimization, vectorization, allocation control, and performance trade-offs | Improving a measured R hot path without changing behavior |\n| [`r-interop`](skills/r-interop/) | Implemented | R/C/C++ boundaries, `.Call`, Rcpp, registration, protection, conversion, and portability | Adding or reviewing native R code |\n| [`r-connections`](skills/r-connections/) | Implemented | File, URL, pipe, socket, text, binary, and encoding-aware connection I/O | Reading or writing through an R connection |\n| [`r-documentation`](skills/r-documentation/) | Implemented | Package docs, vignettes, reports, books, reproducible examples, and publishing workflows | Writing or building R documentation and long-form project docs |\n\n## Taxonomy\n\nThe taxonomy is organized around R language semantics, project boundaries, and\nthe Tidyverse workflow:\n\n```text\nR foundations\n├── r-core\n├── r-style\n├── r-project-layout\n├── r-dependencies\n├── r-testing\n├── r-errors\n├── r-functions\n├── r-environments\n├── r-object-oriented\n├── r-metaprogramming\n└── r-debugging\n\nTidyverse workflow\n├── r-tidyverse-core\n├── r-readr       import\n├── r-tidyr       reshape\n├── r-dplyr       transform\n├── r-purrr       iterate\n└── r-ggplot2     visualize\n\nAdvanced R tooling\n├── r-functional-programming\n├── r-benchmarking\n├── r-performance\n├── r-interop\n├── r-connections\n└── r-documentation\n```\n\nThe intended flow is:\n\n```text\nreadr → tidyverse-core / tidyr → dplyr → purrr → ggplot2\n              │                    │\n              └──── r-core ────────┴──── r-testing / r-errors\n```\n\nThe foundations skills apply across the workflow. `r-tidyverse-core` provides\nshared data-shape and type vocabulary; it should not absorb every package's\nAPI. The package-specific skills own the operations named in their catalog\nentries.\n\n## Routing boundaries\n\nUse the narrowest skill that owns the requested behavior, and add\n`r-tidyverse-core` when the task depends on shared tidy-data or type semantics.\n\n| If the task is about... | Prefer | Do not route it primarily to... |\n| --- | --- | --- |\n| R vectors, tibbles, data frames, recycling, or missing-value representation | [`r-core`](skills/r-core/) | `r-dplyr` merely because a pipeline is present |\n| Naming, formatting, or general code conventions | [`r-style`](skills/r-style/) | `r-core` or a package-specific skill |\n| Package/project/report structure | [`r-project-layout`](skills/r-project-layout/) | `r-dependencies` unless environment reproducibility is the main issue |\n| Dependency versions, lockfiles, or environment restoration | [`r-dependencies`](skills/r-dependencies/) | `r-project-layout` unless structure is the main issue |\n| Correctness tests, snapshots, fixtures, or mocks | [`r-testing`](skills/r-testing/) | `r-errors`, which owns failure design rather than test strategy |\n| Conditions, diagnostics, or backtraces | [`r-errors`](skills/r-errors/) | `r-testing`, unless the request is specifically about testing failures |\n| Reproducing and locating an unexpected failure | [`r-debugging`](skills/r-debugging/) | `r-errors`, which owns condition design rather than diagnosis |\n| Tidy data shape, tibbles, pipes, or shared tidy evaluation | [`r-tidyverse-core`](skills/r-tidyverse-core/) | Any one package skill when the concern spans several packages |\n| Filtering, selecting, mutating, grouping, summarizing, or joining tables | [`r-dplyr`](skills/r-dplyr/) | `r-tidyr`, which changes shape rather than table relationships |\n| Long/wide reshaping, nesting, unnesting, or list-column shape | [`r-tidyr`](skills/r-tidyr/) | `r-dplyr`, which can place but does not own reshaping |\n| Plot layers, mappings, scales, facets, themes, or coordinates | [`r-ggplot2`](skills/r-ggplot2/) | `r-dplyr` for complex aggregation that belongs before plotting |\n| Mapping functions over vectors or lists and type-stable iteration | [`r-purrr`](skills/r-purrr/) | `r-dplyr` unless the core operation is table transformation |\n| Parsing delimited or fixed-width text | [`r-readr`](skills/r-readr/) | `r-dplyr`, which operates after parsing |\n| Function contracts, lazy arguments, control flow, or recursion | [`r-functions`](skills/r-functions/) | `r-purrr` unless iteration is the core operation |\n| Environment identity, lexical lookup, namespaces, or persistent state | [`r-environments`](skills/r-environments/) | `r-functions` when the environment mechanics are the issue |\n| Function factories, operators, purity, or memoisation | [`r-functional-programming`](skills/r-functional-programming/) | `r-functions` for ordinary function semantics |\n| S3, S4, R6, constructors, or method dispatch | [`r-object-oriented`](skills/r-object-oriented/) | `r-core`, which supplies representation semantics but not OO design |\n| Expressions, quosures, data masks, code generation, or translation | [`r-metaprogramming`](skills/r-metaprogramming/) | `r-functions` unless no code capture/evaluation is involved |\n| Profiling or benchmarking an R workload | [`r-benchmarking`](skills/r-benchmarking/) | `r-performance`, which changes code after evidence exists |\n| Optimizing a measured R bottleneck | [`r-performance`](skills/r-performance/) | `r-benchmarking`, which owns measurement design |\n| R/C/C++ or Rcpp integration | [`r-interop`](skills/r-interop/) | `r-performance` unless the native boundary is justified by measurement |\n| Connection-based file, URL, pipe, socket, text, or binary I/O | [`r-connections`](skills/r-connections/) | `r-readr`, which owns tabular parsing |\n| R package docs, vignettes, reports, books, or publishing | [`r-documentation`](skills/r-documentation/) | `r-project-layout`, unless directory structure is the main issue |\n\nExamples of deliberate boundaries:\n\n- `readr` parses input; it does not own downstream cleaning or analysis.\n- `tidyr` changes table shape; `dplyr` changes rows, columns, values, and\n  relationships.\n- `purrr` owns iteration and list-column workflows; it is not the default\n  replacement for every vectorized base R operation.\n- `ggplot2` owns visualization; substantial aggregation should normally happen\n  before plotting with `dplyr`.\n- `r-errors` defines failure behavior; `r-testing` verifies that behavior.\n- `r-dependencies` manages reproducibility of packages and environments;\n  `r-project-layout` manages repository and project structure.\n- `r-benchmarking` measures; `r-performance` optimizes after evidence.\n- `r-connections` transports bytes or characters; `r-readr` parses tabular data.\n- `r-documentation` owns documentation content and publishing; project layout\n  owns where those artifacts live.\n\n## Roadmap\n\n### Current collection\n\n1. Maintain the R foundation, Advanced R, and Tidyverse skill families.\n2. Keep focused references for joins and grouping, pivoting, type-stable\n   mapping, ggplot2 mappings, parsing diagnostics, conditions, performance,\n   native interop, and reproducible documentation current.\n3. Expand adversarial evaluation coverage for the highest-risk boundaries.\n4. Record results only after independent evaluation runs are complete.\n\n### Follow-up skill families\n\nThe following remain outside the current collection:\n\n- `r-stringr` for vectorized string processing and regular expressions.\n- `r-forcats` for factor levels and categorical ordering.\n- `r-lubridate` for dates, times, time zones, periods, and durations.\n- `r-dbplyr` for lazy database tables and dplyr-to-SQL translation.\n- `r-database` for DBI connections, transactions, drivers, and SQL boundaries.\n- `r-tidymodels` for modeling, preprocessing, resampling, tuning, and metrics.\n- `r-shiny` for reactive applications and server/UI behavior.\n- `r-lint` for `lintr`, `R CMD check`, and automated enforcement.\n\nThese additions should remain separate rather than expanding `r-tidyverse-core`\ninto a general R manual.\n\n## Contributing\n\nNew skills should:\n\n- Use `skills/<skill-name>/SKILL.md`.\n- Keep the directory name and frontmatter `name` identical.\n- State both capability and activation conditions in the description.\n- Keep one concept or package boundary per skill.\n- Put decision-heavy material in directly linked `references/` files.\n- Add or update an entry in this catalog.\n- Add evaluation cases to [`EVALUATIONS.md`](EVALUATIONS.md) without claiming\n  results until they have actually been run.\n- Use Conventional Commits, for example `feat: add dplyr skill`.\n\n## License\n\nThis project is released under the MIT License.\n",
  "bytes": 17130,
  "sha": "75a4e80f2280a9d99e36e3060f7b881d3272a5c4418d07a698c46cc65c6875b2",
  "repo_slug": "tdstein/skills-r",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_tdstein_skills_r_312d1c47/readme"
}