跳到正文
cccskills
免费在 GitHub 公开

rseng-maintenance-sustainability

Covers keeping research software alive and responsible over time: ongoing maintenance practice, tracking and paying down technical debt, reducing the bus factor, and deprecating or archiving honestly. Use when the user asks how to maintain or sustain a project, stop it rotting, schedule CI to catch breakage from external change, track or pay down tech debt, plan maintenance funding or shared ownership, or retire or deprecate software. (Energy and carbon footprint of computing is rseng-green-computing; dependency updating and auditing detail is rseng-dependency-management; archiving mechanics are rseng-archiving.)

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

fdiblen/rseng-agent-skills星标 24(GitHub 24 + cccskills 0)

实测评分 未实测

查看安装方法

包含的文件(2)

  • SKILL.md6.9 KB
  • references.md471 B

SKILL.md(原文)

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

Maintaining and sustaining research software

Use this skill when the goal is to keep software usable over time rather than to ship a first version: setting up maintenance habits, managing dependencies and technical debt, deciding whether to keep, deprecate, or archive a project, and keeping its sustainability story honest. Unmaintained software degrades even with no code changes - dependencies age, environments shift, and the knowledge to run it erodes - so treat maintenance as a recurring cost, not a one-off.

Establish maintenance habits early

Calibrate effort to the user base, but build the habits before the software is widely used:

  • Write a test suite and check coverage with a language-appropriate tool (pytest-cov for Python, covr for R). Without tests, every dependency or environment update carries unknown regression risk.
  • Set up a CI pipeline that runs tests on every commit and on a schedule (e.g. weekly). Scheduled runs catch breakage from external changes even when nobody is actively developing. See the rseng-ci-cd and rseng-testing skills for the mechanics.
  • Keep documentation current as part of maintenance, not after it. If you cannot install and run the software from scratch using only its README and install guide, the docs need updating. See rseng-documentation.
  • Maintain a visible issue tracker (GitHub/GitLab Issues) so the maintenance backlog is shared, not held in one person's head.

Manage dependencies deliberately

Every dependency is a liability as well as an asset - it can change, deprecate, or introduce a security issue:

  • Prefer a small, well-understood dependency tree drawn from already well-maintained projects over a large one.
  • Pin exact versions with a management tool for the language (pip + venv, pip-tools, uv, or Poetry for Python; renv for R) so updates are deliberate and auditable. See the rseng-reproducible-environments skill.
  • Automate update pull requests with Dependabot or Renovate so security and version bumps surface as reviewable changes rather than silent drift.

Communicate change clearly

  • Use Semantic Versioning (MAJOR.MINOR.PATCH) so users can tell a breaking change from a feature from a bug fix and decide when to upgrade. See the rseng-publishing-releasing skill.
  • Keep a CHANGELOG and update it with each release: a record of what changed, when, and why serves both users and your future self.

Reduce the bus factor

If only one person understands the software, it becomes unmaintainable the moment they are unavailable:

  • Document key decisions, architecture, and operational knowledge in the repository itself, not just in someone's head.
  • Share ownership with at least one other person who can act if the primary maintainer is away.
  • Use regular code review to spread understanding of the codebase (see the rseng-version-control-review skill).
  • Recruit community help: label low-barrier issues (good first issue), run maintenance sprints, and make contributing easy.
  • Apply for maintenance-specific funding where it exists (funders increasingly recognise maintenance as a distinct cost).

Deprecate or archive honestly

When you can no longer sustain a project, say so. A prominent README notice, a repository archive, or an explicit deprecation statement is more helpful to users than silent abandonment. See the rseng-publishing-releasing skill for archiving mechanics.

Track and pay down technical debt

Technical debt is often unavoidable in research code written quickly to test a hypothesis; the danger is that it compounds until change becomes slow and risky:

  • Distinguish intentional debt (a known, documented workaround) from unintentional debt (unclear code, missing tests, hardcoded values). The latter is more dangerous because it is harder to reason about.
  • Record debt where it is visible: create issues or a tech-debt label, and add TODO/FIXME comments at the point of the problem with enough context for a future reader. Debt held only in memory is forgotten.
  • Allocate protected time for maintenance and refactoring - a maintenance sprint, a fixed fraction of each cycle, or scheduled calendar time. Debt does not reduce itself.
  • Refactor incrementally, not with a big rewrite: small, individually reviewable improvements (rename for clarity, extract a function, add a missing test). Ensure tests cover current behaviour before restructuring, or you cannot tell whether a refactor introduced a regression.
  • Use static analysis (Ruff or lintr, SonarQube) to surface quality issues automatically and track metrics over time. See the rseng-code-quality skill for readability and structure guidance.

Reduce environmental impact

Environmental sustainability of computing is its own practice with its own skill: rseng-green-computing covers measuring energy and carbon (CodeCarbon, the SCI metric), reducing footprint in payoff order and carbon-aware scheduling. From the maintenance perspective, two habits matter here: include the compute footprint in the project's sustainability story (long-running services and repeated pipelines dominate), and revisit it at the same cadence as dependency and debt reviews - then follow rseng-green-computing for the how.

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:begin -->

Related skills

Check whether any of these applies before moving on:

  • rseng-archiving - retiring software needs archival deposit
  • rseng-ci-cd - scheduled runs catch external breakage
  • rseng-code-quality - incremental refactoring and static analysis
  • rseng-contributor-onboarding - recruiting community maintenance help
  • rseng-dependency-management - dependency update and audit mechanics
  • rseng-green-computing - footprint review at maintenance cadence
<!-- 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 的全部技能

报告此技能的问题