跳到正文
cccskills
免费在 GitHub 公开

r-python-translation

R-to-Python translation for data analysis. Maps R packages (tidyverse, ggplot2, fixest, survey, sf, plm) to Python equivalents (polars, plotnine, pyfixest, svy, geopandas). Use when user has R background or requests R-equivalent code comments.

中文简介正在准备中。当前显示原文说明。

DAAF-Contribution-Community/daaf星标 238(GitHub 238 + cccskills 0)

实测评分 未实测

查看安装方法

包含的文件(11)

  • SKILL.md22.3 KB
  • references/causal-inference.md30.1 KB
  • references/external-resources.md27.0 KB
  • references/gotchas.md15.9 KB
  • references/paradigm-differences.md20.4 KB
  • references/polars-dplyr.md29.5 KB
  • references/polars-strings-dates-factors.md17.0 KB
  • references/regression-modeling.md24.9 KB
  • references/survey-spatial-ml.md29.3 KB
  • references/visualization.md24.4 KB
  • references/workflow-environment.md19.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

R-to-Python Translation Skill

R-to-Python translation reference for quantitative social science data analysis. Maps R ecosystem packages (tidyverse/dplyr, ggplot2, fixest, survey, sf, plm, lme4, marginaleffects, rdrobust) to DAAF Python equivalents (polars, plotnine, pyfixest, statsmodels, linearmodels, svy, geopandas). Use when user mentions R/RStudio background, requests R-equivalent code comments, needs to understand Python analysis code from an R perspective, or wants to translate R data analysis concepts to Python. Covers paradigm differences, verb-by-verb operation translations, regression modeling, causal inference, visualization, and workflow adaptation.

Cross-language translation reference for researchers moving between the R and Python data analysis ecosystems. This skill maps R packages, idioms, and workflows to their DAAF Python equivalents so that R-background users can audit, understand, and learn from DAAF-produced code, and so that code-producing agents can annotate their output with R equivalents when directed.

This skill is a routing hub — it provides overview tables, decision trees, and directs readers to the detailed reference files listed below. The reference files contain the exhaustive verb-by-verb mappings, code examples, and edge-case documentation.

What This Skill Does

  • Maps the R data analysis ecosystem to DAAF's Python stack across data wrangling, modeling, visualization, causal inference, surveys, spatial analysis, and workflow tooling
  • Provides a structured annotation protocol for agents to add inline R-equivalent comments to Python code
  • Identifies paradigm gaps where R and Python diverge fundamentally, so users know where to expect friction

Use cases:

  1. R user auditing DAAF Python code and needing to understand what operations are being performed
  2. Agent annotating code with R-equivalent comments for an R-background researcher
  3. R user learning Python for data analysis and needing a conceptual bridge
  4. Translating a specific R operation or idiom to its Python equivalent
  5. Understanding where R tools have no direct Python equivalent (and what the workaround is)

How to Use This Skill

Reference File Structure

Each topic in ./references/ contains focused documentation:

FilePurposeWhen to Read
paradigm-differences.mdCore language and paradigm differencesEncountering fundamental R-vs-Python confusion
polars-dplyr.mdCore dplyr/tidyr to polars verb mapping (select, filter, mutate, joins, reshaping, window functions, lazy eval)Reading or writing data manipulation code
polars-strings-dates-factors.mdString, date/time, and factor operations (stringr, lubridate, forcats to polars)Working with string/date/categorical columns
regression-modeling.mdfixest/stats/plm to pyfixest/statsmodels/linearmodelsReading or writing regression code
visualization.mdggplot2/plotly R to plotnine/plotly PythonReading or writing visualization code
causal-inference.mdR causal inference ecosystem to Python equivalentsWorking with DiD, RDD, IV, event studies
survey-spatial-ml.mdsurvey/sf/tidymodels to svy/geopandas/scikit-learnWorking with surveys, spatial data, or ML
workflow-environment.mdRStudio/Quarto workflow to DAAF/marimo workflowAdapting to DAAF's execution model
external-resources.mdCurated guides and tutorials with provenanceSeeking additional learning materials
gotchas.mdCommon R-user mistakes in PythonDebugging or reviewing code from R perspective

