本文へ移動
cccskills
無料GitHub で公開

rseng-defensive-coding

Covers defenses against silently wrong research results: validating data at boundaries (schemas, assertions, sanity checks), explicit physical units and quantities in code (pint/astropy-style), disciplined randomness (explicit seeded generators, parallel streams), and fail-loud handling of NaN and missing data. Use PROACTIVELY when code ingests external or instrument data, when values carry physical units, when randomness enters simulations or sampling, or when NaN or missing-data handling is implicit; also when the user mentions data validation, unit errors, seeds or silent bugs, or reviews analysis code whose failure would be invisible. For floating-point behavior and tolerances see rseng-numerical-accuracy; for diagnosing an existing bug see rseng-debugging.

日本語の概要は準備中です。原文の説明を表示しています。

fdiblen/rseng-agent-skillsスター 24(GitHub 24 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(2)

  • SKILL.md5.9 KB
  • references.md529 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Defensive coding for research software

Research code's worst bug is the one that runs to completion: the unit mismatch, the silently dropped rows, the column shifted by one, the reused random stream - producing plausible, wrong numbers that reach a paper. Defensive coding is the discipline of making wrongness LOUD: validate at boundaries, make implicit physics and randomness explicit, and prefer a crash today to a correction notice next year. It complements rseng-numerical-accuracy (float behavior) and feeds rseng-testing (the checks become tests).

Validate at the boundaries

Data enters code at boundaries - files, instruments, APIs, user parameters - and every boundary is a corruption opportunity:

  • Schema-check tabular data on ingest: expected columns, dtypes, units, ranges, allowed categories, uniqueness of keys (pandera-style declarative schemas for DataFrames; JSON Schema for configs and records). The schema is executable documentation of the data contract (rseng-data-management's data dictionary, enforced).
  • Sanity-check the science, not just the types: physical ranges (no negative concentrations, latitudes within +/-90), plausible magnitudes, conservation totals, expected row counts within tolerance of yesterday's. Domain assertions catch what dtype checks cannot.
  • Missing data is a decision, not a default: silent NaN propagation and silent row-dropping (the pandas default in many operations) are the classic silent killers - count and REPORT what was excluded and why, and make exclusion rules explicit code (rseng-research-integrity checks this at the manuscript end; this skill prevents it at the source).
  • Fail loud, fail early: raise on contract violations at ingest rather than letting bad data flow downstream; in batch settings quarantine-and-log per item (rseng-big-data-processing) - but never silently skip.

Units and quantities

Unit errors are the canonical silent research bug - flagship missions have died of them:

  • Attach units in code, not in comments: a quantity library (pint; astropy.units in astronomy) makes units part of the value, checked at every operation - adding meters to seconds raises instead of publishing.
  • Enforce at boundaries even when the core stays plain-numeric for performance: convert-and-strip on ingest (asserting the expected unit), reattach on output, and document the internal convention in ONE place (rseng-scientific-file-formats' metadata discipline carries units in the files themselves).
  • Degrees vs radians, per-second vs per-minute, and log-vs-linear are unit bugs in spirit: name them in variable names or types when a full quantity system is overkill (angle_rad, rate_per_s).

Disciplined randomness

  • Explicit generators, never global state: create a seeded RNG object (numpy's Generator API) and pass it - seeding the global makes order-dependent, library-colliding randomness (the Scientific Python RNG guidance is the reference).
  • Parallel work gets derived streams: spawn per-worker generators from a master seed (seed sequences), never the same seed in every worker - identical streams across "independent" replicates is a silent statistics-destroyer (rseng-hpc-computing job arrays included).
  • Seeds are provenance: record them with outputs and in configs (rseng-reproducibility owns the bookkeeping); stochastic tests assert distributions or use fixed seeds knowingly (rseng-testing).

The habit, proportioned

Not every script needs schemas: exploration code needs only the cheap habits (explicit NaN policy, named units, seeded RNGs); shared pipelines add ingest validation; published analyses add the full contract checks in CI (rseng-ci-cd) so drift in upstream data sources is caught at the pull request, not in the plot. When a defensive check fires in production, keep it as a regression test - each catch is a documented failure mode (rseng-trainer's errors-are-curriculum applies: explain what the check just prevented).

Working with this skill

This skill is source-independent: its authority is the tool documentation and Scientific Python guidance linked below. It is the prevention layer for the failure modes rseng-research-integrity hunts post-hoc.

Learn more (verified):

<!-- related-skills:begin -->

Related skills

Check whether any of these applies before moving on:

  • rseng-big-data-processing - quarantine-and-log at batch scale
  • rseng-data-management - data dictionaries the schemas enforce
  • rseng-hpc-computing - per-worker RNG streams in parallel jobs
  • rseng-numerical-accuracy - float behavior behind silent errors
  • rseng-research-integrity - post-hoc hunt for same failures
  • rseng-testing - fired checks become regression tests
<!-- related-skills:end -->

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Covers operating AI coding agents securely: auditing whether the agent runs sandboxed, permission and dangerous-command configuration, containerized environments, secrets kept out of context, network egress and token privileges, prompt-injection risk, and the privacy of agent use itself. Use PROACTIVELY when permission gating is broadly disabled (skip-permissions modes), when secrets are visible to the agent's shell, or when the agent processes untrusted code, issues or web content; when a project holds personal or confidential data while a cloud agent is active (what leaves the machine, retention, training use), or when the user asks how to run coding agents safely or privately. (Supply-chain security: rseng-security; disclosing agent contributions: rseng-ai-declaration.)

日本語の概要は準備中です。原文の説明を表示しています。

fdiblen/rseng-agent-skills242026年9月23日 更新

Covers declaring AI involvement with the AI Declaration Format (https://ai-declaration.org): creating and maintaining an aidecl.yaml that records which AI tools and agents were used, what each contributed, when and how much, plus the README disclosure footnote, JSON/JSON-LD export and CI validation. Machine-readable disclosure is the practice; this format is one implementation. Use PROACTIVELY when an AI assistant or agent creates or modifies a project's content - generate aidecl.yaml if missing, update it after AI-assisted changes. Also use when the user asks about AI transparency, provenance, disclosure or EU AI Act disclosure, wants to state that NO AI was used, or mentions aidecl. For concealment requests see rseng-honesty; for the human review duty see rseng-human-verification.

日本語の概要は準備中です。原文の説明を表示しています。

fdiblen/rseng-agent-skills242026年9月23日 更新

Covers long-term archiving of research software and data: Software Heritage save requests and SWHID persistent identifiers, Zenodo deposits with versioned DOIs and forge integration, choosing domain and institutional repositories, deciding what to archive (code, data, environments, documentation) and when, and archiving at project retirement. Use when the user wants software or data preserved beyond the life of a forge account, grant or lab, mentions Software Heritage, SWHIDs, Zenodo deposits or archiving, retires or hands over a project, prepares artifacts that must stay resolvable for a paper, or when funder policy requires long-term preservation. (Cutting the release itself is rseng-publishing-releasing; day-to-day data storage and repository choice is rseng-data-management.)

日本語の概要は準備中です。原文の説明を表示しています。

fdiblen/rseng-agent-skills242026年9月23日 更新

Covers processing research data that outgrows one machine's memory: out-of-core and chunked computation, Dask for scaling the scientific Python stack, Spark for distributed tabular pipelines, lazy evaluation, partitioning strategies, idempotent and restartable batch jobs, and knowing when NOT to distribute. Use when datasets no longer fit in memory, when the user mentions Dask, Spark, out-of-core or larger-than-memory data, when a pandas/NumPy workflow hits memory limits, or when designing batch pipelines over many files. (Cluster job submission and job arrays are rseng-hpc-computing; pipeline orchestration engines are rseng-workflows; profile first with rseng-performance-profiling.)

日本語の概要は準備中です。原文の説明を表示しています。

fdiblen/rseng-agent-skills242026年9月23日 更新

Covers continuous integration and delivery for research software: CI/CD concepts, automating builds and tests with GitHub Actions and GitLab CI/CD, and wiring an organization's GitLab CI infrastructure to a GitHub-hosted project. Use when the user asks to set up CI, write a pipeline or workflow file (.github/workflows, .gitlab-ci.yml), add automated builds/tests on push or pull request, publish a package or deploy docs when a tag or release is cut, cache dependencies to speed up CI runs, choose between GitHub Actions and GitLab CI, use self-hosted or GPU runners, mirror a repo, or report external CI status back to GitHub. For what to test and shrinking a test matrix see rseng-testing; for linter and pre-commit policy see rseng-code-quality.

日本語の概要は準備中です。原文の説明を表示しています。

fdiblen/rseng-agent-skills242026年9月23日 更新

Covers verifying that every citation is real, correct and current: checking references in manuscripts, READMEs, references files and code metadata against Crossref and OpenAlex, screening cited DOIs against the Retraction Watch database, catching fabricated or mis-attributed citations (a documented AI failure mode), and keeping bibliographies and CITATION.cff files resolvable. Use PROACTIVELY before any bibliography, reference list or citation metadata is finalized or published, whenever the agent itself has produced citations, and when the user asks to check references, mentions broken DOIs, retracted papers or citation verification, or prepares a manuscript, README or software paper with references. (Making your own software citable is rseng-citation-metadata.)

日本語の概要は準備中です。原文の説明を表示しています。

fdiblen/rseng-agent-skills242026年9月23日 更新

fdiblen のスキルをすべて見る

このスキルの問題を報告する