oss-signal 0.6.3 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/CITATION.cff +19 -0
  3. package/README.md +61 -17
  4. package/action.yml +3 -3
  5. package/docs/adoption-evidence.md +66 -10
  6. package/docs/adoption-kit.md +92 -0
  7. package/docs/architecture.md +57 -0
  8. package/docs/assets/code-scanning-results.svg +22 -0
  9. package/docs/assets/github-profile-avatar.png +0 -0
  10. package/docs/assets/github-social-preview.png +0 -0
  11. package/docs/assets/github-social-preview.svg +45 -0
  12. package/docs/assets/oss-signal-banner.svg +44 -0
  13. package/docs/assets/oss-signal-icon.png +0 -0
  14. package/docs/assets/oss-signal-icon.svg +27 -0
  15. package/docs/brand.md +44 -0
  16. package/docs/codex-for-oss-application.md +20 -15
  17. package/docs/codex-for-oss-form-answers.md +4 -4
  18. package/docs/examples/github-action-workflow.yml +1 -1
  19. package/docs/examples/github-code-scanning-workflow.yml +2 -2
  20. package/docs/examples/github-inventory-workflow.yml +1 -1
  21. package/docs/examples/github-issue-body.md +4 -20
  22. package/docs/examples/github-plan.md +81 -0
  23. package/docs/examples/github-url-report.json +206 -0
  24. package/docs/examples/github-url-report.md +1 -1
  25. package/docs/examples/inventory-report.md +1 -1
  26. package/docs/examples/self-audit.sarif +2 -2
  27. package/docs/index.md +56 -0
  28. package/docs/json-output.md +66 -0
  29. package/docs/maintainer-playbook.md +18 -4
  30. package/docs/marketplace.md +43 -0
  31. package/docs/outreach/README.md +13 -0
  32. package/docs/outreach/divyesh-5981-signal-oss-issue-draft.md +23 -0
  33. package/docs/outreach/divyesh-5981-signal-oss-report.md +48 -0
  34. package/docs/outreach/grovanni-oss-signal-issue-draft.md +27 -0
  35. package/docs/outreach/grovanni-oss-signal-report.md +45 -0
  36. package/docs/outreach/neardws-oss-application-pack-builder-issue-draft.md +23 -0
  37. package/docs/outreach/neardws-oss-application-pack-builder-report.md +50 -0
  38. package/docs/outreach/noctemlabs-signal-oss-issue-draft.md +24 -0
  39. package/docs/outreach/noctemlabs-signal-oss-report.md +49 -0
  40. package/docs/outreach/peer-shortlist-2026-06.md +49 -0
  41. package/docs/plan-output.md +40 -0
  42. package/docs/post-submission-update.md +75 -0
  43. package/docs/release-notes/v0.6.4.md +17 -0
  44. package/docs/release-notes/v0.7.0.md +17 -0
  45. package/docs/release-process.md +1 -1
  46. package/docs/reviewer-evidence.md +58 -5
  47. package/docs/roadmap.md +34 -0
  48. package/docs/sarif-code-scanning.md +88 -0
  49. package/docs/schema/json-output.schema.json +206 -0
  50. package/docs/security-model.md +57 -0
  51. package/docs/self-audit.md +1 -1
  52. package/docs/trust-center.md +66 -0
  53. package/package.json +8 -3
  54. package/src/action.js +6 -2
  55. package/src/cli.js +8 -3
  56. package/src/index.js +60 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.7.0
6
+
7
+ - Added `--format plan` for generating PR-sized maintainer plans with suggested files and acceptance criteria.
8
+ - Added maintainer plan documentation and a GitHub repository plan example.
9
+
5
10
  ## 0.6.3
6
11
 
7
12
  - Updated the release workflow to use Node 24 and npm 11.16 for npm Trusted Publishing support.
package/CITATION.cff ADDED
@@ -0,0 +1,19 @@
1
+ cff-version: 1.2.0
2
+ message: "If oss-signal helps your maintainer workflow, please cite the repository."
3
+ title: "oss-signal"
4
+ abstract: "Maintainer-readiness CLI and GitHub Action for OSS triage, CI evidence, inventory reports, SARIF, and issue-ready cleanup."
5
+ authors:
6
+ - family-names: "Oda"
7
+ given-names: "Amon"
8
+ repository-code: "https://github.com/SalmonPlays/oss-signal"
9
+ url: "https://salmonplays.github.io/oss-signal/"
10
+ license: "MIT"
11
+ version: "0.6.4"
12
+ date-released: "2026-06-04"
13
+ keywords:
14
+ - open-source
15
+ - maintainer-tools
16
+ - github-actions
17
+ - repository-health
18
+ - sarif
19
+ - triage
package/README.md CHANGED
@@ -1,27 +1,52 @@
1
- # oss-signal
1
+ <p align="center">
2
+ <img src="docs/assets/oss-signal-banner.svg" alt="OSS Maintainer Signal banner">
3
+ </p>
4
+
5
+ # OSS Maintainer Signal (`oss-signal`)
2
6
 