Reading Order

  1. R user auditing DAAF code: paradigm-differences.md then the relevant domain file (e.g., polars-dplyr.md for data wrangling, regression-modeling.md for models) then gotchas.md
  2. Agent annotating code with R equivalents: Agent Code Annotation Protocol section below, then the relevant domain file for the code being annotated
  3. Learning Python from R background: paradigm-differences.md then polars-dplyr.md then workflow-environment.md then external-resources.md
  4. Looking up a specific translation: Quick Decision Trees below, then the relevant reference file

Quick Decision Trees

"How do I do X from R in Python?"

What kind of R operation?
├─ Data wrangling (filter, mutate, join, pivot, summarise)
│   └─ ./references/polars-dplyr.md
├─ Regression / statistical modeling
│   └─ ./references/regression-modeling.md
├─ Plotting / visualization
│   └─ ./references/visualization.md
├─ Causal inference (DiD, RDD, IV, event studies)
│   └─ ./references/causal-inference.md
├─ Surveys / spatial / machine learning
│   └─ ./references/survey-spatial-ml.md
└─ Fundamental language differences (types, syntax, environment)
    └─ ./references/paradigm-differences.md

"Why does this Python code look different from R?"

What looks unfamiliar?
├─ Expression syntax (pl.col().method().alias())
│   └─ ./references/paradigm-differences.md
├─ Missing values (None vs NaN vs null vs NA)
│   └─ ./references/paradigm-differences.md
├─ Formula interface (~) behaves differently
│   └─ ./references/regression-modeling.md
├─ Import patterns and namespacing
│   └─ ./references/gotchas.md
└─ No interactive REPL / console workflow
    └─ ./references/workflow-environment.md

"I want to translate an R script to Python"

What does the R script do?
├─ Loads and wrangles data (read_csv, dplyr verbs)
│   └─ ./references/polars-dplyr.md
├─ Runs regressions (lm, feols, plm)
│   └─ ./references/regression-modeling.md
├─ Creates plots (ggplot, plotly)
│   └─ ./references/visualization.md
├─ Uses survey weights (svydesign, svymean)
│   └─ ./references/survey-spatial-ml.md
├─ Spatial operations (sf, st_join)
│   └─ ./references/survey-spatial-ml.md
├─ Multiple of the above
│   └─ Start with ./references/paradigm-differences.md, then each relevant file
└─ Uses a package not listed above
    └─ ./references/external-resources.md for broader ecosystem guidance

"Something isn't working and I think it's an R habit"

What went wrong?
├─ 1-indexed access gave wrong element
│   └─ ./references/gotchas.md
├─ Factor/categorical behaves differently
│   └─ ./references/gotchas.md
├─ NA handling surprised me
│   └─ ./references/paradigm-differences.md
├─ Pipe operator (|> or %>%) not available
│   └─ ./references/paradigm-differences.md
├─ library() vs import confusion
│   └─ ./references/gotchas.md
└─ Model output structure is different
    └─ ./references/regression-modeling.md

"Which Python package replaces my R package?"

Which R package?
├─ dplyr / tidyr / readr / tibble → polars
│   └─ ./references/polars-dplyr.md
├─ ggplot2 → plotnine
│   └─ ./references/visualization.md
├─ plotly (R) → plotly (Python)
│   └─ ./references/visualization.md
├─ fixest → pyfixest
│   └─ ./references/regression-modeling.md
├─ stats (lm, glm) → statsmodels
│   └─ ./references/regression-modeling.md
├─ plm / estimatr → linearmodels
│   └─ ./references/regression-modeling.md
├─ lme4 (lmer) → statsmodels MixedLM
│   └─ ./references/regression-modeling.md
├─ survey → svy
│   └─ ./references/survey-spatial-ml.md
├─ sf / terra → geopandas
│   └─ ./references/survey-spatial-ml.md
├─ tidymodels / caret → scikit-learn
│   └─ ./references/survey-spatial-ml.md
├─ marginaleffects → marginaleffects (Python)
│   └─ ./references/regression-modeling.md
├─ rdrobust / did / synthdid → rdrobust / pyfixest DiD
│   └─ ./references/causal-inference.md
└─ Quarto / RMarkdown → marimo
    └─ ./references/workflow-environment.md

Package Mapping Overview

