skills/41-sticerd-eee-sewage-econometrics-check/skills/review-r/SKILL.md
R code review for the sewage project. Checks script structure, reproducibility, function design, figure quality, and professional polish against project conventions (here::here, arrow/parquet, fixest, modelsummary, native pipe). This skill should be used when asked to "review the code", "check my script", or "code review".
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research review-rInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run a code quality review on R scripts in the sewage project. Produces a report — does NOT edit source files.
Input: $ARGUMENTS — a .R filename, directory path, or all.
Pipeline scripts (layers 01-06):
Header block (########) → roxygen description → initialise_environment() → setup_logging() → CONFIG list → functions → main() → conditional execution (sys.nframe() == 0)
Analysis scripts (09_analysis):
Numbered sections with # === separators, inline package loading, direct execution (no main() wrapper)
here::here() — never relative paths or setwd()arrow (parquet) for intermediate/final; DuckDB for large joins|> (not %>%)snake_case for functions/variables, UPPER_SNAKE_CASE for constantsfixest::feols() for regressionsmodelsummary → LaTeX with tabularray formatvcov = "hetero" for heteroskedasticity-robustforcats::as_factor() / forcats::fct_drop()scripts/R/01_data_ingestion/ through scripts/R/09_analysis/scripts/R/utils/output/{figures,tables,html_plots,regs,log}/$ARGUMENTS is a specific .R file: review that file$ARGUMENTS is a directory: review all .R files in that directory$ARGUMENTS is all: review all scripts in scripts/R/initialise_environment(), CONFIG list, main(), conditional execution# === separatorsprint() / cat() pollutionsetup_logging() in pipeline scriptsset.seed() where randomness is involvedhere::here() — no setwd(), no relative paths, no hardcoded absolute pathsscripts/R/utils/ where reuse is neededoutput/figures/ via here::here()arrow::write_parquet())saveRDS() for R-specific objectslibrary() calls at top|> (not magrittr %>%)## Code Review: [filename/directory]
**Date:** YYYY-MM-DD
**Scripts reviewed:** N
### Issues by Severity
| Script | Critical | Major | Minor |
|--------|----------|-------|-------|
| ... | ... | ... | ... |
### Top 3 Critical Issues
1. ...
2. ...
3. ...
### Conventions Compliance
- [ ] here::here() for all paths
- [ ] Native pipe |>
- [ ] arrow/parquet for data
- [ ] fixest for regressions
- [ ] modelsummary for tables
### Score: XX / 100
Save report to output/log/code_review_[target].md.
Do NOT edit any source files. Only produce reports. Fixes are applied after user review.
set.seed() is Major. A missing comment is Minor. Using setwd() is Critical.tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".
tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".