公开记录
软件健康报告模式 0.26.0 · 指标 1.13.0 · 2026-07-22 05:55 UTC

software-mansion / rnrepo

A Repository for React Native Pre-Built Artifacts

TypeScript · Kotlin · Astro未检测到许可证★ 403 星标⑂ 12 复刻始于 2025年6月在 GitHub 上查看 ↗

software-mansion/rnrepo 的健康指数为 100 分中的 62 分,处于「中等」区间。 其得分最高的类别是Engineering Quality(76/100),最低的是Security(42/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

62
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

62
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

1,604 关注者59 个公开仓库始于 2019年10月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
npm@rnrepo/build-tools0.2.189,272114 天前cocoapodsgradlereact-nativernrepoiosandroidpluginprebuildsxcframeworkaar
npm@rnrepo/expo-config-plugin0.3.586,944154 天前react-nativeexpoconfigpluginprebuildsrnrepo

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

56中等 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
27.7/36提交节奏 — 52 周中有 40 周有提交
18/18提交量 — 最近一年 342 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year342
human_commit_share0.92
days_since_last_push0
active_weeks_last_year40
评分方式
0/27有发布版本 — 未发布任何发布版本
0/36发布时效 — 没有发布版本
0/27发布节奏 — 没有发布版本
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count0
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

53中等 · 占总体的 18%
评分方式
42.2/60星标 — 403 个星标
8.7/25复刻 — 12 个复刻
0/15关注者 — 1 位关注者
所用输入
forks12
stars403
watchers1
growth_stateorganic
growth_factor_pct100

社区健康

32存在风险
评分方式
22.5/22.5README
0/22.5许可证 — 未检测到许可证文件
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
6.3/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
69.9/80月度下载量 — npm 合计每月 176,216 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packages@rnrepo/build-tools, @rnrepo/expo-config-plugin
dependents
ecosystemsnpm
total_downloads
monthly_downloads176,216
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

75良好 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
6.4/22.5提交分布 — 头号贡献者编写了 72% 的提交
13.5/13.5贡献者广度 — 14 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 7 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled14
top_contributor_share0.716
评分方式
46.8/46.8议题解决 — 100% 的议题已关闭
35.3/38.3PR 接受 — 已裁定的 PR 中 319/346 已合并
15/15OpenSSF Scorecard:Code-Review — all changesets reviewed
所用输入
merged_prs319
open_issues0
closed_issues64
issue_closed_ratio1
closed_unmerged_prs27
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
23/25所有者影响力 — software-mansion 有 1,604 位关注者
24.9/25既往记录 — 59 个公开仓库,账户约 6 年
所用输入
followers1,604
owner_typeOrganization
is_verified
owner_loginsoftware-mansion
public_repos59
account_age_days2,464
评分方式
25/25已发布且可解析 — npm 上有 2 个软件包
35/35发布时效 — 最近一次发布于 4 天前
20/20版本历史 — 15 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packages@rnrepo/build-tools, @rnrepo/expo-config-plugin
ecosystemsnpm
any_deprecated
min_days_since_publish4

工程质量

基础的工程与文档实践是否到位?

76良好 · 占总体的 20%

工程实践

90优秀
评分方式
24/24CI 工作流 — 14 个工作流
24/24存在测试
16/16Linter 配置 — .eslintrc.js
0/9.6Pre-commit 钩子
6.4/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

55中等
评分方式
30/30README
0/25文档目录
15/15文档 / 主页站点 — http://rnrepo.org/
10/10仓库描述
0/10主题标签
0/10Wiki
所用输入
topics
has_wiki
homepagehttp://rnrepo.org/
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

42存在风险 · 占总体的 16%

安全态势

42存在风险
评分方式
6.8/7.5Binary-Artifacts — binaries present in source code
4.5/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 7 contributing companies or organizations
0/10Dangerous-Workflow — dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5许可证 — license file not detected
7.5/7.5Maintained — 30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
4.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 100 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4.2
已排除计分(无数据或不适用):signed_releases。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

68中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 92 次人类提交中有 92 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
评分方式
12.6/18一条命令的引导启动 — packages/build-tools/gradle-plugin/build.gradle(工具链约定,无任务运行器)
22/22自动化测试
11/11Lint / 格式化配置 — .eslintrc.js
11/11静态类型检查 — packages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json
0/10可复现环境
10/10已体现的代理实践 — 最近 100 次提交中有 13 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
9/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configspackages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json
agent_commit_share0.13
toolchain_manifestspackages/build-tools/gradle-plugin/build.gradle
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
55/55可控的文件大小 — 采样的 60 个源文件中有 0 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes56,925
source_files_sampled60
oversized_source_files0

关键数据

403GitHub 星标
14贡献者
342最近 12 个月提交数
0距最近推送天数
0发布版本数
1巴士系数(bus factor)
0开放议题
npm软件包生态系统数

数据采集警告

  • Could not fetch npm package '@rnrepo/builder' from its registry
  • Could not fetch npm package '@rnrepo/publisher' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index npm:@rnrepo/build-tools@0.2.1; advisories assessed against the repository dependency graph instead

更多细节

Star 与 Fork 历史 403 ★ / 12 ⇿
403Star
12Fork

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

010020030040050040312822025-122026-032026-07
OpenSSF Scorecard 4.2 / 10
4.2综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-22 05:55 UTC

9Binary-Artifactsbinaries present in source code
6Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 7 contributing companies or organizations
0Dangerous-Workflowdangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
9Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 9
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities100 existing vulnerabilities detected
直接依赖 25
注册表软件包版本约束清单文件
npmcommander^13.1.0package.json
npmsemver^7.7.4package.json
npmzx^8.6.0package.json
npmcommander^13.1.0packages/builder/package.json
npm@rnrepo/configworkspace:*packages/builder/package.json
npmzx^8.6.0packages/builder/package.json
npm@rnrepo/configworkspace:*packages/database/package.json
npm@supabase/supabase-js^2.47.0packages/database/package.json
npm@expo/config-plugins*packages/expo-config-plugin/package.json
npm@expo/config-types*packages/expo-config-plugin/package.json
npm@rnrepo/build-tools0.2.1packages/expo-config-plugin/package.json
npm@octokit/rest^22.0.0packages/publisher/package.json
npm@rnrepo/configworkspace:*packages/publisher/package.json
npm@rnrepo/databaseworkspace:*packages/publisher/package.json
npmcommander^13.1.0packages/publisher/package.json
npmzx^8.6.0packages/publisher/package.json
npm@octokit/plugin-paginate-rest^14.0.0packages/scheduler/package.json
npm@octokit/rest^22.0.0packages/scheduler/package.json
npm@rnrepo/configworkspace:*packages/scheduler/package.json
npm@rnrepo/databaseworkspace:*packages/scheduler/package.json
npmsemver^7.7.3packages/scheduler/package.json
npmastro^4.16.6packages/website/package.json
npmlucide-astro^0.555.0packages/website/package.json
npmshiki^3.17.1packages/website/package.json
npm@rnrepo/databaseworkspace:*packages/website/package.json
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 6169,
      "has_wiki": false,
      "homepage": "http://rnrepo.org/",
      "languages": {
        "CSS": 245,
        "Ruby": 38224,
        "Astro": 91994,
        "Kotlin": 97031,
        "PLpgSQL": 4659,
        "JavaScript": 2146,
        "TypeScript": 182923
      },
      "pushed_at": "2026-07-21T10:58:17Z",
      "created_at": "2025-06-06T14:38:35Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T12:45:11Z",
      "description": "A Repository for React Native Pre-Built Artifacts",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Kotlin",
        "Astro"
      ]
    },
    "owner": {
      "blog": "https://swmansion.com",
      "name": "Software Mansion",
      "type": "Organization",
      "login": "software-mansion",
      "company": null,
      "location": "Kraków, Poland",
      "followers": 1604,
      "avatar_url": "https://avatars.githubusercontent.com/u/56880679?v=4",
      "created_at": "2019-10-22T13:58:01Z",
      "is_verified": null,
      "public_repos": 59,
      "account_age_days": 2464
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "d4af2edf88e5932f53d8ad4f64db5386dbe1091d",
          "body": "## 📝 Description\n\nDue to failing jobs:\n-\nhttps://github.com/software-mansion/rnrepo/actions/runs/29537171571/job/87751132245",
          "is_bot": false,
          "headline": "update npm version to 24 (#417)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-17T09:00:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a8f8bb5382672a69457bdf43fed30ff1f72350a",
          "body": "## 📝 Description\n\n- @rnrepo/build-tools@0.2.1\n- @rnrepo/expo-config-plugin@0.3.5\n\n> Note changelog for @rn/bt will be added after merging entry from #415",
          "is_bot": false,
          "headline": "release 0.2.1 and 0.3.5 (#416)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-16T21:44:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c241fa195e88836c08d5b32f8fe7be69eb84ca76",
          "body": "## 📝 Description\n\nnew reanimated versions, remove unnecessary patch version in\nlibraries.json\n\n-\nhttps://docs.swmansion.com/react-native-worklets/docs/guides/compatibility\n-\nhttps://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility/\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Update reanimated and worklets compatibility (#414)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-16T21:40:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "78649d112259cb9d9d60fd4056a5319c98590e3a",
          "body": "## 📝 Description\n\nIt was set as found after first try, not after a successful try",
          "is_bot": false,
          "headline": "Set RN version as found only when it was found (#415)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-16T21:38:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f597517072a2a8c4fedd44d32183a9e1c71ef872",
          "body": "## 📝 Description\n\nFixes #412",
          "is_bot": false,
          "headline": "Update fingerprint pattern in docs (#413)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-15T09:21:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e0bb28c17eb18800b950cb68c1fb6e762772b12",
          "body": "## 📝 Description\n\navoid failures like:\n```\nShellError: Failed with exit code 1\n exitCode: 1,\n   stdout: \"\",\n   stderr: \"npm error code ETARGET\\nnpm error notarget No matching version found for react-native-worklets@0.10.2 with a date before 7/5/2026, 12:20:15 PM.\\nnpm error notarget In most cases yo\n[…]\ngs/2026-07-09T12_20_15_394Z-debug-0.log\\n\",\n```\n> rnworklets were released 12h ago, so 4days-min-age failed\n\nsource:\nhttps://github.com/software-mansion/rnrepo/actions/runs/29012220481/job/86098364112",
          "is_bot": false,
          "headline": "dont schedule libs newer than min-release-age (#410)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-10T10:09:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8ce37a77a76f6a92e4f1b09d296f3793e33d9445",
          "body": "## 📝 Description\n\nChange image source to local file in README - updated image in #403",
          "is_bot": false,
          "headline": "Change image source to local file in README (#411)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-10T09:30:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9cac889292360cf92a0ad39b02d9a3cf944cd2c",
          "body": "## 📝 Description\n\nThis reverts commit 4bf26c483f99bcdf9279c28a0ca0f9632f2a3c9d.\n\nreverts #405\n\nversions used from:\nhttps://www.npmjs.com/package/react-native-screens#:~:text=x%20branch.-,Support%20for%20Fabric,-Fabric%20is%20React",
          "is_bot": false,
          "headline": "Revert \"disable building screens until merging the fix (#405)\" (#407)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-09T11:52:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "868b9e09e3fd367c75387c4313e8df33fcc6069b",
          "body": "## 📝 Description\n\ncircular dependency in android with `evaluationDependsOn(':app')` also\nremoving the artifacts\n\nFixes #408",
          "is_bot": false,
          "headline": "remove @notifee/react-native (#409)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-09T10:35:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bf26c483f99bcdf9279c28a0ca0f9632f2a3c9d",
          "body": "## 📝 Description\n\n- issue in https://github.com/software-mansion/rnrepo/issues/376\n- Fix in\nhttps://github.com/software-mansion/react-native-screens/pull/4224\n\nRevert of this commit in\nhttps://github.com/software-mansion/rnrepo/pull/406",
          "is_bot": false,
          "headline": "disable building screens until merging the fix (#405)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-06T13:41:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfab364117d16dfbf9f90f783dfe5146a24ffbd9",
          "body": "## 📝 Description\n\nremove beta label from readme png",
          "is_bot": false,
          "headline": "remove beta label from readme png (#403)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-06T13:41:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01adc86bfbcb631f100ea53bca778b399d5dd9fe",
          "body": "## 📝 Description\n\nremove rn <0.81 since codegen builds will fail for those\n\n## 🧪 Testing\n\npatch is successfully applied for all react-native@>=0.81 versions.\n```\n PATCH COMPATIBILITY RESULTS\nRN VERSION    RESULT\n──────────────────────────────────\n0.77.3        ✗ patch mismatch\n0.78.3        ✗ patch \n[…]\natch\n0.81.0        ✓\n0.81.1        ✓\n0.81.4        ✓\n0.81.5        ✓\n0.81.6        ✓\n0.82.0        ✓\n0.82.1        ✓\n0.83.0        ✓\n0.83.1        ✓\n0.83.2        ✓\n0.83.4        ✓\n0.84.0        ✓\n```",
          "is_bot": false,
          "headline": "remove non-codegen RN versions: <0.81  (#402)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-06T13:41:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb7dee19b9ce3ccd0204e68ca7c504227f9d38b2",
          "body": "## 📝 Description\n\nMinor to 0.2.0 since this introduces the codegen usage for android\npackages\n- @rnrepo/expo-config-plugin@0.3.4\n- @rnrepo/build-tools@0.2.0",
          "is_bot": false,
          "headline": "bump versions before release (#400)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T13:46:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f0ca2174b9616a02a19de29427e02cbec95a7a3",
          "body": "## 📝 Description\n\nWhen 2 labels were added at same time ci ignored one of them because of\nonly last even was processed so only one platform was launched.\n```\n... contains(fromJSON('[\"build-ios\", \"build-expo\"]'), github.event.label.name)). \n                                                            \n[…]\ngithub.event.label.name` was kept in checker job to avoid triggering\nbuilds when other label is added, like \"bug\" etc\n\nLogic stays the same and changes are only for pr checks for dev, not\nuser-facing.",
          "is_bot": false,
          "headline": "fix ci example builds when 2 labels are added at the same time (#401)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T12:44:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c141d21b1cfa6e6b25518804417ecb7e0ca5a942",
          "body": "## 📝 Description\n\n~~180 builds will be scheduled~~\n\nWAIT UNTIL RNAA migrate to worklets stable api to schedule the builds\nI have released one version to maven with request of specific\nRN+RNWorklets+RNAA so i want to keep the plugins compatible with that\nversion\n\nchanges:\n- integration with worklets \n[…]\n\n\n- tested app on ios/android and worked with \n  - rn@0.85.3\n  - rnaa@0.12.2\n  - with expo@56\n  - worklets@0.9.1 (from sources) and from prebuild\n  - examples from docs (with worklets and without too)",
          "is_bot": false,
          "headline": "support react-native-audio-api in plugins (#399)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T12:34:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7fdaeeb56f71b013f715769b9ca8d9a2a80f54d3",
          "body": "## 📝 Description\n\nexpo@+55/56 enables gamma, so we need to build that too",
          "is_bot": false,
          "headline": "build react-native-screens with gamma=true (#398)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-07-03T12:32:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33b58954a36d8db734db2fdda7482b89c46aee96",
          "body": "## 📝 Description\n\nPR adding codegen artifacts (static libs and headers) as parts of\nlibrary `.aar` and implementing:\n- packing all of it to `.aar`\n- unpacking them in client project\n- linking them instead of building them from source by:\n- removing library occurences from `Android-autolinking.cmake`\n[…]\n.81.6        ✓\n0.82.0        ✓\n0.82.1        ✓\n0.83.0        ✓\n0.83.1        ✓\n0.83.2        ✓\n0.83.4        ✓\n0.84.0        ✓\n```\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "feat: codegen in android packages (#206)",
          "author_name": "Wojciech Lewicki",
          "author_login": "WoLewicki",
          "committed_at": "2026-06-30T14:14:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8481b5645d9aa337c54abfa54ba4b1c045d73096",
          "body": "## 📝 Description\n\nSome rows show no versions supported due to selector bug\n\n## 🧪 Testing\n\nastro build with DB auth for fetching data, before:\n<img width=\"735\" height=\"605\" alt=\"Zrzut ekranu 2026-06-26 o 17 39 43\"\nsrc=\"https://github.com/user-attachments/assets/497599ad-21d9-4474-b717-1a30d2ad7a88\"\n/>\n\nafter there are libs listed",
          "is_bot": false,
          "headline": "fix missing/empty rows in supportedLibraries (#397)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-29T09:36:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74969b682436c692f7dbd3b80ab2637dba2f3b5b",
          "body": "## 📝 Description\n\nUpgrade Xcode if needed: Xcode 26.4 is required to compile a native iOS\nproject. For EAS Build and Workflows, profiles without any specified\nimage will default to Xcode 26.4.\n- source: https://expo.dev/changelog/sdk-56#tool-version-bumps\n- failed build:\nhttps://github.com/software-\n[…]\nm taking\nthe latest 26.3, which also fixes the issue\n\n## 🧪 Testing\n\n- failed build:\nhttps://github.com/software-mansion/rnrepo/actions/runs/28091482981/job/83170331566\n- passed build on this pr checks",
          "is_bot": false,
          "headline": "bump xcode 26.1 -> 26.3 (#395)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-24T11:01:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09ddd4df4adaa282ad9a7fffcc91694ae42f9383",
          "body": "## 📝 Description\n\nNo more build floods should appear, so no need to use extra runners\n\nintroduced in #291",
          "is_bot": false,
          "headline": "Return to GH macOS runners (#394)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-24T10:15:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f50e949e247a339cbb43ddad0f962666c13673c",
          "body": "## 📝 Description\n\nbump versions before release\n- @rnrepo/build-tools@0.1.6\n- @rnrepo/expo-config-plugin@0.3.3",
          "is_bot": false,
          "headline": "bump versions before release (#386)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-23T13:51:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0bdb07f5ba485bf9dd668f932684e3d4a2a4881",
          "body": "## 📝 Description\n\nAdding `allowList` support to both the Android Gradle plugin and iOS\nCocoaPods plugin as a complement to the existing `denyList`.\n\nWhen a project has many dependencies but only wants a subset prebuilt,\n`denyList` required listing every excluded package manually. The new\n`allowList`\n[…]\nError - RNRepo: Both 'denyList' and 'allowList' are configured\nfor iOS in rnrepo.config.json. Please use only one of them.\n    ```\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "feat: add allowList support for iOS and Android (#383)",
          "author_name": "lxr-mwhite",
          "author_login": "lxr-mwhite",
          "committed_at": "2026-06-23T13:45:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8f67ec83b4dd6fd1c0e6178065dc7bdad1606ff8",
          "body": "… (#393)\n\n## 📝 Description\n\nWith removed metadata the top-level functions will not be resolved when\naar is consumed.\n- Top-level functions in nitro-modules that caused error:\n-\nhttps://github.com/mrousavy/nitro/blob/main/packages/react-native-nitro-modules/android/src/main/java/com/margelo/nitro/cor\n[…]\npo-modules-core@56.0.17\n      - ❓ @expo/log-box@56.0.13\n      - ❓ expo-constants@56.0.18\n      - ❓ expo@56.0.12\n      - ❓ react-native-reanimated@4.3.1\n      - ❓ react-native-nitro-image@0.15.1\n   ```",
          "is_bot": false,
          "headline": "Dont remove `META-INF/` and `*.kotlin_module` files when building AAR…",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-23T13:36:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d5f6b11e666fe028d8f0686b71e8c137f1dcd1eb",
          "body": "## 📝 Description\n\nAdded support for:\n- react-native-quick-crypto\n-\nhttps://www.npmjs.com/package/react-native-quick-crypto?activeTab=versions\n  - only for <1.0.0 since later versions uses nitro\n  - #382\n- @sentry/react-native\n- https://www.npmjs.com/package/@sentry/react-native?activeTab=versions\n  \n[…]\nvents@2.2.0\n  - ```\n✅ Successfully built AAR for react-native-calendar-events@2.2.0 with RN\n0.85.0\n✅ Successfully built static XCFramework for\nreact-native-calendar-events@2.2.0 with RN 0.85.0\n    ```",
          "is_bot": false,
          "headline": "Support new libs (#388)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-23T11:05:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bea61a6ff071532f2f27355cca4c3502c9e7aecf",
          "body": "## 📝 Description\n\nAllow libs with license format `(<l1> AND <l2>)` to be builded (mmkv had\nthat case)\n- checks license field in package.json (like previously)\n- if grep (<l1> AND <l2>)\n  - checks if both licenses are supported\n    - it true, then builds and adds to .pom file both licenses \n\nI haven'\n[…]\nBSD-3-Clause-Clear, BSD-2-Clause. You can configure a custom license with MD5 hash verification in libraries.json.\n```\nafter\n```\n✅ Successfully built AAR for react-native-mmkv@3.3.0 with RN 0.83.0\n```",
          "is_bot": false,
          "headline": "support licenses in other SPDX format (#387)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T09:35:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ecc0561ad4cc1a773fc91bdfac1632f90d5f08c2",
          "body": "## 📝 Description\n\nFix a YAML syntax typo in the issue template. Since GitHub doesn't\nprovide a template preview, I had to verify the fix in a fork.\n\nFixes #377\n\n## 🧪 Testing\n\n**Before:** The Bug issue template did not appear in the \"New Issue\"\ndialog.\n\n**After:** The Bug issue template is displayed correctly again.",
          "is_bot": false,
          "headline": "fix typo in bug-issue-template (#390)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T09:31:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4f5b1a470afa090143f9f35c11c3772fd2fca5a",
          "body": "## 📝 Description\n\nMany unuseful info and very annoying to fill when reporting",
          "is_bot": false,
          "headline": "simplify issue reports templates (#377)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T09:00:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b61c889326de0e625655c14ea04e3870c7a4398",
          "body": "## 📝 Description\n\nRN does the same. This fixes `@notifee/react-native` ios building.\n\nRCA was the `bun.Glob` that returns files in different order than `npx\nreact-native config` so to make it reliable it will use same tools as RN\nproject.\n\npod install output:\n```\n...\nlink_native_modules! {:ios_packa\n[…]\nlibrary-ios.ts @notifee/react-native 9.1.8 0.85.0 /tmp/temp_notifee\n...\n📱 Building library pod: RNNotifee\n...\n✅ Successfully built static XCFramework for @notifee/react-native@9.1.8 with RN 0.85.0\n```",
          "is_bot": false,
          "headline": "find podspec via `npx react-native config` (#389)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-22T08:45:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9ea9ac64608b700dda2f80a8b9dc6e1626818c9",
          "body": "## Summary\n\nFix RNRepo prebuild dependency substitution so package names are matched\nexactly instead of by substring.\n\nThis prevents packages with shared Gradle-name prefixes from being\nsubstituted to the wrong prebuilt artifact. One concrete case is React\nNative Firebase: `react-native-firebase_app\n[…]\n\nApp Check correctly:\n```\nproject :react-native-firebase_app-check -> org.rnrepo.public:react-native-firebase_app-check:23.8.8\n```\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Fix RNRepo prebuild substitution prefix matching (#385)",
          "author_name": "Oskar Pawica",
          "author_login": "pawicao",
          "committed_at": "2026-06-16T13:44:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cab8793828abf98fdc9323524f9bc06199ec90c5",
          "body": "## 📝 Description\n\nbump packages before release and bump expo ci version \n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "release build-tools@0.1.5 & expo-config-plugin@0.3.2 (#359)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T13:28:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75a2384327006dea0415c9f0e8c3030cfb1f24ce",
          "body": "## 📝 Description\n\nRelocate the primary cache directory from node_modules/.rnrepo-cache to:\n- default:  ~/.rnrepo-cache/ \n- proviede in rnrepo.config.json[\"xcframeworksCacheDir\"]:\n\"/path/to/cache\"\n- disabled caching via rnrepo.config.json[\"xcframeworksCacheDir\"]: \"\" |\nnull\n\nso it can be cached by runner CI.\n\n#334 \n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "Move xcframework cache to project level (#338)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T13:15:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "930597f56af7770cb56d14f3fdcb3d0f69f0d1da",
          "body": "## 📝 Description\n\nMoves the concurrency group and cancel-in-progress flag from the\nindividual Android build job to the global workflow scope.\n\nThis fixes a race condition where newer commits were being canceled\ninstead of older ones due to the `needs: check-changes` dependency. Now,\nthe entire previ\n[…]\n\n  - hash: 8575dc89a2ae574c5a8c6ac330b586c8558fd396 \n  - pushed when previous build was running\n  - ci on this commit were cancelled (concurrency) - wrong\n    - ci old commit was not cancelled - wrong",
          "is_bot": false,
          "headline": "move concurrency configuration to global workflow level (#370)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T12:53:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "666f9bb15dbf1d9fc0b973d1bbe335c8421a8c5d",
          "body": "## 📝 Description\n\n- rngh@3.0.0 have introduced the Compatibility with React Native\nversions:\n-\nhttps://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation\n- worklets 0.7.4 have rn@0.84 \n- compatibility.json: \"react-native\": [\"0.79\", \"0.80\", \"0.81\", \"0.82\",\n\"0.83\", \"0.84\"]",
          "is_bot": false,
          "headline": "update rngh libraries (#375)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-12T12:53:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7587796b1551b8007b82daeeeeaea5c228798cd3",
          "body": "…ods objects (#373)\n\n## 📝 Description\n\nFixes #362.\n\nOn iOS, the cocoapods plugin injects an `[AA RUN FIRST] RNREPO Build\nStart` shell-script build phase into every prebuilt pod target during\n`post_install`. Those phases were created with\n`target.new_shell_script_build_phase`, which mints UUIDs throu\n[…]\noutside rnrepo's\ncontrol and can't ship on a useful timeline; the right scope for this PR\nis for rnrepo to stop being the trigger.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "fix(ios): mint RNREPO build-phase UUIDs without colliding with CocoaP…",
          "author_name": "Konrad Armatys",
          "author_login": "konrad-armatys",
          "committed_at": "2026-06-12T12:45:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4ed353282315fa76c41c536590c59988dc45dea3",
          "body": "…C++ dependency check) (#372)\n\n⚠️ This was generated by a LLM ⚠️\n## Summary\n\nFixes #371.\n\nOn debug builds, the C++ dependency compatibility check registered in\n`gradle.projectsEvaluated` iterated `PACKAGES_WITH_CPP.keys` with a\n`parallelStream()`. `checkDependencies` then realizes each subproject's\n\n[…]\nlogs. On plugin 0.2.2 the same loop failed ~40% of runs\nwith the NPE above.\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Fix intermittent \"collector is null\" NPE in debug builds (sequential …",
          "author_name": "Camille Barneaud",
          "author_login": "gadcam",
          "committed_at": "2026-06-12T11:49:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8575dc89a2ae574c5a8c6ac330b586c8558fd396",
          "body": "## 📝 Description\n\nSwitches the build configuration detection mechanism from matching the\n`$CONFIGURATION` name to checking `$GCC_PREPROCESSOR_DEFINITIONS` for\n`DEBUG=1`.\n\nMatching solely on `$CONFIGURATION == \"Debug\"` is unreliable because\nprojects often define custom build configurations (e.g., \"St\n[…]\nh\n\n$ npx expo run:ios --configuration Custom.re\n...\n$ realpath node_modules/react-native-worklets/.rnrepo-cache/Current/dummy.h\n.../node_modules/react-native-worklets/.rnrepo-cache/Release/dummy.h\n```",
          "is_bot": false,
          "headline": "Detect debug configuration using GCC preprocessor definitions (#367)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:22:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "033bcc45f0c28c6dab59f0d021c957c67c5aeeec",
          "body": "## 📝 Description\n\n2.25.0 and +3.0.0 builds failed due to patch applying failures. Only\ndiffs in .patch files are single lines:\n```\n$ diff react-native-gesture-handler.patch react-native-gesture-handler_2.25.0.patch\n\n62c62\n< @@ -1,65 +1,14 @@\n---\n> @@ -1,67 +1,14 @@\n95c95,97\n< -    fun isSvgElement(v\n[…]\nt-native-gesture-handler_3.0.0.patch\n\n29c29\n<\n---\n>\n36,38c36,38\n<\n<              if (isNewArchitectureEnabled()) {\n<                  srcDirs += 'fabric/src/main/java'\n---\n>          }\n>      }\n>\n\n```",
          "is_bot": false,
          "headline": "fix rngh patch for 2.25.0 and +3.0.0 (#364)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:22:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a2c1e2e2aa2b0deaf528cdea3aa0fcae0cf273eb",
          "body": "## 📝 Description\n\nreduce unused pr template",
          "is_bot": false,
          "headline": "delete pr 'type of change' template (#365)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:21:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67ba32657885084ebb33da601bf65316cf9e5640",
          "body": "## 📝 Description\n\nCloses #360\n\n## 🧪 Testing\n\n```\nbun run build-library-android.ts react-native-gesture-handler 24.1.0 0.83.6 /tmp/TEMP_fire_conf\n...\n✅ Successfully built AAR for @react-native-firebase/remote-config@24.1.0 with RN 0.83.6\n```",
          "is_bot": false,
          "headline": "add support for @react-native-firebase/remote-config (#366)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-11T13:21:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f368e1c522ba2b2bacc98c47387ca189bee0d1e",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\n## Testing\n\nTested app\n```\nnpx @react-native-community/cli@latest init AwesomeProject_860 --version 0.86.0\n```\n\nWi\n[…]\n debug and release builds on both android and ios\n\n---------\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#369)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-10T11:35:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0f251fe2d17444fa04b9193e96d74b416bbeebd4",
          "body": "## 📝 Description\n\nFixes #351.\n\nThe CocoaPods post-install hook currently injects an ExpoModulesCore\nmodule map path that assumes the prebuilt RNWorklets framework is named\n`RNWorklets.framework`. `react-native-worklets` packages the inner\nframework as `worklets.framework`, so the generated path poin\n[…]\ndulesCore should receive the module map flag pointing at the\nactual framework name inside the RNWorklets XCFramework intermediate.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "fix: resolve worklets framework module map (#352)",
          "author_name": "lmlm",
          "author_login": "popsiclelmlm",
          "committed_at": "2026-06-03T12:51:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d43f12344129cd7cf30de9f4faeaae0b2a58d8be",
          "body": "## 📝 Description\n\nUpdate reanimated-worklets versions like defined:\n-\nhttps://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility\n-\nhttps://docs.swmansion.com/react-native-worklets/docs/guides/compatibility/\n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support",
          "is_bot": false,
          "headline": "update reanimated@4.4 and worklets@0.9 relations (#356)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-02T11:08:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00b19e5a4588321216d1a0f31d2fac958d16bae6",
          "body": "## 📝 Description\n\nFix ogimage path for better preview in e.g. twitter posts (before was\nblank image, now should provided image appear)\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Fix og-image path for twitter (#357)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-06-02T10:53:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d84f3ed91864a84556672aa5372f004c705e8c06",
          "body": "## 📝 Description\n\nAdds banners to the readme. They are currently hidden.",
          "is_bot": false,
          "headline": "Add readme banners (#353)",
          "author_name": "Paweł Małecki",
          "author_login": "p-malecki",
          "committed_at": "2026-06-02T10:32:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1979d191fccc3ee14bed4bbd27da99414ed53f33",
          "body": "## 📝 Description\n\nReduce unnecessary builds runs for prs that change comments or minor\nstuff.\n\n#### Code explanation\n\n```\n  check-changes:\n\n    # this allows to run jobs on main-push and workflow_dispatch or non-draft PRs \n    if: github.event_name != 'pull_request' || !github.event.pull_request.dra\n[…]\nt_name == 'pull_request' && contains(fromJSON('[\"build-android\", \"build-expo\"]'), github.event.label.name))\n```\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "trigger builds only when PR is labeled (#343)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-22T14:18:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f9935368bda264fdf36db87053dad53283513643",
          "body": "## 📝 Description\n\n\n\n\nRemove iOS support for `react-native-permissions`\n\n`react-native-permissions` requires all used permissions to be\nexplicitly configured during `pod install`, which makes it impossible to\nprebuild and distribute all possible permission permutations.\n\nIncluding all permission hand\n[…]\nen.\n\nExample runtime crash:\n\n```text\nThis app has crashed because it attempted to access privacy-sensitive data without a usage description.\n```\n\n#347\n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support",
          "is_bot": false,
          "headline": "remove support for iOS in `react-native-permissions` (#349)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-22T11:41:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce4482b86bc983b4a24d361be6ccb58245a872a8",
          "body": "## 📝 Description\n\n7d is not a vaild option (but was mentioned in\n[article](https://www.armorcode.com/blog/defending-against-npm-supply-chain-attacks-a-practical-guide)).\njust '7' is still refering to elapsed days, so no functional changes\nhere. This caused issues in packages publishing:\n-\nhttps://gi\n[…]\n/rnrepo/actions/runs/26230821967/job/77190410179\n\ndocs: https://docs.npmjs.com/cli/v11/using-npm/config#min-release-age\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)",
          "is_bot": false,
          "headline": "exclude @rnrepo libs from 7 days npm limit (#350)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-22T09:20:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9540d97948e24ece8f32bb31ce4407844bd5c05b",
          "body": "## 📝 Description\n\nBump versions before release:\n- @rnrepo/build-tools@0.1.4\n- @rnrepo/expo-config-plugin@0.3.1\n\nAnd remove any `beta` labels in docs/website\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "bump versions before release and removed beta labels (#344)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-21T13:55:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2000f5d22fedafb98451f10c5c297a7c7b2b3eed",
          "body": "## 📝 Description\n\nbuild ts code before running it. it was failing in some ci runs:\n```\nPluginError: Unable to resolve a valid config plugin for @rnrepo/expo-config-plugin.\n• main export of @rnrepo/expo-config-plugin does not appear to be a config plugin: the following error was thrown when importing\n[…]\n/runner/work/rnrepo/rnrepo/packages/expo-config-plugin/app.plugin.js: Cannot find module './build/withRNRepoPlugin'\n```\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)",
          "is_bot": false,
          "headline": "ci: build plugin before using in project (#342)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-21T12:03:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a0a99963a6e544c565d82aaa10ad2e99c9a3ce5a",
          "body": "## 📝 Description\n\nPorts the Android `stripVersionToCore` fix from #147 to the CocoaPods\nplugin. `react-native-tvos` versions like `0.83.2-0` were being passed\nthrough unchanged when building prebuilt artifact URLs, producing 404s\non the rnrepo server (the published artifacts use the core form\n`rn0.8\n[…]\n fall back to source.\n3. **After:** plugin requests `…-rn0.83.2-…xcframework.zip` → prebuilt\nframeworks are downloaded and cached.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Support react-native-tvos on iOS (#345)",
          "author_name": "Konrad Armatys",
          "author_login": "konrad-armatys",
          "committed_at": "2026-05-21T11:57:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7c6ef0a5ebe4f85d1f1a234ffd5b8c22ac21fd09",
          "body": "## 📝 Description\n\nThe iOS Cocoapods plugin loaded `rnrepo.config.json` from the directory\none level above the Podfile (i.e. the package root). That works in a\nsingle-app project where the config sits next to the `ios/` folder, but\nin a monorepo where the config lives at the repo root (alongside hois\n[…]\n rnrepo.config.json from\n<repo-root>/rnrepo.config.json` followed by `⊘ Denied from pre-builds\n(...)` listing the denied packages.\n\n---------\n\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": false,
          "headline": "Support global rnrepo.config.json on iOS (#346)",
          "author_name": "Konrad Armatys",
          "author_login": "konrad-armatys",
          "committed_at": "2026-05-21T11:57:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9c6022de99875cfc4fe1947c418c6e604ec3b719",
          "body": "## 📝 Description\n\nFix important issues created by cli tool `zizmor`\n\nChanges:\n- added timeouts\n- added concurrency blocks\n- added permissions blocks\n- added persist-credentials false in checkout\n- changed actions usage based on tags (like `v4`) to commits SHA (and\nverified with pinact cli)\n- changed inserting input to command to providing input as env flag\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "CI hardening (#341)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-21T08:42:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcb5223584cc791d984e1d0d83b893743b04474d",
          "body": "## 📝 Description\n\nsecurity feature\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "use min-release-age=7d in .npmrc (#340)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T12:48:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "84015a4a859d50a4214b7c69c86b29dbc49ee709",
          "body": "## 📝 Description\n\nIn rare cases, some build settings are defined as arrays, which can\ncause rnrepo to fail with\n\n```\n[!] An error occurred while processing the post-install hook of the Podfile.\n\nno implicit conversion of String into Array\n\n<>/node_modules/@rnrepo/build-tools/cocoapods-plugin/lib/plugin.rb:443:in 'Array#+'\n```\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Handle Xcode settings in both array and string formats. (#330)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T12:00:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e37acc81f5206b3e7b4bb50384aea8c086297a45",
          "body": "## 📝 Description\n\nBuild expo and rn apps to check if everything works. Build for both\nAndroid and iOS and both Debug and Release.\n\n## 🎯 Type of Change\n\n- [x] 🧪 Test addition/modification\n\n## 🧪 Testing\n\nworkflow CI passes",
          "is_bot": false,
          "headline": "run expo and rn app building in CI (#335)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T11:56:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96397136609535b9ebb433bf610423865b8a6752",
          "body": "## 📝 Description\n\nold reanimated issue in ci\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "new known-issues to workflow (#331)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T11:55:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa5ddda035460c4c45081868e9517660e4c1d772",
          "body": "## 📝 Description\n\nreduce the number of replicated log lines\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "resolve gradle maven repositories just once (#337)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-05-19T11:52:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ca8ce8049452d382b1a06afbd665dae7f6b8716",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#332)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-07T08:17:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "540f098f5a2394c3bcff2689063685c47ee1bd69",
          "body": "## 📝 Description\n\nRelease:\n- support for EMC\n- new reanimated@+4.3.0 support\n- incorporated maven url into plugin\n\n## Tested\n\n- Projects: \n    - `$ npx create-expo-app@latest --template default@sdk-54 my-app-54`\n    - `$ npx create-expo-app@latest --template default@sdk-55 my-app-55`\n- `$ npx @react\n[…]\n - / ✅ / -\n    - react-native@0.84:\n        - android: ✅ / - / ✅ / ✅ / -\n        - ios: - / - / ✅ / ✅ / -\n    - react-native@0.85:\n        - android: ✅ / - / ✅ / - / -\n        - ios: - / ✅ / ✅ / - / -",
          "is_bot": false,
          "headline": "bump versions before release (#325)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-30T12:50:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d4bced3c2ebdb182187a8464b29826aebe94f034",
          "body": "…328)\n\n## 📝 Description\n\nFor example, inside a react-native-reanimated repository itself symlinks\nto react-native-reanimated package exist in `node_modules`, while the\nactual source is located in `packages/` - this results in\nreact-native-gesture-handler builded from sources due to the illusionary\na\n[…]\n_modules` from package's absolute path\n- changed `allprojects` to `subprojects` to exclude app's gradle project\nfrom being tried to be substituted\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Allow packages to be resolved from locations beyond `node_modules` (#…",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-30T12:42:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35e4619c7a45804fc407b0c5a84e4b8d976bc2df",
          "body": "## 📝 Description\n\nIn `mvn deploy-file`, the `-packaging` argument was not used in version\n3.1.2 (bug) which was fixed in later versions (currently worklfow uses\n3.1.4). apache/maven-deploy-plugin/issues/576\n\nIt caused the iOS artifacts to be deployed with various extensions:\n- old and wrong: `<artif\n[…]\nns/runs/25053999050\n- publish:\nhttps://github.com/software-mansion/rnrepo/actions/runs/25054114005\n- artifacts:\nhttps://packages.rnrepo.org/snapshots/org/rnrepo/public/react-native-firebase_app/23.5.0",
          "is_bot": false,
          "headline": "lock the mvn cli version used in publisher (#327)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-30T09:30:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54df3e6ca7ac503eb097bb19c944145c8de4ae00",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#326)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-28T09:51:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "891a4df233fa5b420e4e8b773e170b30cb8a4a50",
          "body": "## 📝 Description\n\nAdd another new issues to catch\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "add new issue to failed builds (#323)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-28T09:51:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6c20a6fa9d7c39456f264efa3105fc9edcefabb1",
          "body": "## 📝 Description\n\n\nhttps://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility/\n\nwith new react-native version reanimated constraints have to be adjusted\nto avoid failed builds\n\n## 🎯 Type of Change\n\n- [x] ♻️ Refactoring (no functional changes)",
          "is_bot": false,
          "headline": "range reanimated@4.2.x versions (#324)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-28T09:51:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d55715081117eec89df0af95f2f8c9c7d0a8373",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#322)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-23T09:29:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96e6125f46219f75abac01aeca7db4fa9d7a52db",
          "body": "## 📝 Description\n\n- updated docs (removed mentions about adding `allprojects {repositories\n{ url ...}}}`\n- updated tests\n- added `project.uri(\"https://packages.rnrepo.org/releases\")` inside\ngradle plugin\n- troubleshooting added when project have `FAIL_ON_PROJECT_REPOS`\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)",
          "is_bot": false,
          "headline": "Incorporate maven url inside gradle plugin (#270)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-17T09:25:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5eca316bc4ca193be7b01f9eb92318beb8960312",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#320)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-17T09:22:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50fe7d2ee9acc1cda6746885c2eb0e7d214b7bf5",
          "body": "## 📝 Description\n\nPod install failed when worklets were installed as a peer dependency\n\nI’d avoid tying this to the old `workletsVersion` approach in\n`libraries.json`, since that was a reanimated-specific addition for its\nbuild process. Now that reanimated has been decoupled from worklets,\nthat field is likely to be removed in the future\n\n## 🎯 Type of Change\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)",
          "is_bot": false,
          "headline": "Add explicit worklets installation for reanimated@4.3.0+ (#319)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-16T14:43:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdce3d5c9fd94749a8c57839d80d8b310ff0c52c",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\n## 0.85.0 changes\n\n- add new version to react-native-versions list (0.85.0)\n- install proper reanimated version fo\n[…]\n1\",\n    \"react-native-screens\": \"4.24.0\"\n  },\n```\n\n---------\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#311)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-16T08:04:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8893bcaa6ed5dc9b5a0beea2d72c8f9b2556eb82",
          "body": "## 📝 Description\n\n- add skia unbuildable issue with source-link\n- run script with write flag\n- add gradle9.0.0 issue \n- add type 'expired' for builds with unavailable logs\n- changed type 'unknown' to ' pending' for unchecked builds\n- type 'unknown' means checked but not recognized the issue\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add more types to failed builds investigation (#315)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-15T10:50:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c72877da1dc18eb47599e5b2de18a9b3f6ba3684",
          "body": "## 📝 Description\n\nWith the release of `react-native-reanimated@4.3.0`, the library\nintroduced a stable API that eliminates the need for version-specific\nbuilds tied to `react-native-worklets`. Previously, the tooling built a\nfull variant matrix tied to specific worklets classifiers - this is no\nlong\n[…]\nd for `>=4.3.0`.\n- Both the Gradle and CocoaPods plugins were updated to skip worklets\nresolution entirely when reanimated `>= 4.3.0` is detected.\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Remove worklets classifier from reanimated (#317)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-15T10:07:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1d8b66f9fef02d5cf269bf62cc3f8c2119f75965",
          "body": "## 📝 Description\n\nadd new lib #310 \n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support\n\n## 🧪 Testing\n\nbuilding artifacts\n```\n$ bun run packages/builder/build-library-android.ts -- \"@op-engineering/op-sqlite\" \"15.2.11\" \"0.84.0\" \"TEMP_android_opsqlite_15_2_11_rn_0_84_0\" \"\"\n# ✅ Successfully built AAR fo\n[…]\nneering/op-sqlite\" \"15.2.11\" \"0.84.0\" \"TEMP_ios_opsqlite_15_2_11_rn_0_84_0\" \"\"\n# ✅ Successfully built static XCFramework for @op-engineering/op-sqlite@15.2.11 with RN 0.84.0 \n```\n\nbuilding app - works",
          "is_bot": false,
          "headline": "add @op-engineering/op-sqlite (#318)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-15T09:36:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32685b41e2641de22a36fbc85251344ca555d24a",
          "body": "## 📝 Description\n\nThe script automates the investigation of build failures.\n\n**Note:** This may require adding a new database column to track which\nbuilds are unbuildable ?\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)\n\n## 🧪 Testing\n\nexample:\n```\nSUPABASE_K\n[…]\n URL        -> 2\n   Unknown issue            -> 2\n   Errors                   -> 0\n   Retry=true builds before -> 0\n```\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "add failed builds investigation (#297)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-09T11:38:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ff124beb0b35887bbb58048c465f9fa5d59c2833",
          "body": "## 📝 Description\n\nError:\n\nhttps://github.com/software-mansion/rnrepo/actions/runs/23974928810/job/69930351126\n```\nUncaught Error CocoaPodsError: Command `pod install` failed.\\n\n```\n\nPod install is not used in building emc and cannot be 'turn off', so it\nwill be handled in a catch\n\nexpo;\nhttps://gith\n[…]\nks the builds,\nwhich also was fixed\n\n## 🎯 Type of Change\n\n\n- [x] 🐛 Bug fix (non-breaking change which fixes an issue)\n\n## 🧪 Testing\n\nhttps://github.com/software-mansion/rnrepo/actions/runs/24179629969",
          "is_bot": false,
          "headline": "fix failing ci during pod install on ubuntu runners (#313)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-09T10:36:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0b36b88658ef886d9a6cf26042d094fccf053393",
          "body": "## 📝 Description\n\nReanimated builds were failing due to installation of the newest\nworklets possible from peer deps, but sometimes such version was not\navailable in given rn version\n\n```\nnpm error Could not resolve dependency:\nnpm error peer react-native@\"0.81 - 0.85\" from react-native-worklets@0.8.\n[…]\n\n\n```\n$ bun run packages/builder/build-library-android.ts -- \"react-native-reanimated\" \"4.1.7\" \"0.80.0\" \"/tmp\" \"0.5.1\"\n...\n✅ Successfully built AAR for react-native-reanimated@4.1.7 with RN 0.81.4\n```",
          "is_bot": false,
          "headline": "Install worklets first (#312)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-09T09:11:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9d5f9ffcdd38ba95e8272a1c5b6ac1d13ab88971",
          "body": "## 📝 Description\n\nCreate caching RN project in builder for each rn_version and OS.\n- added in yamls creating clean RN project (nodes installed, no build\nartifacts from previous builds)\n- if work-dir provided to script already have rnrepo_build_app then its\ncached project (always happens on CI)\n- if \n[…]\n build\n- workflow:\nhttps://github.com/software-mansion/rnrepo/actions/runs/24077312315\n- use that cache in another build\n- workflow:\nhttps://github.com/software-mansion/rnrepo/actions/runs/24077495031",
          "is_bot": false,
          "headline": "builder - cache rn project (#254)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-07T11:14:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "635c7e003ff0ebf9899db54d1fed835376ec0096",
          "body": "## 📝 Description\n\nRevert limiting scheduler to 50 builds in #279 since we have selfhosted\nmacOS already.",
          "is_bot": false,
          "headline": "Revert limiting scheduler to 50 builds in #279 (#308)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T15:01:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c1309351c312f9d789dcee34e50dfb86469fafe",
          "body": "## 📝 Description\n\nPrebuild expo-modules-core for Android only in release builds\n\nbuilding from >20k last-week builds (reduced build number from 78 to 59)\n\n## 🎯 Type of Change\n\n- [x] 🧩 New library support\n\n## 🧪 Testing\n\n- project\n  - `npx create-expo-app@latest init my-app --template default@sdk-55`\n\n[…]\n \"RN\" \"0.83.2\"\n  - \"expo-modules-core\" \"55.0.14\" \"RN\" \"0.83.1\"\n- expo@54\n  - \"expo-modules-core\" \"3.0.29\" \"RN\" \"0.81.5\"\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Prebuild expo-modules-core for Android (#301)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T11:31:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0886e4910b44be8da204972407d716e4dc114ff4",
          "body": "## 📝 Description\n\nAdd guide to find the problematic package in xcode16 errors\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update\n\n---------\n\nCo-authored-by: Wojciech Lewicki <wojciech.lewicki@swmansion.com>",
          "is_bot": false,
          "headline": "Add guide to find the problematic package in xcode16 errors (#307)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T11:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83ec171e120f722a3f75caa85f6d31864e824fd9",
          "body": "## 📝 Description\n\nAdd fingerprint mismatch troubleshooting for ios\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update\n\n## Testing\n\n<img width=\"1106\" height=\"241\" alt=\"Zrzut ekranu 2026-04-2 o 12 06 34\"\nsrc=\"https://github.com/user-attachments/assets/9ad6c440-c0c7-4d63-830f-58d17d5d2461\"\n/>\n\n-readme:\n[…]\nthub.com/software-mansion/rnrepo/blob/rolkrado/fingerprints-eas/README.md#expo-prebuild-continuous-code-generation--cng\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add fingerprint mismatch troubleshooting for ios (#302)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-04-02T11:03:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5a5338110661ece7bed87ccf075d19e5ba0bd080",
          "body": "## 📝 Description\n\nbuild-tools: 0.1.2-beta.0\nexpo-config-plugin: 0.3.0-beta.2\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Publish new package versions (#306)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-26T15:01:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32739c22595fe190c3c946c682feb6567b0c3a3f",
          "body": "## 📝 Description\n\nFollow-up from the PR that migrated the Gradle plugin to npm.\n\nIt’s redundant since the version is already tracked as an npm package,\nand it required manual bumping and verification before each release.\n\nChanges:\n- [ BREAKING CHANGE ] - changes gradle plugin resolving in project\nfi\n[…]\nfiguration from build.gradle\n(publishing is now handled via npm instead of Maven)\n- Cleaned up redundant test imports in build.gradle\n\n## 🎯 Type of Change\n\n- [x] ♻️ Refactoring (no functional changes)",
          "is_bot": false,
          "headline": "[BREAKING CHANGE] Remove versioning from plugins (#299)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-26T14:26:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f6989c7dfea9ef4077e720dc9779725b7b69e087",
          "body": "## 📝 Description\n\nThis PR moves iOS builds to self-hosted runners to improve build\nthroughput and reduce queue times. GitHub-hosted runners are limited and\nshared across the entire organization, which was causing delays and\nslowing down CI. The build process itself remains unchanged and the\nrunner e\n[…]\nimprovement\n\n## 🧪 Testing\n\n- https://github.com/software-mansion/rnrepo/actions/runs/22898799632\n- https://github.com/software-mansion/rnrepo/actions/runs/23184874852\n  - successfully used in test app",
          "is_bot": false,
          "headline": "Run iOS builds on self-hosted runners (#291)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-26T14:21:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "380d96d19049f4300df23debea71433f870d6c38",
          "body": "## 📝 Description\n\nNow ios will not have dangling scheduled builds\n\n## 🎯 Type of Change\n\n- [x] ✨ New feature (non-breaking change which adds functionality)\n\n## 🧪 Testing\n\n```\n📊 Done.\n   Checked: 40\n   Completed -> 0\n   Failed    -> 8\n   Skipped   -> 32\n   Errors    -> 0\n\nAFTER:\n\n📊 Done.\n   Checked: 40\n   Completed -> 12\n   Failed    -> 28\n   Skipped   -> 0\n   Errors    -> 0\n\n```\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add ios handling in check-build-consistency (#295)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T15:37:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "851423c7485000494dd9bb8e09d48c1bd8953c97",
          "body": "## 📝 Description\n\nThere is no warning from plugin.rb since it gets lost among numerous\nother log entries and won’t be noticed anyway.\n\n#290 \n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Troubleshooting for xcode16 (#303)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T11:33:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "77e42b5ee5823165b771badcf88cfb3714006ad1",
          "body": "## 📝 Description\n\n[worklets] Versioning compatibility from:\nhttps://docs.swmansion.com/react-native-worklets/docs/guides/compatibility/\n[reanimated-3] Versioning compatibility from:\nhttps://docs.swmansion.com/react-native-reanimated/docs/3.x/guides/compatibility\n\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Constraint worklets builds (#296)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T11:32:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de82b61d7207e7bc18ff2fe6a5e5b58435ec10f0",
          "body": "## 📝 Description\n\nAvoid building for versions with fewer than 20k downloads in the past\nweek. These are typically new releases that may be quickly replaced by a\npatch fix - until 20 downloads any major issue that would require fixing\nand new patch release should probably be discovered.\n\n```\n{\n  \"pac\n[…]\n: 65227,\n    \"0.83.1\": 219394,\n    \"0.83.2\": 417736,\n    \"0.83.3\": 715,\n    \"0.83.4\": 10672,\n    \"0.84.0\": 111508,\n    \"0.84.1\": 515617,\n  }\n}\n```\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "Add 20k RN threshold to build (#300)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-25T11:20:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7ea5963029a94a96b5364e8f34f832a3dbac110c",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\n---------\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#284)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-24T11:20:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1de3620da91e4c8dc4e8b553ed449b1d02fd788a",
          "body": "## 📝 Description\n\nLint kotlin with spotless tool\n\n## 🎯 Type of Change\n\n- [x] ♻️ Refactoring (no functional changes)",
          "is_bot": false,
          "headline": "lint spotless kotlin (#298)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-19T15:30:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7c4c98af41a9b1bafe25686c3fc8df0e3317051",
          "body": "## 📝 Description\n\nAdd changelogs for npm packages\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update=",
          "is_bot": false,
          "headline": "Add changelogs for npm packages (#292)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-19T14:57:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7369d5d0119b6d6878a9115594ffe17af1cd427",
          "body": "## 📝 Description\n\nReplace the `net/http` with `system(curl, ...)`\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n## 🧪 Testing\n\n```\n# success\n[📦 RNRepo] Downloading from https://packages.rnrepo.org/releases/org/rnrepo/public/react-native-safe-area-context/5.7.0/react-native-safe-area-context-\n[…]\nps://packages.rnrepo.org/releases/org/rnrepo/public/react-native-safe-area-context/5.7.0/react-native-safe-area-context-5.7.0-rn0.81.5-debug.zip...\ncurl: (22) The requested URL returned error: 404\n```",
          "is_bot": false,
          "headline": "Replace the `net/http` with `system(curl, ...)` (#293)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-17T10:39:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb4260a2ecc839c5a266b67e64f85ba82ca170f4",
          "body": "## 📝 Description\n\n### iOS\n\nin exposdk@55 ExpoModulesCore direct dependency on RNWorklets was added,\nwhich resulted in:\n```\n❌  (node_modules/expo-modules-core/ios/Worklets/WorkletJSCallInvoker.h:10:10)\n\n   8 | #include <ReactCommon/RuntimeExecutor.h>\n   9 |\n> 10 | #include <worklets/WorkletRuntime/Wo\n[…]\nols\": \"<path>/rnrepo/packages/build-tools\",\n# add to app.json plugins\n# # \"@rnrepo/expo-config-plugin\",\nnpx expo install\nnpx expo prebuild\nnpx expo run android\n# success\nnpx expo run ios\n# success\n```",
          "is_bot": false,
          "headline": "emc worklets fix for exposdk@55 (#281)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-17T09:04:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e7d90fdc624296a6fefeabd75f48e1b1c48043c9",
          "body": "## Summary\n\nThis removes the external dependency on `rubyzip`. Using\n`system(\"unzip\", ...)` is safe here because the code is designed to run\nonly on macOS, where `unzip` is available by default.\n\n## Testing\n```\n[📦 RNRepo] Extracting to /Users/radoslawrolka/BUILDLE_ANDROID/rnrepo/AwesomeProject_UNZIP\n[…]\n #286\n\n---------\n\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>\nCo-authored-by: Radosław Rolka <radoslaw.rolka@gmail.com>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Replace the `rubyzip` dependency with `system(\"unzip\", ...)`. (#287)",
          "author_name": "Insik Han",
          "author_login": "Insik-Han",
          "committed_at": "2026-03-17T08:55:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "15d4c85fdf544404b308150cbd7d9f43bbc970d9",
          "body": "## 📝 Description\n\nBatch DB calls in scheduler to pull all builds per whole lib to remove\nwaiting for DB all the time\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement\n\n## 🧪 Testing\n\nWith unlimited schedules:\n- Before (27min)\n  ```\n  ✅ Done! Scheduled 560 build(s).\n  64,12s user 14,85s system 4% \n[…]\nal\n  ```\n- After (1:30min)\n  ```\n  ✅ Done! Scheduled 559 build(s).\n  2,34s user 0,56s system 3% cpu 1:30,59 total\n  ```\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Batch DB calls in scheduler (#294)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-17T08:55:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eba8919e385e16f8d090ff9e5e4c905957f5c385",
          "body": "## 📝 Description\n\nBuilds were failing due to the uncompatible rea-rn versions\n\n```\n  stdout: \"Configuring Pod with statically linked Frameworks\\n\\n[!] Invalid `Podfile` file: \\n[!] Invalid `RNReanimated.podspec` file: [Reanimated] React Native version is not compatible with Reanimated.\\n\\n #  from /\n[…]\ntible with Reanimated 4.1.4\\n\",\n\n      at new ShellPromise (75:16)\n      at BunShell (191:35)\n      at buildLibrary (/Users/runner/work/rnrepo/rnrepo/packages/builder/build-library-ios.ts:282:11)\n\n```",
          "is_bot": false,
          "headline": "Add correct reanimated installation in RNGH builds (#285)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-06T14:13:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b4c77346990de8f6acc7ef421b6047e1c7444309",
          "body": "## 📝 Description\n\nIssue in hoisted node_modules - `@rnrepo/build-tools` was not resolved\n#274\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Add info about manual installation of @rnrepo/build-tools (#283)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-06T11:42:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7eeda3cf2c3aff4e8631f401e12dd2c53ebd21f4",
          "body": "## 📝 Description\n\n- avg one build at macos-xlarge = 20min\n- max concurent jobs on macos = 5\n- scheduler cron = every 4h\nSo limit should be (20/60) * 5 * 4 ~= 50 (calculated with advantage to\ninclude failures that takes less time and nighttime with less occupancy)\n\nRevert this change when we have custom macos runner (#280).\n\n## 🎯 Type of Change\n\n- [x] ⚡ Performance improvement",
          "is_bot": false,
          "headline": "schedule 50 builds per scheduler cron (#279)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-05T13:14:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78b7ee634ec7219345696ff6beb77cc89c146ed1",
          "body": "## 🚀 React Native Version Update\n\nThis PR updates the React Native versions list with newly released\nversions.\n\n_This is an automated PR generated by the daily version check workflow._\n\nCo-authored-by: radoslawrolka <128408457+radoslawrolka@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[BOT] Update React Native versions (#265)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-03-05T12:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8deb3f165bca1799339efe466dd2068baff53bf1",
          "body": "## 📝 Description\n\nAdd setup verification guide in troubleshooting.md\n- android:\nhttps://github.com/software-mansion/rnrepo/blob/rolkrado/setup-verification/TROUBLESHOOTING.md#how-to-check-if-the-plugin-works\n- ios (same file, same header name):\nhttps://github.com/software-mansion/rnrepo/blob/rolkrado/setup-verification/TROUBLESHOOTING.md#how-to-check-if-the-plugin-works-1\n\n#276\n\n## 🎯 Type of Change\n\n- [x] 📚 Documentation update",
          "is_bot": false,
          "headline": "Setup verification in troubleshooting (#278)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-05T10:37:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c54c5b3bed1512c78c444fb9fc37768673f3033e",
          "body": "## 📝 Description\n\n- added firebase/firestore to libraries.json with android config\n- added postinstall script (same as other firebase postinstall scripts)\n\nAdding firebase/firestore to android building list, since we did not\ntest the firestore on ios yet.\n\n#275 \n\n## 🎯 Type of Change\n\n- [x] 🧩 New lib\n[…]\nsks: 44 executed\n✓ Published to Maven Local successfully\n✅ Successfully built AAR for @react-native-firebase/firestore@23.8.6 with RN 0.81.4\n```\nalso builded successfully example rn-app with firestore",
          "is_bot": false,
          "headline": "Add  firebase/firestore to android build list (#277)",
          "author_name": "Radosław Rolka",
          "author_login": "radoslawrolka",
          "committed_at": "2026-03-05T10:34:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 0,
      "commits_last_year": 342,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 40,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@rnrepo/build-tools",
          "exists": true,
          "license": "ISC",
          "keywords": [
            "cocoapods",
            "gradle",
            "react-native",
            "rnrepo",
            "ios",
            "android",
            "plugin",
            "prebuilds",
            "xcframework",
            "aar"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@rnrepo/build-tools",
          "is_deprecated": false,
          "latest_version": "0.2.1",
          "repository_url": "https://github.com/software-mansion/rnrepo",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 89272,
          "first_published_at": "2026-02-25T10:42:48.281000Z",
          "latest_published_at": "2026-07-17T09:04:05.108000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        },
        {
          "name": "@rnrepo/expo-config-plugin",
          "exists": true,
          "license": "ISC",
          "keywords": [
            "react-native",
            "expo",
            "config",
            "plugin",
            "prebuilds",
            "rnrepo"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@rnrepo/expo-config-plugin",
          "is_deprecated": false,
          "latest_version": "0.3.5",
          "repository_url": "https://github.com/software-mansion/rnrepo",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 86944,
          "first_published_at": "2025-12-01T10:17:00.871000Z",
          "latest_published_at": "2026-07-17T09:02:02.583000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        }
      ]
    },
    "popularity": {
      "forks": 12,
      "stars": 403,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2025-12-04",
            "count": 2
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-04-25",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-05-30",
            "count": 1
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 12,
        "total_forks": 12
      },
      "star_history": {
        "days": [
          {
            "date": "2025-12-03",
            "count": 61
          },
          {
            "date": "2025-12-04",
            "count": 82
          },
          {
            "date": "2025-12-05",
            "count": 20
          },
          {
            "date": "2025-12-06",
            "count": 4
          },
          {
            "date": "2025-12-07",
            "count": 3
          },
          {
            "date": "2025-12-08",
            "count": 10
          },
          {
            "date": "2025-12-09",
            "count": 2
          },
          {
            "date": "2025-12-10",
            "count": 6
          },
          {
            "date": "2025-12-11",
            "count": 6
          },
          {
            "date": "2025-12-12",
            "count": 11
          },
          {
            "date": "2025-12-13",
            "count": 6
          },
          {
            "date": "2025-12-15",
            "count": 3
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 3
          },
          {
            "date": "2025-12-18",
            "count": 2
          },
          {
            "date": "2025-12-19",
            "count": 2
          },
          {
            "date": "2025-12-20",
            "count": 2
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2025-12-22",
            "count": 2
          },
          {
            "date": "2025-12-25",
            "count": 1
          },
          {
            "date": "2025-12-29",
            "count": 1
          },
          {
            "date": "2025-12-31",
            "count": 3
          },
          {
            "date": "2026-01-02",
            "count": 3
          },
          {
            "date": "2026-01-04",
            "count": 1
          },
          {
            "date": "2026-01-05",
            "count": 3
          },
          {
            "date": "2026-01-06",
            "count": 2
          },
          {
            "date": "2026-01-07",
            "count": 1
          },
          {
            "date": "2026-01-08",
            "count": 2
          },
          {
            "date": "2026-01-12",
            "count": 2
          },
          {
            "date": "2026-01-19",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 2
          },
          {
            "date": "2026-02-01",
            "count": 1
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-02-25",
            "count": 1
          },
          {
            "date": "2026-02-27",
            "count": 3
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 12
          },
          {
            "date": "2026-03-04",
            "count": 11
          },
          {
            "date": "2026-03-05",
            "count": 6
          },
          {
            "date": "2026-03-06",
            "count": 3
          },
          {
            "date": "2026-03-07",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 2
          },
          {
            "date": "2026-03-10",
            "count": 8
          },
          {
            "date": "2026-03-11",
            "count": 13
          },
          {
            "date": "2026-03-16",
            "count": 1
          },
          {
            "date": "2026-03-17",
            "count": 2
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-24",
            "count": 1
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-04-04",
            "count": 1
          },
          {
            "date": "2026-04-12",
            "count": 1
          },
          {
            "date": "2026-04-20",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 2
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-05-07",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 6
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 2
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 3
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 23
          },
          {
            "date": "2026-06-02",
            "count": 4
          },
          {
            "date": "2026-06-03",
            "count": 4
          },
          {
            "date": "2026-06-05",
            "count": 4
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 2
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 3
          },
          {
            "date": "2026-06-23",
            "count": 4
          },
          {
            "date": "2026-06-24",
            "count": 2
          },
          {
            "date": "2026-06-29",
            "count": 3
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 403,
        "total_stars": 403
      },
      "open_issues_and_prs": 8
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/expo-config-plugin/tsconfig.json",
        "packages/website/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [
        "packages/build-tools/gradle-plugin/build.gradle"
      ],
      "largest_source_bytes": 56925,
      "source_files_sampled": 60,
      "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": [
        {
          "name": "commander",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.1.0"
        },
        {
          "name": "semver",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.7.4"
        },
        {
          "name": "zx",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.6.0"
        },
        {
          "name": "commander",
          "manifest": "packages/builder/package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.1.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/builder/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zx",
          "manifest": "packages/builder/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.6.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/database/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@supabase/supabase-js",
          "manifest": "packages/database/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.47.0"
        },
        {
          "name": "@expo/config-plugins",
          "manifest": "packages/expo-config-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "*"
        },
        {
          "name": "@expo/config-types",
          "manifest": "packages/expo-config-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "*"
        },
        {
          "name": "@rnrepo/build-tools",
          "manifest": "packages/expo-config-plugin/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.2.1"
        },
        {
          "name": "@octokit/rest",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "^22.0.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@rnrepo/database",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "commander",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.1.0"
        },
        {
          "name": "zx",
          "manifest": "packages/publisher/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.6.0"
        },
        {
          "name": "@octokit/plugin-paginate-rest",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.0"
        },
        {
          "name": "@octokit/rest",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "^22.0.0"
        },
        {
          "name": "@rnrepo/config",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@rnrepo/database",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "semver",
          "manifest": "packages/scheduler/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.7.3"
        },
        {
          "name": "astro",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.16.6"
        },
        {
          "name": "lucide-astro",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.555.0"
        },
        {
          "name": "shiki",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.17.1"
        },
        {
          "name": "@rnrepo/database",
          "manifest": "packages/website/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        }
      ],
      "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": 8,
        "merged_prs": 319,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 64,
        "closed_unmerged_prs": 27
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "radoslawrolka",
          "commits": 250,
          "avatar_url": "https://avatars.githubusercontent.com/u/128408457?v=4"
        },
        {
          "type": "User",
          "login": "kmagiera",
          "commits": 64,
          "avatar_url": "https://avatars.githubusercontent.com/u/726445?v=4"
        },
        {
          "type": "User",
          "login": "CDFN",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/41289688?v=4"
        },
        {
          "type": "User",
          "login": "sKrzysieK",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/64040819?v=4"
        },
        {
          "type": "User",
          "login": "konrad-armatys",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/109459018?v=4"
        },
        {
          "type": "User",
          "login": "mczernek",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/6090468?v=4"
        },
        {
          "type": "User",
          "login": "WoLewicki",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/32481228?v=4"
        },
        {
          "type": "User",
          "login": "gadcam",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/1693643?v=4"
        },
        {
          "type": "User",
          "login": "Insik-Han",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/63291908?v=4"
        },
        {
          "type": "User",
          "login": "pawicao",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/34246839?v=4"
        }
      ],
      "contributors_sampled": 14,
      "top_contributor_share": 0.716
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build-example-expo-app.yml",
        "build-example-rn-app.yml",
        "build-library-android.yml",
        "build-library-ios.yml",
        "check-build-consistency.yml",
        "check-failed-builds.yml",
        "daily-react-native-version-check.yml",
        "deploy-website.yml",
        "lint-and-validate.yml",
        "publish-build-tools.yml",
        "publish-expo-config-plugin.yml",
        "publish-library-android.yml",
        "publish-library-ios.yml",
        "run-scheduler.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.js"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 6,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 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": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "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": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 20 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": 9,
            "reason": "dependency not pinned by hash detected -- score normalized to 9",
            "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": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "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": 0,
            "reason": "100 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "d4af2edf88e5932f53d8ad4f64db5386dbe1091d",
        "ran_at": "2026-07-22T05:55:08Z",
        "aggregate_score": 4.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-22T05:05:13Z",
      "oldest_open_prs": [
        {
          "number": 163,
          "created_at": "2025-12-09T17:27:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 217,
          "created_at": "2026-01-19T09:25:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 238,
          "created_at": "2026-01-28T11:14:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 314,
          "created_at": "2026-04-09T13:49:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 333,
          "created_at": "2026-05-06T11:51:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 348,
          "created_at": "2026-05-21T10:55:29Z",
          "last_comment_at": "2026-05-22T13:03:25Z",
          "last_comment_author": "radoslawrolka"
        },
        {
          "number": 396,
          "created_at": "2026-06-26T03:19:47Z",
          "last_comment_at": "2026-07-06T14:38:24Z",
          "last_comment_author": "radoslawrolka"
        },
        {
          "number": 418,
          "created_at": "2026-07-21T11:23:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-17T09:00:20Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/software-mansion/rnrepo",
    "host": "github.com",
    "name": "rnrepo",
    "owner": "software-mansion"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 62,
      "inputs": {
        "security": 42,
        "vitality": 56,
        "community": 53,
        "governance": 75,
        "engineering": 76
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 56,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "commits_last_year": 342,
              "human_commit_share": 0.92,
              "days_since_last_push": 0,
              "active_weeks_last_year": 40
            },
            "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": "40/52 weeks with commits",
                "points": 27.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 40
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "342 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 342
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 20 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 4,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 4 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 53,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 51,
            "inputs": {
              "forks": 12,
              "stars": 403,
              "watchers": 1,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "403 stars",
                "points": 42.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 403
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "12 forks",
                "points": 8.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "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": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": "excellent",
            "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": 87,
            "inputs": {
              "packages": [
                "@rnrepo/build-tools",
                "@rnrepo/expo-config-plugin"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 176216
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "176,216 downloads/month across npm",
                "points": 69.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 176216,
                      "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": "good",
        "name": "Sustainability & Governance",
        "value": 75,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 39,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 14,
              "top_contributor_share": 0.716
            },
            "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 72% of commits",
                "points": 6.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 72
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "14 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "merged_prs": 319,
              "open_issues": 0,
              "closed_issues": 64,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 27
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "319/346 decided PRs merged",
                "points": 35.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 319,
                      "decided": 346
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "followers": 1604,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "software-mansion",
              "public_repos": 59,
              "account_age_days": 2464
            },
            "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": "1,604 followers of software-mansion",
                "points": 23,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1604,
                      "login": "software-mansion"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "59 public repos, account ~6 yr old",
                "points": 24.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 59
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@rnrepo/build-tools",
                "@rnrepo/expo-config-plugin"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 4 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "15 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 76,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "14 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "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": ".eslintrc.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "http://rnrepo.org/",
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "http://rnrepo.org/",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 42,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 42,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 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": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 20 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 9",
                "points": 4.5,
                "status": "partial",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "100 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "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"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 16
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 68,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "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": "92 of 92 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 92
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/expo-config-plugin/tsconfig.json",
                "packages/website/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.13,
              "toolchain_manifests": [
                "packages/build-tools/gradle-plugin/build.gradle"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "packages/build-tools/gradle-plugin/build.gradle (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "packages/build-tools/gradle-plugin/build.gradle"
                    }
                  }
                ],
                "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": ".eslintrc.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/expo-config-plugin/tsconfig.json, packages/website/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "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": "13 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 13,
                      "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 9",
                "points": 9,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 56925,
              "source_files_sampled": 60,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/60 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 60,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Could not fetch npm package '@rnrepo/builder' from its registry",
    "Could not fetch npm package '@rnrepo/publisher' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index npm:@rnrepo/build-tools@0.2.1; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T05:55:30.046426Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/software-mansion/rnrepo.svg",
  "full_name": "software-mansion/rnrepo",
  "license_state": "absent",
  "license_spdx": null
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.26.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计npm.