diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..c3f71d0
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,17 @@
+version: 2
+updates:
+ # Keep GitHub Actions versions current
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: weekly
+ groups:
+ actions:
+ patterns:
+ - "*"
+
+ # Keep pre-commit hook revisions current
+ - package-ecosystem: pre-commit
+ directory: /
+ schedule:
+ interval: weekly
diff --git a/.github/workflows/link-check.yaml b/.github/workflows/link-check.yaml
new file mode 100644
index 0000000..54428f3
--- /dev/null
+++ b/.github/workflows/link-check.yaml
@@ -0,0 +1,29 @@
+name: Link check
+
+on:
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ link-check:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Check links with lychee
+ uses: lycheeverse/lychee-action@v2
+ with:
+ # Check all Markdown files in content/ and the root-level docs
+ args: >-
+ --verbose
+ --no-progress
+ --exclude-path node_modules
+ --exclude "^https://forum\\.image\\.sc/"
+ --exclude "^https://www\\.broadinstitute\\.org/"
+ --exclude "^https://doi\\.org/10\\.1101/"
+ --exclude "^https://doi\\.org/10\\.64898/"
+ 'content/**/*.md'
+ '*.md'
+ fail: true
diff --git a/.github/workflows/pre-commit-checks.yaml b/.github/workflows/pre-commit-checks.yaml
index 3777582..4f09dbb 100644
--- a/.github/workflows/pre-commit-checks.yaml
+++ b/.github/workflows/pre-commit-checks.yaml
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-python@v4
+ - uses: actions/setup-python@v5
with:
- python-version: "3.10"
- - uses: pre-commit/action@v3.0.0
+ python-version: "3.12"
+ - uses: pre-commit/action@v3.0.1
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ea99edc..214b56c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,9 +1,12 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
---
+# Exclude vendored theme — it is not our code to lint
+exclude: ^themes/
+
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.5.0
+ rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
@@ -11,17 +14,24 @@ repos:
- id: detect-private-key
# checking spelling
- repo: https://github.com/codespell-project/codespell
- rev: v2.2.6
+ rev: v2.4.2
hooks:
- id: codespell
+ args:
+ # "patter" is the Cell Press journal identifier used in DOI URLs
+ - --ignore-words-list=patter
# checking markdown formatting
- repo: https://github.com/executablebooks/mdformat
- rev: 0.7.17
+ rev: 1.0.0
hooks:
- id: mdformat
+ exclude: ^content/
additional_dependencies:
- - mdformat-gfm
+ - mdformat-gfm==1.0.0
+ - mdformat-frontmatter==2.0.10
+ # HTML linting — exclude Hugo template files (contain {{ }} syntax)
- repo: https://github.com/Lucas-C/pre-commit-hooks-nodejs
rev: v1.1.2
hooks:
- id: htmllint
+ exclude: ^layouts/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..3dbf78e
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,26 @@
+# Contributing to cytomining.github.io
+
+Thank you for your interest in contributing!
+
+## Code of conduct
+
+Please uphold our [code of conduct](https://github.com/cytomining/.github/blob/main/CODE_OF_CONDUCT.md).
+Report unacceptable behavior to cytodata.info@gmail.com.
+
+## Reporting issues
+
+Open a [GitHub issue](https://github.com/cytomining/cytomining.github.io/issues) with a clear description of the problem (e.g., broken link, outdated content, rendering bug).
+
+## Contributing changes
+
+1. Fork the repository and create a branch from `main`.
+1. Make your changes. See [README.md](README.md) for local development setup.
+1. Open a pull request against `main` with a clear description of what changed and why.
+
+Please keep pull requests focused on a single change. All status checks must pass before merge.
+
+## Content guidelines
+
+- Keep tool descriptions factual and concise.
+- Follow the frontmatter and section order used in existing content files.
+- Verify any external links you add are reachable.
diff --git a/README.md b/README.md
index 781958a..3bea2ce 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,62 @@
-# Cytomining organization GitHub Pages configuration
+# cytomining.github.io
-This repo includes content which helps create links via GitHub Pages related to the Cytomining Organization.
+Source for the [Cytomining organization website](https://cytomining.github.io/), built with [Hugo](https://gohugo.io/) and the [Congo](https://jpanther.github.io/congo/) theme.
-## Development
+## Prerequisites
-You may place HTML content within the `/docs` folder, which is then rendered on merge to `main`.
-We adapt work here from [the documentation found in this Gist](https://gist.github.com/domenic/1f286d415559b56d725bee51a62c24a7).
+- [Hugo extended](https://gohugo.io/installation/) v0.161.1 or later
+
+## Local development
+
+```bash
+git clone https://github.com/cytomining/cytomining.github.io.git
+cd cytomining.github.io
+
+# Serve locally with live reload
+hugo server
+
+# Build for production
+hugo --minify
+```
+
+The site is served at `http://localhost:1313/` by default.
+
+## Pre-commit hooks
+
+This repo uses [pre-commit](https://pre-commit.com/) to enforce formatting and catch common issues before every commit.
+
+```bash
+pip install pre-commit
+pre-commit install
+```
+
+After installation, hooks run automatically on `git commit`. To run them manually against all files:
+
+```bash
+pre-commit run --all-files
+```
+
+## Adding or editing a tool page
+
+Tool pages live in `content/tools/`. Each file is a Markdown file with frontmatter.
+
+Minimal frontmatter for a new tool page:
+
+```yaml
+---
+title: "Tool Name"
+description: "One-sentence description of what this tool does."
+showDate: false
+showAuthor: false
+---
+```
+
+Follow the section order used in existing pages: logo image(s), 1–2 sentence intro, **Key capabilities** bullet list, link to documentation or GitHub, and optionally a **Publication** section.
+
+## Deployment
+
+Pushes to `main` trigger the [hugo.yaml](.github/workflows/hugo.yaml) GitHub Actions workflow, which builds the site and deploys it to GitHub Pages automatically.
+
+## Theme
+
+This site uses [Congo v2.13.0](https://github.com/jpanther/congo). Theme configuration lives in `config/_default/params.toml`.
diff --git a/content/_index.md b/content/_index.md
index 0c5274b..500e248 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -1,4 +1,4 @@
---
-title: "Cytomining"
-description: "Open-source tools for single-cell image-based profiling"
+title: Cytomining
+description: Open-source tools for single-cell image-based profiling
---
diff --git a/content/contact/_index.md b/content/contact/_index.md
index 2adddb1..deb0aaa 100644
--- a/content/contact/_index.md
+++ b/content/contact/_index.md
@@ -1,6 +1,6 @@
---
-title: "Contact"
-description: "Get in touch with the Cytomining community."
+title: Contact
+description: Get in touch with the Cytomining community.
---
- 💬 Join the conversation on our [Discourse forums](https://forum.image.sc/)
diff --git a/content/experimental/_index.md b/content/experimental/_index.md
index a3591f2..2f0b6b2 100644
--- a/content/experimental/_index.md
+++ b/content/experimental/_index.md
@@ -1,6 +1,6 @@
---
-title: "Experimental"
-description: "Next-generation tools under active development in the WayScience organization."
+title: Experimental
+description: Next-generation tools under active development in the WayScience organization.
---
The following tools are under active development in the [WayScience](https://github.com/WayScience) organization and represent the next generation of the Cytomining ecosystem.
diff --git a/content/tools/_index.md b/content/tools/_index.md
index 67f18c1..f3e2b06 100644
--- a/content/tools/_index.md
+++ b/content/tools/_index.md
@@ -1,6 +1,6 @@
---
-title: "Tools"
-description: "Production-ready tools for image-based profiling bioinformatics."
+title: Tools
+description: Production-ready tools for image-based profiling bioinformatics.
---
The Cytomining ecosystem provides a suite of production-ready tools for every stage of the image-based profiling workflow.
diff --git a/content/tools/copairs.md b/content/tools/copairs.md
index 0337590..ec8e03b 100644
--- a/content/tools/copairs.md
+++ b/content/tools/copairs.md
@@ -1,6 +1,6 @@
---
-title: "copairs"
-description: "Downstream evaluation — measures how reproducibly perturbation profiles retrieve their matched replicates, quantifying profile quality and similarity."
+title: copairs
+description: Downstream evaluation — measures how reproducibly perturbation profiles retrieve their matched replicates, quantifying profile quality and similarity.
showDate: false
showAuthor: false
---
diff --git a/content/tools/cosmicqc.md b/content/tools/cosmicqc.md
index 36c47cd..8b6b755 100644
--- a/content/tools/cosmicqc.md
+++ b/content/tools/cosmicqc.md
@@ -1,9 +1,9 @@
---
-title: "coSMicQC"
-description: "Quality control step — flags and removes low-quality cells before profile processing to prevent artifacts from propagating downstream."
+title: coSMicQC
+description: Quality control step — flags and removes low-quality cells before profile processing to prevent artifacts from propagating downstream.
showDate: false
showAuthor: false
-logoUrl: "https://raw.githubusercontent.com/cytomining/coSMicQC/main/media/logo/just-icon.png"
+logoUrl: https://raw.githubusercontent.com/cytomining/coSMicQC/main/media/logo/just-icon.png
---
diff --git a/content/tools/cytodataframe.md b/content/tools/cytodataframe.md
index 2a03db3..a084f97 100644
--- a/content/tools/cytodataframe.md
+++ b/content/tools/cytodataframe.md
@@ -1,9 +1,9 @@
---
-title: "CytoDataFrame"
-description: "Interactive exploration — view and inspect morphological profiles alongside their source cell images directly in Jupyter notebooks."
+title: CytoDataFrame
+description: Interactive exploration — view and inspect morphological profiles alongside their source cell images directly in Jupyter notebooks.
showDate: false
showAuthor: false
-logoUrl: "https://raw.githubusercontent.com/cytomining/CytoDataFrame/main/logo/just-icon.png"
+logoUrl: https://raw.githubusercontent.com/cytomining/CytoDataFrame/main/logo/just-icon.png
---
diff --git a/content/tools/cytotable.md b/content/tools/cytotable.md
index f6fc4a0..d85ab1d 100644
--- a/content/tools/cytotable.md
+++ b/content/tools/cytotable.md
@@ -1,9 +1,9 @@
---
-title: "CytoTable"
-description: "Upstream ingestion — converts raw CellProfiler, DeepProfiler, and IN Carta outputs into scalable, analysis-ready Parquet tables."
+title: CytoTable
+description: Upstream ingestion — converts raw CellProfiler, DeepProfiler, and IN Carta outputs into scalable, analysis-ready Parquet tables.
showDate: false
showAuthor: false
-logoUrl: "https://raw.githubusercontent.com/cytomining/CytoTable/main/logo/just-icon.png"
+logoUrl: https://raw.githubusercontent.com/cytomining/CytoTable/main/logo/just-icon.png
---
diff --git a/content/tools/deepprofiler.md b/content/tools/deepprofiler.md
index 50b5cbb..ad7d84a 100644
--- a/content/tools/deepprofiler.md
+++ b/content/tools/deepprofiler.md
@@ -1,11 +1,11 @@
---
-title: "DeepProfiler"
-description: "Alternative feature extraction — deep learning embeddings from raw microscopy images, bypassing classical segmentation-and-measurement pipelines."
+title: DeepProfiler
+description: Alternative feature extraction — deep learning embeddings from raw microscopy images, bypassing classical segmentation-and-measurement pipelines.
showDate: false
showAuthor: false
---
-
+
`DeepProfiler` uses deep neural networks to extract morphological features directly from raw microscopy images, bypassing traditional segmentation-and-measurement pipelines.
It is designed for high-throughput screens where deep learning representations outperform classical feature sets.
diff --git a/content/tools/pycytominer.md b/content/tools/pycytominer.md
index 0bae2bc..4dcd814 100644
--- a/content/tools/pycytominer.md
+++ b/content/tools/pycytominer.md
@@ -1,9 +1,9 @@
---
-title: "Pycytominer"
-description: "Core processing pipeline — aggregates, normalizes, and feature-selects morphological profiles for downstream analysis."
+title: Pycytominer
+description: Core processing pipeline — aggregates, normalizes, and feature-selects morphological profiles for downstream analysis.
showDate: false
showAuthor: false
-logoUrl: "https://raw.githubusercontent.com/cytomining/pycytominer/main/logo/just-icon.png"
+logoUrl: https://raw.githubusercontent.com/cytomining/pycytominer/main/logo/just-icon.png
---
diff --git a/layouts/index.html b/layouts/index.html
index d66fde8..84ef57b 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -30,9 +30,9 @@