Installs a rule from a GitHub repository or a local file into a rules
directory. Rules are Markdown files with optional YAML frontmatter. The
rule name comes from the frontmatter if present, otherwise from the
filename stem.
Arguments
- source
One of:
A GitHub URL pointing to a repo, e.g.
"https://github.com/owner/repo".A GitHub URL pointing to a subdirectory or file, e.g.
"https://github.com/owner/repo/tree/main/path/to/rule.md".A GitHub shorthand, e.g.
"owner/repo".A local file path pointing to a Markdown file.
- rule
For multi-rule repositories that store rules under a
rules/subdirectory, the name of the rule to install (without the.mdextension), e.g.rule = "testing". When supplied, the rule is read fromrules/<rule>.mdwithin the repository. Ignored whensourcealready points to a specific path via/tree/....- path
The rules directory. Can be one of:
A known coding agent name such as
'claude_code','cursor', or'github_copilot'(seerule_path()for the full list) to use that agent's conventional project-scope path.A character string giving the directory path directly.
NULL(the default), in which case the path is resolved from theWF_AGENTenvironment variable, or by prompting in interactive sessions. SetWF_AGENTin your.Renviron(e.g. withusethis::edit_r_environ()) to avoid the prompt.
- overwrite
If
FALSE(the default), an error is raised if the rule is already installed. Set toTRUEto replace it.
Examples
src <- tempfile(fileext = '.md')
writeLines(
c('---', 'name: example', 'description: An example rule.', '---'),
src
)
add_rule(src, path = tempfile())
#> Installed rule "example" to /tmp/Rtmp1p0v0x/file1be54023fa66/example.md.
