# R Btw

> Use when code loads or uses btw (library(btw), btw::), providing R session context to LLMs, registering tools for ellmer chat, or copying R object descriptions to clipboard

- Skill: `arthurgailes/r-btw` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add arthurgailes/r-btw`
- Raw SKILL.md: https://api.skillmd.com/api/skills/arthurgailes/r-btw/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: arthurgailes (https://skillmd.com/u/arthurgailes)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/arthurgailes/r-btw

---


# btw: Context Tools for R and LLMs

## Overview

**btw connects R's context to LLMs.** Provides tools that describe R objects, fetch documentation, and expose R information to chat sessions.

**btw vs mcptools:** btw gives tools TO ellmer (R → LLM). mcptools lets agents INTO R (LLM → R).

**Install:** `install.packages("btw")`

## References

Read `references/API.md` before writing code.

- `references/API.md` - Complete function reference
- `references/package-docs.md` - Tool registration and usage patterns

## When to Use

- Copy R object descriptions to clipboard for LLMs
- Register R documentation tools with ellmer
- Give chat sessions access to R help, data frames, packages
- Create project context files (btw.md)

## When NOT to Use

- Want agents to run R code (use r-mcptools)
- Just need to print object (use `print()` or `str()`)
- One-off manual description (just copy/paste)

## Quick Reference

```r
library(btw)

# Copy description to clipboard
btw(mtcars)           # Describe data frame
btw("ggplot2")        # Package documentation
btw_this(model)       # For LLM consumption

# Register tools with ellmer
library(ellmer)
chat <- chat_openai()
chat$set_tools(btw_tools())

# Now chat can call R documentation
chat$chat("What functions does dplyr have?")

# Project context
use_btw_md()    # Create btw.md
edit_btw_md()   # Edit context file
```

## Common Mistakes

| Issue | Solution |
|-------|----------|
| btw vs mcptools confusion | btw = tools TO chat; mcptools = agent INTO R |
| Tools not registered | Must call `chat$set_tools(btw_tools())` |
| Using in scripts vs console | btw() for clipboard works in console |
| Expecting code execution | btw describes, doesn't execute (use mcptools) |

## Core Functions

**Description:**
- `btw()`: Generate plain-text descriptions (copies to clipboard)
- `btw_this()`: Create LLM-optimized descriptions

**Integration:**
- `btw_tools()`: Register with ellmer
- `btw_client()`: btw-enhanced ellmer chat
- `btw_app()`: btw-enhanced ellmer app

**Project Context:**
- `use_btw_md()`: Create project context file
- `edit_btw_md()`: Modify context file

**Skills:**
- `btw_agent_tool()`: Create agent tool from markdown file
- `btw_task_create_skill()`: Create a new skill via task
- `btw_skill_install_github()`: Install skill from GitHub
- `btw_skill_install_package()`: Install skill from R package

## Advanced

See `references/` for:
- **API.md**: Complete function reference
- **Package docs**: Full package documentation

## Integration

**With ellmer:** `chat$set_tools(btw_tools())`
**Cross-package patterns:** See r-ai meta-skill

