Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Contribute directly (pull request)
url: https://github.com/museomics/methods/blob/main/CONTRIBUTING.md
about: Comfortable with GitHub? Add an entry by PR instead.
73 changes: 73 additions & 0 deletions .github/ISSUE_TEMPLATE/suggest-bibliography.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Suggest a bibliography entry
description: Propose a paper or SOP to add to the Bibliography page.
title: "[Bibliography] "
labels: ["type: bibliography-suggestion"]
# NOTE: tag options mirror _data/tags.yml — update both together.
body:
- type: markdown
attributes:
value: "Fields marked * are required."
- type: dropdown
id: type
attributes:
label: Type*
options: [paper, sop]
validations:
required: true
- type: input
id: title
attributes:
label: Title*
validations:
required: true
- type: input
id: authors
attributes:
label: Authors or institution*
validations:
required: true
- type: input
id: year
attributes:
label: Year / date*
placeholder: e.g. 2024
validations:
required: true
- type: input
id: link
attributes:
label: Link or DOI*
placeholder: https://doi.org/10.xxxx/xxxxx
validations:
required: true
- type: dropdown
id: tags
attributes:
label: Relevant method tags
multiple: true
options:
- silica-column
- magnetic-bead
- phenol-chloroform
- ctab
- chelex
- tagmentation
- ligation
- single-stranded
- pcr-free
- hybridization-capture
- genome-skimming
- shotgun-wgs
- target-capture
- metabarcoding
- rad-seq
- sanger
validations:
required: false
- type: input
id: notes
attributes:
label: Relevance note
description: Optional one-line note on why it's relevant.
validations:
required: false
148 changes: 148 additions & 0 deletions .github/ISSUE_TEMPLATE/suggest-method.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
name: Suggest a method
description: Propose a working museomics method to add to the Methods page.
title: "[Method] "
labels: ["type: method-suggestion"]
# NOTE: the dropdown options below mirror _data/tags.yml. GitHub Issue Forms
# cannot read that file, so if you add a vocabulary term there, add it here too.
body:
- type: markdown
attributes:
value: |
Thanks for contributing! Fill in what you can. A maintainer will review
and add it to the site. Fields marked * are required.
- type: input
id: title
attributes:
label: Title*
placeholder: e.g. Genome skimming from a 40-year-old pinned beetle
validations:
required: true
- type: input
id: summary
attributes:
label: One-line summary*
description: Shown on the collapsed card.
validations:
required: true
- type: dropdown
id: kingdom
attributes:
label: Kingdom*
multiple: true
options: [Animalia, Plantae, Fungi, Chromista, Bacteria, Archaea]
validations:
required: true
- type: dropdown
id: phylum
attributes:
label: Phylum / Division*
multiple: true
options:
- Chordata
- Arthropoda
- Mollusca
- Annelida
- Echinodermata
- Cnidaria
- Nematoda
- Platyhelminthes
- Porifera
- Tracheophyta
- Bryophyta
- Ascomycota
- Basidiomycota
- "Other (describe in detail box)"
validations:
required: true
- type: dropdown
id: preservation
attributes:
label: Preservation type*
multiple: true
options:
- dry-pinned
- study-skin
- herbarium-pressed
- fluid-ethanol
- fluid-formalin
- frozen
- dried-tissue
- bone-subfossil
- "Other (describe in detail box)"
validations:
required: true
- type: dropdown
id: extraction
attributes:
label: Extraction method*
multiple: true
options:
- silica-column
- magnetic-bead
- phenol-chloroform
- ctab
- chelex
- "Other (describe in detail box)"
validations:
required: true
- type: dropdown
id: library
attributes:
label: Library prep method*
multiple: true
options:
- tagmentation
- ligation
- single-stranded
- pcr-free
- hybridization-capture
- "Other (describe in detail box)"
validations:
required: true
- type: dropdown
id: sequencing
attributes:
label: Sequencing / downstream method*
multiple: true
options:
- genome-skimming
- shotgun-wgs
- target-capture
- metabarcoding
- rad-seq
- sanger
- "Other (describe in detail box)"
validations:
required: true
- type: dropdown
id: outcome
attributes:
label: Outcome
description: How well did it work?
options:
- worked-well
- worked-with-caveats
- exploratory
validations:
required: false
- type: input
id: doi
attributes:
label: DOI or link to paper
description: Optional — leave blank for unpublished / in-house methods.
placeholder: 10.xxxx/xxxxx
validations:
required: false
- type: textarea
id: detail
attributes:
label: Detail / notes
description: Protocol notes, yields, caveats. Becomes the expanded card body. Markdown OK.
validations:
required: false
- type: input
id: contributor
attributes:
label: Your name (for attribution)
validations:
required: false
24 changes: 24 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: CI

