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
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
},
"metadata": {
"description": "The openwashdata package skills. Review: review-package, review-issue, create-next-issue, review-status, review-complete, review-upgrade, create-release, add-doi. Building a package: washr.",
"version": "1.7.0"
"version": "1.8.0"
},
"plugins": [
{
"name": "pkgreview",
"description": "Review workflow for R data packages in registered organizations: issue-per-area review on dev, release and DOI skills, standard upgrades. The washr skill builds a data package with the washr R package. The skills read shared references from skills/pkgreview-core.",
"version": "1.7.0",
"version": "1.8.0",
"source": "./",
"strict": false,
"skills": [
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "pkgreview",
"version": "1.7.0",
"version": "1.8.0",
"description": "Review workflow for R data packages in registered organizations (openwashdata, Global Health Engineering): issue-per-area review on dev, release and DOI skills, standard upgrades. The washr skill builds a data package with the washr R package."
}
10 changes: 8 additions & 2 deletions .github/workflows/gate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,14 @@ jobs:
# The check script takes its metadata, docs, and tests lines from
# washr::check_publication_readiness() (openwashdata/pkgreview#87),
# so washr at or above skills/pkgreview-core/WASHR_FLOOR is needed.
- name: Install washr from CRAN
run: Rscript -e 'install.packages("washr")'
# CRAN serves a washr below the floor until 1.2.1 is released there
# (1.2.1 is a GitHub-only release, carried by the next CRAN
# submission), so washr comes from the dev branch on GitHub. Back to
# install.packages("washr") once CRAN serves the floor.
- name: Install washr from GitHub
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
run: Rscript -e 'install.packages("pak"); pak::pak("openwashdata/washr@dev")'
- name: Fixture gate against the expected reports
run: bash fixtures/run_gate.sh
- name: Check-script case suite
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/washr-drift.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# washr API drift check (openwashdata/pkgreview#77): installs CRAN washr and
# washr API drift check (openwashdata/pkgreview#77): installs washr and
# verifies every washr:: call the skills execute or instruct still exports, and
# reports the CRAN version against skills/pkgreview-core/WASHR_FLOOR.
# reports the installed version against skills/pkgreview-core/WASHR_FLOOR.
# CRAN serves a washr below the floor until 1.2.1 is released there (1.2.1 is
# a GitHub-only release, carried by the next CRAN submission), so washr comes
# from the dev branch on GitHub. Back to install.packages("washr") once CRAN
# serves the floor.
name: washr-drift

on:
Expand All @@ -18,7 +22,9 @@ jobs:
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
- name: Install washr from CRAN
run: Rscript -e 'install.packages("washr")'
- name: Install washr from GitHub
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
run: Rscript -e 'install.packages("pak"); pak::pak("openwashdata/washr@dev")'
- name: Drift check
run: Rscript scripts/washr_drift.R
12 changes: 12 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

One section per release. Skill, script, template, fixture, and process changes are recorded here; checklist wording changes are recorded in `docs/checklist-reconciliation.md` (repo rule 3), one row per item. Releases before 1.5.0 are described by their reconciliation sections and tag messages.

# pkgreview 1.8.0

The release that pairs with washr 1.2.1 (openwashdata/washr#145): every package site names washr and the organization it belongs to. No checklist item changed.

- Template and standards file: the standard `_pkgdown.yml` gains the navbar link to the organization's website, the community block in the sidebar, the footer with the publisher sentence and the washr version, and the Open Graph image that `washr::use_brand()` writes; the standards file explains the blocks and names `washr::update_website()` for a file written by an older washr (#95).
- Organization profiles: four new keys, `home_url`, `catalog_url`, `community_text` and `publisher_text`, with the openwashdata values; the Global-Health-Engineering values wait for the first GHE review, as the funding text does (#50, #95).
- Check script: two advisory lines in the docs area from washr, the publisher sentence in the footer (verbatim, as the funding text) and the washr version the footer names against `Config/washr/version` in DESCRIPTION; NOT RUN for a profile without a publisher and for a package whose DESCRIPTION records no washr version (#95).
- The floor is 1.2.1 throughout (`WASHR_FLOOR`, both org profiles, the skill preflights, the README table); washr 1.2.1 is a GitHub-only release that the next CRAN submission of washr carries, so the gate and drift workflows install washr from the dev branch on GitHub until CRAN serves the floor, as they did before 1.2.0 (#95).
- Fixtures: `pkgreviewtest` carries the three new blocks and records the washr version, so the expected report gains two PASS lines and the 19 FAIL + 1 FLAG mapping to D1 to D17 is unchanged; the cases `footer-missing` and `footer-stale` cover the failing lines (#95).
- `/washr`: the pkgdown site reference describes the new blocks, the four fields and `update_website()` (#95).
- Check script and data checklist: the dictionary schema item accepts named columns after the five washr columns, as `washr::update_dictionary()` keeps them (openwashdata/washr#151, reconciliation row under v1.8.0); a new case covers an unnamed trailing column.

# pkgreview 1.7.0

The release that pairs with washr 1.2.0. The check script takes its metadata, docs, and tests lines from washr, the plugin gains the washr skill, and the review skills gain the unattended mode and the release practice items. No checklist item changed.
Expand Down
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,12 @@ Each review addresses 4 key areas:
## Requirements

- R and RStudio
- R packages on the reviewer's machine: `washr` 1.2.0 or newer (keeps
- R packages on the reviewer's machine: `washr` 1.2.1 or newer (keeps
DESCRIPTION, CITATION.cff, and inst/CITATION in sync, owns the site
metadata, and decides the metadata, docs, and tests lines of the check
script; packages in the registered orgs are scaffolded with it), plus
script; packages in the registered orgs are scaffolded with it; until
CRAN serves 1.2.1, install it from GitHub with
`pak::pak("openwashdata/washr@v1.2.1")`), plus
`desc`, `devtools`, `pkgdown`, and `usethis` for checks, site previews,
and releases
- GitHub CLI (`gh`)
Expand All @@ -99,7 +101,8 @@ and checked weekly by CI):
|-----------|-------|
| 1.0.0 to 1.4.0 | 1.0.1, with the caveats the skills carried |
| 1.5.0 to 1.6.1 | >= 1.1.0 |
| 1.7.0 and later | >= 1.2.0 (the check script calls `washr::check_publication_readiness()`) |
| 1.7.0 | >= 1.2.0 (the check script calls `washr::check_publication_readiness()`) |
| 1.8.0 and later | >= 1.2.1 (the check script prints the footer items of washr 1.2.1) |

## Repository Structure

Expand Down
13 changes: 13 additions & 0 deletions docs/checklist-reconciliation.md
Original file line number Diff line number Diff line change
Expand Up @@ -550,3 +550,16 @@ profile, and the deprecated `--analytics` path, so the D1 to D17 mapping
`fixtures/make_history_fixture.sh` writes an empty `NAMESPACE` next to
DESCRIPTION, which changes no line. The gate workflow installs washr
from CRAN before it runs the script.

## Dictionary schema: named columns after the five (openwashdata/washr#151, v1.8.0)

Date: 2026-11-01. washr 1.3.0 brings older dictionary layouts to the five
washr columns and keeps every further named column a package added, such
as `unit` or `allowed_values` (#39); its readiness item `dictionary_schema`
accepts those columns after the five. The check script and the data
checklist follow, so a package with such columns is not flagged for them.
The report line keeps its text.

| Item | Decision | Before | After |
|------|----------|--------|-------|
| data.md: dictionary schema | reword | exactly the five washr columns in order | the five washr columns first, in order, further named columns allowed after them; unnamed columns still fail |
2 changes: 2 additions & 0 deletions fixtures/SCORECARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ Note on the v1.6.1 line (issue #86): the check script reports invalid UTF-8 stri

Note on the v1.7.0 swap (issues #66 and #87): the metadata, docs, and tests lines of the check script are no longer computed in the script. They are the rows of `washr::check_publication_readiness()` (washr 1.2.0), printed under the same line texts and tiers through the `WASHR_LINES` table of the script. The defects those lines catch (D1 and D2 in metadata, D6 and D7 in docs, D5 in tests) keep their mapping, and the count is unchanged: both expected reports under `fixtures/expected/` and the nine cases under `fixtures/cases/` are byte identical before and after the swap. The data lines, the PII FLAG, and the history FLAG (D18) are still the script's own. The history fixture gained an empty `NAMESPACE`, because washr reads a package root.

Note on the v1.8.0 footer lines (issue #95, washr 1.2.1): the check script prints two more advisory docs lines from washr, the publisher sentence in the footer and the washr version the footer names against `Config/washr/version` in DESCRIPTION. `pkgreviewtest` carries the navbar, community and footer blocks of the washr 1.2.1 template and records the version, so its expected report gains two PASS lines; the 19 FAIL + 1 FLAG mapping to D1 to D17 is unchanged, and D7 keeps its two planted deviations. The failing lines are covered by the cases `fixtures/cases/footer-missing/` and `fixtures/cases/footer-stale/`.

## How to use this scorecard

Run the full review workflow against `fixtures/pkgreviewtest` after every significant change to the checklists in `skills/pkgreview-core/references/checklists/` or to the review skills and commands.
Expand Down
2 changes: 1 addition & 1 deletion fixtures/cases/dictionary-schema/expected.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
- [FAIL] (advisory) Dictionary schema: five washr columns, UTF-8 without BOM, single-class variable_type: UTF-8 byte order mark at the start of the file; columns are [directory, file_name, variable_name, variable_type, description, extra], expected [directory, file_name, variable_name, variable_type, description]; variable_type is not a single class name for: id
- [FAIL] (advisory) Dictionary schema: five washr columns, UTF-8 without BOM, single-class variable_type: UTF-8 byte order mark at the start of the file; variable_type is not a single class name for: id
1 change: 1 addition & 0 deletions fixtures/cases/dictionary-unnamed-column/expected.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [FAIL] (advisory) Dictionary schema: five washr columns, UTF-8 without BOM, single-class variable_type: unnamed columns after the five washr columns
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
directory,file_name,variable_name,variable_type,description,
data,pkgreviewtest.rda,id,character,Water point identifier,
data,pkgreviewtest.rda,region,character,Region where the water point is located,
data,pkgreviewtest.rda,waterSource,character,Type of water source,
data,pkgreviewtest.rda,status,character,,
data,pkgreviewtest.rda,installation_date,character,Date the water point was installed,
data,pkgreviewtest.rda,users_count,integer,TODO,
data,pkgreviewtest.rda,owner_phone,character,Phone number of the water point owner,
data,pkgreviewtest.rda,women_users,integer,Number of women among the water point users,
data,pkgreviewtest.rda,latitude,numeric,Latitude of the water point in decimal degrees,
data,pkgreviewtest.rda,longitude,numeric,Longitude of the water point in decimal degrees,
2 changes: 2 additions & 0 deletions fixtures/cases/footer-missing/expected.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- [FAIL] (advisory) _pkgdown.yml footer carries the publisher sentence from the org profile: the profile's publisher text was not found verbatim in the footer
- [FAIL] (advisory) _pkgdown.yml footer names the washr version recorded in DESCRIPTION: the footer has no washr line
42 changes: 42 additions & 0 deletions fixtures/cases/footer-missing/overlay/_pkgdown.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
url: https://github.com/openwashdata/pkgreviewtest
template:
bootstrap: 5

navbar:
structure:
right: [search, home, github, lightswitch]
components:
home:
text: openwashdata.org
href: https://openwashdata.org
aria-label: openwashdata website

home:
links:
- icon: github
text: GitHub repository
href: https://github.com/openwashdata/pkgreviewtest
sidebar:
structure: [links, citation, authors, dev, custom, community]
components:
custom:
title: Funding
text: This project was funded by the [Open Research Data Program of the ETH Board](https://ethrat.ch/en/eth-domain/open-research-data/).
community:
title: openwashdata
text: This package is part of [openwashdata](https://openwashdata.org). Browse the [data catalogue](https://openwashdata.org/pages/gallery/data/) or get the [newsletter](https://openwashdata.org/pages/newsletter/).

authors:
footer:
roles: [cre, fnd]
text: "Crafted by"
sidebar:
roles: [cre, aut, ctb]
before: "So *who* does the work?"
after: "Thanks all!"

reference:
- title: "Data"
desc: "Access the pkgreviewtest dataset"
contents:
- pkgreviewtest
1 change: 1 addition & 0 deletions fixtures/cases/footer-stale/expected.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [FAIL] (advisory) _pkgdown.yml footer names the washr version recorded in DESCRIPTION: footer names washr 1.0.0, DESCRIPTION records 1.2.1
50 changes: 50 additions & 0 deletions fixtures/cases/footer-stale/overlay/_pkgdown.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
url: https://github.com/openwashdata/pkgreviewtest
template:
bootstrap: 5

navbar:
structure:
right: [search, home, github, lightswitch]
components:
home:
text: openwashdata.org
href: https://openwashdata.org
aria-label: openwashdata website

home:
links:
- icon: github
text: GitHub repository
href: https://github.com/openwashdata/pkgreviewtest
sidebar:
structure: [links, citation, authors, dev, custom, community]
components:
custom:
title: Funding
text: This project was funded by the [Open Research Data Program of the ETH Board](https://ethrat.ch/en/eth-domain/open-research-data/).
community:
title: openwashdata
text: This package is part of [openwashdata](https://openwashdata.org). Browse the [data catalogue](https://openwashdata.org/pages/gallery/data/) or get the [newsletter](https://openwashdata.org/pages/newsletter/).

authors:
footer:
roles: [cre, fnd]
text: "Crafted by"
sidebar:
roles: [cre, aut, ctb]
before: "So *who* does the work?"
after: "Thanks all!"

footer:
structure:
left: [developed_by, publisher]
right: [washr, built_with]
components:
publisher: Published by [openwashdata](https://openwashdata.org), a project of [Global Health Engineering](https://ghe.ethz.ch/) at ETH Zurich.
washr: Package built with [washr](https://openwashdata.github.io/washr/) 1.0.0.

reference:
- title: "Data"
desc: "Access the pkgreviewtest dataset"
contents:
- pkgreviewtest
4 changes: 3 additions & 1 deletion fixtures/expected/pkgreviewtest.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Package: `(normalized)`
Standard: mechanical subset of the pkgreview checklists
Organization profile: --org=openwashdata (openwashdata.md)
Result: 18 PASS, 19 FAIL (4 required-tier), 1 FLAG, 3 NOT RUN
Result: 20 PASS, 19 FAIL (4 required-tier), 1 FLAG, 3 NOT RUN

## metadata

Expand Down Expand Up @@ -49,6 +49,8 @@ Result: 18 PASS, 19 FAIL (4 required-tier), 1 FLAG, 3 NOT RUN
- [FAIL] (advisory) _pkgdown.yml carries the Plausible analytics header
- [FAIL] (advisory) _pkgdown.yml url is the Pages URL from the org profile: url: https://github.com/openwashdata/pkgreviewtest (expected https://openwashdata.github.io/pkgreviewtest/)
- [PASS] (advisory) _pkgdown.yml carries the funding sidebar text from the org profile
- [PASS] (advisory) _pkgdown.yml footer carries the publisher sentence from the org profile
- [PASS] (advisory) _pkgdown.yml footer names the washr version recorded in DESCRIPTION: footer names washr 1.2.1, DESCRIPTION records 1.2.1
- [PASS] (advisory) _pkgdown.yml brand wiring matches the org profile: not wired; optional (openwashdata/brand via washr::use_brand())
- [NOT RUN] (advisory) docs/ untracked while the pkgdown workflow deploys the site: no .github/workflows/pkgdown.yaml; the required Website item covers the missing workflow

Expand Down
1 change: 1 addition & 0 deletions fixtures/pkgreviewtest/DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.2
Date: 2026-07-08
Config/washr/version: 1.2.1
X-schema.org-keywords: open data, washdata, water points, Switzerland
X-schema.org-spatialCoverage: Switzerland
X-schema.org-temporalCoverage: 2018-01-01/2022-02-05
Expand Down
22 changes: 21 additions & 1 deletion fixtures/pkgreviewtest/_pkgdown.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,29 @@ url: https://github.com/openwashdata/pkgreviewtest
template:
bootstrap: 5

navbar:
structure:
right: [search, home, github, lightswitch]
components:
home:
text: openwashdata.org
href: https://openwashdata.org
aria-label: openwashdata website

home:
links:
- icon: github
text: GitHub repository
href: https://github.com/openwashdata/pkgreviewtest
sidebar:
structure: [links, citation, authors, dev, custom]
structure: [links, citation, authors, dev, custom, community]
components:
custom:
title: Funding
text: This project was funded by the [Open Research Data Program of the ETH Board](https://ethrat.ch/en/eth-domain/open-research-data/).
community:
title: openwashdata
text: This package is part of [openwashdata](https://openwashdata.org). Browse the [data catalogue](https://openwashdata.org/pages/gallery/data/) or get the [newsletter](https://openwashdata.org/pages/newsletter/).

authors:
footer:
Expand All @@ -23,6 +35,14 @@ authors:
before: "So *who* does the work?"
after: "Thanks all!"

footer:
structure:
left: [developed_by, publisher]
right: [washr, built_with]
components:
publisher: Published by [openwashdata](https://openwashdata.org), a project of [Global Health Engineering](https://ghe.ethz.ch/) at ETH Zurich.
washr: Package built with [washr](https://openwashdata.github.io/washr/) 1.2.1.

reference:
- title: "Data"
desc: "Access the pkgreviewtest dataset"
Expand Down
2 changes: 1 addition & 1 deletion skills/add-doi/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ DOI; without it the reviewer has to work through the steps by hand. It is
also the repair path for packages released before DOI integration existed.

Prerequisites: the GitHub release exists, you are on `main`, no
uncommitted changes, R with `washr` 1.2.0 or newer installed.
uncommitted changes, R with `washr` 1.2.1 or newer installed.

## Step 1: Validate

Expand Down
2 changes: 1 addition & 1 deletion skills/create-release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ stop; nothing is written on a partial preflight.
```bash
Rscript -e 'floor <- readLines("${CLAUDE_SKILL_DIR}/../pkgreview-core/WASHR_FLOOR"); stopifnot(packageVersion("washr") >= floor)'
```
The floor is recorded once in `pkgreview-core/WASHR_FLOOR` (1.2.0 at
The floor is recorded once in `pkgreview-core/WASHR_FLOOR` (1.2.1 at
this writing). Otherwise: `install.packages("washr")`, then rerun the
skill. Do not adapt the steps below to an older washr.
- Organization profile. Derive the org from `git remote get-url origin`,
Expand Down
2 changes: 1 addition & 1 deletion skills/pkgreview-core/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.7.0
1.8.0
2 changes: 1 addition & 1 deletion skills/pkgreview-core/WASHR_FLOOR
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.0
1.2.1
Loading
Loading