Python PackageR EquivalentFidelityKey Difference
polarsdplyr + tidyr + data.tableLowExpression system vs verb grammar; method chaining vs pipe
pyfixestfixestHighNear-identical formula syntax; minor SE default differences
plotnineggplot2HighSame grammar of graphics; Python string quoting for aes
plotlyplotly (R)Highpx.scatter() vs plot_ly(); similar output
statsmodelsbase R stats + lmtest + sandwichMediumThree formula dialects; manual vcov specification
linearmodelsplm + estimatrMediumRequires pandas MultiIndex for panel structure
statsmodels MixedLMlme4MediumSeparate groups=/re_formula= arguments vs (1 | group) in formula
scikit-learntidymodels / caretMediumImperative fit/predict vs declarative recipe pipeline
geopandassf + terraMediumshapely geometries vs sfc; different CRS handling
svysurvey (Lumley)MediumLimited GLM family coverage (gaussian/binomial/Poisson/gamma)
marimoQuarto / RMarkdownMediumReactive cells vs knit-based linear execution

Fidelity key: High = near-direct translation, same mental model. Medium = same capability, different API patterns. Low = fundamentally different paradigm requiring conceptual remapping.

Library Versions

Translations in this skill reference specific library versions. Python versions are pinned in DAAF's Docker environment (Python 3.12). R versions reference CRAN releases as of March 2026. When syntax or behavior has changed between versions, the reference files note the change.

Python PackageDAAF VersionR EquivalentR Version (CRAN)
polars1.39.3dplyr + tidyr + data.tabledplyr 1.2.0, tidyr 1.3.2, data.table 1.18.2
pyfixest0.60.0fixest0.14.0
plotnine0.15.3ggplot24.0.2
plotly6.5.2plotly (R)4.12.0
statsmodels0.14.6base R stats + lmtest + sandwichlmtest 0.9-40, sandwich 3.1-1
linearmodels7.0plm + estimatrplm 2.6-7, estimatr 1.0.6
statsmodels (MixedLM)0.14.6lme42.0-1
scikit-learn1.8.0tidymodels / carettidymodels 1.4.1, caret 7.0-1
geopandas1.1.3sf + terrasf 1.1-0, terra 1.9-11
svy0.19.0surveysurvey 4.5
marginaleffects0.5.0marginaleffects (R)0.32.0
rdrobust1.3.0rdrobust (R)3.0.0
marimo0.19.11Quarto / RMarkdownQuarto 1.7.29

Pinning note: linearmodels, marginaleffects, and rdrobust are version-pinned in DAAF's Dockerfile (linearmodels==7.0, marginaleffects==0.5.0, rdrobust==1.3.0) and pre-installed alongside the rest of the Python stack. Translations reference their documented APIs as of March 2026.

R version note: R package versions are from CRAN as of March 2026 (R 4.5.3). Check packageVersion("pkg") in your R installation to verify your local version matches.

Top 10 Paradigm Differences

These are the friction points R users encounter most frequently when reading or writing DAAF Python code. Each is covered in depth in the referenced file.

#Friction PointR WayPython WayReference
1Expression systemdf %>% mutate(x = a + b)df.with_columns((pl.col("a") + pl.col("b")).alias("x"))paradigm-differences.md
2Formula fragmentationOne universal ~ syntaxThree dialects (pyfixest, statsmodels, linearmodels)regression-modeling.md
3Missing valuesSingle NA typeNone, NaN, and null (context-dependent)paradigm-differences.md
4mutate equivalentmutate(new = expr)with_columns(expr.alias("new"))polars-dplyr.md
5No row indexTibbles have row numbersPolars has no row index; use with_row_index()paradigm-differences.md
6Polars-to-pandas bridgeData frames go directly into modelsMust call .to_pandas() before statsmodels/pyfixestparadigm-differences.md
7Factor vs Categoricalfactor() with ordered levelspl.Categorical / pd.Categorical (different semantics)gotchas.md
8Package fragmentationOne package per domain (fixest does it all)Multiple packages per domain (statsmodels + linearmodels + pyfixest)paradigm-differences.md
91-indexed vs 0-indexedx[1] is first elementx[0] is first elementgotchas.md
10Namespace modellibrary() exports all namesimport requires explicit namespacinggotchas.md