3
7
  [![CI](https://github.com/SalmonPlays/oss-signal/actions/workflows/ci.yml/badge.svg)](https://github.com/SalmonPlays/oss-signal/actions/workflows/ci.yml)
4
8
  [![Repository health](https://github.com/SalmonPlays/oss-signal/actions/workflows/repository-health.yml/badge.svg)](https://github.com/SalmonPlays/oss-signal/actions/workflows/repository-health.yml)
9
+ [![OpenSSF Scorecard](https://github.com/SalmonPlays/oss-signal/actions/workflows/scorecard.yml/badge.svg)](https://github.com/SalmonPlays/oss-signal/actions/workflows/scorecard.yml)
5
10
  [![GitHub release](https://img.shields.io/github/v/release/SalmonPlays/oss-signal.svg)](https://github.com/SalmonPlays/oss-signal/releases/latest)
11
+ [![GitHub Marketplace](https://img.shields.io/badge/GitHub%20Marketplace-oss--signal-blue.svg)](https://github.com/marketplace/actions/oss-signal)
6
12
  [![npm version](https://img.shields.io/npm/v/oss-signal.svg)](https://www.npmjs.com/package/oss-signal)
7
13
  [![npm downloads](https://img.shields.io/npm/dm/oss-signal.svg)](https://www.npmjs.com/package/oss-signal)
14
+ [![Self audit](https://img.shields.io/badge/self--audit-100%2F100-brightgreen.svg)](docs/self-audit.md)
15
+ [![Maintainer evidence](https://img.shields.io/badge/maintainer_evidence-public-blue.svg)](docs/reviewer-evidence.md)
8
16
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
9
17
 
10
- `oss-signal` is a dependency-light CLI for auditing open-source repository maintenance readiness.
18
+ `oss-signal` is a dependency-light maintainer-readiness CLI and GitHub Action for OSS projects that need repeatable triage, CI evidence, SARIF, inventory reports, and issue-ready cleanup notes.
11
19
 
12
- It checks the files and automation that reduce maintainer load: README, license, contributing guide, security policy, CI, tests, issue templates, pull request templates, Dependabot, and release notes. The output is a score plus concrete next steps in Markdown, JSON, SARIF, or a GitHub Issue-ready Markdown body.
20
+ It checks the files and automation that reduce maintainer load: README, license, contributing guide, security policy, CI, tests, issue templates, pull request templates, Dependabot, and release notes. The output is a score plus concrete next steps in Markdown, JSON, SARIF, inventory, GitHub Issue-ready Markdown, or PR-sized maintainer plan formats.
13
21
 
14
22
  ![oss-signal example output](docs/assets/terminal-report.svg)
15
23
 
16
24
  ## Maintainer Evidence Snapshot
17
25
 
18
- Public evidence for the maintainer workflow is collected in [docs/reviewer-evidence.md](docs/reviewer-evidence.md) and [docs/adoption-evidence.md](docs/adoption-evidence.md).
19
-
20
- - Published package: [`oss-signal@0.6.3`](https://www.npmjs.com/package/oss-signal), with `latest` pointing at `0.6.3`.
21
- - Published GitHub Action: [`SalmonPlays/oss-signal@v0.6.3`](https://github.com/SalmonPlays/oss-signal/tree/v0.6.3).
26
+ Public evidence for the maintainer workflow is collected in [docs/index.md](docs/index.md), [docs/trust-center.md](docs/trust-center.md), [docs/reviewer-evidence.md](docs/reviewer-evidence.md), [docs/adoption-evidence.md](docs/adoption-evidence.md), [docs/adoption-kit.md](docs/adoption-kit.md), [docs/architecture.md](docs/architecture.md), [docs/security-model.md](docs/security-model.md), [docs/json-output.md](docs/json-output.md), [docs/plan-output.md](docs/plan-output.md), [docs/sarif-code-scanning.md](docs/sarif-code-scanning.md), [docs/roadmap.md](docs/roadmap.md), [docs/post-submission-update.md](docs/post-submission-update.md), and [docs/brand.md](docs/brand.md).
27
+
28
+ - Landing page: https://salmonplays.github.io/oss-signal/
29
+ - Published package: [`oss-signal@0.7.0`](https://www.npmjs.com/package/oss-signal), with `latest` pointing at `0.7.0`.
30
+ - Published GitHub Action: [`SalmonPlays/oss-signal@v0.7.0`](https://github.com/SalmonPlays/oss-signal/tree/v0.7.0).
31
+ - GitHub Marketplace listing: https://github.com/marketplace/actions/oss-signal
32
+ - Trust center: [docs/trust-center.md](docs/trust-center.md)
33
+ - Adoption kit: [docs/adoption-kit.md](docs/adoption-kit.md)
34
+ - Architecture: [docs/architecture.md](docs/architecture.md)
35
+ - Security model: [docs/security-model.md](docs/security-model.md)
36
+ - JSON output contract: [docs/json-output.md](docs/json-output.md)
37
+ - Maintainer plan output: [docs/plan-output.md](docs/plan-output.md)
38
+ - SARIF Code Scanning walkthrough: [docs/sarif-code-scanning.md](docs/sarif-code-scanning.md)
39
+ - Roadmap: [docs/roadmap.md](docs/roadmap.md)
40
+ - Post-submission version note: the application may reference earlier evidence; `0.7.0` is the current maintained release and is documented in [docs/post-submission-update.md](docs/post-submission-update.md).
22
41
  - Public checks: CI, Repository health, and CodeQL are passing on `main`.
42
+ - Security posture: OpenSSF Scorecard is scheduled, CodeQL is active, secret scanning push protection is enabled, Dependabot alerts/security updates/malware alerts are enabled, and private vulnerability reporting is enabled.
43
+ - Branch posture: `main` has branch protection to prevent force pushes and deletions while keeping direct maintainer maintenance possible.
44
+ - Governance posture: [MAINTAINERS.md](MAINTAINERS.md), [GOVERNANCE.md](GOVERNANCE.md), and [.github/CODEOWNERS](.github/CODEOWNERS) define ownership, review routing, and supported change scope.
45
+ - Community route: [Discussion #5](https://github.com/SalmonPlays/oss-signal/discussions/5) is the public maintainer-workflow thread for usage questions and rule feedback.
23
46
  - Self-audit: this repository scores **100/100 (A)** locally and through GitHub URL mode.
24
- - Field use: four public maintainer-readiness audits have been turned into four issues and four focused follow-up PRs.
47
+ - Field use: five public maintainer-readiness audits have been turned into five issues and four focused follow-up PRs.
48
+ - External OSS contribution: [icoretech/codex-action PR #24](https://github.com/icoretech/codex-action/pull/24) is a focused Codex Action documentation safety fix.
49
+ - Contributor intake: [good first issues](https://github.com/SalmonPlays/oss-signal/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22) are labeled for small outside PRs.
25
50
  - Inventory mode: the CLI and Action can audit a newline-delimited list of repositories for organization-level triage.
26
51
  - Separate workflow demo: [oss-signal-adoption-demo](https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26883001038) runs the public Action tag and uploads Markdown, SARIF, and Issue-ready artifacts.
27
52
 
@@ -51,6 +76,8 @@ Try it without installing:
51
76
  npx oss-signal SalmonPlays/oss-signal
52
77
  ```
53
78
 
79
+ Use it from GitHub Marketplace: https://github.com/marketplace/actions/oss-signal
80
+
54
81
  For local development:
55
82
 
56
83
  ```bash
@@ -87,6 +114,8 @@ Use JSON in automation:
87
114
  oss-signal . --format json --fail-under 80
88
115
  ```
89
116
 
117
+ See [docs/json-output.md](docs/json-output.md) for the JSON schema and fixture.
118
+
90
119
  Audit multiple repositories from one newline-delimited inventory file:
91
120
 
92
121
  ```bash
@@ -101,6 +130,8 @@ Write SARIF for GitHub Code Scanning or other dashboards:
101
130
  oss-signal . --format sarif --output oss-signal.sarif
102
131
  ```
103
132
 
133
+ See [docs/sarif-code-scanning.md](docs/sarif-code-scanning.md) for the Code Scanning upload workflow and expected output.
134
+
104
135
  Generate a report that can be attached to an issue:
105
136
 
106
137
  ```bash
@@ -113,6 +144,14 @@ Generate a maintainer-friendly issue body:
113
144
  oss-signal platformatic/massimo --format issue --output maintainer-follow-up.md
114
145
  ```
115
146
 
147
+ Generate a PR-sized maintainer plan:
148
+
149
+ ```bash
150
+ oss-signal Grovanni/oss-signal --format plan --output maintainer-plan.md
151
+ ```
152
+
153
+ See [docs/plan-output.md](docs/plan-output.md) and [docs/examples/github-plan.md](docs/examples/github-plan.md) for an example.
154
+
116
155
  ## Checks
117
156
 
118
157
  `oss-signal` currently checks:
@@ -123,7 +162,7 @@ oss-signal platformatic/massimo --format issue --output maintainer-follow-up.md
123
162
 
124
163
  See [docs/rules.md](docs/rules.md) for rule details and scoring weights.
125
164
 
126
- SARIF output reports failed maintainer-readiness checks as warning-level results. This lets teams upload the audit to code scanning dashboards while keeping the Markdown report available for maintainers. Issue output turns the same findings into a human-reviewed checklist that can be edited before posting.
165
+ SARIF output reports failed maintainer-readiness checks as warning-level results. This lets teams upload the audit to code scanning dashboards while keeping the Markdown report available for maintainers. Issue output turns the same findings into a human-reviewed checklist that can be edited before posting. Plan output turns the findings into a PR-sized sequence with suggested files and acceptance criteria.
127
166
 
128
167
  For GitHub URL audits, `oss-signal` reads the repository file tree through the GitHub API and also uses GitHub's community profile signal when available. This lets it detect organization-level files such as a shared code of conduct.
129
168
 
@@ -140,9 +179,9 @@ Summary:
140
179
  - Total checks: 15
141
180
  ```
142
181
 
143
- See [docs/self-audit.md](docs/self-audit.md) for the full local self-audit report, [docs/examples/github-url-report.md](docs/examples/github-url-report.md) for the GitHub URL audit output, [docs/examples/github-issue-body.md](docs/examples/github-issue-body.md) for issue output, and [docs/examples/self-audit.sarif](docs/examples/self-audit.sarif) for SARIF output.
182
+ See [docs/self-audit.md](docs/self-audit.md) for the full local self-audit report, [docs/examples/github-url-report.md](docs/examples/github-url-report.md) for the GitHub URL audit output, [docs/examples/github-issue-body.md](docs/examples/github-issue-body.md) for issue output, [docs/examples/github-plan.md](docs/examples/github-plan.md) for plan output, and [docs/examples/self-audit.sarif](docs/examples/self-audit.sarif) for SARIF output.
144
183
 
145
- The [Repository health workflow](.github/workflows/repository-health.yml) runs `SalmonPlays/oss-signal@v0.6.3`, uploads the Markdown report as an artifact, and uploads SARIF to GitHub Code Scanning on non-PR runs. The [Repository inventory workflow](.github/workflows/repository-inventory.yml) runs the inventory mode from CI and uploads a multi-repository report artifact.
184
+ The [Repository health workflow](.github/workflows/repository-health.yml) runs `SalmonPlays/oss-signal@v0.7.0`, uploads the Markdown report as an artifact, and uploads SARIF to GitHub Code Scanning on non-PR runs. The [Repository inventory workflow](.github/workflows/repository-inventory.yml) runs the inventory mode from CI and uploads a multi-repository report artifact.
146
185
 
147
186
  ## Field Audits
148
187
 
@@ -152,9 +191,14 @@ The [Repository health workflow](.github/workflows/repository-health.yml) runs `
152
191
  - [supermarkt/checkjebon report](docs/outreach/supermarkt-checkjebon-report.md), [issue #22](https://github.com/supermarkt/checkjebon/issues/22), and [PR #23](https://github.com/supermarkt/checkjebon/pull/23)
153
192
  - [sammorrisdesign/interactive-feed report](docs/outreach/sammorrisdesign-interactive-feed-report.md), [issue #14](https://github.com/sammorrisdesign/interactive-feed/issues/14), and [PR #15](https://github.com/sammorrisdesign/interactive-feed/pull/15)
154
193
  - [flox/install-flox-action report](docs/outreach/flox-install-flox-action-report.md), [issue #204](https://github.com/flox/install-flox-action/issues/204), and [PR #205](https://github.com/flox/install-flox-action/pull/205)
194
+ - [Grovanni/oss-signal report](docs/outreach/grovanni-oss-signal-report.md) and [issue #1](https://github.com/Grovanni/oss-signal/issues/1)
155
195
 
156
196
  See [docs/outreach](docs/outreach) for the reports and draft issue text. Drafts are not posted automatically; maintainers should only receive specific, useful, and respectful suggestions.
157
197
 
198
+ Additional prepared outreach candidates are tracked in [docs/outreach/peer-shortlist-2026-06.md](docs/outreach/peer-shortlist-2026-06.md). The shortlist explicitly separates respectful, defensible candidates from low-signal mass outreach.
199
+
200
+ Additional focused external contribution: [icoretech/codex-action PR #24](https://github.com/icoretech/codex-action/pull/24) updates Codex Action README examples to route generated output through environment variables before printing it from shell steps.
201
+
158
202
  For a compact maintainer/adoption summary, see [docs/adoption-evidence.md](docs/adoption-evidence.md). For a reviewer-oriented verification path, see [docs/reviewer-evidence.md](docs/reviewer-evidence.md).
159
203
 
160
204
  Separate public workflow evidence: [SalmonPlays/oss-signal-adoption-demo](https://github.com/SalmonPlays/oss-signal-adoption-demo) runs `SalmonPlays/oss-signal@v0.5.1` and produced a successful [workflow run](https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26883001038) with Markdown, SARIF, and Issue-ready report artifacts.
@@ -186,7 +230,7 @@ oss-signal . --fail-under 80
186
230
  Add `oss-signal` directly to a GitHub Actions workflow:
187
231
 
188
232
  ```yaml
189
- - uses: SalmonPlays/oss-signal@v0.6.3
233
+ - uses: SalmonPlays/oss-signal@v0.7.0
190
234
  id: oss-signal
191
235
  with:
192
236
  fail-under: "80"
@@ -202,7 +246,7 @@ The Action writes a concise GitHub Actions step summary by default, so reviewers
202
246
  Run an inventory from CI:
203
247
 
204
248
  ```yaml
205
- - uses: SalmonPlays/oss-signal@v0.6.3
249
+ - uses: SalmonPlays/oss-signal@v0.7.0
206
250
  env:
207
251
  GITHUB_TOKEN: ${{ github.token }}
208
252
  with:
@@ -214,7 +258,7 @@ Run an inventory from CI:
214
258
  Generate an editable Issue body from CI:
215
259
 
216
260
  ```yaml
217
- - uses: SalmonPlays/oss-signal@v0.6.3
261
+ - uses: SalmonPlays/oss-signal@v0.7.0
218
262
  with:
219
263
  format: issue
220
264
  output: maintainer-follow-up.md
@@ -236,7 +280,7 @@ jobs:
236
280
  runs-on: ubuntu-latest
237
281
  steps:
238
282
  - uses: actions/checkout@v4
239
- - uses: SalmonPlays/oss-signal@v0.6.3
283
+ - uses: SalmonPlays/oss-signal@v0.7.0
240
284
  id: oss-signal
241
285
  with:
242
286
  fail-under: "80"
@@ -259,7 +303,7 @@ permissions:
259
303
 
260
304
  steps:
261
305
  - uses: actions/checkout@v4
262
- - uses: SalmonPlays/oss-signal@v0.6.3
306
+ - uses: SalmonPlays/oss-signal@v0.7.0
263
307
  with:
264
308
  format: sarif
265
309
  output: oss-signal.sarif
@@ -269,7 +313,7 @@ steps:
269
313
  sarif_file: oss-signal.sarif
270
314
  ```
271
315
 
272
- This repository dogfoods the public Action tag in [Repository health](.github/workflows/repository-health.yml), which runs `SalmonPlays/oss-signal@v0.6.3` against the repository, uploads the Markdown report artifact, and publishes SARIF to Code Scanning on non-PR runs.
316
+ This repository dogfoods the public Action tag in [Repository health](.github/workflows/repository-health.yml), which runs `SalmonPlays/oss-signal@v0.7.0` against the repository, uploads the Markdown report artifact, and publishes SARIF to Code Scanning on non-PR runs.
273
317
 
274
318
  You can also run the CLI directly in CI:
275
319
 
package/action.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  name: oss-signal
2
- description: Audit open-source repository maintenance readiness and produce actionable maintainer next steps.
2
+ description: Audit OSS maintainer readiness and produce CI evidence, SARIF, inventory reports, and issue-ready cleanup notes.
3
3
  author: SalmonPlays
4
4
  branding:
5
- icon: activity
5
+ icon: shield
6
6
  color: blue
7
7
  inputs:
8
8
  path:
@@ -13,7 +13,7 @@ inputs:
13
13
  description: Newline-delimited file of local paths, GitHub URLs, or owner/repo shorthands to audit as an inventory.
14
14
  required: false
15
15
  format:
16
- description: Output format, either markdown, json, sarif, or issue. Inventory mode supports markdown or json.
16
+ description: Output format, either markdown, json, sarif, issue, or plan. Inventory mode supports markdown or json.
17
17
  required: false
18
18
  default: markdown
19
19
  output:
@@ -2,17 +2,24 @@
2
2
 
3
3
  This page collects the public evidence that `oss-signal` is built for real open-source maintainer workflows.
4
4
 
5
- Last verified: 2026-06-04T02:42:51Z
5
+ Last verified: 2026-06-04T11:14:41Z
6
6
 
7
7
  ## Project Links
8
8
 
9
9
  - Repository: https://github.com/SalmonPlays/oss-signal
10
- - npm package: https://www.npmjs.com/package/oss-signal (`0.6.3` latest)
11
- - GitHub Release: https://github.com/SalmonPlays/oss-signal/releases/tag/v0.6.3
12
- - GitHub Action tag: https://github.com/SalmonPlays/oss-signal/tree/v0.6.3
10
+ - GitHub Pages landing page: https://salmonplays.github.io/oss-signal/
11
+ - npm package: https://www.npmjs.com/package/oss-signal (`0.7.0` latest)
12
+ - GitHub Release: https://github.com/SalmonPlays/oss-signal/releases/tag/v0.7.0
13
+ - GitHub Action tag: https://github.com/SalmonPlays/oss-signal/tree/v0.7.0
14
+ - GitHub Marketplace listing: https://github.com/marketplace/actions/oss-signal
13
15
  - GitHub Action metadata: [action.yml](../action.yml)
14
16
  - Public dogfood workflow: [.github/workflows/repository-health.yml](../.github/workflows/repository-health.yml)
15
17
  - Public inventory workflow: [.github/workflows/repository-inventory.yml](../.github/workflows/repository-inventory.yml)
18
+ - OpenSSF Scorecard workflow: [.github/workflows/scorecard.yml](../.github/workflows/scorecard.yml)
19
+ - Maintainers: [MAINTAINERS.md](../MAINTAINERS.md)
20
+ - Governance: [GOVERNANCE.md](../GOVERNANCE.md)
21
+ - CODEOWNERS: [.github/CODEOWNERS](../.github/CODEOWNERS)
22
+ - Maintainer workflow Discussion: https://github.com/SalmonPlays/oss-signal/discussions/5
16
23
  - Separate public workflow demo: https://github.com/SalmonPlays/oss-signal-adoption-demo
17
24
  - Separate public workflow run: https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26883001038
18
25
  - Self-audit report: [docs/self-audit.md](self-audit.md)
@@ -21,8 +28,19 @@ Last verified: 2026-06-04T02:42:51Z
21
28
  - GitHub Action workflow example: [docs/examples/github-action-workflow.yml](examples/github-action-workflow.yml)
22
29
  - Inventory target example: [docs/examples/inventory-targets.txt](examples/inventory-targets.txt)
23
30
  - Inventory report example: [docs/examples/inventory-report.md](examples/inventory-report.md)
31
+ - Brand assets and GitHub settings copy: [docs/brand.md](brand.md)
32
+ - GitHub Pages landing page source: [docs/index.md](index.md)
33
+ - GitHub Marketplace publishing checklist: [docs/marketplace.md](marketplace.md)
24
34
  - Maintainer playbook: [docs/maintainer-playbook.md](maintainer-playbook.md)
35
+ - Trust center: [docs/trust-center.md](trust-center.md)
36
+ - Adoption kit: [docs/adoption-kit.md](adoption-kit.md)
37
+ - Architecture: [docs/architecture.md](architecture.md)
38
+ - Security model: [docs/security-model.md](security-model.md)
39
+ - JSON output contract: [docs/json-output.md](json-output.md)
40
+ - SARIF Code Scanning walkthrough: [docs/sarif-code-scanning.md](sarif-code-scanning.md)
41
+ - Roadmap: [docs/roadmap.md](roadmap.md)
25
42
  - Reviewer evidence quickstart: [docs/reviewer-evidence.md](reviewer-evidence.md)
43
+ - Post-submission update: [docs/post-submission-update.md](post-submission-update.md)
26
44
  - Release process: [docs/release-process.md](release-process.md)
27
45
  - Codex for Open Source application brief: [docs/codex-for-oss-application.md](codex-for-oss-application.md)
28
46
  - Codex for Open Source form answers: [docs/codex-for-oss-form-answers.md](codex-for-oss-form-answers.md)
@@ -42,9 +60,11 @@ It also ships as a GitHub Action, so maintainers can gate repository hygiene in
42
60
 
43
61
  The [maintainer playbook](maintainer-playbook.md) documents the end-to-end workflow from audit to issue, pull request, CI gate, and Code Scanning evidence. The [release process](release-process.md) documents pre-release verification, tag consistency, npm publish checks, and post-release smoke tests.
44
62
 
63
+ The [post-submission update](post-submission-update.md) records why the current npm package and Action tag may be newer than the version referenced during application submission.
64
+
45
65
  ## Published Package Verification
46
66
 
47
- The npm package is publicly available as `oss-signal@0.6.3` with `latest` pointing at `0.6.3`.
67
+ The npm package is publicly available as `oss-signal@0.7.0` with `latest` pointing at `0.7.0`.
48
68
 
49
69
  The npm downloads API returned 356 downloads for both last-week and last-month windows on 2026-06-04. Download counts can lag publication, so this is treated as supporting evidence rather than proof of broad adoption.
50
70
 
@@ -52,7 +72,7 @@ Clean-directory execution against the public GitHub repository returned:
52
72
 
53
73
  ```json
54
74
  {
55
- "version": "0.6.3",
75
+ "version": "0.7.0",
56
76
  "score": 100,
57
77
  "grade": "A",
58
78
  "source": "github"
@@ -63,11 +83,21 @@ Current public workflow status:
63
83
 
64
84
  - CI: passing
65
85
  - Repository health: passing
86
+ - Repository inventory: passing
66
87
  - CodeQL: passing
88
+ - OpenSSF Scorecard: configured on `main` pushes and a weekly schedule, with JSON artifact output and public Scorecard publishing
67
89
  - Release: passing
90
+ - GitHub Pages deployment: passing, with the repository homepage set to https://salmonplays.github.io/oss-signal/
91
+ - GitHub Marketplace listing: published for the `v0.7.0` Action release
92
+ - GitHub issue forms: adoption report and maintainer audit report forms are available for structured public evidence intake
93
+ - GitHub citation metadata: `CITATION.cff` is present for the repository citation UI
94
+ - Automation contract: JSON schema and fixture are documented for `--format json`
95
+ - Code Scanning walkthrough: SARIF upload permissions, expected warnings, fixture, and output example are documented
96
+ - GitHub repository hardening: `main` branch protection, private vulnerability reporting, dependency graph, automatic dependency submission, Dependabot alerts/security updates/grouped updates/malware alerts, secret scanning, and push protection are enabled
97
+ - Maintainer workflow Discussion: published
68
98
  - Separate public workflow demo: passing
69
99
 
70
- The npm registry returned `0.6.3` for both the package version and `latest` dist-tag on 2026-06-04T02:42:51Z. The same check returned 356 downloads for the last-week and last-month windows.
100
+ After the v0.7.0 release, the npm registry should return `0.7.0` for both the package version and `latest` dist-tag. The earlier 2026-06-04 download check returned 356 downloads for the last-week and last-month windows.
71
101
 
72
102
  ## Separate Public Workflow Evidence
73
103
 
@@ -89,10 +119,34 @@ The tool has been used to generate maintainer-readiness reports for public repos
89
119
  | `supermarkt/checkjebon` | [report](outreach/supermarkt-checkjebon-report.md) | https://github.com/supermarkt/checkjebon/issues/22 | https://github.com/supermarkt/checkjebon/pull/23 | open, clean |
90
120
  | `sammorrisdesign/interactive-feed` | [report](outreach/sammorrisdesign-interactive-feed-report.md) | https://github.com/sammorrisdesign/interactive-feed/issues/14 | https://github.com/sammorrisdesign/interactive-feed/pull/15 | open |
91
121
  | `flox/install-flox-action` | [report](outreach/flox-install-flox-action-report.md) | https://github.com/flox/install-flox-action/issues/204 | https://github.com/flox/install-flox-action/pull/205 | open, checks pending |
122
+ | `Grovanni/oss-signal` | [report](outreach/grovanni-oss-signal-report.md) | https://github.com/Grovanni/oss-signal/issues/1 | N/A | open |
92
123
 
93
124
  These issues and pull requests are evidence of the intended maintainer workflow: run a deterministic audit, explain the missing signals, and give maintainers a small set of actionable improvements. Each PR is intentionally limited to documentation or GitHub templates.
94
125
 
95
- All four follow-up PRs were still open when checked from GitHub on 2026-06-04T02:42:51Z. They are not claimed as accepted adoption unless a maintainer merges or otherwise endorses them.
126
+ Prepared but not yet posted outreach candidates are tracked separately in [outreach/peer-shortlist-2026-06.md](outreach/peer-shortlist-2026-06.md) and [outreach](outreach). This prevents candidate research from being overstated as real external maintainer engagement.
127
+
128
+ The workflow now includes [plan-output.md](plan-output.md), which converts audit findings into a PR-sized sequence before a contributor posts externally. The example [examples/github-plan.md](examples/github-plan.md) uses the `Grovanni/oss-signal` field audit and shows suggested files plus acceptance criteria.
129
+
130
+ Additional focused external contribution:
131
+
132
+ - `icoretech/codex-action`: https://github.com/icoretech/codex-action/pull/24 updates Codex Action README examples so generated output is routed through environment variables before shell printing.
133
+
134
+ All field-audit follow-up PRs were still open when checked from GitHub on 2026-06-04T10:38:39Z. They are not claimed as accepted adoption unless a maintainer merges or otherwise endorses them.
135
+
136
+ ## Contributor Intake
137
+
138
+ The project now has labeled good-first-issue routes for outside contributors:
139
+
140
+ - https://github.com/SalmonPlays/oss-signal/issues/6
141
+ - https://github.com/SalmonPlays/oss-signal/issues/7
142
+
143
+ The repository also includes a GitHub Discussions category form for structured rule feedback, Action usage questions, and maintainer workflow adoption notes. The issue templates include adoption and maintainer-audit forms so users can share workflow-run evidence or discuss reports without inventing the format.
144
+
145
+ Current public roadmap evidence:
146
+
147
+ - https://github.com/SalmonPlays/oss-signal/issues/8 tracks the first independent public workflow run or maintainer acknowledgement.
148
+ - https://github.com/SalmonPlays/oss-signal/issues/9 was closed as completed after adding [json-output.md](json-output.md), the JSON schema, fixture, and reviewer links.
149
+ - https://github.com/SalmonPlays/oss-signal/issues/10 was closed as completed after adding [sarif-code-scanning.md](sarif-code-scanning.md), the Code Scanning output example, and reviewer links.
96
150
 
97
151
  ## Verification Commands
98
152
 
@@ -104,16 +158,18 @@ npm run audit:github
104
158
  node src/cli.js . --format sarif --output docs/examples/self-audit.sarif
105
159
  node src/cli.js --inventory docs/examples/inventory-targets.txt --format markdown --output docs/examples/inventory-report.md
106
160
  node src/cli.js platformatic/massimo --format json
107
- npm exec --yes --package=oss-signal@0.6.3 -- oss-signal SalmonPlays/oss-signal --format json
161
+ npm exec --yes --package=oss-signal@0.7.0 -- oss-signal SalmonPlays/oss-signal --format json
108
162
  ```
109
163
 
110
- The current repository self-audit score is 100/100, the GitHub community profile health score is 100, and CI verifies the local GitHub Action wrapper. The public `v0.6.3` Action tag is used by the repository health workflow for Markdown and SARIF output. The published npm `0.6.3` package has also been executed from a clean temporary directory against the public GitHub repository, returning 100/100 (A).
164
+ The current repository self-audit score is 100/100, the GitHub community profile health score is 100, and CI verifies the local GitHub Action wrapper. The public `v0.7.0` Action tag is used by the repository health workflow for Markdown and SARIF output. The published npm `0.7.0` package has also been executed from a clean temporary directory against the public GitHub repository, returning 100/100 (A).
111
165
 
112
166
  Public CI evidence:
113
167
 
114
168
  - CI workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/ci.yml
115
169
  - Repository health workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/repository-health.yml
116
170
  - CodeQL workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/codeql.yml
171
+ - OpenSSF Scorecard workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/scorecard.yml
172
+ - Maintainer workflow Discussion: https://github.com/SalmonPlays/oss-signal/discussions/5
117
173
  - Separate workflow demo run: https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26883001038
118
174
  - Reviewer verification quickstart: [reviewer-evidence.md](reviewer-evidence.md)
119
175
 
@@ -0,0 +1,92 @@
1
+ # Adoption Kit
2
+
3
+ This page gives maintainers a copy-paste path for trying `oss-signal` and leaving useful public evidence.
4
+
5
+ ## Try The CLI
6
+
7
+ Run against a public repository without cloning:
8
+
9
+ ```bash
10
+ npm exec --yes --package=oss-signal@0.7.0 -- oss-signal owner/repo --format markdown --output oss-signal-report.md
11
+ ```
12
+
13
+ Run against the current checkout:
14
+
15
+ ```bash
16
+ npx oss-signal . --format markdown --output oss-signal-report.md
17
+ ```
18
+
19
+ Generate a human-reviewed issue body:
20
+
21
+ ```bash
22
+ npx oss-signal owner/repo --format issue --output maintainer-follow-up.md
23
+ ```
24
+
25
+ ## Add The GitHub Action
26
+
27
+ ```yaml
28
+ name: Repository health
29
+
30
+ on:
31
+ pull_request:
32
+ push:
33
+ branches: [main]
34
+
35
+ permissions:
36
+ contents: read
37
+
38
+ jobs:
39
+ oss-signal:
40
+ runs-on: ubuntu-latest
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ - uses: SalmonPlays/oss-signal@v0.7.0
44
+ id: oss-signal
45
+ with:
46
+ fail-under: "80"
47
+ output: oss-signal-report.md
48
+ summary: "true"
49
+ - uses: actions/upload-artifact@v4
50
+ with:
51
+ name: oss-signal-report
52
+ path: oss-signal-report.md
53
+ ```
54
+
55
+ ## Add SARIF To Code Scanning
56
+
57
+ ```yaml
58
+ permissions:
59
+ contents: read
60
+ security-events: write
61
+
62
+ steps:
63
+ - uses: actions/checkout@v4
64
+ - uses: SalmonPlays/oss-signal@v0.7.0
65
+ with:
66
+ format: sarif
67
+ output: oss-signal.sarif
68
+ summary: "false"
69
+ - uses: github/codeql-action/upload-sarif@v3
70
+ with:
71
+ sarif_file: oss-signal.sarif
72
+ ```
73
+
74
+ Full walkthrough: [sarif-code-scanning.md](sarif-code-scanning.md)
75
+
76
+ ## Share Evidence
77
+
78
+ Useful adoption evidence is concrete and public:
79
+
80
+ - A workflow run that uses `SalmonPlays/oss-signal@v0.7.0`.
81
+ - A Markdown report attached as a workflow artifact.
82
+ - A SARIF upload that appears in Code Scanning.
83
+ - A focused issue or pull request created from an audit finding.
84
+ - A short note about what maintainer task the audit improved.
85
+
86
+ Open an [adoption report](https://github.com/SalmonPlays/oss-signal/issues/new?template=adoption_report.yml) when a public repository uses the CLI or Action. Open a [maintainer audit report](https://github.com/SalmonPlays/oss-signal/issues/new?template=audit_report.yml) when you want to discuss a generated report before posting follow-up to another repository.
87
+
88
+ ## Boundaries
89
+
90
+ Do not treat the score as a code-quality verdict. It measures visible maintainer-readiness signals: contribution paths, security reporting, CI, templates, release notes, and related repository hygiene.
91
+
92
+ Do not claim third-party adoption unless the repository owner or maintainer has actually used, merged, or acknowledged the workflow.
@@ -0,0 +1,57 @@
1
+ # Architecture
2
+
3
+ `oss-signal` is intentionally small: a Node.js CLI, a GitHub Action wrapper, and deterministic rule modules that inspect visible repository files and GitHub repository metadata.
4
+
5
+ ## Components
6
+
7
+ | Component | Path | Responsibility |
8
+ | --- | --- | --- |
9
+ | CLI entrypoint | [src/cli.js](../src/cli.js) | Parses arguments, selects local/GitHub/inventory mode, writes reports, and applies `--fail-under`. |
10
+ | Audit engine | [src/index.js](../src/index.js) | Reads repository files, evaluates maintainer-readiness rules, scores results, and renders Markdown, JSON, SARIF, inventory, or issue output. |
11
+ | Action wrapper | [src/action.js](../src/action.js) | Maps GitHub Action inputs to CLI behavior, sets Action outputs, and writes the step summary. |
12
+ | Action metadata | [action.yml](../action.yml) | Defines Marketplace-visible inputs, outputs, branding, and Node runtime. |
13
+ | Rules reference | [docs/rules.md](rules.md) | Documents each rule, weight, and maintainer rationale. |
14
+
15
+ ## Data Flow
16
+
17
+ ```mermaid
18
+ flowchart LR
19
+ input["Repository path, GitHub URL, owner/repo, or inventory file"]
20
+ reader["File and metadata reader"]
21
+ rules["Maintainer-readiness rules"]
22
+ score["Score and grade"]
23
+ outputs["Markdown, JSON, SARIF, issue body, or inventory report"]
24
+ ci["GitHub Actions summary, artifact, or Code Scanning upload"]
25
+
26
+ input --> reader --> rules --> score --> outputs --> ci
27
+ ```
28
+
29
+ ## Local Repository Mode
30
+
31
+ Local mode reads files from the target path and checks for visible maintainer signals such as `README`, license, `CONTRIBUTING.md`, `SECURITY.md`, issue templates, pull request templates, CI, tests, Dependabot, CodeQL-style workflows, and release notes.
32
+
33
+ No network access is required for local mode.
34
+
35
+ ## GitHub Repository Mode
36
+
37
+ GitHub URL mode fetches a public repository file tree through the GitHub API and checks the same visible signals without requiring a clone. When `GITHUB_TOKEN` is available, it can use the token for higher API rate limits. The token is not printed in output.
38
+
39
+ ## Inventory Mode
40
+
41
+ Inventory mode reads a newline-delimited target list and runs the audit for each repository. It is designed for maintainers who need a quick portfolio view across several public repositories.
42
+
43
+ ## Output Modes
44
+
45
+ - Markdown: human-readable maintainer report.
46
+ - JSON: automation-friendly result object.
47
+ - SARIF: warning-level findings for GitHub Code Scanning or other SARIF consumers.
48
+ - Issue: an editable maintainer follow-up body.
49
+ - Inventory: table and aggregate summary across multiple targets.
50
+
51
+ ## Design Constraints
52
+
53
+ - Dependency-light by design.
54
+ - Deterministic scoring from visible repository signals.
55
+ - No hidden telemetry.
56
+ - No automatic issue or pull request posting.
57
+ - No claim that the score measures product quality, code quality, popularity, or security completeness.
@@ -0,0 +1,22 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="920" height="430" viewBox="0 0 920 430" role="img" aria-labelledby="title desc">
2
+ <title id="title">oss-signal Code Scanning results example</title>
3
+ <desc id="desc">Example GitHub Code Scanning view showing warning-level maintainer-readiness findings from oss-signal SARIF output.</desc>
4
+ <rect width="920" height="430" rx="18" fill="#ffffff"/>
5
+ <rect x="1" y="1" width="918" height="428" rx="18" fill="none" stroke="#d0d7de" stroke-width="2"/>
6
+ <rect x="0" y="0" width="920" height="58" rx="18" fill="#f6f8fa"/>
7
+ <text x="32" y="37" fill="#24292f" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="18" font-weight="700">GitHub Code Scanning</text>
8
+ <text x="32" y="98" fill="#24292f" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="28" font-weight="700">oss-signal maintainer-readiness findings</text>
9
+ <text x="32" y="132" fill="#57606a" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="16">SARIF upload from SalmonPlays/oss-signal@v0.7.0</text>
10
+ <rect x="32" y="162" width="856" height="72" rx="10" fill="#fffbdd" stroke="#d4a72c"/>
11
+ <circle cx="65" cy="198" r="10" fill="#bf8700"/>
12
+ <text x="88" y="194" fill="#24292f" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="17" font-weight="700">oss-signal/security</text>
13
+ <text x="88" y="218" fill="#57606a" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="15">Security policy: Add SECURITY.md with supported versions and reporting instructions.</text>
14
+ <text x="758" y="203" fill="#57606a" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="15">warning</text>
15
+ <rect x="32" y="252" width="856" height="72" rx="10" fill="#fffbdd" stroke="#d4a72c"/>
16
+ <circle cx="65" cy="288" r="10" fill="#bf8700"/>
17
+ <text x="88" y="284" fill="#24292f" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="17" font-weight="700">oss-signal/dependabot</text>
18
+ <text x="88" y="308" fill="#57606a" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="15">Dependency update automation: Add .github/dependabot.yml for the repository ecosystem.</text>
19
+ <text x="758" y="293" fill="#57606a" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="15">warning</text>
20
+ <rect x="32" y="342" width="856" height="46" rx="10" fill="#f6f8fa" stroke="#d0d7de"/>
21
+ <text x="54" y="371" fill="#57606a" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="15">Report properties include score, grade, source, and generatedAt for reviewer context.</text>
22
+ </svg>
@@ -0,0 +1,45 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="640" viewBox="0 0 1280 640" role="img" aria-labelledby="title desc">
2
+ <title id="title">OSS Maintainer Signal social preview</title>
3
+ <desc id="desc">Social preview image for the oss-signal repository.</desc>
4
+ <defs>
5
+ <linearGradient id="bg" x1="0" y1="0" x2="1280" y2="640" gradientUnits="userSpaceOnUse">
6
+ <stop offset="0" stop-color="#020617"/>
7
+ <stop offset="0.45" stop-color="#0f172a"/>
8
+ <stop offset="1" stop-color="#064e3b"/>
9
+ </linearGradient>
10
+ <linearGradient id="mark" x1="100" y1="95" x2="360" y2="360" gradientUnits="userSpaceOnUse">
11
+ <stop offset="0" stop-color="#38bdf8"/>
12
+ <stop offset="0.55" stop-color="#2563eb"/>
13
+ <stop offset="1" stop-color="#22c55e"/>
14
+ </linearGradient>
15
+ <filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
16
+ <feDropShadow dx="0" dy="22" stdDeviation="28" flood-color="#000000" flood-opacity="0.38"/>
17
+ </filter>
18
+ </defs>
19
+ <rect width="1280" height="640" fill="url(#bg)"/>
20
+ <circle cx="1080" cy="88" r="250" fill="#22c55e" opacity="0.12"/>
21
+ <circle cx="158" cy="562" r="270" fill="#38bdf8" opacity="0.14"/>
22
+ <path d="M80 526c240-185 478-239 713-161 177 58 314 29 420-83" fill="none" stroke="#93c5fd" stroke-width="2" opacity="0.18"/>
23
+ <g transform="translate(92 112)" filter="url(#shadow)">
24
+ <rect width="264" height="264" rx="60" fill="url(#mark)"/>
25
+ <path d="M132 42l83 31v69c0 52-33 91-83 110-50-19-83-58-83-110V73l83-31z" fill="#020617" opacity="0.3"/>
26
+ <circle cx="132" cy="146" r="53" fill="#f8fafc"/>
27
+ <path d="M105 146l20 20 42-49" fill="none" stroke="#16a34a" stroke-width="17" stroke-linecap="round" stroke-linejoin="round"/>
28
+ <path d="M81 92c28-25 74-25 102 0" fill="none" stroke="#e0f2fe" stroke-width="12" stroke-linecap="round" opacity="0.86"/>
29
+ </g>
30
+ <text x="410" y="160" fill="#93c5fd" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="28" font-weight="800" letter-spacing="4">OSS-SIGNAL</text>
31
+ <text x="410" y="238" fill="#f8fafc" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="70" font-weight="850">OSS Maintainer Signal</text>
32
+ <text x="414" y="300" fill="#cbd5e1" font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="31">A maintainer-readiness CLI and GitHub Action for OSS cleanup.</text>
33
+ <g font-family="-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="24" font-weight="800">
34
+ <rect x="414" y="366" width="176" height="56" rx="28" fill="#dcfce7"/>
35
+ <text x="448" y="402" fill="#166534">100/100 A</text>
36
+ <rect x="612" y="366" width="178" height="56" rx="28" fill="#dbeafe"/>
37
+ <text x="646" y="402" fill="#1e40af">npm latest</text>
38
+ <rect x="812" y="366" width="246" height="56" rx="28" fill="#e0f2fe"/>
39
+ <text x="851" y="402" fill="#075985">SARIF + Issues</text>
40
+ </g>
41
+ <g transform="translate(414 478)" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" font-size="23">
42
+ <text x="0" y="0" fill="#22c55e">$ npx oss-signal SalmonPlays/oss-signal</text>
43
+ <text x="0" y="44" fill="#e2e8f0">score: 100/100 grade: A source: github</text>
44
+ </g>
45
+ </svg>