Senior Data Engineer
alirezarezvani/claude-skills
Data engineering skill for building scalable data pipelines, ETL/ELT systems, and data infrastructure.
World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure.
$ npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install benchflow-ai/skillsbench senior-data-engineer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .claude/skills && cp -r skills-src/tasks/flink-query/environment/skills/senior-data-engineer .claude/skills/senior-data-engineer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "senior-data-engineer" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks/flink-query/environment/skills/senior-data-engineer into .claude/skills/senior-data-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "senior-data-engineer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/benchflow-ai/skillsbench/tree/main/tasks/flink-query/environment/skills/senior-data-engineerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install benchflow-ai/skillsbench senior-data-engineer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .agents/skills && cp -r skills-src/tasks/flink-query/environment/skills/senior-data-engineer .agents/skills/senior-data-engineer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "senior-data-engineer" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks/flink-query/environment/skills/senior-data-engineer into .agents/skills/senior-data-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "senior-data-engineer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install benchflow-ai/skillsbench senior-data-engineer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/tasks/flink-query/environment/skills/senior-data-engineer .cursor/skills/senior-data-engineer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "senior-data-engineer" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks/flink-query/environment/skills/senior-data-engineer into .cursor/skills/senior-data-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "senior-data-engineer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/benchflow-ai/skillsbench.git --path tasks/flink-query/environment/skills/senior-data-engineer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install benchflow-ai/skillsbench senior-data-engineer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/tasks/flink-query/environment/skills/senior-data-engineer .gemini/skills/senior-data-engineer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "senior-data-engineer" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks/flink-query/environment/skills/senior-data-engineer into .gemini/skills/senior-data-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "senior-data-engineer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install benchflow-ai/skillsbench senior-data-engineerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .github/skills && cp -r skills-src/tasks/flink-query/environment/skills/senior-data-engineer .github/skills/senior-data-engineer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "senior-data-engineer" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks/flink-query/environment/skills/senior-data-engineer into .github/skills/senior-data-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "senior-data-engineer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install benchflow-ai/skillsbench senior-data-engineer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/tasks/flink-query/environment/skills/senior-data-engineer .opencode/skills/senior-data-engineer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "senior-data-engineer" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks/flink-query/environment/skills/senior-data-engineer into .opencode/skills/senior-data-engineer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "senior-data-engineer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
senior-data-engineerWorld-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure.
Senior Data Engineer is an agent skill from benchflow-ai/skillsbench. World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure. Expertise in Python, SQL, Spark, Airflow, dbt, Kafka, Flink, Kinesis, and modern data stack. Includes data modeling, pipeline orchestration, data quality, streaming quality monitoring, and DataOps. Use when designing data architectures, building batch or streaming data pipelines, optimizing data workflows, or implementing data governance.
Its SKILL.md is about 5.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including scripts, reference files and assets (for example `HOW_TO_USE.md`, `assets/data-quality-checklist.md` and `assets/pipeline-design-template.md`). Compatibility notes: Python 3.8+; platforms: macos, linux, windows
It sits in Data & Analytics, covering Data pipelines and ETL. It works with Apache Kafka, Apache Airflow, dbt and Python. The repository describes itself as: SkillsBench evaluates how well skills work and how effective agents are at using them. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9a1f4dd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 6 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Python 3.8+; platforms: macos, linux, windows
From compatibility in the SKILL.md frontmatter.
Senior Data Engineer loads about 5.9k tokens when it runs, and up to ~43k if it reads all its reference files. Until then it costs about 124 tokens; SKILL.md has 1,813 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from benchflow-ai/skillsbench at commit 9a1f4dd, republished under its MIT licence (© benchflow-ai). 1,813 words, ~5,917 tokens.
.claude/skills/senior-data-engineer/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.Time: 2-4 hours
Steps:
pipeline_orchestrator.pyExpected Output: Production-ready ETL pipeline with 99%+ success rate, automated quality checks, and comprehensive monitoring
Time: 3-5 days
Steps:
kafka_config_generator.pystream_processor.pystreaming_quality_validator.pyExpected Output: Streaming pipeline processing 10K+ events/sec with P99 latency < 1s, exactly-once delivery, and real-time quality monitoring
World-class data engineering for production-grade data systems, scalable pipelines, and enterprise data platforms.
This skill provides comprehensive expertise in data engineering fundamentals through advanced production patterns. From designing medallion architectures to implementing real-time streaming pipelines, it covers the full spectrum of modern data engineering including ETL/ELT design, data quality frameworks, pipeline orchestration, and DataOps practices.
What This Skill Provides:
Best For:
# Generate Airflow DAG from configuration
python scripts/pipeline_orchestrator.py --config pipeline_config.yaml --output dags/
# Validate pipeline configuration
python scripts/pipeline_orchestrator.py --config pipeline_config.yaml --validate
# Use incremental load template
python scripts/pipeline_orchestrator.py --template incremental --output dags/# Validate CSV file with quality checks
python scripts/data_quality_validator.py --input data/sales.csv --output report.html
# Validate database table with custom rules
python scripts/data_quality_validator.py \
--connection postgresql://user:pass@host/db \
--table sales_transactions \
--rules rules/sales_validation.yaml \
--threshold 0.95# Analyze pipeline performance and get recommendations
python scripts/etl_performance_optimizer.py \
--airflow-db postgresql://host/airflow \
--dag-id sales_etl_pipeline \
--days 30 \
--optimize
# Analyze Spark job performance
python scripts/etl_performance_optimizer.py \
--spark-history-server http://spark-history:18080 \
--app-id app-20250115-001# Validate streaming pipeline configuration
python scripts/stream_processor.py --config streaming_config.yaml --validate
# Generate Kafka topic and client configurations
python scripts/kafka_config_generator.py \
--topic user-events \
--partitions 12 \
--replication 3 \
--output kafka/topics/
# Generate exactly-once producer configuration
python scripts/kafka_config_generator.py \
--producer \
--profile exactly-once \
--output kafka/producer.properties
# Generate Flink job scaffolding
python scripts/stream_processor.py \
--config streaming_config.yaml \
--mode flink \
--generate \
--output flink-jobs/
# Monitor streaming quality
python scripts/streaming_quality_validator.py \
--lag --consumer-group events-processor --threshold 10000 \
--freshness --topic processed-events --max-latency-ms 5000 \
--output streaming-health-report.htmlSteps:
python scripts/pipeline_orchestrator.py --config config.yamlPipeline Patterns: See frameworks.md for Lambda Architecture, Kappa Architecture, Medallion Architecture (Bronze/Silver/Gold), and Microservices Data patterns.
Templates: See templates.md for complete Airflow DAG templates, Spark job templates, dbt models, and Docker configurations.
Steps:
python scripts/data_quality_validator.py --rules rules.yamlQuality Framework: See frameworks.md for complete Data Quality Framework covering all dimensions (completeness, accuracy, consistency, timeliness, validity).
Validation Templates: See templates.md for validation configuration examples and Python API usage.
Steps:
Modeling Patterns: See frameworks.md for Dimensional Modeling (Kimball), Data Vault 2.0, One Big Table (OBT), and SCD implementations.
dbt Templates: See templates.md for complete dbt model templates including staging, intermediate, fact tables, and SCD Type 2 logic.
Steps:
Optimization Strategies: See frameworks.md for performance best practices including partitioning strategies, query optimization, and Spark tuning.
Analysis Tools: See tools.md for complete documentation on etl_performance_optimizer.py with query analysis and Spark tuning.
Steps:
python scripts/kafka_config_generator.py --topic events --partitions 12python scripts/stream_processor.py --mode flink --generatepython scripts/streaming_quality_validator.py --lag --freshness --throughputStreaming Patterns: See frameworks.md for stateful processing, stream joins, windowing, exactly-once semantics, and CDC patterns.
Templates: See templates.md for Flink DataStream jobs, Kafka Streams applications, PyFlink templates, and Docker Compose configurations.
Automated Airflow DAG generation with intelligent dependency resolution and monitoring.
Key Features:
Usage:
# Basic DAG generation
python scripts/pipeline_orchestrator.py --config pipeline_config.yaml --output dags/
# With validation
python scripts/pipeline_orchestrator.py --config config.yaml --validate
# From template
python scripts/pipeline_orchestrator.py --template incremental --output dags/Complete Documentation: See tools.md for full configuration options, templates, and integration examples.
Comprehensive data quality validation framework with automated checks and reporting.
Capabilities:
Usage:
# Validate with custom rules
python scripts/data_quality_validator.py \
--input data/sales.csv \
--rules rules/sales_validation.yaml \
--output report.html
# Database table validation
python scripts/data_quality_validator.py \
--connection postgresql://host/db \
--table sales_transactions \
--threshold 0.95Complete Documentation: See tools.md for rule configuration, API usage, and integration patterns.
Pipeline performance analysis with actionable optimization recommendations.
Capabilities:
Usage:
# Analyze Airflow DAG
python scripts/etl_performance_optimizer.py \
--airflow-db postgresql://host/airflow \
--dag-id sales_etl_pipeline \
--days 30 \
--optimize
# Spark job analysis
python scripts/etl_performance_optimizer.py \
--spark-history-server http://spark-history:18080 \
--app-id app-20250115-001Complete Documentation: See tools.md for profiling options, optimization strategies, and cost analysis.
Streaming pipeline configuration generator and validator for Kafka, Flink, and Kinesis.
Capabilities:
Usage:
# Validate configuration
python scripts/stream_processor.py --config streaming_config.yaml --validate
# Generate Kafka configurations
python scripts/stream_processor.py --config streaming_config.yaml --mode kafka --generate
# Generate Flink job scaffolding
python scripts/stream_processor.py --config streaming_config.yaml --mode flink --generate --output flink-jobs/
# Generate Docker Compose for local development
python scripts/stream_processor.py --config streaming_config.yaml --mode docker --generateComplete Documentation: See tools.md for configuration format, validation checks, and generated outputs.
Real-time streaming data quality monitoring with comprehensive health scoring.
Capabilities:
Usage:
# Monitor consumer lag
python scripts/streaming_quality_validator.py \
--lag --consumer-group events-processor --threshold 10000
# Monitor data freshness
python scripts/streaming_quality_validator.py \
--freshness --topic processed-events --max-latency-ms 5000
# Full quality validation
python scripts/streaming_quality_validator.py \
--lag --freshness --throughput --dlq \
--output streaming-health-report.htmlComplete Documentation: See tools.md for all monitoring dimensions and integration patterns.
Production-grade Kafka configuration generator with performance and security profiles.
Capabilities:
Usage:
# Generate topic configuration
python scripts/kafka_config_generator.py \
--topic user-events --partitions 12 --replication 3 --retention-hours 168
# Generate exactly-once producer
python scripts/kafka_config_generator.py \
--producer --profile exactly-once --transactional-id producer-001
# Generate Kafka Streams config
python scripts/kafka_config_generator.py \
--streams --application-id events-processor --exactly-onceComplete Documentation: See tools.md for all profiles, security options, and Connect configurations.
Comprehensive data engineering frameworks and patterns:
Production-ready code templates and examples:
Python automation tool documentation:
Core Technologies:
Data Platforms:
This skill integrates with:
See tools.md for detailed integration patterns and examples.
Pipeline Design:
Data Quality:
Performance:
Operations:
Batch Pipeline Execution:
Streaming Pipeline Execution:
Data Quality (Batch):
Streaming Quality:
Cost Efficiency:
scripts/ directoryVersion: 2.0.0 Last Updated: December 16, 2025 Documentation Structure: Progressive disclosure with comprehensive references Streaming Enhancement: Task #8 - Real-time streaming capabilities added
© benchflow-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 13 other files (scripts, references, assets) in tasks/flink-query/environment/skills/senior-data-engineer of benchflow-ai/skillsbench.
Open the folder on GitHubat commit 9a1f4dd
Senior Data Engineer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Senior Data Engineer this skillbenchflow-ai/skillsbench | 1.8k | — | ~5.9k | Automated safety check: Pass | MIT | |
| Senior Data Engineeralirezarezvani/claude-skills | 28k | 3 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Senior Data Engineerdavila7/claude-code-templates | 32k | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Transforming Dataancoleman/ai-design-components | 526 | — | ~3k | Automated safety check: Pass | MIT | |
| Databricks JobsKilo-Org/kilo-marketplace | 189 | 1 repos | ~3.1k | Automated safety check: Pass | Custom licence | |
| Engineering Data Pipelinestelagod/code-abyss | 244 | — | ~236 | Automated safety check: Pass | MIT |
alirezarezvani/claude-skills
Data engineering skill for building scalable data pipelines, ETL/ELT systems, and data infrastructure.
davila7/claude-code-templates
World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, and data infrastructure.
ancoleman/ai-design-components
Transform raw data into analytical assets using ETL/ELT patterns, SQL (dbt), Python (pandas/polars/PySpark), and orchestration (Airflow).
Kilo-Org/kilo-marketplace
Develop and deploy Lakeflow Jobs on Databricks via DABs, Python SDK, or the CLI.
telagod/code-abyss
Data engineering knowledge reference covering Airflow, Dagster, Kafka Streams, Flink, dbt, and data quality patterns.
borghei/Claude-Skills
Data engineering for batch and streaming pipelines with Airflow, dbt, Spark, and Kafka.
benchflow-ai/skillsbench
This skill should be used when working on Lean 4 formalization projects to maintain persistent memory of successful proof patterns, failed approaches, project conventions, and user preferences…
benchflow-ai/skillsbench
AC branch pi-model power flow equations (P/Q and |S|) with transformer tap ratio and phase shift, matching acopf-math-model.md and MATPOWER branch fields.
benchflow-ai/skillsbench
Civilization 6 district mechanics library. An agent skill from benchflow-ai/skillsbench.
benchflow-ai/skillsbench
Build deterministic, verifiable data visualizations with D3.js (v6).
benchflow-ai/skillsbench
DC power flow analysis for power systems. An agent skill from benchflow-ai/skillsbench.
benchflow-ai/skillsbench
Calculate per-second RMS energy from audio files. An agent skill from benchflow-ai/skillsbench.
Works with
Categories
World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure. Senior Data Engineer is an agent skill from benchflow-ai/skillsbench. World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure.
Senior Data Engineer fits situations like: designing data architectures; streaming data pipelines; optimizing data workflows; implementing data governance.
Run `npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a claude-code`. Or copy the skill folder (tasks/flink-query/environment/skills/senior-data-engineer in benchflow-ai/skillsbench) into .claude/skills/senior-data-engineer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a codex`. Or copy the skill folder (tasks/flink-query/environment/skills/senior-data-engineer in benchflow-ai/skillsbench) into .agents/skills/senior-data-engineer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add benchflow-ai/skillsbench --skill senior-data-engineer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/senior-data-engineer, .gemini/skills/senior-data-engineer, .github/skills/senior-data-engineer and .opencode/skills/senior-data-engineer in your project.
Going by SKILL.md and its folder, Senior Data Engineer needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3; Docker. Compatibility (from SKILL.md): Python 3.8+; platforms: macos, linux, windows.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Senior Data Engineer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.9k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 37k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Senior Data Engineer: Senior Data Engineer (alirezarezvani/claude-skills, 28k stars), Senior Data Engineer (davila7/claude-code-templates, 32k stars), Transforming Data (ancoleman/ai-design-components, 526 stars) and Databricks Jobs (Kilo-Org/kilo-marketplace, 189 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
benchflow-ai (a GitHub organization) maintains it in benchflow-ai/skillsbench, which has 1,832 GitHub stars. The repository holds 180 skills in this directory. The repository was last updated on July 23, 2026.
Source: benchflow-ai/skillsbench on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.