Agent Code Annotation Protocol

This section defines when and how code-producing agents add inline R-equivalent comments to DAAF Python scripts.

When to Annotate

Annotations are added only when the orchestrator explicitly passes an R-background directive to the agent. This is not a default behavior.

Trigger conditions (orchestrator activates this when any apply):

  • User states they have an R / RStudio background
  • User requests R-equivalent comments in code
  • User asks to understand Python code from an R perspective

How the orchestrator passes the directive: The orchestrator adds the following to the agent prompt:

"User has R background. Load r-python-translation skill. Add inline R-equivalent comments for non-trivial data operations."

Comment Format

# R: df %>% filter(year == 2020)
filtered = df.filter(pl.col("year") == 2020)

# R: df %>% mutate(pct = count / sum(count))
result = df.with_columns(
    (pl.col("count") / pl.col("count").sum()).alias("pct")
)

# R: feols(y ~ x1 + x2 | state + year, data = df, cluster = ~state)
fit = pf.feols("y ~ x1 + x2 | state + year", data=pdf, vcov={"CRV1": "state"})

What to Annotate

  • Annotate: Data wrangling (polars operations), modeling calls (pyfixest, statsmodels, linearmodels), visualization layer construction (plotnine, plotly), causal inference method calls
  • Do NOT annotate: Import statements, print()/assert validation lines, file I/O boilerplate (pl.read_parquet, df.write_parquet), config sections, section separator comments