on:
pull_request:
branches: [main]

permissions:
contents: read

jobs:
validate-and-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- name: Validate entries against controlled vocabulary
run: ruby scripts/validate_entries.rb
- name: Build with Jekyll (catches broken front-matter / Liquid)
run: bundle exec jekyll build
env:
JEKYLL_ENV: production
47 changes: 47 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Build & deploy to GitHub Pages

on:
push:
branches: [main]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

# Allow one concurrent deployment; don't cancel an in-progress production deploy.
concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- name: Validate entries against controlled vocabulary
run: ruby scripts/validate_entries.rb
- id: pages
uses: actions/configure-pages@v5
- name: Build with Jekyll
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: production
- uses: actions/upload-pages-artifact@v3
with:
path: _site

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
_site/
.jekyll-cache/
.jekyll-metadata
vendor/
.sass-cache/
85 changes: 85 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Contributing to museomics/methods

Two ways to contribute: a **GitHub issue form** (no coding), or a **pull
request** (add a Markdown file directly). Either way, a maintainer reviews
before it goes live.

## Option A — Issue form (easiest)

- [Suggest a method](https://github.com/museomics/methods/issues/new?template=suggest-method.yml)
- [Suggest a bibliography entry](https://github.com/museomics/methods/issues/new?template=suggest-bibliography.yml)

A maintainer transcribes accepted issues into entry files.

## Option B — Pull request

Add one Markdown file per entry, then open a PR. CI validates it automatically.

### Method entry — `_methods/<short-slug>.md`

```yaml
---
title: "Genome skimming from a 40-year-old pinned beetle"
kingdom: [Animalia] # one or more, from _data/tags.yml
phylum: [Arthropoda] # "Phylum / Division", from _data/tags.yml
preservation: [dry-pinned]
extraction: [silica-column]
library: [tagmentation]
sequencing: [genome-skimming]
outcome: worked-well # optional: worked-well | worked-with-caveats | exploratory
contributor: "Your Name"
date: 2026-07-19
summary: "One-line outcome, shown on the collapsed card."
doi: "10.xxxx/xxxxx" # optional — omit for unpublished methods
---

Full detail in Markdown. Renders when the card is expanded: protocol notes,
yields, caveats, links to SOPs in the bibliography, etc.
```

Required: `title`, `kingdom`, `phylum`, `preservation`, `extraction`,
`library`, `sequencing`, `summary`, `contributor`, `date`.
Optional: `outcome`, `doi`, body.

### Bibliography entry — `_bibliography/<short-slug>.md`

```yaml
---
type: paper # paper | sop
title: "..."
authors_or_institution: "..."
year_or_date: 2025
link: "https://doi.org/10.xxxx/xxxxx"
tags: [extraction, silica-column] # optional, from _data/tags.yml
notes: "Optional one-line relevance note"
---
```

Required: `type`, `title`, `authors_or_institution`, `year_or_date`, `link`.

## The controlled vocabulary

All tag values live in [`_data/tags.yml`](_data/tags.yml) — the single source of
truth. CI (`scripts/validate_entries.rb`) fails the build if an entry uses a
value that isn't listed there, which keeps filtering consistent and stops typos
fragmenting the taxonomy.

**Need a new tag value?** Add it to `_data/tags.yml` in the same PR. If that
value is also offered as a dropdown in an issue form, add it to the matching
list in `.github/ISSUE_TEMPLATE/*.yml` too — the forms can't read `tags.yml`
automatically. The maintainer curates this vocabulary.

## Local preview

```sh
bundle install
bundle exec jekyll serve
# then open http://localhost:4000/methods/
```

Run `ruby scripts/validate_entries.rb` before pushing to catch schema errors.

## Licence

Entry content is contributed under [CC BY 4.0](LICENSE-CONTENT.md). Site code is
MIT ([LICENSE](LICENSE)).
5 changes: 5 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
source "https://rubygems.org"
gem "jekyll", "~> 4.3"
group :jekyll_plugins do
gem "jekyll-sitemap"
end
Loading
Loading