Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"biostatistics",
"claude-code",
"claude-skills",
"clinical-research",
"diagnostic-accuracy",
"literature-review",
"manuscript",
"medical-ai",
"medical-research",
"meta-analysis",
"prisma",
"pubmed",
"radiology",
"systematic-review",
"reporting-guidelines",
"agent-skills",
"irb-protocol",
"physician-researcher",
"codex",
"cursor"
],
"is_fork": false,
"size_kb": 34546,
"has_wiki": true,
"homepage": "https://aperivue.com/skills",
"languages": {
"R": 92750,
"TeX": 7744,
"Jinja": 4113,
"Shell": 810095,
"Python": 2904479,
"Batchfile": 7214,
"JavaScript": 8836,
"PowerShell": 861
},
"pushed_at": "2026-07-29T13:12:04Z",
"created_at": "2026-04-06T07:00:46Z",
"owner_type": "Organization",
"updated_at": "2026-07-29T13:13:04Z",
"description": "Agent Skills for medical research — literature search, reporting-guideline & citation checks, statistics, publication figures, submission. Works with Claude Code, Codex, Cursor & GitHub Copilot. Built by a physician-researcher, tested on real publications. MIT.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Python",
"significant_languages": [
"Python",
"Shell"
]
},
"owner": {
"blog": "https://aperivue.com",
"name": "Aperivue",
"type": "Organization",
"login": "Aperivue",
"company": "Aperivue",
"location": "Seoul, South Korea",
"followers": 16,
"avatar_url": "https://avatars.githubusercontent.com/u/273019793?v=4",
"created_at": "2026-04-02T06:23:35Z",
"is_verified": null,
"public_repos": 5,
"account_age_days": 118
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v5.23.0",
"kind": "minor",
"published_at": "2026-07-25T13:30:57Z"
},
{
"tag": "v5.22.0",
"kind": "minor",
"published_at": "2026-07-21T10:55:46Z"
},
{
"tag": "v5.21.0",
"kind": "minor",
"published_at": "2026-07-13T12:13:28Z"
},
{
"tag": "v5.20.1",
"kind": "patch",
"published_at": "2026-07-11T13:42:27Z"
},
{
"tag": "v5.20.0",
"kind": "minor",
"published_at": "2026-07-11T13:00:34Z"
},
{
"tag": "v5.19.0",
"kind": "minor",
"published_at": "2026-07-11T11:52:30Z"
},
{
"tag": "v5.18.0",
"kind": "minor",
"published_at": "2026-07-07T13:58:59Z"
},
{
"tag": "v5.17.0",
"kind": "minor",
"published_at": "2026-07-04T07:08:45Z"
},
{
"tag": "v5.16.0",
"kind": "minor",
"published_at": "2026-07-04T03:57:24Z"
},
{
"tag": "v5.15.0",
"kind": "minor",
"published_at": "2026-07-03T14:09:29Z"
},
{
"tag": "v5.14.0",
"kind": "minor",
"published_at": "2026-07-02T11:36:33Z"
},
{
"tag": "v5.13.0",
"kind": "minor",
"published_at": "2026-07-02T11:12:37Z"
},
{
"tag": "v5.12.0",
"kind": "minor",
"published_at": "2026-07-02T09:46:33Z"
},
{
"tag": "v5.11.0",
"kind": "minor",
"published_at": "2026-07-02T02:04:06Z"
},
{
"tag": "v5.10.0",
"kind": "minor",
"published_at": "2026-07-01T11:03:38Z"
},
{
"tag": "v5.9.2",
"kind": "patch",
"published_at": "2026-07-01T09:59:16Z"
},
{
"tag": "v5.9.1",
"kind": "patch",
"published_at": "2026-07-01T08:27:57Z"
},
{
"tag": "v5.9.0",
"kind": "minor",
"published_at": "2026-06-30T22:22:10Z"
},
{
"tag": "v5.8.0",
"kind": "minor",
"published_at": "2026-06-30T12:00:19Z"
},
{
"tag": "v5.7.0",
"kind": "minor",
"published_at": "2026-06-30T09:07:10Z"
},
{
"tag": "v5.6.0",
"kind": "minor",
"published_at": "2026-06-29T22:02:29Z"
},
{
"tag": "v5.5.0",
"kind": "minor",
"published_at": "2026-06-29T13:30:39Z"
},
{
"tag": "v5.4.0",
"kind": "minor",
"published_at": "2026-06-29T13:13:20Z"
},
{
"tag": "v5.3.0",
"kind": "minor",
"published_at": "2026-06-29T12:55:03Z"
},
{
"tag": "v5.2.0",
"kind": "minor",
"published_at": "2026-06-29T12:06:23Z"
},
{
"tag": "v5.1.0",
"kind": "minor",
"published_at": "2026-06-29T10:57:50Z"
},
{
"tag": "v5.0.0",
"kind": "major",
"published_at": "2026-06-28T13:54:02Z"
},
{
"tag": "v4.11.0",
"kind": "minor",
"published_at": "2026-06-28T12:58:22Z"
},
{
"tag": "v4.10.0",
"kind": "minor",
"published_at": "2026-06-28T09:24:52Z"
},
{
"tag": "v4.9.0",
"kind": "minor",
"published_at": "2026-06-25T22:19:20Z"
},
{
"tag": "v4.8.0",
"kind": "minor",
"published_at": "2026-06-24T12:01:47Z"
},
{
"tag": "v4.7.0",
"kind": "minor",
"published_at": "2026-06-22T09:17:48Z"
},
{
"tag": "v4.6.0",
"kind": "minor",
"published_at": "2026-06-21T08:53:52Z"
},
{
"tag": "v4.5.0",
"kind": "minor",
"published_at": "2026-06-20T12:10:11Z"
},
{
"tag": "v4.4.0",
"kind": "minor",
"published_at": "2026-06-19T15:57:22Z"
},
{
"tag": "v4.3.0",
"kind": "minor",
"published_at": "2026-06-15T20:36:27Z"
},
{
"tag": "v4.2.0",
"kind": "minor",
"published_at": "2026-06-15T11:46:56Z"
},
{
"tag": "v4.1.0",
"kind": "minor",
"published_at": "2026-06-10T22:05:28Z"
},
{
"tag": "v4.0.0",
"kind": "major",
"published_at": "2026-06-10T12:57:40Z"
},
{
"tag": "v3.8.0",
"kind": "minor",
"published_at": "2026-06-07T16:49:13Z"
},
{
"tag": "v3.7.0",
"kind": "minor",
"published_at": "2026-06-07T06:51:05Z"
},
{
"tag": "v3.6.0",
"kind": "minor",
"published_at": "2026-06-06T13:31:38Z"
},
{
"tag": "v3.5.0",
"kind": "minor",
"published_at": "2026-06-06T11:14:06Z"
},
{
"tag": "v3.4.0",
"kind": "minor",
"published_at": "2026-06-06T01:58:54Z"
},
{
"tag": "v3.3.0",
"kind": "minor",
"published_at": "2026-06-03T00:59:03Z"
},
{
"tag": "v3.2.0",
"kind": "minor",
"published_at": "2026-06-01T12:39:18Z"
},
{
"tag": "v3.0.1",
"kind": "patch",
"published_at": "2026-05-13T10:02:57Z"
},
{
"tag": "v3.0.0",
"kind": "major",
"published_at": "2026-05-13T07:45:01Z"
},
{
"tag": "v2.4.0",
"kind": "minor",
"published_at": "2026-05-03T00:41:52Z"
},
{
"tag": "v2.1.1",
"kind": "patch",
"published_at": "2026-04-24T08:27:24Z"
},
{
"tag": "v2.1.0",
"kind": "minor",
"published_at": "2026-04-24T06:41:27Z"
}
],
"recent_commits": [
{
"oid": "738a0c191147aae0ef6a2fef3f71522b4f88ecd3",
"body": "…hor mismatch (#443)\n\n`and others` is BibTeX's own et-al. Zotero, Mendeley, JabRef and a hand-written\n.bib all emit it for a list the author chose not to type out, and BibTeX and CSL\nboth render it as \"et al.\" verify_refs already parsed the token — it dropped the\nliteral family `others` from the cit\n[…]\ntch. It now skips on the\n transport failing, never on the verdict.\n\nLocal mirror: 220/220 validate-job gates. No new detector; counts unchanged.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(verify-refs): BibTeX `and others` is a declared et-al, not an aut…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T13:12:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "115d2d6ef857facb27c74c039097a8c96da67324",
"body": "…false (26/84) (#442)\n\nCONTRIBUTING told every incoming contributor that \"each deterministic detector\nadditionally ships a self-contained `<detector>_challenge/` directory.\" It does\nnot. 48 challenge directories exist against 84 detectors, and they are named for\nthe feature under test rather than fo\n[…]\n in the same edit.\n\nNo gate is added. The number moves with every merge, and a gate would pin a\npromise that was never the thing worth enforcing.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(contributing): the promise of a challenge card per detector was …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T12:30:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e1aeee16a988463e8289e315e6c6c6a622ddee70",
"body": "feat(humanize): check_sentence_variety enforced half of the rule it cites",
"is_bot": false,
"headline": "Merge pull request #441 from Aperivue/feat/sentence-overlong",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T11:33:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "751d0317753323cb9a6ef16fac77314682c113d3",
"body": "…ites\n\nFix rule 7 says \"Mix short declarative sentences (8-12 words) with longer ones\n(25-35 words)\" — a RANGE — and this gate only ever checked its lower edge. One 97-word\nsentence populates the \">= 25 words\" band, so a manuscript passed while the detector\nprinted max_words: 97 in its own stats. Tw\n[…]\nthe\ndefault could be doing nothing while every other assertion still passed.\n\nMinor, so --strict does not fail a build. Detector count unchanged.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(humanize): check_sentence_variety enforced half of the rule it c…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T11:21:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8c6a733447716745d56730818430ea36946cb97f",
"body": "fix(self-review): a manuscript's own changelog is not a confession",
"is_bot": false,
"headline": "Merge pull request #440 from Aperivue/feat/frontmatter-sweep",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T11:18:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c4ef6e209ead290f880c6cfec11f23c4275497d",
"body": "A pandoc manuscript opens with a `---`-fenced YAML block and projects keep real sentences\nin it. `check_claim_artifact` scanned that as body prose, so a `changelog:` entry reading\n\"the primary endpoint was changed from 30-day to 90-day mortality after the DSMB review\"\ncame back as PRIMARY_REASSIGNED\n[…]\nd; and the\nadvisory path still prints the violation without failing the build. Repo-CI validator under\nscripts/, so integrity_detectors stays 84.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): a manuscript's own changelog is not a confession",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T11:06:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9d0e3fab3113af4d5997b1776f8b34cc8b37c59a",
"body": "feat(manage-refs): --allow-separate-attachments now excuses the MISSING_BODY it cannot check",
"is_bot": false,
"headline": "Merge pull request #439 from Aperivue/feat/xref-separate-downgrade",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T10:53:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "47d4801d51fb6af53b636380d1a258156b9b4296",
"body": "…NG_BODY it cannot check\n\nWhen a submission's figures and tables are separate attachment files — the norm in\nradiology and most of medicine — and check_xref runs without a --docx, those floats are\ncited, have no body caption, and there is no rendered artifact to look them up in. That\nblocked the sub\n[…]\nts that must not\nmove — drift still blocks, the flag stays opt-in, and a supplied DOCX still yields an\nevidenced downgrade rather than an excuse.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(manage-refs): --allow-separate-attachments now excuses the MISSI…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T10:44:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fd923e94accbeb68c6ad29af773ed7b45c14bcc0",
"body": "fix(manage-refs): check_xref blocked a correctly packaged submission and offered no way out",
"is_bot": false,
"headline": "Merge pull request #438 from Aperivue/feat/xref-separate-supplement",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T10:18:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a2380c7fb23fb87ca7676ca30df1464562801b9",
"body": "…and offered no way out\n\nWhen a manuscript's supplementary tables and figures are separate attachment files —\nthe norm in radiology and most medical journals — and check_xref runs without --docx,\nthose floats are cited, have no body caption, and land on MISSING_BODY.\n--allow-separate-attachments doe\n[…]\nsertions was tightened first — it grepped the whole log for a label that the\nfindings table already prints, so it passed vacuously on both trees.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(manage-refs): check_xref blocked a correctly packaged submission …",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-29T10:06:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ad8be59d6e3df49ac74f532ee6b98ea61339a419",
"body": "…iles\n\nfeat(journal-profiles): add five nephrology journal profiles",
"is_bot": false,
"headline": "Merge pull request #330 from insanehahaha/add-nephrology-journal-prof…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T23:00:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cb10a187b513b2a258b24dcd84a07bcf629a61a",
"body": "fix(skills): an instruction that lives in a file we do not ship is not an instruction",
"is_bot": false,
"headline": "Merge pull request #436 from Aperivue/feat/personal-rule-refs",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:58:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7cdb08253c4b1049accf9d26471fb9fdf766f2ae",
"body": "…nged\n\ngen_skill_docs.py counts the reference files a skill ships, so adding six nephrology\nprofiles and dropping two moved the numbers on docs/skills/find-journal.md and\ndocs/skills/write-paper.md. CI caught it as SKILL_DOCS_DRIFT.\n\nMy miss, and worth naming: I regenerated the distribution manifest\n[…]\n is more than one generator. All five --check gates (skill docs, skills catalog,\nmarketplace, detectors catalog, distribution manifest) now pass.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(docs): regenerate the per-skill pages after the profile set cha…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:51:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "603621ed67fd9e60e994ca8deb34bfb041736f90",
"body": null,
"is_bot": false,
"headline": "Merge main (#435, #437) into add-nephrology-journal-profiles",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:51:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fff24e425c02241a8375431c54bb60eecc3d2bc1",
"body": "# Conflicts:\n#\tmetadata/distribution_files.json",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/main' into feat/personal-rule-refs",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:47:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdf40774661c2ee4ddd37b4284ba1291fb0bf3cc",
"body": "feat(manage-refs): bundle the AMA style, and make the CSL registry describe the directory",
"is_bot": false,
"headline": "Merge pull request #437 from Aperivue/feat/ama-csl",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:44:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30141d769983b20c947f3fb4ff550bcfaf2bd2e0",
"body": "fix(validator): the PII scanner had been reading one file per skill",
"is_bot": false,
"headline": "Merge pull request #435 from Aperivue/feat/pii-scanner-blindspot",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:43:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f25a74ef8081c76da8326938465e8ee4855e6af6",
"body": "…profiles nobody could verify\n\nMaintainer-side completion of the four items raised in review, so that a contribution\nthat was correct in almost every particular is not lost to a stalled round-trip.\n\n1. AJKD abstract limit 200 -> 300 words, in both AJKD.md files. The Information for\n Authors says a\n[…]\nd — journal\nprofiles are auto-derived from disk and were never part of them.\n\nCo-Authored-By: insanehahaha <insanehahaha@users.noreply.github.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(journal-profiles): apply the review corrections and drop the two …",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:42:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b3ccfd950ac42ab9bad58609ec0daf14f7d61dea",
"body": null,
"is_bot": false,
"headline": "Merge main into add-nephrology-journal-profiles (pick up #434)",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:41:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5244ef5532963323fd304096ddda4df3febf39a8",
"body": "…scribe the directory\n\nThe AMA Manual of Style covers the JAMA family and the many journals whose author guide\nsays only \"AMA style\". Until now the nearest bundled option was liver-international.csl,\nwhich reaches the same rendering by way of a retitled Wiley style — a coincidence, not a\nchoice a su\n[…]\nrender_pandoc.sh, which prints what is on disk when it\ncannot find the requested style — a list that cannot go stale because nobody maintains it.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(manage-refs): bundle the AMA style, and make the CSL registry de…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:36:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "214054b89b6c173f0aa94e710c68cdb3911f3252",
"body": "…t an instruction\n\nFour shipped skills said things like \"apply `~/.claude/rules/numerical-safety.md`\".\nThe distribution bundle is skills/ + installers/ only, so that path exists on the\nmaintainer's machine and nowhere else. Nothing errored — the step was simply skipped,\nand the skill looked like it \n[…]\n`/`per`/`cross-link` are not matched, and `[^|]` keeps the window inside one table\ncell so a \"must\" in one column cannot reach a path in another.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(skills): an instruction that lives in a file we do not ship is no…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:33:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "73adcc3f2f8af7b23caa9c08828084a79a6de156",
"body": "…dspot",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/main' into feat/pii-scanner-blin…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:29:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0343f387d2b9cd140831a2ff301450057aeb2ae4",
"body": null,
"is_bot": false,
"headline": "Merge pull request #434 from Aperivue/feat/cadence-test-expiry",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:28:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9d6d70cbf69ba4fa3147a9c536fbb2999bdd545",
"body": "validate_skills.sh kept its filename patterns in a bare string and expanded it\nunquoted into `find`, so `*.md` was pathname-expanded against the CALLER'S working\ndirectory before find ever saw it. From the repo root — how CI and every documented\ninvocation run it — that became the thirteen top-level\n[…]\nNAMES EACH FILE, rather than asking whether it passes — passing\nwas the symptom. Against pristine main it fails 6 of 7; with this change, 7 of 7.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(validator): the PII scanner had been reading one file per skill",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T22:06:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6d8d528b7dee9ef51317e11aad1c5be6987a853d",
"body": "test_release_cadence.sh pinned its fixture tag to a literal 2026-07-13 and then\nasserted that a release cut \"0 days later\" is blocked. But check_release_cadence.py\nmeasures `date.today() - <tag creatordate>`, so that fixture never described a fixed\ngap — it described one that grew by a day per day. \n[…]\nite turning green: re-aging the fixture tag to\ntwenty days reproduces exactly the three gap-dependent failures and leaves the other\nnine passing.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(tests): the cadence gate's own test had an expiry date",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-28T13:17:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6f457339f88a3553059931e2dcf32ef69b68b1d0",
"body": null,
"is_bot": true,
"headline": "chore(metrics): weekly adoption snapshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-27T06:42:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8125d19ee49c5d0c7525b3e832e9ea54ca3e5cbc",
"body": "acquire.py stages a batch from a hand-written queue. That is right for the training corpus, where\nthe operator picks what to read, and wrong for a measurement corpus: a hand-picked set has an\nundeclared selection rule, and an undeclared selection rule has no answer to \"how did these forty\npapers get\n[…]\nout record except to\nlabel a fire; the operator sees counts, DOIs and coverage tuples, never prose. Building the tool\nis not beginning the phase.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(heldout): acquisition with a seal that refuses (#432)",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-26T01:05:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "db62757295ba9a8f2e3967e2ea1765ab958bed6b",
"body": "…d finder (#431)\n\nThe metamorphic probe moved four verdicts on the held-out corpus and the first reading blamed the\ndetector. It was ours.\n\nThe throwaway renderer that built that corpus emitted\n\n Competing interestsThe authors declare that they have no competing interests.\n\nwith the heading fused\n[…]\nct it.\n\nNo detector change. Teaching check_disclosure_availability to accept a fused heading would be\nteaching it to tolerate our own corruption.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(heldout): a fused heading is invisible to every boundary-anchore…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-26T00:48:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a14ae72e8646dd439e42a13bd502bf98c0808900",
"body": "…o labeler (#430)\n\nEvery other measurement in this track needs a human to say what the right answer was before it can\ncall a detector wrong. This one does not. If a verdict changes when the manuscript is rewritten in\na way that provably cannot change what it SAYS, the detector was reading surface fo\n[…]\nand NAMED, that the guard refuses corruption,\nand that exemptions and guard-exclusions leave the rate alone. Wired into validate.yml (213 gates).\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(heldout): metamorphic invariance — a severity probe that needs n…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-26T00:32:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1db4b1209680516ea7a64e983cf24befa019c506",
"body": "…e corpus (#429)\n\n* fix(heldout): the instrument was muzzling detectors and truncating the corpus\n\nTwo defects in heldout_crossfire.py, found by running every manuscript detector across the\npilot corpus twice at two invocation bars and never breaking out of the loop. Both make a\nnoisy stack look qui\n[…]\nility counters exist — a denominator nobody can decompose is not a\ndenominator.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(heldout): the instrument was muzzling detectors and truncating th…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-26T00:15:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1fbe326429d662941f507b44ce6644b27964448a",
"body": "…d not know this case (#428)\n\nThe cadence gate has one exemption: a hotfix. Nothing is broken, so declaring one would have been a\nlie told to our own gate — which is the behaviour this repository exists to make hard.\n\nThere is a real reason to cut early that the gate did not know. A measurement stud\n[…]\nded — was\nstill sitting under [Unreleased]. Left alone, this release would have claimed work it did not do.\nSectioned at its own hotfix boundary.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(release): v5.23.0 — and a second exemption, because the gate di…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T13:30:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "67fd47f6f8c25a65a2bb978a0736ab9b1bb8e1a2",
"body": "…he claim → show the tail (G78–G80) (#427)\n\n* feat(design-study): design past the mean Dice — segmentation usability (G78)\n\nNew references/segmentation_failure_characterization_design.md. For a study\nclaiming a segmentation model is clinically usable rather than accurate, the\ndesign decisions are: a\n[…]\nifest. Reference-only; detectors 84 and\nskills 58 unchanged; CI mirror 211/211.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: segmentation-usability arc — design past the mean Dice → size t…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T12:45:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "54e3ccdba83403de49d3960f7df550709d90daf3",
"body": "… the fixtures could show (#426)\n\nMeasured against 12 accepted open-access papers spanning 12 study designs, these two detectors\nfired six times. Four of the six were ours. Every one of the four is a defect a challenge card\nstructurally cannot surface, because a fixture written beside a detector use\n[…]\n— it used flowing sentences where the\nnear-miss terms are never isolated tokens, so it proved nothing. It now uses the shape the real\npapers had.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(sync-submission): five false positives that only a corpus outside…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T12:01:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "af5de31ad4d635941438f8f5ab9ad00c8660bc36",
"body": "…sons for files it failed to hand over (#424)\n\n* fix(reverse-engineer): the instrument was inventing skip reasons for files it had failed to hand over\n\nThe first real held-out run was invoked as `--corpus _corpus/heldout`. Detectors run with cwd\ninside a throwaway sandbox so a default `qc/...` repor\n[…]\neze (test, spent by\nreading it) — and this rate must not be quoted as unbiased.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(reverse-engineer): the held-out instrument was inventing skip rea…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T11:54:08Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f7d44f46218f14cb6428aa55ec9bf8eb7107d3c1",
"body": "…the seg-usability arc (#425)\n\nStep 0 triage. Two things.\n\nThe register claimed G67 (PRISMA-ScR) and G68 (SRQR/COREQ) were open. Both\nship: references/checklists/PRISMA_ScR.md landed in #238 and SRQR.md +\nCOREQ.md in #240. Left alone, the next iteration would have rebuilt work that\nis already in the\n[…]\nimpossible output is invisible in any summary statistic.\n\nTriage only; no skill content. Detectors 84 and skills 58 unchanged; CI mirror\n211/211.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(reverse-engineer): two \"open\" gaps were already shipped; score …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T11:41:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c63ec3dc91d26f809a83c38da86dbc787e413ea4",
"body": "…new one (#423)\n\nCross-model verification on #421 refuted \"there is no closed-form Dice CI\".\nA t-interval on mean per-case Dice is closed-form; the reason to bootstrap is\nthat the metric is bounded and bunches near the ceiling, so normal-theory\ncoverage is not the coverage you asked for — and BCa ha\n[…]\ncommendation is\nconditional on that test, not on the overlap. Not a defect.\n\nProse only; detectors 84 and skills 58 unchanged; CI mirror 211/211.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: the Dice-CI claim was wrong in three shipped docs, not just the …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T11:25:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "13ac00682200340e9f1c58e7fef4744f0f26b718",
"body": "…→ present (G75–G77) (#421)\n\n* feat(design-study): fair multi-model comparison design (G75)\n\nReverse-engineered from 6 CC-verified accepted OA imaging papers: making a model-vs-model head-to-head comparison fair — one frozen patient-level split + one preprocessing through every model, a strong self-\n[…]\ne-only; detectors 84 and\nskills 58 unchanged; CI mirror 210/210.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: multi-model-comparison arc — fair model-vs-model design → size …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T11:10:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a89769929273915ac9bba616be6434746247b5dd",
"body": "…n papers they were never allowed to learn from (#422)\n\nEvery detector here is tested against fixtures authored alongside it: a challenge card proving it\nfires on its own planted defect, and check_detector_crossfire proving it stays silent on the demo\nmanuscripts. That is a training set. A detector \n[…]\ner episode is memorisation in the costume of learning), and\nassociative retrieval that edits an existing detector instead of appending a new one.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(reverse-engineer): the validation loss — measure the detectors o…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T10:52:19Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "26ca166c9e476251f4d0b3d593c4034cab9bcecf",
"body": "…plitters apart (#420)\n\ncheck_aphorism_density and check_rhetorical_density measure different tells over the SAME text —\nbody prose with front matter, headings, tables, quotes, fences, list items, citations and inline\nmarkup removed — and each carried its own byte-identical copy of that extractor. T\n[…]\nert: ten detector outputs across five fixtures are byte-identical before and after; both\ntest suites pass; the detector count is unchanged at 84.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(self-review): share the prose extractor, keep the sentence s…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T06:19:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3076507dffef7c170eae158330c5e0f3f9810dd7",
"body": "…, cut self-review 30% (#418)\n\ncheck_phase_budget.py bounded the parts (80 lines per section) and said nothing about the sum. A\nSKILL.md can hold thirty compliant sections and still cost 22,000 tokens on every invocation, and\ntwo did: self-review at 1,132 lines / ~21,900 tokens and peer-review at ~2\n[…]\nt builds a file of 40 compliant sections summing to ~24,000 tokens — section-clean and\nfile-fat, so a gate measuring only sections would pass it.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(skills): the whole file is a bill too — budget SKILL.md by tokens…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T06:09:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f7b52ebb65a2f93abca84181a2074cb9ed0248ee",
"body": "…ission (#416)\n\nPR #412 wired four unrun challenge cards by hand after a manual sweep. The sweep is the bug: a\nhand-maintained list of \"tests CI should run\" has no gate that catches the next omission, so the\ndefect was already back. Twelve more test assets were on disk, green, and executed by nothin\n[…]\nin a\nvariable in order to delete its step — certified that challenge as wired. The gate passed its own\nregression case by reading its own source.\n\nCo-authored-by: Claude Opus 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ci): a test CI never runs is a test that never runs — gate the om…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T05:59:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3afcebbc43cfb2a9d48cb1d73fa517fee6c547e2",
"body": "… — segmentation sizing + external-validation figure (#419)\n\nCompletes the segmentation / combine-existing-models experiment-design arc:\nG72 (design the ablation comparator) -> G73 (size it) -> G74 (present it). Two enablement\nartifacts in one PR, grounded in the same accepted-OA batch as G72 (no fr\n[…]\ntator 0.90->0.81, CRLM 0.86->0.82,\norbital-lymphoma T1c failure). Reference-only, no count change. gap_register G73 + G74 shipped.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(calc-sample-size, make-figures): complete the combine-models arc…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T05:26:04Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "58527fd26d518a5eea8ee6162951416b80bdf2e7",
"body": "…-tune-existing-models studies (#417)\n\nNew discovery theme (G72), grounded in a fresh batch of accepted OA imaging papers whose model was\nbuilt by combining/adapting/fine-tuning existing models (nnU-Net, TotalSegmentator, SAM/MedSAM, a\npretrained backbone). The batch's #1 acceptance-driving decision\n[…]\nnly. Wired into the Phase-2 load-on-demand table + a Phase-3 cross-ref.\nReference-only, no count change. gap_register G72 shipped.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(design-study): ablation comparator design for combine/adapt/fine…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T05:12:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "aeda2e80610a4fa9e48f72293f90a8964f6171d5",
"body": "…red figure of a reader study (#415)\n\nFresh cross-skill-audit discovery (G71), completing the reader-study arc: G69 design the reader\nstudy (venue-accept clearing move) -> G70 size it (MRMC) -> G71 present its effect.\n\nNew anatomy exemplar `make-figures/references/exemplar_plots/ai_assistance_effect\n[…]\nnatomy doc (no render function / detector), wired into the\nexemplar_plots README index. No count change. gap_register G71 shipped.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(make-figures): AI-assistance effect plot — the within-reader pai…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T04:43:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "626d95a0f2bcca49c7477a80f04fd0bd6bcda285",
"body": "…kette) — Test 14 (#414)\n\nSecond enablement iteration of the reverse-engineering loop (G70). The sizing counterpart to\nG69's finding that a reader study measuring clinical impact is the flagship \"clearing move\":\nan under-sized reader study cannot deliver it.\n\nNew reference `calc-sample-size/referenc\n[…]\n washout) as real-world JxN motivation.\nReference-only -- no new detector or checklist, no count change. gap_register G70 shipped.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(calc-sample-size): MRMC reader-study sample size (Obuchowski-Roc…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T04:15:36Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a91e059c4b2d78f478880d81ef25ce4a101c4c3f",
"body": "…ies (reverse-engineered from accepted OA papers) (#413)\n\nFirst iteration of the reverse-engineering loop's post-G68 ENABLEMENT pass (the compliance\nsurface is saturated; per the loop's own directive, leverage-2.0 design-time artifacts are\nthe frontier).\n\nNew reference `design-study/references/venue\n[…]\nline budget). Reference-only -- no new\ndetector or checklist, no count change. gap_register G69 shipped; PROGRESS + queue updated.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(design-study): venue-tier acceptance recipe for clinical DL stud…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T04:01:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "cdbf0b46ba234f0b3a13eb16015a1063662bef0f",
"body": "…ine claims (#412)\n\nAn independent architecture review (Codex, different-substrate cross-check per\nthe drift-check rule) found defects that a self-review had missed:\n\n- check_analysis_definitions, check_review_request_types, check_model_provenance\n each shipped a full challenge card (positive + neg\n[…]\ntracks the live catalog rather than a new literal.\n\nCI mirror 190 -> 196 (the 4 newly wired challenges). No detector count change.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(audit): wire 4 un-tested detectors into CI; correct 2 false headl…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T03:49:46Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4a66293beed8704602b46e95d7df35680b7a1965",
"body": "…currency (finishes the 2024-2026 refresh) (#411)\n\nThird and final currency slice, completing the architecture-zoo refresh across all task\nfamilies (segmentation #409, detection+classification #410, now transfer+synthesis):\n\n- foundation_models.md: a \"domain-specific medical foundation backbones\" ca\n[…]\nGitHub API (RETFound/UNI/CONCH = NOASSERTION custom research\nlicences; Merlin MIT code). Reference-only; no new detector or skill.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(architecture-zoo): domain foundation-model transfer + diffusion …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T03:22:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "12755d7e5ac10546fe2f50260464d04bbe8b83a0",
"body": "… (nnDetection, ConvNeXt) (#410)\n\nSecond currency slice, same discipline as the segmentation wave (verified licences, no\nleaderboard numbers):\n\n- detection.md: nnDetection (Baumgartner et al., MICCAI 2021) as the self-configuring 3-D\n detection default — the nnU-Net of detection, which the cards we\n[…]\nDetection Apache-2.0; ConvNeXt MIT; Ultralytics\nAGPL-3.0; ConvNeXt V2 weights CC-BY-NC). Reference-only; no new detector or skill.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(architecture-zoo): the detection + classification 2024-2026 wave…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T02:55:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "58283ba0dba1999e9d9b84cbb999967e73f33b8b",
"body": "…NN, and interactive-3D labelling (#409)\n\nAdds the post-nnU-Net segmentation layer the cards were missing, grounded in verified\nsources and licences:\n\n- segmentation.md: nnU-Net ResEnc (M/L/XL), MedNeXt, STU-Net, plus the \"nnU-Net Revisited\"\n (MICCAI 2024) rigour caveat — under matched compute a sc\n[…]\nve weights\nCC BY-NC-SA; VISTA3D / SAM-Med3D weight licence flagged \"verify\"). Reference-only enrichment;\nno new detector or skill.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(architecture-zoo): the 2024-2026 segmentation wave — scale the C…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T02:42:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f292ee65353d26f49b81b9eee4b0be917eda8a45",
"body": "`gh skill` (GitHub CLI >= 2.90, a preview feature) resolves this repository's\ncanonical top-level skills/ layout, so search/preview/install work today with no\nrestructuring. Documents the runnable paths in Quick Start and as Installation\nOption 5, with the host-specific placement chosen by --agent.\n\n[…]\nds `--owner Aperivue` to surface ours. The README now\ntells users to search by name / medsci / --owner rather than by broad topic.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(readme): gh skill install paths + discovery guidance (#408)",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T00:57:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "88cc23a5e6efeeabd773ce2c69a340fdbdeec62b",
"body": "…uestion, in their own words (#407)\n\nThe placement gate shipped with five profiles populated, so every other\ntarget produced the \"no target recorded\" prompt. The answer was already\nwritten in most profiles, in their own prose:\n\n \"Disclose substantive AI use in Methods\" JNIS, Journal of Strok\n[…]\nt all. An unpopulated profile yields the honest Minor prompt.\n\nChallenge 18 -> 40 assertions. No new detector: the count stays 84.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(profiles): 17 more journals answer the AI-disclosure placement q…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-25T00:51:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "61dfbad98333da28daf86a1d9e8cff818e8beaac",
"body": "`gh skill` discovers installable skills by looking for a directory literally\nnamed `skills` at ANY depth, and treats every `<name>/SKILL.md` beneath it as a\nskill. The frozen phase-budget regression fixture lived at\ntests/fixtures/phase_budget/skills/self-review/SKILL.md. It is a deliberate copy\nof \n[…]\nor. The self-test pins that distinction and the failure itself.\n\nTop-level scripts/ validator, so the detector count is unchanged.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(repo): a test fixture was being published as a real skill (#406)",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T14:16:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "39538cc141b04e7eb06211e7807ca7c779311e62",
"body": "…ould not know (#405)\n\nINBODY_AI_DISCLOSURE said an in-body AI-use disclosure \"belongs on the title\npage\". That is true at some journals and false at others, and the profiles\nin this repo already said so in their own words:\n\n npj Digital Medicine \"document use in Methods section\"\n Investigati\n[…]\nght by running it against every\npopulated profile rather than against the one I had in mind.\n\nNo new detector: the count stays 83.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): the AI-disclosure verdict asserted a placement it c…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T13:48:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5fd599bf11b13c40bf2260fecf497ffd9257f69d",
"body": "…o something else (#404)\n\nThe arithmetic in check_cohort_arithmetic was never wrong. Which numbers it\nfed into that arithmetic was. On a real cohort manuscript every one of its\nobserved fires was false — precision 0.00 (0/3) in the detector-precision\nharvest, across two --out names.\n\nThree captures,\n[…]\nmn genuinely headed \"n\" still resolves. A fix that\nbuys silence by going blind is not a fix.\n\nNo new detector: the count stays 83.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): cohort-arithmetic was binding numbers that belong t…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T13:34:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ea05e3fa58feaa71fc63f739efccf5616d79a8f3",
"body": "…eness was reporting ~45 non-defects (#403)\n\nThe `findings` array of check_confounding_completeness was the whole\nper-covariate audit table, and two of that table's three verdicts mean \"this\nis fine\": ADJUSTED says the covariate WAS handled, EXPOSURE_DEFINING_EXEMPT\nrecords a deliberate exemption (a\n[…]\n`ran=0` — indistinguishable from a run where nothing\nexecuted. It now counts checks: ran=35.\n\nNo new detector: the count stays 83.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): a status row is not a finding — confounding-complet…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T12:41:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "54a21b56202bda510eea599745d685db0fedebfe",
"body": "feat(model-sourcing): vet the concrete model, not the architecture family",
"is_bot": false,
"headline": "Merge pull request #402 from Aperivue/feat/model-sourcing-skill",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T12:13:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3fd14062e51265e60f2de85a3dfb5f5c118cf81a",
"body": "…mily\n\n/architecture-zoo answers which family of model suits a task and stops there by\ndesign. Which *artifact* you actually run -- this repository, this revision, this\ncheckpoint -- is a different kind of question, and nothing owned it, so it was done\nby habit. Habit checks the licence and the cita\n[…]\ntly test it.\n\n23 regression assertions + a 3-fixture challenge card. Skills 57 -> 58, detectors\n83 -> 84. Local CI mirror 187/187.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(model-sourcing): vet the concrete model, not the architecture fa…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T12:03:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ba3ebdb64e12fc32de4dd697cb7ddca1f73b3523",
"body": "…my — never the author order (#401)\n\nContribution terms are published with the paper and every co-author reads\nthem, but nothing tied a term to anything. During one byline negotiation\nthree terms were requested in sequence — Visualization, Methodology, Formal\nanalysis — each unsupported by the proje\n[…]\nr\nconvention exists here, and building against them would mean inventing the\nconvention and then gating against our own invention.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(sync-submission): CRediT is a factual claim, so check the taxono…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T11:28:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "655a445077af948d09b99e11f929fec9a56c132c",
"body": "fix(imaging): a single-organ study on a multi-organ atlas was measured on the wrong organ",
"is_bot": false,
"headline": "Merge pull request #400 from Aperivue/feat/demo5-imaging-gate-gaps",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T11:17:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1bd7c07f60b3f67a6e2e4e8ca405de3b41dec9be",
"body": "…heck what never reaches it (#399)\n\nSome portals publish the box, not the paper. SNAPP prints it on the\nsubmission form at Author Contributions, Competing Interests, Data\nAvailability and Acknowledgements: \"This replaces any statement written\nwithin the manuscript and is the one that we will publish\n[…]\nt, which preflight does not pass — so it reported a dropped\ndeclaration as a clean check. All three are now regression assertions.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(sync-submission): the portal field replaces the manuscript, so c…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T11:06:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f8a95c4d164ed8f3fdc71b918e799db17c9836bd",
"body": "…d on the wrong organ\n\nThree false negatives, all found by running the shipped skills against AMOS22 and\nMSD Task09 rather than against fixtures.\n\n1. profile_imaging_dataset.py counted foreground as every non-zero label. Profiling\n AMOS22 for a spleen study reported 3.2% (CT) / 7.9% (MRI) foregrou\n[…]\ns.\n\nEvery new test fails against the pre-change scripts (6 failures) and passes after.\nNo new detector script; the count stays 80.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(imaging): a single-organ study on a multi-organ atlas was measure…",
"author_name": "Eugene",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T11:01:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2bf1b2cd154a8e9b22c55250980083a5d5b37471",
"body": "…e says it says (#398)\n\nverify_refs.py answers whether a reference is real and whose it is. Nothing\nanswered whether the sentence attached to it is true of it — and a citation can\nbe perfectly real while the claim on it is not. That failure survives every\nexisting gate: the DOI resolves, the authors\n[…]\n its self-test hardcoded which skills to copy, so declaring a\ncode set made the fixture abort in a way that read as a broken gate.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(verify-refs): check whether a cited source says what the sentenc…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T10:32:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f5fcba359f2ff51ff406bfb815f5bcb2f5d8207f",
"body": "…nger reported as a missing edit (#397)\n\ncheck_response_claims verified a quoted addition by searching the manuscript for a CONTIGUOUS\nstring. That assumption breaks the moment the haystack comes out of an extractor, because\nextractors wedge in tokens the source never had:\n\n two-column PDF \"learn\n[…]\n, and the scattered-words precision guard); reverting to contiguous matching makes 8 of\nthem fail. Full CI mirror green (184/184).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(revise): a correct quote read through a dirty extraction is no lo…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T07:53:05Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9828bf277b4eb97f65a7017bf2edcc580489ef39",
"body": "…s counting universal words (#396)\n\nPhase 1 only sees prose. Text baked into a figure lives in a rendered raster where no grep\nreaches, so a co-author's \"Behavioural alignment\" in a PowerPoint panel ships a UK word into\na US manuscript and surfaces only when someone opens the image on submission day\n[…]\ntom hit), and re-introducing the defect makes the new challenge exit\n1 on its precision assertion. Full CI mirror green (184/184).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(polish-language): figure-SOURCE locale drift + fix US/UK familie…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T07:04:36Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6ad266c2ed0f8556df25b72661c411283cb98f71",
"body": "…es + ≥/≤ portal-field expansion (#395)\n\nTwo portal pitfalls the export default cannot catch, both decidable at pre-flight:\n\n- figure_portal_readiness_check.py (stdlib) — FIGURE_OVERSIZE (a figure > --max-mb,\n default 25; JACC: Asia caps at 25 MB) and FIGURE_FORMAT_REJECTED (an extension not in\n t\n[…]\nt runtime, no committed binaries). Complements\nexport_portal_tiff.py (the fix) with the detection. Full CI mirror green (183/183).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(sync-submission): pre-flight catches over-cap/wrong-format figur…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T06:32:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6add822cf0b20689f09fc6ccc6e03ee67b40c51d",
"body": "…RGBA→RGB white-flatten) (#394)\n\nSubmission portals collide with a rendered PNG two ways: some accept only\n.tiff/.jpeg/.eps and reject .png (Springer Nature SNAPP), and some cap a figure at\n25 MB (JACC: Asia) that a raw uncompressed 600-dpi RGBA TIFF sails past. A naive\n`magick … output.tiff` also k\n[…]\nte.\nFull CI mirror green (182/182); challenge verify.sh passes locally (skips without Pillow,\nthe render_core_figures convention).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(make-figures): export_portal_tiff.py — portal-ready TIFF (LZW + …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T05:42:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "af9e8db3c46166647c3fc68c9fba28cfa4a25a88",
"body": "…series (+ range expansion) (#393)\n\nExtend check_citation_order beyond numbered floats to the fifth Vancouver series it\nnever saw — the bracketed in-text reference numbers ([12], [4–11]):\n\n- REFERENCE_ORDER (Major) first-appearance sequence not ascending ([12] before [5])\n- REFERENCE_GAP (Minor) \n[…]\nee demos, plus four new fixtures (out-of-order, gap, the range-trap negative,\nand a clean series). Full CI mirror green (182/182).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): check_citation_order audits the in-text reference …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-24T05:16:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ea05a50b647e1e955343ca5dafe8f7c8a0cbeec7",
"body": "…table that summed to 72 (#392)\n\nTwo things, the second found while scoping the first.\n\n## The protocol (evaluation/REFRESH_PROTOCOL.md)\n\nThe suite's size and its evidence are reported at different versions: 80 detectors\nnow, canonical evaluation at v3.8 (E1 = 19 DefectSpec rows / 17 offline injecto\n[…]\nhe gate now enforces that. Regression-tested both ways.\n\nFull CI mirror green (182/182). No skill/detector/guideline count change.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(evaluation): pre-register the 80-detector refresh; fix a family …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T23:33:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d117d83af67ad303f5ecb06a8c495db4b0a19dd3",
"body": "…template (#391)\n\nMAINTAINERS.md already draws the seam — clinical/research validity stays with the\nfounder, the technical surface is explicitly shareable — but nothing wired that seam\ninto GitHub, so an external contributor's PR sat unrouted until someone noticed it.\n\nAdds .github/CODEOWNERS along \n[…]\nributor-facing repo infrastructure, not a user-visible\nchange, and it ships in no release payload. Full CI mirror green (182/182).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(governance): add CODEOWNERS and open a drive-by path in the PR …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T23:17:28Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5e24e915ece377198d21c125b80251e37bef1303",
"body": "…tency gate (#390)\n\nAn external review found several current-state counts stale against the disk\nSSOT (57 skills / 47 guidelines / 80 detectors) and one citation-integrity slip:\n\n- README \"All 55 skills\" -> 57; \"All eight plugins\" -> nine (three other lines\n already said \"nine\").\n- CITATION.cff \"44\n[…]\n\nregression-tested (reintroduce the old number -> FAIL); full CI mirror green\n(182/182). No skill/detector/guideline count change.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(docs): reconcile drifted public catalog claims + widen the consis…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T22:42:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "64bf2b0ed16601e1b1a13ec816d3c501d50bad9a",
"body": "…act authorial-move tells (detector 80) (#389)\n\nGenre-gated to article_type: Perspective. Flags IMRAD section headings where a Perspective should name sections as argument-moves, and an abstract stating its thesis with no authorial move (\"we argue\" / \"here we ...\"). Both Minor (advisory).\n\nParser ha\n[…]\nving the authorial move). check_reference_adequacy gains a perspective bucket. Detectors 79 -> 80. Full CI mirror green (182/182).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): perspective-structure gate — IMRAD-heading + abstr…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T11:49:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5761405c1453d089113dbf5d6d8dca83fbe1b4da",
"body": "…hodology (GATHER + value-add analytic layers) (#388)\n\nReverse-engineered from a high-output epidemiology group's GBD-satellite and\nnationwide-cohort papers (Nature Medicine / Lancet / JAMA / Gut). Their edge is\na fixed methodology shell -- swap the disease, bolt on one value-add analytic\nlayer, rep\n[…]\ntorical \"46 guidelines\"\nnote is not falsified on the first guideline addition -- a latent gate defect that\ncould only surface now.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(check-reporting,analyze-stats): burden/estimate epidemiology met…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T04:45:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "70bad58676f5351974482e9d1dbc698b233112bf",
"body": "…sity, P27) (#387)\n\nThe lexical AI-tell sweeps (em-dash, passive, vocabulary) run per instance and\ncannot see prose whose every sentence is grammatical but leans on structural\nepigrams: \"X rather than Y\", \"not X but Y\", \"X, not Y\", and sentence-initial\ncleft (\"What ... is ...\", \"It is ... that ...\")\n[…]\nog 78 -> 79. Wired into humanize P27 (gate table, ai_patterns.md,\nPhase 3 M2 fix rule, checklist) + self-review scripts + CI test.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(humanize): antithesis + cleft density gate (check_rhetorical_den…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T03:46:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "738c84ccb617a5115d74ea27f1ad17affe45fce7",
"body": "…ctor (a floor Major read as zero-edit) (#386)\n\nrefinement_stop and refinement_regression were written against the {claims, summary}\nenvelope, but the detector suite is not uniform: nine detectors (check_table_percentages,\ncheck_reported_p_from_counts, check_dta_denominators, check_nested_group_comp\n[…]\nmmary} fixtures are unchanged). Count-neutral; touches no\nvalidate.yml, skill.yml, or count files. Full CI mirror green (180/180).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): loop controllers dropped every findings-schema dete…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T03:27:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "cd2abd08425f82acd291515bd9ed9ec2bd4da893",
"body": "…SUBSTRATE_MONOCULTURE) (#385)\n\nWhen the generator, the critics, and the verifier run on the same model substrate, their\nblind spots are correlated -- the self-critique inherits the very blindness that produced the\nconfident draft. check_panel_diversity measured *concern-axis* diversity, which is or\n[…]\n/ an independent lens clears / a bare roster\nskips) alongside the seven existing cases, all green. Full CI mirror green (180/180).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): enforce substrate independence in the panel gate (…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T02:59:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5d1917dd7bdbbbb5638a93675d3c8f58ba5164b0",
"body": "… without breaking? (#384)\n\nSelf-review was stateless: each run reported the manuscript's current findings, so a\nrevision that resolved finding X raised the gate pass-rate (\"X gone\") while nothing measured\nwhether the fix INTRODUCED a new finding Y -- or whether a previously-resolved finding had\nres\n[…]\nfirst-run) plus\nan --append idempotency + fixture-immutability check, wired to CI. Full CI mirror green\n(180/180). Count stays 78.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): refinement regression axis -- did the revision fix…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T01:27:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3ab21064da93dc99e1cc5460bca9be34c6276852",
"body": "…he human-approved version (#383)\n\nThe refine loop's hazard is the anchor: each pass silently takes the previous AI output\nas its baseline, so a small framing bias compounds across passes while every individual\npass looks locally reasonable. New Phase 2.5h runs check_baseline_drift.py, comparing the\n[…]\nview family). 4-scenario challenge\ncard (drifted / overhedged / stable / no-baseline) wired to CI. Full CI mirror green\n(179/179).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): baseline-drift gate -- anchor the refine loop to t…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T01:05:14Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "58fe392628d73e1908c1abe7d83295f6cf6e989a",
"body": "…e over-hardening loop) (#382)\n\nRun self-review iteratively (review -> revise -> review) and the floor gates converge\nto zero Major findings, but nothing declared the loop *done*. Because every additive\ngate can always surface one more caveat, an ungrounded loop over-hardens the manuscript:\nthe same\n[…]\no-edit / over-hardening /\nminor-optional / continue / indeterminate) wired into CI. Count-neutral. Full CI mirror\ngreen (178/178).\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): refinement terminal-state loop controller (stop th…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-23T00:28:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f5dd20f01bc6621b285a43c7a193d4ffd6b942eb",
"body": "…ascade closes (#381)\n\nA STROBE flow diagram's numbers live as text in the figure, generated from a YAML config, and\ncan drift from the manuscript prose that check_cohort_arithmetic gates. On a real cohort figure\na box read \"500 excluded -> N = 9,470\" while the enrolled box said 10,000 (10,000 - 500\n[…]\ner, not a new detector.\nSynthetic PII-free fixtures; test_strobe_cascade.sh CI-wired; neutering check_cascade to []\nconfirmed to fail the test.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(make-figures): build_strobe_template asserts its own exclusion c…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T15:28:50Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "91bf5d18ce2a305d0a55facaa64903e946319e44",
"body": "…no skill (56 -> 57) (#380)\n\nThe model lane could design a preprocessing pipeline, prove a split disjoint, and\npick metrics — but nothing established *what the dataset is* first, and every one of\nthose later steps assumes you already know. /generate-codebook profiles tabular data;\n/preprocess-imagin\n[…]\nation family; /orchestrate routing row added;\nchallenge card and regression test wired into validate.yml. Full CI mirror: 176/176.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(profile-imaging): the step that sets the research direction had …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T14:58:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "baf6b9a6dec9600bffb34d6c4f090ee56a573527",
"body": "…a legend but no in-text citation (#379)\n\nThe gate checked that CITED floats appear in ascending order but never that a float which\nEXISTS is cited at all. On the DIR-4084 galley proof, three supplements (PRISMA checklist,\nflow data, 2x2 reconciliation) carried full captions but were never cited any\n[…]\nrs unchanged, no catalog\nchange). Regression cases (6)+(7) FIRED on pre-fix HEAD (stash-revert); no existing fixture\nnewly fires UNCITED_FLOAT.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): check_citation_order UNCITED_FLOAT — a float with …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T14:52:52Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d40928ff316175700ad418c367deadda10a69513",
"body": "… + check_aphorism_density scan a manuscript (#378)\n\nBoth detectors read a manuscript's leading `---`-fenced block as body prose and fired on\nit on a live npj Digital Medicine submission: check_citation_order reported \"Tables cited\n1, 3, 2\" from a `status:` block narrating a display-item renumber (b\n[…]\npped in #371 with fixtures but no CI test — now wired.\n\nCount-neutral (76 detectors unchanged); regenerated skill docs + distribution manifest.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): strip YAML front matter before check_citation_order…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T14:26:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c63ef37e25967adbe47911840f2f22f6d68ff156",
"body": "… reproducibility record (#377)\n\nTwo papercuts found while smoke-checking Demo 4 ahead of pointing an outside\naudience at it.\n\n1. `pipeline/requirements.txt` omitted `matplotlib` and `captum`, both of which\n the pipeline imports (`make_figs.py`, `explain.py`). The README worked around\n it by tel\n[…]\nce.\n Package versions are recorded as the one gap in the record, not papered over.\n\nNo results, figures, or gate outputs change.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(demo4): ship the deps the pipeline actually imports, and fill the…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T14:03:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4aa2c53f9e6d99132ef34e7c6da3a62b916474be",
"body": "…el row (NESTED_MODEL_NO_BASELINE) (#376)\n\nA table reported C-indices for several nested models that all embedded age + sex\n(CMB+age+sex = 0.667, MetS+age+sex = 0.671, ...) but had NO age+sex-only baseline row\n(the section was even titled \"(age + sex baseline)\"). \"CMB comparable to MetS\" was\nuninter\n[…]\nession cases in test_cohort_arithmetic.sh fail on the pre-verdict detector.\nAdditive verdict on an existing detector; detector count unchanged.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): flag nested discrimination models with no base-mod…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T13:26:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "800db75aeddbefa714615d219da1b22418314935",
"body": "…ction test (GRADIENT_WITHOUT_INTERACTION) (#375)\n\nAn age x CMB \"gradient\" was claimed via joint stratification (primary table + heatmap +\nCentral Illustration) with no interaction term or LRT anywhere; re-analysis showed the\ninteraction was non-significant (LRT P=0.67) — the narrative was differenc\n[…]\ngression cases in test_scope_coherence.sh fail on\nthe pre-verdict detector. Additive verdict on an existing detector; detector count unchanged.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): flag a gradient-across-strata claim with no intera…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T13:00:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a364e5a5c515c5b06dd182ed25cbcddc348153d7",
"body": "* fix(license): ship the licence, and let GitHub read it\n\nLICENSE was MIT plus an appended third-party index, so GitHub's detector fell\nback to NOASSERTION/\"Other\" — the repo page never said MIT, awesome-list\nsubmissions carried license: NOASSERTION, and institutional legal review that\ngates on a re\n[…]\nthe\nentry point, pointing at the file next to it.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(license): ship the licence, and let GitHub read it (#374)",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T12:53:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0b89289e8516cd403889844a6cee8c63861e2eac",
"body": "…nt CIs (SUBGROUP_DUPLICATE_CI) (#373)\n\nA results table listed \"MetS >=3 criteria\" (OR 4.95, 4.32-5.94) and \"MetS-positive\n(binary)\" (OR 4.95, 4.26-5.83) — the identical subgroup (same n, same events)\nrelabeled, each carrying its own independently-resampled bootstrap interval. A\nbiostatistics review\n[…]\nession cases in\ntest_cohort_arithmetic.sh fail on the pre-verdict detector. Additive verdict on an\nexisting detector; detector count unchanged.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): flag the same subgroup rendered twice with diverge…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T12:44:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ea485ec7014e63e0c1be6135a306e2abf72e896b",
"body": "…ing (PANEL_UNDERRETURN) (#372)\n\nA --panel run spawns N reviewers; when some or all return no parseable review, the\nresulting panel_reviews.json is thin or empty and NOTHING errors, so the run reads as\na completed panel and can be written up as one. check_panel_diversity now takes\n--roster (a panel_\n[…]\negression cases in test_panel_diversity.sh fail on the pre-roster\ndetector. Additive verdict on an existing detector; detector count unchanged.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): flag a panel whose reviewers spawn and return noth…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T12:20:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1a79bc907e47b7794d9689ac4dc34f6bffe75269",
"body": "…ll (P26, 75 -> 76) (#371)\n\nAn external reader told an author that a heavily revised draft was \"clearer, but still\nreads like AI\". The cause was not grammar and not vocabulary. It was rhythm: every\nsentence was built to land, and the sentences that merely carry information forward —\nthe ones a human\n[…]\ne detector output because getting it\nwrong makes things worse: absorb the epigrams into their neighbours and write the\nexplanation back. Deleting them shortens the prose further, which is the disease.",
"is_bot": false,
"headline": "feat(humanize+self-review): aphorism-density detector — the rhythm te…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T12:07:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a6257ee3ff6d6dd7b29c66b9fa81654bb7a675c2",
"body": "…ck_panel_diversity (#370)\n\ncheck_panel_diversity raises UNCOVERED_AXIS (Major) when a research type's expected\naxis has zero major findings assigned to it. The family classifier's statistics\nlexicon was meta-analysis-flavoured (heterogeneity, pooling, I2, DeLong), so a\nreader/agreement study's stat\n[…]\n lexicon already matched (a heading\n\"Multiplicity\", a comment \"confidence interval\"/\"pooled\") that masked the defect.\nDetector count unchanged.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): recognise reader-study statistics vocabulary in che…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T11:58:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "43063b35dbede2e9a3b21d7de66986617c39a6dd",
"body": "…hecked (#368)\n\nThe de-AI pass carried two ENFORCED invariants with nothing to enforce them, a\nFix rule nothing measured, a Pattern 25 missing from the reference file the skill\ntells you to always read, and no Bash in its tools -- so the gates it already had\ntold the session to run scripts it had no\n[…]\nounds.\n- Bash added to the humanize tools list.\n\n11 test assertions; both suites wired into validate.yml. Full CI mirror: 172/172.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(humanize): enforce the invariants the skill declared but never c…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T11:35:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "00ceee146af468aa4c5e4a8d41d17eb23975cd5d",
"body": "… figures aren't false orphans (#369)\n\ncheck_figure_citation's in-text mention regex ended in (?P<num>\\d+)\\b, and there is no\nword boundary between \"3\" and \"a\", so \"(Figure 3a)\" / \"(Figure 3b)\" — the only way\nmulti-panel figures are ever cited — matched nothing. Figure 3 then looked uncited and\nFIGU\n[…]\nthe bug because an image alt-text\ncontained \"figure 1\" (the green-that-means-nothing trap), so it was decontaminated.\nDetector count unchanged.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(self-review): read panel-suffixed figure citations so multi-panel…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T11:31:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "da4793bf78676fd7d0c92818b6972f4c649ada5d",
"body": "… fields (#367)\n\nPortal free-text files (abstract.txt, keywords.txt, ...) are cut from the\nmanuscript markdown so an author can paste them into an Editorial Manager /\nScholarOne field, but nothing strips the markdown at that boundary — a trailing\n---, a **bold**, or a cm^2^ superscript pastes into a\n[…]\ntable) check over portal_fields/. Ships a challenge card\n(all six kinds positive vs a clean file packed with the FP traps negative),\nrun in CI.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(sync-submission): flag markdown residue in portal paste-verbatim…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T10:57:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9e6bdabfb93b4543910e862f6d488daff38f827f",
"body": "… protocol includes (#366)\n\nA screening sheet can be internally perfect — reviewers agree, Cohen's kappa is\nhigh, every PRISMA count reconciles — and still delete eligible studies in bulk,\nbecause the exclusion *code itself* excludes a study design the registered protocol\nINCLUDES. The defect sits i\n[…]\nquired protocol where the same code is correct negative),\nrun in CI. Wired into meta-analysis Phase 3f (SKILL.md automation hooks + skill.yml).\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(meta-analysis): flag a screening code that excludes a design the…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T10:33:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "be245fe0a7b27809c3c58d15fbe79bd5f611983e",
"body": "…l so it cannot drift (#365)\n\nThe \"run the gates locally before you push\" instruction lived as a hand-copied list in CONTRIBUTING\nand a global rule; validate.yml has ~170 run-steps. A copied subset drifts silently and is caught only\nby a red CI after a push — the failure this repo keeps hitting (a g\n[…]\nog unchanged, 71).\n\nDogfood: run_ci_mirror ran all 168 validate-job gates on this very tree (including its own new\nself-test step) — all green.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(ci): run_ci_mirror — the pre-push mirror that parses validate.ym…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T09:39:39Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "685cca0e98a9f214f7cab7d81fa4b565d18ab3e7",
"body": "… consensus (#364)\n\n* feat(meta-analysis): flag records that pass screening but never reach consensus\n\nscreening_reconcile.py gated one direction only. TABLE1_NOT_IN_QUALITATIVE\ncatches a study entering Table 1 from outside the pipeline. Nothing caught the\nopposite and more damaging case: a study th\n[…]\ngoes for that material.\n\nPhase 3 is now 79 lines.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(meta-analysis): flag records that pass screening but never reach…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T09:22:32Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d388fa3a320be1dd83b946c142621c0f5a7a23fe",
"body": "…(#363)\n\nTwo gates for rules the skill already stated in prose and never enforced.\n\ncheck_review_length.py. SKILL.md defines a three-tier word target, a per-Major\nline budget, a 545-word peer baseline, a ratio-over-2.0 trim flag and a 1400-word\nhard cap, then says \"measure with awk + wc\". On one liv\n[…]\nssertion that the measured count is strictly\nbelow naive wc -w on the same block.\n\nCatalog: 68 -> 70 detectors, both style_review.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(peer-review): measure the review draft instead of eyeballing it …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T09:20:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "10fb17239ad5e3602c8ece96adcd67217a39c345",
"body": "…361)\n\nscan_pdf_layers.py called doc.xref_xml_metadata(), which returns the xref\n*number* of the XMP object as an int, and passed it to re.sub(). That raises\nTypeError.\n\nA document with no XMP returns xref 0, which is falsy and skips the branch, so\nthe scan only died on PDFs that actually carry a pa\n[…]\n keeps importing without PyMuPDF so the pure helpers stay\ntestable; main() re-raises the missing dependency as the same CLI error.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(peer-review): XMP metadata read crashed the PDF injection scan (#…",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T09:10:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "be3e952fe0b9acd8a7906f28b24e9f32320b8225",
"body": "…predictor are the same construct (68→69) (#362)\n\n* feat(self-review): check_incorporation_bias — reference standard and predictor are the same construct (detector 68->69)\n\nPromoted from the review-harvest backlog. Grounding: real-failure, panel-confirmed against the data\n(72/81 benign labels were s\n[…]\n bumped — validate_catalog_consistency caught it on CI\n(Linux) after passing a stale local check. Fixed by exact-phrase replacement.\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(self-review): check_incorporation_bias — reference standard and …",
"author_name": "Yoojin Nam",
"author_login": "Yoojin-nam",
"committed_at": "2026-07-22T02:10:34Z",
"body_truncated": true,
"is_coding_agent": true
}
],
"releases_count": 51,
"commits_last_year": 808,
"latest_release_at": "2026-07-25T13:30:57Z",
"latest_release_tag": "v5.23.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 17,
"days_since_latest_release": 4,
"mean_days_between_releases": 2.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 100,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "medsci-skills",
"exists": true,
"license": "SEE LICENSE IN LICENSE",
"keywords": [
"medical-research",
"radiology",
"meta-analysis",
"systematic-review",
"reporting-guidelines",
"biostatistics",
"peer-review",
"claude-code",
"agent-skills",
"research-pipeline"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/medsci-skills",
"is_deprecated": false,
"latest_version": "5.22.0",
"repository_url": "https://github.com/Aperivue/medsci-skills",
"versions_count": 32,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 5330,
"first_published_at": "2026-06-12T04:08:04.905000Z",
"latest_published_at": "2026-07-21T10:55:56.796000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 8
}
]
},
"popularity": {
"forks": 55,
"stars": 224,
"watchers": 10,
"fork_history": {
"days": [
{
"date": "2026-04-07",
"count": 2
},
{
"date": "2026-04-08",
"count": 6
},
{
"date": "2026-04-09",
"count": 2
},
{
"date": "2026-04-11",
"count": 2
},
{
"date": "2026-04-14",
"count": 2
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-04-26",
"count": 4
},
{
"date": "2026-04-30",
"count": 1
},
{
"date": "2026-05-01",
"count": 1
},
{
"date": "2026-05-03",
"count": 1
},
{
"date": "2026-05-06",
"count": 1
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-09",
"count": 1
},
{
"date": "2026-05-10",
"count": 1
},
{
"date": "2026-05-16",
"count": 1
},
{
"date": "2026-05-18",
"count": 1
},
{
"date": "2026-05-20",
"count": 1
},
{
"date": "2026-05-26",
"count": 2
},
{
"date": "2026-05-31",
"count": 2
},
{
"date": "2026-06-03",
"count": 1
},
{
"date": "2026-06-05",
"count": 1
},
{
"date": "2026-06-10",
"count": 1
},
{
"date": "2026-06-11",
"count": 1
},
{
"date": "2026-06-15",
"count": 1
},
{
"date": "2026-06-16",
"count": 1
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-06-18",
"count": 1
},
{
"date": "2026-06-22",
"count": 1
},
{
"date": "2026-06-23",
"count": 1
},
{
"date": "2026-06-25",
"count": 2
},
{
"date": "2026-07-04",
"count": 1
},
{
"date": "2026-07-05",
"count": 1
},
{
"date": "2026-07-08",
"count": 1
},
{
"date": "2026-07-13",
"count": 1
},
{
"date": "2026-07-15",
"count": 2
},
{
"date": "2026-07-16",
"count": 1
},
{
"date": "2026-07-21",
"count": 1
},
{
"date": "2026-07-23",
"count": 1
},
{
"date": "2026-07-27",
"count": 1
}
],
"complete": true,
"collected": 55,
"total_forks": 55
},
"star_history": null,
"open_issues_and_prs": 6
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 51482,
"source_files_sampled": 290,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 421,
"open_issues": 6,
"closed_ratio": 0.625,
"closed_issues": 10,
"closed_unmerged_prs": 5
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "Yoojin-nam",
"commits": 801,
"avatar_url": "https://avatars.githubusercontent.com/u/177523188?v=4"
},
{
"type": "User",
"login": "insanehahaha",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/160002424?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.996
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"metrics.yml",
"mirror-hero-skills.yml",
"release.yml",
"validate.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "15 out of 15 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 1/16 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "738a0c191147aae0ef6a2fef3f71522b4f88ecd3",
"ran_at": "2026-07-29T15:56:58Z",
"aggregate_score": 4.2,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-29T13:12:14Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-29T13:12:00Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 115,
"created_at": "2026-06-12T04:40:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 116,
"created_at": "2026-06-12T04:40:27Z",
"last_comment_at": "2026-07-04T13:41:18Z",
"last_comment_author": "Yoojin-nam"
},
{
"number": 117,
"created_at": "2026-06-12T04:40:29Z",
"last_comment_at": "2026-07-04T13:41:19Z",
"last_comment_author": "Yoojin-nam"
},
{
"number": 118,
"created_at": "2026-06-12T04:40:30Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 119,
"created_at": "2026-06-12T04:40:32Z",
"last_comment_at": "2026-07-04T13:41:20Z",
"last_comment_author": "Yoojin-nam"
},
{
"number": 120,
"created_at": "2026-06-12T04:40:33Z",
"last_comment_at": "2026-07-04T13:41:21Z",
"last_comment_author": "Yoojin-nam"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Aperivue/medsci-skills",
"host": "github.com",
"name": "medsci-skills",
"owner": "Aperivue"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": "The weighted overall 65 is calibrated to 75 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 65,
"calibrated": 75,
"calibration": "2026-08-02"
}
}
],
"value": 75,
"inputs": {
"security": 42,
"vitality": 82,
"community": 71,
"governance": 51,
"calibration": "2026-08-02",
"engineering": 81,
"ai_readiness": 39,
"weighted_overall_raw": 65
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 82,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 76,
"inputs": {
"commits_last_year": 808,
"human_commit_share": 0.99,
"days_since_last_push": 0,
"active_weeks_last_year": 17
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "17/52 weeks with commits",
"points": 11.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 17
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "808 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 808
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 51,
"latest_release_tag": "v5.23.0",
"releases_from_tags": false,
"days_since_latest_release": 4,
"mean_days_between_releases": 2.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "51 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 51
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~2.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 2.4
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 71,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"forks": 55,
"stars": 224,
"watchers": 10,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "224 stars",
"points": 38.1,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 224
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "55 forks",
"points": 14.4,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 55
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "10 watchers",
"points": 5.3,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 10
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"readme_badge_services": [],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 62,
"inputs": {
"packages": [
"medsci-skills"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 5330
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "5,330 downloads/month across npm",
"points": 49.7,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 5330,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 51,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 12,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.996
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0.1,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 64,
"inputs": {
"merged_prs": 421,
"open_issues": 6,
"closed_issues": 10,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 0.625,
"closed_unmerged_prs": 5,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "62% of issues closed",
"points": 26.2,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 62
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "421/426 decided PRs merged",
"points": 29.6,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 421,
"decided": 426
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 1/16 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "weak",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"followers": 16,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Aperivue",
"public_repos": 5,
"account_age_days": 118
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "16 followers of Aperivue",
"points": 8.8,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 16,
"login": "Aperivue"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "5 public repos, account ~0 yr old",
"points": 6.3,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 5
}
},
{
"code": "account_age_years",
"params": {
"years": 0
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"medsci-skills"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 8
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 8 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 8
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "32 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 32
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 81,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "4 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 4
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "15 out of 15 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "exceptional",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"biostatistics",
"claude-code",
"claude-skills",
"clinical-research",
"diagnostic-accuracy",
"literature-review",
"manuscript",
"medical-ai",
"medical-research",
"meta-analysis",
"prisma",
"pubmed",
"radiology",
"systematic-review",
"reporting-guidelines",
"agent-skills",
"irb-protocol",
"physician-researcher",
"codex",
"cursor"
],
"has_wiki": true,
"homepage": "https://aperivue.com/skills",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://aperivue.com/skills",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "20 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 20
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "weak",
"name": "Security",
"value": 42,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"name": "Security posture",
"note": null,
"notes": [],
"value": 42,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 18,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 0,
"scorecard_aggregate": 4.2
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "15 out of 15 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 1/16 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "weak",
"name": "AI Readiness",
"value": 39,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "weak",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.98,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "97 of 99 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 97,
"sampled": 99
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 32,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.83,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "83 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 83,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 51482,
"source_files_sampled": 290,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/290 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 290,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"metrics_version": "2.1.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-29T15:57:18.930413Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/Aperivue/medsci-skills.svg",
"full_name": "Aperivue/medsci-skills",
"license_state": "standard",
"license_spdx": "MIT"
}