oss-signal 0.4.0 → 0.5.1

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.
package/CHANGELOG.md CHANGED
@@ -2,11 +2,21 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
- - Added a maintainer playbook for audit-to-issue, PR, CI gate, and SARIF workflows.
6
- - Added a documented release process and tag-triggered release workflow with npm dry-run verification.
5
+ ## 0.5.1
6
+
7
+ - Published the Issue-ready output release on a clean tag after release workflow hardening.
8
+ - Guarded automatic npm publishing behind an explicit repository variable.
9
+
10
+ ## 0.5.0
11
+
12
+ - Added `--format issue` for generating human-reviewed GitHub Issue bodies from audit findings.
13
+ - Added an issue-output example and maintainer playbook guidance for audit-to-issue workflows.
7
14
 
8
15
  ## 0.4.0
9
16
 
17
+ - Added a maintainer playbook for audit-to-issue, PR, CI gate, and SARIF workflows.
18
+ - Added a documented release process and tag-triggered release workflow with npm dry-run verification.
19
+
10
20
  - Added SARIF output for GitHub Code Scanning and other security dashboards.
11
21
  - Added Action support for `format: sarif`.
12
22
 
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  `oss-signal` is a dependency-light CLI for auditing open-source repository maintenance readiness.
11
11
 
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, or SARIF.
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.
13
13
 
14
14
  ![oss-signal example output](docs/assets/terminal-report.svg)
15
15
 
@@ -87,6 +87,12 @@ Generate a report that can be attached to an issue:
87
87
  oss-signal . --format markdown --output docs/maintainer-readiness.md
88
88
  ```
89
89
 
90
+ Generate a maintainer-friendly issue body:
91
+
92
+ ```bash
93
+ oss-signal platformatic/massimo --format issue --output maintainer-follow-up.md
94
+ ```
95
+
90
96
  ## Checks
91
97
 
92
98
  `oss-signal` currently checks:
@@ -97,7 +103,7 @@ oss-signal . --format markdown --output docs/maintainer-readiness.md
97
103
 
98
104
  See [docs/rules.md](docs/rules.md) for rule details and scoring weights.
99
105
 
100
- 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.
106
+ 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.
101
107
 
102
108
  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.
103
109
 
@@ -114,9 +120,9 @@ Summary:
114
120
  - Total checks: 15
115
121
  ```
116
122
 
117
- 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, and [docs/examples/self-audit.sarif](docs/examples/self-audit.sarif) for SARIF output.
123
+ 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.
118
124
 
119
- The [Repository health workflow](.github/workflows/repository-health.yml) runs `SalmonPlays/oss-signal@v0.4.0`, uploads the Markdown report as an artifact, and uploads SARIF to GitHub Code Scanning on non-PR runs.
125
+ The [Repository health workflow](.github/workflows/repository-health.yml) runs `SalmonPlays/oss-signal@v0.5.1`, uploads the Markdown report as an artifact, and uploads SARIF to GitHub Code Scanning on non-PR runs.
120
126
 
121
127
  ## Field Audits
122
128
 
@@ -130,6 +136,8 @@ See [docs/outreach](docs/outreach) for the reports and draft issue text. Drafts
130
136
 
131
137
  For a compact maintainer/adoption summary, see [docs/adoption-evidence.md](docs/adoption-evidence.md).
132
138
 
