Language-specific research software practice

SkillDocs & knowledge

Covers language-specific research software practice: per-language conventions for Python, R, JavaScript/TypeScript, C/C++, Fortran, Rust and Bash - setup, development environments, style standards, packaging, testing, quality assurance, optimization, logging, documentation and dependency management. Use when the user asks which tools or conventions to use FOR A SPECIFIC LANGUAGE in research software (e.g. Python packaging, R style, C++ QA, Fortran tooling, Rust starting points, shell scripting practice), or wants a language-by-language comparison.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Language-specific research software practice skill

What this skill tells your AI

The instructions your AI receives, as published by fdiblen/rseng-agent-skills in skills/rseng-language-guides/SKILL.md and read by ahel’s review.

The process skills in this pack are language-agnostic; this skill answers language-SPECIFIC questions with per-language guidance. Each language guide follows the same template - introduction, information sources, setup, development environments, style standards, packaging, testing, quality assurance, optimization, logging, documentation, dependencies, starting points - so comparable answers exist for every covered language.

Current-tool quick reference per language

The strongest current stack per ecosystem (the pack-wide rule: best current option, runner-up named, reason given - and these move, so verify against the ecosystem when in doubt):

  • Python: uv for environments/packaging (runner-up: pip+venv - uv is faster and lockfile-native), ruff as the single linter+formatter (replaces flake8/isort/black), pytest for tests, mypy for types, pyproject.toml as the one config home. Python 2 relics (2to3, six) and legacy tool chains belong to migration work, not new projects.
  • R: usethis/devtools for package workflow, testthat for tests, lintr + styler for quality, roxygen2 for docs, renv for reproducible libraries; rOpenSci's guide is the community bar.
  • C/C++: CMake as the build lingua franca, Catch2 or GoogleTest for tests, clang-tidy + clang-format for quality, sanitizers (ASan/UBSan) in CI, a package manager (vcpkg/Conan) over vendored sources.
  • Fortran: fpm (Fortran Package Manager) for new projects, gfortran in CI, pFUnit for tests; modern-Fortran style over F77 habits, and interop via iso_c_binding when Python needs to call it.
  • Julia: built-in Pkg with Project.toml/Manifest.toml, Test stdlib, JuliaFormatter; register in General only once the API settles.
  • JavaScript/TypeScript: TypeScript by default for anything shared, vitest for tests, Biome as linter+formatter (runner-up: eslint+prettier - Biome is one fast tool), npm lockfiles committed.
  • Bash: shellcheck non-negotiable, bats-core for tests when a script earns them - and past ~100 lines, prefer a real language (rseng-software-design's honesty about scripts).

These map the pack's practices INTO each ecosystem; the process itself (testing discipline, packaging, CI shape) stays in the process skills.

How to use the guides

  • Identify the language, open the matching page from references.md, and answer from its sections rather than from generic memory - the guides encode current, community-reviewed tool choices (for example the Python guide's Ruff-first style tooling, pytest, mypy/Pydantic typing and Sphinx/MkDocs documentation stack).
  • For multi-language projects, apply each language's guide to its part and keep shared concerns (CI, licensing, citation) with the process skills.
  • Where a language guide and a general skill overlap (testing, packaging, documentation), the general skill gives the WHY and the language guide gives the concrete WHAT for that ecosystem.
  • The covered languages: Python, R, JavaScript/TypeScript, C/C++, Fortran, Rust, Bash - plus a technology overview page for adjacent topics.

Choosing a language

For "which language should this project use", combine the guides' starting-point sections with rseng-management-planning (technology choice): weigh ecosystem fit for the research domain, team experience, and long-term maintainability over micro-benchmarks.

Working with this skill

The generated references.md beside this file lists the source material and pointers:

  • references.md - verified Learn more pointers

Learn more (verified):

Related skills

Check whether any of these applies before moving on:

  • rseng-code-quality - linter and formatter per ecosystem
  • rseng-dependency-management - verifying current ecosystem tooling
  • rseng-management-planning - language choice for new projects
  • rseng-notebooks - Python/Julia notebook practice
  • rseng-project-scaffolding - language templates at kickoff
  • rseng-testing - per-language test framework choice

Signals

GitHub stars
20
Forks
2
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
rseng-language-guides
Source
github.com/fdiblen/rseng-agent-skills