Rules

  • One # R: comment per logical operation, placed on the line immediately above the Python code
  • Keep annotations to a single line; abbreviate complex R pipelines if needed
  • R annotations are in addition to standard IAT comments (# INTENT:, # REASONING:, # ASSUMES:), not a replacement
  • Consumer agents: research-executor, code-reviewer, debugger, data-ingest

Related Skills

SkillRelationship
polarsPython-side data wrangling — detailed API reference for the dplyr/tidyr equivalent
pyfixestPython-side fixed effects regression — detailed API for the fixest equivalent
plotninePython-side static visualization — detailed API for the ggplot2 equivalent
plotlyPython-side interactive visualization — detailed API for plotly R equivalent
statsmodelsPython-side general modeling — covers base R stats, lmtest, sandwich, and lme4 (MixedLM) equivalents
linearmodelsPython-side panel/IV models — covers plm and estimatr equivalents (no mixed-effects estimator)
scikit-learnPython-side ML — covers tidymodels/caret equivalents
geopandasPython-side spatial data — covers sf/terra equivalents
svyPython-side survey analysis — covers survey (Lumley) equivalents
marimoPython-side notebooks — covers Quarto/RMarkdown workflow equivalents
stata-python-translationParallel skill for Stata-background users — shares the same Python target stack
python-r-translationReverse direction — maps Python concepts to R equivalents for Python-background users working in R

Note: Individual tool skills contain library-specific usage guidance (syntax, gotchas, performance). This skill provides the R-to-Python conceptual bridge — use both together when an R-background user is working with a specific library.

Topic Index

TopicReference File
Pipe operator (%>% / `>`) equivalents
Expression system (pl.col, .alias)./references/paradigm-differences.md
Missing value semantics (NA vs None/NaN/null)./references/paradigm-differences.md
Type system differences./references/paradigm-differences.md
Package/namespace model./references/paradigm-differences.md
0-indexing vs 1-indexing./references/paradigm-differences.md
Polars-to-pandas conversion for modeling./references/paradigm-differences.md
Row index differences./references/paradigm-differences.md
dplyr verb mapping (filter, select, mutate, arrange)./references/polars-dplyr.md
summarise / group_by equivalents./references/polars-dplyr.md
tidyr verbs (pivot_longer, pivot_wider, separate, unite)./references/polars-dplyr.md
Join operations (left_join, inner_join, anti_join)./references/polars-dplyr.md
String operations (stringr vs polars .str)./references/polars-strings-dates-factors.md
Date operations (lubridate vs polars .dt)./references/polars-strings-dates-factors.md
across() / where() equivalents./references/polars-dplyr.md
case_when equivalent./references/polars-dplyr.md
readr I/O equivalents./references/polars-dplyr.md
fixest formula syntax in pyfixest./references/regression-modeling.md
lm() / glm() in statsmodels./references/regression-modeling.md
Formula interface comparison (three Python dialects)./references/regression-modeling.md
Standard error specification differences./references/regression-modeling.md
plm panel models in linearmodels./references/regression-modeling.md
lme4 mixed effects equivalents./references/regression-modeling.md
marginaleffects (R to Python)./references/regression-modeling.md
Model summary / tidy output./references/regression-modeling.md
Sandwich / robust SE equivalents./references/regression-modeling.md
ggplot2 layer mapping to plotnine./references/visualization.md
aes() string quoting in plotnine./references/visualization.md
Theme customization./references/visualization.md
Scale functions./references/visualization.md
Faceting (facet_wrap, facet_grid)./references/visualization.md
plotly R vs plotly Python./references/visualization.md
ggsave equivalent./references/visualization.md
Difference-in-differences (did, did2s)./references/causal-inference.md
Regression discontinuity (rdrobust)./references/causal-inference.md
Instrumental variables (ivreg vs pyfixest IV)./references/causal-inference.md
Event study designs./references/causal-inference.md
Synthetic control./references/causal-inference.md
Matching / propensity scores./references/causal-inference.md
survey package to svy./references/survey-spatial-ml.md
svydesign / svymean / svyglm equivalents./references/survey-spatial-ml.md
sf spatial operations to geopandas./references/survey-spatial-ml.md
CRS / projection handling./references/survey-spatial-ml.md
Spatial joins (st_join vs sjoin)./references/survey-spatial-ml.md
tidymodels pipeline to scikit-learn./references/survey-spatial-ml.md
RStudio vs DAAF workflow./references/workflow-environment.md
Quarto / RMarkdown vs marimo./references/workflow-environment.md
Interactive console vs file-first execution./references/workflow-environment.md
Package management (renv vs pip/uv)./references/workflow-environment.md
Project structure conventions./references/workflow-environment.md
Curated R-to-Python migration guides./references/external-resources.md
Package documentation links./references/external-resources.md
Tutorial recommendations with provenance./references/external-resources.md
1-indexed list/vector access./references/gotchas.md
Factor vs Categorical pitfalls./references/gotchas.md
library() vs import habits./references/gotchas.md
T/F vs True/False./references/gotchas.md
Assignment operator (<- vs =)./references/gotchas.md
Vectorized operations expectations./references/gotchas.md
NULL vs None differences./references/gotchas.md
apply family vs map/list comprehension./references/gotchas.md
Copying semantics (R copy-on-modify vs Python references)./references/gotchas.md
Logical operators (& /vs and / or)
String interpolation (glue vs f-strings)./references/gotchas.md
data.table vs polars./references/polars-strings-dates-factors.md
Lazy evaluation (polars LazyFrame vs R lazy tibble)./references/polars-dplyr.md
nest/unnest equivalents./references/polars-dplyr.md
Window functions (over vs mutate + group_by)./references/polars-dplyr.md
Coordinate systems (coord_flip, coord_polar)./references/visualization.md
Stat layers (stat_smooth, stat_summary)./references/visualization.md
Color palette mapping (viridis, brewer)./references/visualization.md
Multi-panel layouts (patchwork vs subplot)./references/visualization.md
Staggered DiD estimators./references/causal-inference.md
Parallel trends testing./references/causal-inference.md
BRR / jackknife replication weights./references/survey-spatial-ml.md
Raster data handling (terra vs rasterio)./references/survey-spatial-ml.md
Feature engineering (recipes vs sklearn Pipeline)./references/survey-spatial-ml.md
Cross-validation (rsample vs sklearn)./references/survey-spatial-ml.md
Environment/workspace differences (.RData vs nothing)./references/workflow-environment.md
Debugging workflow (browser() vs breakpoint())./references/workflow-environment.md
R help system (?func) vs Python help(func)./references/workflow-environment.md
Cheat sheet and quick-reference links./references/external-resources.md
Community resources (Stack Overflow tags, forums)./references/external-resources.md

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Guide for creating DAAF agent definition files. Covers 12-section template, hook registration, skills-in-frontmatter, integration checklist. Use when adding or revising agents. For SKILL.md files, use skill-authoring instead.

中文简介正在准备中。当前显示原文说明。

DAAF-Contribution-Community/daaf2382026年10月17日 更新

Researcher-facing analytic triangulation ("creative verification") for stress-testing provisional findings and designing pre-specified challenges before an analysis runs. Turns a researcher's concern or focal claim into competing explanations, bounded discriminating tests, audited diagnostic artifacts, and evidence-calibrated interpretations in a hypothesis/evidence ledger — behavioral, output-level verification replacing line-by-line code review. Covers 12 challenge families organized by Shadish-Cook-Campbell validity type, named sensitivity statistics, pre-committed interpretation rules, anti-fishing guardrails, and interactive diagnostic-artifact QA. Use in Ad Hoc Collaboration to verify, challenge, or stress-test a result, or to design discriminating tests before an analysis runs. Not code-change verification (verify skill / code review) and not final adjudication or re-execution (data-verifier, Reproducibility Verification) — prospective, hypothesis-driven challenge design of analytic claims.

中文简介正在准备中。当前显示原文说明。

DAAF-Contribution-Community/daaf2382026年10月17日 更新

In-situ smoke testing that verifies a LIVE DAAF deployment functions end-to-end in whatever provider route it is configured for. Auto-detects the active install route (anthropic-subscription, openrouter, chatgpt-subscription shim, openai-api shim) and runs tiered probes: Tier 0 free preflight (route/env coherence, hooks, statuslines, shim health); Tier 1 one live round-trip (~cents); Tier 2 a six-probe functional battery (dispatch, coding, web, skill loading, isolation-strip, nested-dispatch deny); Tier D a zero-cost deterministic battery (bats, Pester, lint, safety-hook tests). Use after install, after a rebuild or update, after any provider/config change (new API key, model remap, shim change), for pre-release validation, or when asked "is my install working" or to "smoke test the deployment/config." Requires the DAAF_DEV=1 dev image; a contributor tool, not end-user-facing. NOT DAAFBench (model behavioral-adherence evaluation under benchmarks/) and NOT scripts/smoke_tests/ (R/Python library-package smoke tests).

中文简介正在准备中。当前显示原文说明。

DAAF-Contribution-Community/daaf2382026年10月17日 更新

Operational framework for the DAAF orchestrator. Defines engagement modes, confirmation protocol, subagent dispatch, context budget, and reference-loading. Loaded exclusively by the orchestrator — not for subagents or user questions.

中文简介正在准备中。当前显示原文说明。

DAAF-Contribution-Community/daaf2382026年10月17日 更新

Data science methodology and method-selection routing for quantitative research. Covers EDA, data validation, descriptive analysis, causal inference (IV, DiD, RD, synthetic control), clustering/PCA/UMAP, supervised ML, geospatial analysis, network analysis, and visualization design. Contains the canonical method-to-library routing tree, routed by execution language — Python: statsmodels (OLS/GLM/time series), pyfixest (FE/DiD), linearmodels (RE/GMM/SUR), svy (complex surveys), scikit-learn (clustering/prediction ML), geopandas (spatial), igraph (network analysis); R: r-stats (OLS/GLM/time series), fixest (FE/DiD), plm (panel/RE/IV), survey-r (complex surveys), tidymodels (ML), sf-terra (spatial), igraph-r (network analysis). Load the routed tool-specific skill before giving tool-specific advice or writing code — library skills encode environment constraints and curated caveats absent from general knowledge.

中文简介正在准备中。当前显示原文说明。

DAAF-Contribution-Community/daaf2382026年10月17日 更新

Interpretation guidance for Urban Institute Education Data Portal datasets. The Portal is a curation layer over federal data: lowercase variable names, integer-encoded categoricals, standardized missing codes (-1 missing, -2 not applicable, -3 suppressed). Covers year definitions, grade encoding (grade=-1 is Pre-K, not missing), suppression rates, ODC-By licensing, and cross-source join identifiers. Load before analyzing any Portal data. Routes to source-specific deep-dive skills for individual datasets.

中文简介正在准备中。当前显示原文说明。

DAAF-Contribution-Community/daaf2382026年10月17日 更新

查看 DAAF-Contribution-Community 的全部技能

报告此技能的问题