139
+ Separate public workflow evidence: [SalmonPlays/oss-signal-adoption-demo](https://github.com/SalmonPlays/oss-signal-adoption-demo) runs `SalmonPlays/oss-signal@v0.4.0` and produced a successful [workflow run](https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26862361229) with a report artifact.
140
+
133
141
  ## Example Recommendation Output
134
142
 
135
143
  ```text
@@ -157,7 +165,7 @@ oss-signal . --fail-under 80
157
165
  Add `oss-signal` directly to a GitHub Actions workflow:
158
166
 
159
167
  ```yaml
160
- - uses: SalmonPlays/oss-signal@v0.4.0
168
+ - uses: SalmonPlays/oss-signal@v0.5.1
161
169
  id: oss-signal
162
170
  with:
163
171
  fail-under: "80"
@@ -170,6 +178,16 @@ The Action writes a concise GitHub Actions step summary by default, so reviewers
170
178
 
171
179
  ![oss-signal GitHub Actions summary](docs/assets/github-step-summary.svg)
172
180
 
181
+ Generate an editable Issue body from CI:
182
+
183
+ ```yaml
184
+ - uses: SalmonPlays/oss-signal@v0.5.1
185
+ with:
186
+ format: issue
187
+ output: maintainer-follow-up.md
188
+ summary: "true"
189
+ ```
190
+
173
191
  Full workflow example:
174
192
 
175
193
  ```yaml
@@ -185,7 +203,7 @@ jobs:
185
203
  runs-on: ubuntu-latest
186
204
  steps:
187
205
  - uses: actions/checkout@v4
188
- - uses: SalmonPlays/oss-signal@v0.4.0
206
+ - uses: SalmonPlays/oss-signal@v0.5.1
189
207
  id: oss-signal
190
208
  with:
191
209
  fail-under: "80"
@@ -208,7 +226,7 @@ permissions:
208
226
 
209
227
  steps:
210
228
  - uses: actions/checkout@v4
211
- - uses: SalmonPlays/oss-signal@v0.4.0
229
+ - uses: SalmonPlays/oss-signal@v0.5.1
212
230
  with:
213
231
  format: sarif
214
232
  output: oss-signal.sarif
@@ -218,7 +236,7 @@ steps:
218
236
  sarif_file: oss-signal.sarif
219
237
  ```
220
238
 
221
- This repository dogfoods the public Action tag in [Repository health](.github/workflows/repository-health.yml), which runs `SalmonPlays/oss-signal@v0.4.0` against the repository, uploads the Markdown report artifact, and publishes SARIF to Code Scanning on non-PR runs.
239
+ This repository dogfoods the public Action tag in [Repository health](.github/workflows/repository-health.yml), which runs `SalmonPlays/oss-signal@v0.5.1` against the repository, uploads the Markdown report artifact, and publishes SARIF to Code Scanning on non-PR runs.
222
240
 
223
241
  You can also run the CLI directly in CI:
224
242
 
package/action.yml CHANGED
@@ -10,7 +10,7 @@ inputs:
10
10
  required: false
11
11
  default: "."
12
12
  format:
13
- description: Output format, either markdown, json, or sarif.
13
+ description: Output format, either markdown, json, sarif, or issue.
14
14
  required: false
15
15
  default: markdown
16
16
  output:
@@ -5,11 +5,13 @@ This page collects the public evidence that `oss-signal` is built for real open-
5
5
  ## Project Links
6
6
 
7
7
  - Repository: https://github.com/SalmonPlays/oss-signal
8
- - npm package: https://www.npmjs.com/package/oss-signal (`0.3.0` latest)
9
- - GitHub Release: https://github.com/SalmonPlays/oss-signal/releases/tag/v0.4.0
10
- - GitHub Action tag: https://github.com/SalmonPlays/oss-signal/tree/v0.4.0
8
+ - npm package: https://www.npmjs.com/package/oss-signal (`0.5.1` latest)
9
+ - GitHub Release: https://github.com/SalmonPlays/oss-signal/releases/tag/v0.5.1
10
+ - GitHub Action tag: https://github.com/SalmonPlays/oss-signal/tree/v0.5.1
11
11
  - GitHub Action metadata: [action.yml](../action.yml)
12
12
  - Public dogfood workflow: [.github/workflows/repository-health.yml](../.github/workflows/repository-health.yml)
13
+ - Separate public workflow demo: https://github.com/SalmonPlays/oss-signal-adoption-demo
14
+ - Separate public workflow run: https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26862361229
13
15
  - Self-audit report: [docs/self-audit.md](self-audit.md)
14
16
  - SARIF self-audit output: [docs/examples/self-audit.sarif](examples/self-audit.sarif)
15
17
  - GitHub URL audit report: [docs/examples/github-url-report.md](examples/github-url-report.md)
@@ -17,6 +19,7 @@ This page collects the public evidence that `oss-signal` is built for real open-
17
19
  - Maintainer playbook: [docs/maintainer-playbook.md](maintainer-playbook.md)
18
20
  - Release process: [docs/release-process.md](release-process.md)
19
21
  - Codex for Open Source application brief: [docs/codex-for-oss-application.md](codex-for-oss-application.md)
22
+ - Codex for Open Source form answers: [docs/codex-for-oss-form-answers.md](codex-for-oss-form-answers.md)
20
23
  - Rule reference: [docs/rules.md](rules.md)
21
24
 
22
25
  ## Maintainer Use Case
@@ -32,6 +35,16 @@ It also ships as a GitHub Action, so maintainers can gate repository hygiene in
32
35
 
33
36
  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.
34
37
 
38
+ ## Separate Public Workflow Evidence
39
+
40
+ The public repository https://github.com/SalmonPlays/oss-signal-adoption-demo runs `SalmonPlays/oss-signal@v0.4.0` from a separate workflow file:
41
+
42
+ - Workflow file: https://github.com/SalmonPlays/oss-signal-adoption-demo/blob/main/.github/workflows/oss-signal.yml
43
+ - Successful workflow run: https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26862361229
44
+ - Artifact: `oss-signal-adoption-demo-report`, containing `oss-signal-report.md` and `oss-signal.sarif`
45
+
46
+ This is not claimed as independent third-party adoption because the repository is owned by `SalmonPlays`. It is evidence that the public `v0.4.0` Action tag works outside the main repository and can publish maintainer-readiness reports from another public workflow.
47
+
35
48
  ## Public Field Audits And PRs
36
49
 
37
50
  The tool has been used to generate maintainer-readiness reports for public repositories and convert them into respectful cleanup issues:
@@ -53,16 +66,17 @@ npm run check
53
66
  npm run audit:github
54
67
  node src/cli.js . --format sarif --output docs/examples/self-audit.sarif
55
68
  node src/cli.js platformatic/massimo --format json
56
- npx --yes oss-signal@0.3.0 SalmonPlays/oss-signal --format json
69
+ npm exec --yes --package=oss-signal@0.5.1 -- oss-signal SalmonPlays/oss-signal --format json
57
70
  ```
58
71
 
59
- 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.4.0` Action tag is used by the repository health workflow for Markdown and SARIF output. The published npm `0.3.0` package has also been executed from a clean temporary directory against the public GitHub repository.
72
+ 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.5.1` Action tag is used by the repository health workflow for Markdown and SARIF output. The published npm `0.5.1` package has also been executed from a clean temporary directory against the public GitHub repository, returning 100/100 (A).
60
73
 
61
74
  Public CI evidence:
62
75
 
63
76
  - CI workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/ci.yml
64
77
  - Repository health workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/repository-health.yml
65
78
  - CodeQL workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/codeql.yml
79
+ - Separate workflow demo run: https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26862361229
66
80
 
67
81
  ## Boundaries
68
82
 
@@ -1,6 +1,6 @@
1
1
  # Codex for Open Source Application Brief
2
2
 
3
- Snapshot: 2026-06-03T03:06:42Z
3
+ Snapshot: 2026-06-03T05:11:50Z
4
4
 
5
5
  This document summarizes why `oss-signal` is a fit for OpenAI's Codex for Open Source program. The official program page says open-source maintainers can apply, with emphasis on core maintainers, widely used public projects, and projects that play an important ecosystem role: https://developers.openai.com/community/codex-for-oss
6
6
 
@@ -8,12 +8,14 @@ This document summarizes why `oss-signal` is a fit for OpenAI's Codex for Open S
8
8
 
9
9
  - Repository: https://github.com/SalmonPlays/oss-signal
10
10
  - npm package: https://www.npmjs.com/package/oss-signal
11
- - GitHub Release: https://github.com/SalmonPlays/oss-signal/releases/tag/v0.4.0
12
- - GitHub Action tag: https://github.com/SalmonPlays/oss-signal/tree/v0.4.0
11
+ - GitHub Release: https://github.com/SalmonPlays/oss-signal/releases/tag/v0.5.1
12
+ - GitHub Action tag: https://github.com/SalmonPlays/oss-signal/tree/v0.5.1
13
13
  - CI workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/ci.yml
14
14
  - Repository health workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/repository-health.yml
15
15
  - CodeQL workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/codeql.yml
16
+ - Separate public workflow demo: https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26862361229
16
17
  - Maintainer evidence: [adoption-evidence.md](adoption-evidence.md)
18
+ - Form answer pack: [codex-for-oss-form-answers.md](codex-for-oss-form-answers.md)
17
19
  - Maintainer playbook: [maintainer-playbook.md](maintainer-playbook.md)
18
20
  - Release process: [release-process.md](release-process.md)
19
21
 
@@ -42,19 +44,26 @@ This project is designed around repeatable maintainer workflows where Codex is u
42
44
 
43
45
  The repository currently has:
44
46
 
45
- - A published npm package with `0.3.0` as the latest release.
46
- - A published GitHub Release for v0.4.0 with SARIF release notes and CI usage guidance.
47
+ - A published npm package with `0.5.1` as the latest release.
48
+ - A published GitHub Release for v0.5.1 with issue-output release notes and CI usage guidance.
47
49
  - A reusable GitHub Action with `score`, `grade`, `failed`, and `report-path` outputs.
48
50
  - SARIF output for GitHub Code Scanning integration.
49
- - A v0.4.0 GitHub Action tag with step summary and SARIF support.
50
- - A public dogfood workflow that runs `SalmonPlays/oss-signal@v0.4.0` against the repository, uploads the Markdown report artifact, and uploads SARIF to GitHub Code Scanning on non-PR runs.
51
+ - A v0.5.1 GitHub Action tag with step summary, SARIF support, and Issue-ready output.
52
+ - A public dogfood workflow that runs `SalmonPlays/oss-signal@v0.5.1` against the repository, uploads the Markdown report artifact, and uploads SARIF to GitHub Code Scanning on non-PR runs.
53
+ - A separate public workflow demo that runs `SalmonPlays/oss-signal@v0.4.0` from another repository and uploads a report artifact.
51
54
  - A maintainer playbook that documents audit, triage, issue, PR, CI, and SARIF workflows.
52
55
  - A release process and tag-triggered release workflow that verify package contents and support npm provenance publishing when repository secrets are configured.
53
56
  - CI and CodeQL workflows passing on `main`.
54
57
  - A local self-audit score of 100/100.
55
- - A clean-directory smoke test of `npx --yes oss-signal@0.3.0 SalmonPlays/oss-signal --format json`, returning 100/100 (A).
58
+ - A clean-directory smoke test of `npm exec --yes --package=oss-signal@0.5.1 -- oss-signal SalmonPlays/oss-signal --format json`, returning 100/100 (A).
56
59
  - Public reports, issues, and PRs created from real repository audits.
57
60
 
61
+ ## Separate Workflow Demo
62
+
63
+ The repository https://github.com/SalmonPlays/oss-signal-adoption-demo runs the public `SalmonPlays/oss-signal@v0.4.0` Action tag from a separate workflow. The successful run at https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26862361229 uploaded an `oss-signal-adoption-demo-report` artifact containing Markdown and SARIF output.
64
+
65
+ This is intentionally described as a separate public workflow demo rather than third-party adoption because the repository is also owned by `SalmonPlays`. It still proves that the published Action tag is consumable outside the main repository.
66
+
58
67
  ## Field Audits And Follow-Up PRs
59
68
 
60
69
  | Repository | Report | Issue | PR | Status |
@@ -71,14 +80,16 @@ Recommended application angle:
71
80
 
72
81
  `oss-signal` is not yet a widely adopted project, but it is a public OSS maintainer tool built specifically for repeatable Codex-assisted maintenance. The project already has a working CLI, npm distribution, GitHub Action, passing CI/CodeQL, self-audit evidence, and three public field-audit PRs. Codex support would be used to continue auditing repositories, prepare focused maintainer PRs, improve Action automation, and document repeatable OSS maintenance workflows.
73
82
 
83
+ Prepared official form answers are in [codex-for-oss-form-answers.md](codex-for-oss-form-answers.md). The applicant still needs to fill personal identity fields and their OpenAI Organization ID directly.
84
+
74
85
  ## Current Gaps
75
86
 
76
87
  - External PRs are open but not yet merged.
77
88
  - npm download metrics are still early because the package is newly published.
78
- - The project needs more real maintainers using the Action in their own repositories.
89
+ - The project needs independent maintainer-owned repositories using the Action in their own workflows.
79
90
 
80
91
  ## Next Evidence To Collect
81
92
 
82
93
  - One or more merged external PRs.
83
- - A public workflow run in another repository using `SalmonPlays/oss-signal@v0.4.0`, ideally with SARIF upload enabled.
94
+ - A public workflow run in an independent maintainer-owned repository using `SalmonPlays/oss-signal@v0.5.1`, ideally with SARIF upload enabled.
84
95
  - npm download data once the registry starts reporting weekly/monthly counts.
@@ -0,0 +1,94 @@
1
+ # Codex for Open Source Form Answers
2
+
3
+ Snapshot: 2026-06-03T05:11:50Z
4
+
5
+ This page prepares concise answers for the official Codex for Open Source application form: https://openai.com/form/codex-for-oss/
6
+
7
+ The official form asks for personal identity fields that must be filled by the applicant:
8
+
9
+ - First name
10
+ - Last name
11
+ - Email associated with the applicant's ChatGPT account
12
+ - OpenAI Organization ID
13
+
14
+ ## First Name
15
+
16
+ ```text
17
+ Fill manually.
18
+ ```
19
+
20
+ ## Last Name
21
+
22
+ ```text
23
+ Fill manually.
24
+ ```
25
+
26
+ ## Email
27
+
28
+ ```text
29
+ Fill manually with the email associated with the applicant's ChatGPT account.
30
+ ```
31
+
32
+ ## GitHub Username
33
+
34
+ ```text
35
+ SalmonPlays
36
+ ```
37
+
38
+ ## GitHub Repository URL
39
+
40
+ ```text
41
+ https://github.com/SalmonPlays/oss-signal
42
+ ```
43
+
44
+ ## Describe Your Role
45
+
46
+ ```text
47
+ Primary maintainer
48
+ ```
49
+
50
+ ## Why This Repository Qualifies
51
+
52
+ ```text
53
+ oss-signal is a public OSS maintainer tool for reducing triage and review load. It ships as npm package oss-signal@0.5.1 and GitHub Action SalmonPlays/oss-signal@v0.5.1, supports Markdown/JSON/SARIF/Issue output, passes CI/CodeQL, and has public field-audit issues/PRs plus a separate workflow demo.
54
+ ```
55
+
56
+ ## Interest
57
+
58
+ ```text
59
+ Codex Security
60
+ API credits for my project
61
+ ```
62
+
63
+ ## OpenAI Organization ID
64
+
65
+ ```text
66
+ Fill manually from https://platform.openai.com/settings/organization/general
67
+ ```
68
+
69
+ ## API Credit Use
70
+
71
+ ```text
72
+ Use Codex/API credits to run repeatable public repository audits, draft focused maintainer PRs and issue summaries from reports, build organization-level maintainer-readiness inventories, improve release/Code Scanning automation, and keep every public follow-up behind human review before posting or opening PRs.
73
+ ```
74
+
75
+ ## Anything Else
76
+
77
+ ```text
78
+ The project is early, so I am not overstating adoption. Current evidence includes npm 0.5.1, a published v0.5.1 release, a reusable GitHub Action, self-audit score 100/100, public CodeQL/CI, public field-audit PRs, and a separate public workflow run using SalmonPlays/oss-signal@v0.4.0 with a report artifact.
79
+ ```
80
+
81
+ ## Evidence Links
82
+
83
+ - npm package: https://www.npmjs.com/package/oss-signal
84
+ - GitHub Release v0.5.1: https://github.com/SalmonPlays/oss-signal/releases/tag/v0.5.1
85
+ - Main repository health workflow: https://github.com/SalmonPlays/oss-signal/actions/workflows/repository-health.yml
86
+ - Separate workflow demo repository: https://github.com/SalmonPlays/oss-signal-adoption-demo
87
+ - Separate successful workflow run: https://github.com/SalmonPlays/oss-signal-adoption-demo/actions/runs/26862361229
88
+ - Adoption evidence: https://github.com/SalmonPlays/oss-signal/blob/main/docs/adoption-evidence.md
89
+
90
+ ## Character Counts
91
+
92
+ - Why this repository qualifies: 299/500
93
+ - API credit use: 312/500
94
+ - Anything else: 309/500
@@ -10,7 +10,7 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
  steps:
12
12
  - uses: actions/checkout@v4
13
- - uses: SalmonPlays/oss-signal@v0.4.0
13
+ - uses: SalmonPlays/oss-signal@v0.5.1
14
14
  id: oss-signal
15
15
  with:
16
16
  fail-under: "80"
@@ -15,13 +15,13 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - uses: actions/checkout@v4
18
- - uses: SalmonPlays/oss-signal@v0.4.0
18
+ - uses: SalmonPlays/oss-signal@v0.5.1
19
19
  id: oss-signal
20
20
  with:
21
21
  fail-under: "80"
22
22
  output: oss-signal-report.md
23
23
  summary: "true"
24
- - uses: SalmonPlays/oss-signal@v0.4.0
24
+ - uses: SalmonPlays/oss-signal@v0.5.1
25
25
  with:
26
26
  format: sarif
27
27
  output: oss-signal.sarif
@@ -0,0 +1,37 @@
1
+ # Maintainer Readiness Follow-Up
2
+
3
+ oss-signal scored this repository **64/100 (D)**.
4
+
5
+ Source: GitHub (platformatic/massimo@main)
6
+ Generated: 2026-06-03T05:12:35.488Z
7
+
8
+ ## Scope
9
+
10
+ This issue is limited to maintainer-readiness signals: documentation, contribution paths, CI, security reporting, and package hygiene. It does not claim there is a product-code bug.
11
+
12
+ ## Suggested Next Steps
13
+
14
+ - [ ] **Security policy** (9 pts): Add SECURITY.md with supported versions, reporting instructions, and response expectations.
15
+ - [ ] **Changelog** (6 pts): Keep CHANGELOG.md with dated release entries and migration notes.
16
+ - [ ] **Issue templates** (5 pts): Add bug report and feature request templates under .github/ISSUE_TEMPLATE/.
17
+ - [ ] **Pull request template** (5 pts): Add .github/PULL_REQUEST_TEMPLATE.md with a short checklist.
18
+ - [ ] **Dependency update automation** (5 pts): Add .github/dependabot.yml for the package ecosystems used in the repository.
19
+ - [ ] **Support policy** (4 pts): Add SUPPORT.md describing where to ask questions, what is in scope, and expected response times.
20
+ - [ ] **Static security analysis** (4 pts): Add a CodeQL or equivalent security scanning workflow.
21
+
22
+ ## Why These Checks Matter
23
+
24
+ - **Security policy**: Responsible disclosure needs a private, documented path.
25
+ - **Changelog**: Users need a durable place to understand release impact.
26
+ - **Issue templates**: Issue templates collect the facts maintainers need to reproduce and triage.
27
+ - **Pull request template**: PR templates nudge contributors to include tests, docs, and review context.
28
+ - **Dependency update automation**: Automated dependency updates reduce security and compatibility drift.
29
+ - **Support policy**: Support boundaries help maintainers avoid turning every request into unpaid consulting.
30
+ - **Static security analysis**: Static analysis finds common vulnerability patterns before releases.
31
+
32
+ ## Notes For Maintainers
33
+
34
+ If any item is intentionally absent, documenting that decision is a valid outcome. Please close or edit this issue if it does not match the project's priorities.
35
+
36
+ _Generated by oss-signal; review before posting._
37
+
@@ -2,7 +2,7 @@
2
2
 
3
3
  Repository: `https://github.com/SalmonPlays/oss-signal`
4
4
  Source: GitHub (SalmonPlays/oss-signal@main)
5
- Generated: 2026-06-03T02:26:40.233Z
5
+ Generated: 2026-06-03T05:12:35.946Z
6
6
 
7
7
  Score: **100/100** (A)
8
8
 
@@ -6,7 +6,7 @@
6
6
  "tool": {
7
7
  "driver": {
8
8
  "name": "oss-signal",
9
- "semanticVersion": "0.4.0",
9
+ "semanticVersion": "0.5.1",
10
10
  "informationUri": "https://github.com/SalmonPlays/oss-signal",
11
11
  "rules": [
12
12
  {
@@ -400,7 +400,7 @@
400
400
  "score": 100,
401
401
  "grade": "A",
402
402
  "source": "local",
403
- "generatedAt": "2026-06-03T02:26:40.315Z"
403
+ "generatedAt": "2026-06-03T05:12:33.963Z"
404
404
  }
405
405
  }
406
406
  ]
@@ -28,6 +28,12 @@ Use SARIF when the findings should appear in Code Scanning:
28
28
  oss-signal . --format sarif --output oss-signal.sarif
29
29
  ```
30
30
 
31
+ Generate an issue body that can be reviewed and edited before posting:
32
+
33
+ ```bash
34
+ oss-signal owner/repo --format issue --output owner-repo-issue.md
35
+ ```
36
+
31
37
  ## 2. Triage Findings
32
38
 
33
39
  Prioritize missing checks that reduce maintainer load:
@@ -48,6 +54,8 @@ For an issue, include:
48
54
  - Why it matters for maintainers.
49
55
  - One concrete proposed fix.
50
56
 
57
+ `--format issue` generates that structure as a Markdown checklist. Review it before posting, remove anything that does not fit the repository, and keep the title specific to the missing maintainer-readiness signal.
58
+
51
59
  For a pull request, keep the change narrow. Good PRs add or improve files such as `CONTRIBUTING.md`, `SECURITY.md`, `.github/ISSUE_TEMPLATE/*`, `.github/PULL_REQUEST_TEMPLATE.md`, or a small CI workflow. Avoid broad product-code changes unless the maintainer asked for them.
52
60
 
53
61
  The field-audit examples in [docs/outreach](outreach) show this pattern for public repositories.
@@ -57,7 +65,7 @@ The field-audit examples in [docs/outreach](outreach) show this pattern for publ
57
65
  Add the GitHub Action to keep the signal visible:
58
66
 
59
67
  ```yaml
60
- - uses: SalmonPlays/oss-signal@v0.4.0
68
+ - uses: SalmonPlays/oss-signal@v0.5.1
61
69
  id: oss-signal
62
70
  with:
63
71
  fail-under: "80"
@@ -78,7 +86,7 @@ permissions:
78
86
 
79
87
  steps:
80
88
  - uses: actions/checkout@v4
81
- - uses: SalmonPlays/oss-signal@v0.4.0
89
+ - uses: SalmonPlays/oss-signal@v0.5.1
82
90
  with:
83
91
  format: sarif
84
92
  output: oss-signal.sarif
@@ -94,7 +102,7 @@ See [docs/examples/github-code-scanning-workflow.yml](examples/github-code-scann
94
102
 
95
103
  Useful evidence for maintainers and reviewers:
96
104
 
97
- - A public workflow run that uses `SalmonPlays/oss-signal@v0.4.0`.
105
+ - A public workflow run that uses `SalmonPlays/oss-signal@v0.5.1`.
98
106
  - A generated Markdown report attached as an artifact.
99
107
  - A SARIF upload in Code Scanning.
100
108
  - A small issue or PR that follows from an audit finding.
@@ -0,0 +1,22 @@
1
+ # oss-signal v0.5.0
2
+
3
+ `oss-signal` v0.5.0 adds Issue-ready output for maintainers who want to turn a deterministic audit into a reviewed GitHub Issue body.
4
+
5
+ ## Changes
6
+
7
+ - Added `--format issue` to the CLI.
8
+ - Added `format: issue` support to the GitHub Action.
9
+ - Added an issue-output example at `docs/examples/github-issue-body.md`.
10
+ - Updated the maintainer playbook with audit-to-issue guidance.
11
+
12
+ ## Example
13
+
14
+ ```bash
15
+ oss-signal owner/repo --format issue --output maintainer-follow-up.md
16
+ ```
17
+
18
+ The generated Markdown includes the score, scope, missing maintainer-readiness checks, why each check matters, and a reminder to review before posting.
19
+
20
+ ## Maintainer Workflow
21
+
22
+ This release strengthens the audit-to-triage workflow: run a public repository audit, generate a focused issue checklist, edit it for the repository's context, then post or turn it into a narrow PR only when the suggested changes are useful.
@@ -0,0 +1,22 @@
1
+ # oss-signal v0.5.1
2
+
3
+ `oss-signal` v0.5.1 publishes the Issue-ready maintainer workflow on a clean release tag.
4
+
5
+ ## Changes
6
+
7
+ - Includes `--format issue` for generating human-reviewed GitHub Issue bodies from audit findings.
8
+ - Includes `format: issue` support in the GitHub Action.
9
+ - Includes the issue-output example at `docs/examples/github-issue-body.md`.
10
+ - Guards automatic npm publishing behind an explicit `NPM_PUBLISH_ENABLED=true` repository variable.
11
+
12
+ ## Example
13
+
14
+ ```bash
15
+ oss-signal owner/repo --format issue --output maintainer-follow-up.md
16
+ ```
17
+
18
+ The generated Markdown includes the score, scope, missing maintainer-readiness checks, why each check matters, and a reminder to review before posting.
19
+
20
+ ## Maintainer Workflow
21
+
22
+ Use this release to run a public repository audit, generate a focused issue checklist, edit it for the repository's context, then post or turn it into a narrow PR only when the suggested changes are useful.
@@ -43,7 +43,7 @@ git push origin main --tags
43
43
 
44
44
  Create a GitHub Release for the tag and use the release notes in `docs/release-notes/` when available.
45
45
 
46
- For example, `v0.4.0` uses [docs/release-notes/v0.4.0.md](release-notes/v0.4.0.md).
46
+ For example, `v0.5.1` uses [docs/release-notes/v0.5.1.md](release-notes/v0.5.1.md).
47
47
 
48
48
  ## npm Publish
49
49
 
@@ -55,7 +55,14 @@ npm publish --access public
55
55
 
56
56
  Automation path:
57
57
 
58
- The tag-triggered [release workflow](../.github/workflows/release.yml) runs the same checks, verifies the package with `npm publish --dry-run`, and publishes with provenance when `NPM_TOKEN` is configured for the repository.
58
+ The tag-triggered [release workflow](../.github/workflows/release.yml) runs the same checks and verifies the package with `npm publish --dry-run`.
59
+
60
+ It publishes with provenance only when both release controls are configured:
61
+
62
+ - Repository secret `NPM_TOKEN` contains an npm automation token.
63
+ - Repository variable `NPM_PUBLISH_ENABLED` is set to `true`.
64
+
65
+ If either control is missing, the workflow prints a notice and stops after dry-run verification. This keeps tag verification useful when npm publishing is handled manually.
59
66
 
60
67
  ## Post-Release Verification
61
68
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Repository: `/Users/amon/Documents/Codex/2026-06-01/openai-s/outputs/oss-signal`
4
4
  Source: local
5
- Generated: 2026-06-03T02:26:38.240Z
5
+ Generated: 2026-06-03T05:12:34.292Z
6
6
 
7
7
  Score: **100/100** (A)
8
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oss-signal",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "A dependency-light CLI that audits open-source repository maintenance readiness.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/action.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { promises as fs } from "node:fs";
3
3
  import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { auditTarget, renderMarkdown, renderSarif } from "./index.js";
5
+ import { auditTarget, renderIssue, renderMarkdown, renderSarif } from "./index.js";
6
6
 
7
7
  const OUTPUT_DELIMITER = "oss_signal_output";
8
8
 
@@ -42,8 +42,8 @@ export async function runAction(env = process.env, stdout = process.stdout, stde
42
42
 
43
43
  export function parseActionInputs(env = process.env) {
44
44
  const format = getInput(env, "format") || "markdown";
45
- if (!["markdown", "json", "sarif"].includes(format)) {
46
- throw new Error("format must be markdown, json, or sarif");
45
+ if (!["markdown", "json", "sarif", "issue"].includes(format)) {
46
+ throw new Error("format must be markdown, json, sarif, or issue");
47
47
  }
48
48
 
49
49
  return {
@@ -64,6 +64,9 @@ function renderReport(report, format) {
64
64
  if (format === "sarif") {
65
65
  return renderSarif(report);
66
66
  }
67
+ if (format === "issue") {
68
+ return renderIssue(report);
69
+ }
67
70
  return renderMarkdown(report);
68
71
  }
69
72
 
package/src/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { promises as fs } from "node:fs";
3
- import { auditTarget, renderMarkdown, renderSarif, VERSION } from "./index.js";
3
+ import { auditTarget, renderIssue, renderMarkdown, renderSarif, VERSION } from "./index.js";
4
4
 
5
5
  async function main(argv) {
6
6
  const options = parseArgs(argv);
@@ -85,8 +85,8 @@ function parseArgs(argv) {
85
85
  if (positionals.length === 1) {
86
86
  options.path = positionals[0];
87
87
  }
88
- if (!["markdown", "json", "sarif"].includes(options.format)) {
89
- throw new Error("--format must be markdown, json, or sarif");
88
+ if (!["markdown", "json", "sarif", "issue"].includes(options.format)) {
89
+ throw new Error("--format must be markdown, json, sarif, or issue");
90
90
  }
91
91
  return options;
92
92
  }
@@ -98,6 +98,9 @@ function renderReport(report, format) {
98
98
  if (format === "sarif") {
99
99
  return renderSarif(report);
100
100
  }
101
+ if (format === "issue") {
102
+ return renderIssue(report);
103
+ }
101
104
  return renderMarkdown(report);
102
105
  }
103
106
 
@@ -121,12 +124,13 @@ function helpText() {
121
124
  return `oss-signal audits open-source repository maintenance readiness.
122
125
 
123
126
  Usage:
124
- oss-signal [path-or-github-url] [--format markdown|json|sarif] [--output file] [--fail-under score]
127
+ oss-signal [path-or-github-url] [--format markdown|json|sarif|issue] [--output file] [--fail-under score]
125
128
 
126
129
  Examples:
127
130
  oss-signal .
128
131
  oss-signal https://github.com/SalmonPlays/oss-signal
129
132
  oss-signal platformatic/massimo --format json
133
+ oss-signal owner/repo --format issue --output maintainer-follow-up.md
130
134
 
131
135
  Options:
132
136
  --format Output format. Defaults to markdown.
package/src/index.js CHANGED
@@ -2,7 +2,7 @@ import { promises as fs } from "node:fs";
2
2
  import https from "node:https";
3
3
  import path from "node:path";
4
4
 
5
- export const VERSION = "0.4.0";
5
+ export const VERSION = "0.5.1";
6
6
 
7
7
  const SARIF_RULE_LOCATIONS = {
8
8
  readme: "README.md",
@@ -294,6 +294,49 @@ export function renderMarkdown(report) {
294
294
  return `${lines.join("\n")}\n`;
295
295
  }
296
296
 
297
+ export function renderIssue(report) {
298
+ const lines = [
299
+ "# Maintainer Readiness Follow-Up",
300
+ "",
301
+ `oss-signal scored this repository **${report.score}/100 (${report.grade})**.`,
302
+ "",
303
+ `Source: ${sourceSummary(report.source)}`,
304
+ `Generated: ${report.generatedAt}`,
305
+ "",
306
+ "## Scope",
307
+ "",
308
+ "This issue is limited to maintainer-readiness signals: documentation, contribution paths, CI, security reporting, and package hygiene. It does not claim there is a product-code bug.",
309
+ "",
310
+ "## Suggested Next Steps",
311
+ ""
312
+ ];
313
+
314
+ if (report.recommendations.length === 0) {
315
+ lines.push("No missing maintainer-readiness checks were found. Keep the report current as the repository evolves.");
316
+ } else {
317
+ for (const recommendation of report.recommendations) {
318
+ lines.push(`- [ ] **${recommendation.label}** (${recommendation.weight} pts): ${recommendation.fix}`);
319
+ }
320
+
321
+ lines.push("", "## Why These Checks Matter", "");
322
+ for (const recommendation of report.recommendations) {
323
+ lines.push(`- **${recommendation.label}**: ${recommendation.why}`);
324
+ }
325
+ }
326
+
327
+ lines.push(
328
+ "",
329
+ "## Notes For Maintainers",
330
+ "",
331
+ "If any item is intentionally absent, documenting that decision is a valid outcome. Please close or edit this issue if it does not match the project's priorities.",
332
+ "",
333
+ "_Generated by oss-signal; review before posting._",
334
+ ""
335
+ );
336
+
337
+ return `${lines.join("\n")}\n`;
338
+ }
339
+
297
340
  export function renderSarif(report) {
298
341
  const rules = report.checks.map((check) => ({
299
342
  id: `oss-signal/${check.id}`,