{
  "_id": "69e24c3bc5259ad4cd946bb3",
  "Package": "goodpractice",
  "Title": "Advice on R Package Building",
  "Version": "1.0.5.9000",
  "Authors@R": "c(\nperson(given = \"Mark\",\nfamily = \"Padgham\",\nrole = c(\"aut\", \"cre\"),\nemail = \"mark@ropensci.org\",\ncomment = c(ORCID = \"0000-0003-2172-5265\")),\nperson(given = \"Ascent Digital Services UK Limited\",\nrole = \"cph\",\ncomment = c(GitHub = \"MangoTheCat\")),\nperson(given = \"Karina\",\nfamily = \"Marks\",\nrole = \"aut\",\nemail = \"karina.marks@ascent.io\",\ncomment = c(GitHub = \"KarinaMarks\")),\nperson(given = \"Daniel\",\nfamily = \"de Bortoli\",\nrole = c(\"aut\"),\ncomment = c(GitHub = \"ddbortoli\")),\nperson(given = \"Gabor\",\nfamily = \"Csardi\",\nrole = \"aut\",\nemail = \"csardi.gabor@gmail.com\"),\nperson(given = \"Hannah\",\nfamily = \"Frick\",\nrole = \"aut\",\nemail = \"hannah.frick@gmail.com\"),\nperson(given = \"Owen\",\nfamily = \"Jones\",\nrole = \"aut\",\nemail = \"owenjonesuob@gmail.com\",\ncomment = c(GitHub = \"owenjonesuob\")),\nperson(given = \"Hannah\",\nfamily = \"Alexander\",\nrole = \"aut\",\nemail = \"halexander@mango-solutions.com\"),\nperson(given = \"Ana\",\nfamily = \"Simmons\",\nrole = c(\"ctb\"),\nemail = \"ana.simmons@ascent.io\",\ncomment = c(GitHub = \"anasimmons\")),\nperson(given = \"Fabian\",\nfamily = \"Scheipl\",\nrole = \"ctb\",\ncomment = c(GitHub = \"fabian-s\")),\nperson(given = \"Athanasia Mo\",\nfamily = \"Mowinckel\",\nemail = \"a.m.mowinckel@psykologi.uio.no\",\nrole = c(\"aut\"),\ncomment = c(\nGitHub = \"drmowinckels\",\nORCID = \"0000-0002-5756-0223\")\n))",
  "Description": "Give advice about good practices when building R packages.\nAdvice includes functions and syntax to avoid, package\nstructure, code complexity, code formatting, etc.",
  "License": "MIT + file LICENSE",
  "URL": "https://docs.ropensci.org/goodpractice/,\nhttps://github.com/ropensci-review-tools/goodpractice",
  "BugReports": "https://github.com/ropensci-review-tools/goodpractice/issues",
  "VignetteBuilder": "knitr",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "Config/testthat/edition": "3",
  "Config/ropensci/maintainer": "staff",
  "Collate": "'api.R' 'customization.R' 'lists.R' 'chk_avoided_packages.R'\n'treesitter.R' 'chk_code_structure.R' 'chk_covr.R'\n'chk_cyclocomp.R' 'chk_description.R' 'chk_generic.R'\n'chk_lintr.R' 'chk_namespace.R' 'chk_rcmdcheck.R' 'chk_rd.R'\n'chk_revdep.R' 'chk_roxygen2.R' 'chk_spelling.R'\n'chk_tidyverse.R' 'chk_urlchecker.R' 'chk_vignette.R' 'gp.R'\n'package.R' 'prep_utils.R' 'prep_covr.R' 'prep_cyclocomp.R'\n'prep_description.R' 'prep_lintr.R' 'prep_namespace.R'\n'prep_rcmdcheck.R' 'prep_rd.R' 'prep_revdep.R'\n'prep_roxygen2.R' 'prep_source.R' 'prep_spelling.R'\n'prep_tidyverse.R' 'prep_urlchecker.R' 'prep_vignette.R'\n'print.R' 'rstudio_markers.R' 'utils.R'",
  "Config/pak/sysreqs": "cmake git make libicu-dev libuv1-dev libxml2-dev\nlibssl-dev",
  "Repository": "https://ropensci.r-universe.dev",
  "Date/Publication": "2026-04-17 14:22:27 UTC",
  "RemoteUrl": "https://github.com/ropensci-review-tools/goodpractice",
  "RemoteRef": "main",
  "RemoteSha": "a3cc275116131184f1e216aacc2fb4225981e38e",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-04-17 14:56:20 UTC",
    "User": "root"
  },
  "Author": "Mark Padgham [aut, cre] (ORCID:\n<https://orcid.org/0000-0003-2172-5265>),\nAscent Digital Services UK Limited [cph] (GitHub: MangoTheCat),\nKarina Marks [aut] (GitHub: KarinaMarks),\nDaniel de Bortoli [aut] (GitHub: ddbortoli),\nGabor Csardi [aut],\nHannah Frick [aut],\nOwen Jones [aut] (GitHub: owenjonesuob),\nHannah Alexander [aut],\nAna Simmons [ctb] (GitHub: anasimmons),\nFabian Scheipl [ctb] (GitHub: fabian-s),\nAthanasia Mo Mowinckel [aut] (GitHub: drmowinckels, ORCID:\n<https://orcid.org/0000-0002-5756-0223>)",
  "Maintainer": "Mark Padgham <mark@ropensci.org>",
  "MD5sum": "8bbac3168629d5617a1a2330de1c89c7",
  "_user": "ropensci",
  "_type": "src",
  "_file": "goodpractice_1.0.5.9000.tar.gz",
  "_fileid": "92f6481e2090ba739ba8512ad0be05f60871e98d8a70b6bc7c35991802febac3",
  "_filesize": 288710,
  "_sha256": "92f6481e2090ba739ba8512ad0be05f60871e98d8a70b6bc7c35991802febac3",
  "_created": "2026-04-17T14:56:20.000Z",
  "_published": "2026-04-17T15:05:31.674Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 71846088684,
      "time": 288,
      "config": "linux-devel-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6498646683"
    },
    {
      "job": 71846088663,
      "time": 251,
      "config": "linux-release-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6498633227"
    },
    {
      "job": 71846088679,
      "time": 189,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6498611574"
    },
    {
      "job": 71846088660,
      "time": 195,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6498613640"
    },
    {
      "job": 71845541245,
      "time": 218,
      "config": "pkgdown",
      "r": "4.5.2",
      "check": "OK",
      "artifact": "6498552477"
    },
    {
      "job": 71845541253,
      "time": 202,
      "config": "source",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6498546347"
    },
    {
      "job": 71846088658,
      "time": 122,
      "config": "wasm-release",
      "r": "4.5.1",
      "check": "OK",
      "artifact": "6498589553"
    },
    {
      "job": 71846088656,
      "time": 303,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6498651391"
    },
    {
      "job": 71846088680,
      "time": 508,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6498721902"
    },
    {
      "job": 71846088695,
      "time": 273,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6498641253"
    }
  ],
  "_buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/ropensci-review-tools/goodpractice",
  "_commit": {
    "id": "a3cc275116131184f1e216aacc2fb4225981e38e",
    "author": "Athanasia Monika Mowinckel <14014329+drmowinckels@users.noreply.github.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Skip implicit_assignment_linter in test files (#279)\n\nThe testthat pattern `expect_warning(tmp <- f())` is a legitimate way\nto capture output while checking for warnings/messages/errors. Filter\nimplicit_assignment_linter hits to R/ only, matching the approach used\nby library_require_linter.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
    "time": 1776435747
  },
  "_maintainer": {
    "name": "Mark Padgham",
    "email": "mark@ropensci.org",
    "login": "mpadge",
    "mastodon": "@mpadge@nerdculture.de",
    "uuid": 6697851,
    "orcid": "0000-0003-2172-5265"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "covr",
      "role": "Imports"
    },
    {
      "package": "curl",
      "role": "Imports"
    },
    {
      "package": "cyclocomp",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "desc",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "lintr",
      "version": ">= 3.0.0",
      "role": "Imports"
    },
    {
      "package": "praise",
      "role": "Imports"
    },
    {
      "package": "rcmdcheck",
      "role": "Imports"
    },
    {
      "package": "roxygen2",
      "role": "Imports"
    },
    {
      "package": "rstudioapi",
      "role": "Imports"
    },
    {
      "package": "spelling",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "treesitter",
      "role": "Imports"
    },
    {
      "package": "treesitter.r",
      "role": "Imports"
    },
    {
      "package": "urlchecker",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "whoami",
      "role": "Imports"
    },
    {
      "package": "withr",
      "role": "Imports"
    },
    {
      "package": "future",
      "role": "Suggests"
    },
    {
      "package": "future.apply",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "ropensci-review-tools",
  "_selfowned": true,
  "_usedby": 4,
  "_updates": [
    {
      "week": "2025-26",
      "n": 2
    },
    {
      "week": "2025-27",
      "n": 1
    },
    {
      "week": "2025-28",
      "n": 1
    },
    {
      "week": "2026-07",
      "n": 1
    },
    {
      "week": "2026-08",
      "n": 9
    },
    {
      "week": "2026-09",
      "n": 8
    },
    {
      "week": "2026-12",
      "n": 9
    },
    {
      "week": "2026-13",
      "n": 14
    },
    {
      "week": "2026-14",
      "n": 3
    },
    {
      "week": "2026-15",
      "n": 16
    },
    {
      "week": "2026-16",
      "n": 7
    }
  ],
  "_tags": [],
  "_stars": 475,
  "_contributors": [
    {
      "user": "drmowinckels",
      "count": 156,
      "uuid": 14014329
    },
    {
      "user": "mpadge",
      "count": 129,
      "uuid": 6697851
    },
    {
      "user": "gaborcsardi",
      "count": 88,
      "uuid": 660288
    },
    {
      "user": "hfrick",
      "count": 78,
      "uuid": 12950918
    },
    {
      "user": "owenjonesuob",
      "count": 41,
      "uuid": 21007837
    },
    {
      "user": "ddbortoli",
      "count": 18,
      "uuid": 25244497
    },
    {
      "user": "karinamarks",
      "count": 9,
      "uuid": 20110563
    },
    {
      "user": "olivroy",
      "count": 8,
      "uuid": 52606734
    },
    {
      "user": "dougmet",
      "count": 6,
      "uuid": 5878305
    },
    {
      "user": "maelle",
      "count": 5,
      "uuid": 8360597
    },
    {
      "user": "fabian-s",
      "count": 4,
      "uuid": 998541
    },
    {
      "user": "noamross",
      "count": 3,
      "uuid": 571752
    },
    {
      "user": "michaelchirico",
      "count": 3,
      "uuid": 7606389
    },
    {
      "user": "fkohrt",
      "count": 2,
      "uuid": 12914806
    },
    {
      "user": "anasimmons",
      "count": 1,
      "uuid": 95026699
    },
    {
      "user": "andrewl776",
      "count": 1,
      "uuid": 64008720
    },
    {
      "user": "halexander23",
      "count": 1,
      "uuid": 70958859
    },
    {
      "user": "jsta",
      "count": 1,
      "uuid": 7844578
    },
    {
      "user": "link-ny",
      "count": 1,
      "uuid": 4392950
    },
    {
      "user": "nfultz",
      "count": 1,
      "uuid": 418638
    },
    {
      "user": "russhyde",
      "count": 1,
      "uuid": 7734886
    },
    {
      "user": "marberts",
      "count": 1,
      "uuid": 62676717
    }
  ],
  "_userbio": {
    "uuid": 1200269,
    "type": "organization",
    "name": "rOpenSci",
    "description": "Tools and R Packages for Open Science"
  },
  "_downloads": {
    "count": 1315,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/goodpractice"
  },
  "_devurl": "https://github.com/ropensci-review-tools/goodpractice",
  "_pkgdown": "https://docs.ropensci.org/goodpractice/",
  "_searchresults": 100,
  "_metadata": {
    "ropensci_category": "scalereprod"
  },
  "_rbuild": "4.5.3",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/goodpractice.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/ropensci-review-tools/goodpractice",
  "_realowner": "ropensci",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.2",
      "date": "2018-05-02"
    },
    {
      "version": "1.0.3",
      "date": "2022-07-13"
    },
    {
      "version": "1.0.4",
      "date": "2022-08-30"
    },
    {
      "version": "1.0.5",
      "date": "2024-06-04"
    }
  ],
  "_exports": [
    "all_check_groups",
    "all_checks",
    "checks",
    "checks_by_group",
    "default_checks",
    "describe_check",
    "export_json",
    "failed_checks",
    "failed_positions",
    "goodpractice",
    "gp",
    "make_check",
    "make_prep",
    "results",
    "tidyverse_checks"
  ],
  "_help": [
    {
      "page": "goodpractice-package",
      "title": "goodpractice: Advice on R Package Building",
      "topics": [
        "goodpractice-package"
      ]
    },
    {
      "page": "all_check_groups",
      "title": "List available check group names",
      "topics": [
        "all_check_groups"
      ]
    },
    {
      "page": "all_checks",
      "title": "List the names of all checks",
      "topics": [
        "all_checks"
      ]
    },
    {
      "page": "checks",
      "title": "List all checks performed",
      "concept": [
        "API"
      ],
      "topics": [
        "checks"
      ]
    },
    {
      "page": "checks_by_group",
      "title": "Select checks by check group",
      "topics": [
        "checks_by_group"
      ]
    },
    {
      "page": "customization",
      "title": "Defining custom preparations and checks",
      "topics": [
        "customization",
        "make_check",
        "make_prep"
      ]
    },
    {
      "page": "default_checks",
      "title": "List the names of default checks (excludes optional check sets)",
      "topics": [
        "default_checks"
      ]
    },
    {
      "page": "describe_check",
      "title": "Describe one or more checks",
      "topics": [
        "describe_check"
      ]
    },
    {
      "page": "export_json",
      "title": "Export failed checks to JSON",
      "topics": [
        "export_json"
      ]
    },
    {
      "page": "failed_checks",
      "title": "Names of the failed checks",
      "concept": [
        "API"
      ],
      "topics": [
        "failed_checks"
      ]
    },
    {
      "page": "failed_positions",
      "title": "Positions of check failures in the source code",
      "topics": [
        "failed_positions"
      ]
    },
    {
      "page": "gp",
      "title": "Run good practice checks",
      "topics": [
        "goodpractice",
        "gp"
      ]
    },
    {
      "page": "print.goodPractice",
      "title": "Print goodpractice results",
      "topics": [
        "print.goodPractice"
      ]
    },
    {
      "page": "results",
      "title": "Return all check results in a data frame",
      "concept": [
        "API"
      ],
      "topics": [
        "results"
      ]
    },
    {
      "page": "tidyverse_checks",
      "title": "List the names of tidyverse style checks",
      "topics": [
        "tidyverse_checks"
      ]
    }
  ],
  "_pkglogo": "https://github.com/ropensci-review-tools/goodpractice/raw/main/man/figures/logo.png",
  "_readme": "https://github.com/ropensci-review-tools/goodpractice/raw/main/README.md",
  "_rundeps": [
    "askpass",
    "backports",
    "brew",
    "callr",
    "cli",
    "codetools",
    "commonmark",
    "covr",
    "cpp11",
    "crayon",
    "curl",
    "cyclocomp",
    "desc",
    "digest",
    "evaluate",
    "fs",
    "glue",
    "highr",
    "httr",
    "hunspell",
    "jsonlite",
    "knitr",
    "lifecycle",
    "lintr",
    "magrittr",
    "mime",
    "openssl",
    "pkgbuild",
    "pkgload",
    "praise",
    "prettyunits",
    "processx",
    "ps",
    "purrr",
    "R6",
    "rcmdcheck",
    "Rcpp",
    "remotes",
    "rex",
    "rlang",
    "roxygen2",
    "rprojroot",
    "rstudioapi",
    "sessioninfo",
    "spelling",
    "stringi",
    "stringr",
    "sys",
    "treesitter",
    "treesitter.r",
    "urlchecker",
    "vctrs",
    "whoami",
    "withr",
    "xfun",
    "xml2",
    "xmlparsedata",
    "xopen",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "custom_checks.Rmd",
      "filename": "custom_checks.html",
      "title": "Custom Checks",
      "author": "Hannah Frick",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What's happening inside of gp()?",
        "Writing custom checks",
        "Checks without corresponding preparation steps",
        "Including a preparation step"
      ],
      "created": "2018-04-27 13:09:58",
      "modified": "2026-03-01 16:11:58",
      "commits": 4
    },
    {
      "source": "goodpractice.Rmd",
      "filename": "goodpractice.html",
      "title": "goodpractice",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why goodpractice?",
        "Quick start",
        "What gp() actually does",
        "Choosing what to run",
        "Check groups",
        "Excluding check groups",
        "Excluding files",
        "Parallel preparation",
        "Tidyverse style checks",
        "Working with results",
        "Custom checks"
      ],
      "created": "2018-04-24 14:36:22",
      "modified": "2026-03-26 18:29:15",
      "commits": 11
    }
  ],
  "_score": 11.238412588390412,
  "_indexed": true,
  "_nocasepkg": "goodpractice",
  "_universes": [
    "ropensci",
    "mpadge",
    "ropensci-review-tools"
  ],
  "_binaries": [
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.0.5.9000",
      "date": "2026-04-17T14:58:44.000Z",
      "distro": "noble",
      "commit": "a3cc275116131184f1e216aacc2fb4225981e38e",
      "fileid": "df576606642b66b14001cc71b2b4e0a339ef16394701db4d3862f6c086091d8a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.5.9000",
      "date": "2026-04-17T14:57:57.000Z",
      "commit": "a3cc275116131184f1e216aacc2fb4225981e38e",
      "fileid": "ca8ef09596927ba1a0035cd0aec9bf6337ef01e6e246daba8a87336861b8b2e5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.0.5.9000",
      "date": "2026-04-17T14:57:55.000Z",
      "commit": "a3cc275116131184f1e216aacc2fb4225981e38e",
      "fileid": "f6aded7ea87e8ca56317bf482753f9bb983cab5025bae5b74686b555dbe926af",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996"
    },
    {
      "r": "4.5.1",
      "os": "wasm",
      "version": "1.0.5.9000",
      "date": "2026-04-17T14:58:41.000Z",
      "commit": "a3cc275116131184f1e216aacc2fb4225981e38e",
      "fileid": "c72c0ad27572b427ae73d3c81527ea6a8fa571359e6c75f4bbc97f7d50e4db5a",
      "status": "success",
      "buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.5.9000",
      "date": "2026-04-17T14:58:07.000Z",
      "commit": "a3cc275116131184f1e216aacc2fb4225981e38e",
      "fileid": "3017eb36452399ec414401de10439c33241226712dd6fc4dd7f13d7b060f5d65",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.5.9000",
      "date": "2026-04-17T14:59:19.000Z",
      "commit": "a3cc275116131184f1e216aacc2fb4225981e38e",
      "fileid": "082df8761d1ac6b7d6f2adfd327ba123f3babeae7c83b93d412a4c007fa9e26a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.0.5.9000",
      "date": "2026-04-17T14:57:53.000Z",
      "commit": "a3cc275116131184f1e216aacc2fb4225981e38e",
      "fileid": "6929be7ce05714d423dacbf10dae4fa7008292714609a5228cfc2f16058c4f99",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ropensci/actions/runs/24571476996"
    }
  ]
}