Skip to content

Commit cd4aa12

Browse files
ci: add plugin manifest linting (#345)
* ci: add codex-plugin-scanner quality gate * ci: pin actions to SHAs, add permissions, timeout, concurrency * ci:enforce-plugin-scanner-minimum-score * ci:clarify-scanner-root-and-namespace-concurrency * ci:add-manual-plugin-scanner-trigger * ci: harden plugin scanner coverage * ci: tighten plugin scanner regression coverage --------- Co-authored-by: internet-dot[bot] <internet-dot@users.noreply.github.com> Co-authored-by: ndycode <405533+ndycode@users.noreply.github.com>
1 parent b7a4718 commit cd4aa12

10 files changed

Lines changed: 110 additions & 1 deletion

File tree

.codex-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codex-multi-auth",
3-
"version": "1.2.1",
3+
"version": "1.2.2",
44
"description": "Install and operate codex-multi-auth for the official @openai/codex CLI with multi-account OAuth rotation, switching, health checks, and recovery tools.",
55
"skills": "./skills/"
66
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name": "Fixture Bad Plugin",
3+
"description": "Fixture plugin used to validate failing scanner behavior."
4+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Fixture Bad Plugin
2+
3+
This fixture is expected to fail the plugin scanner quality gate.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"name": "fixture-good-plugin",
3+
"version": "1.0.0",
4+
"description": "Fixture plugin used to validate the Codex plugin scanner workflow.",
5+
"author": "ndycode",
6+
"homepage": "https://example.com/fixture-good-plugin",
7+
"repository": "https://example.com/fixture-good-plugin.git",
8+
"license": "MIT",
9+
"keywords": ["fixture", "codex", "plugin"],
10+
"skills": "./skills/"
11+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Fixture file for scanner regression coverage.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
MIT License
2+
3+
Copyright (c) 2026 ndycode
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Fixture Good Plugin
2+
3+
This fixture is expected to pass the plugin scanner quality gate.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Security Policy
2+
3+
Report security issues to fixture@example.com.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
name: example
3+
description: Example fixture skill for scanner regression coverage.
4+
---
5+
6+
# Example
7+
8+
This fixture skill exists to satisfy the plugin scanner regression test.
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Codex Plugin Quality Gate
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
workflow_dispatch:
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: true
13+
14+
jobs:
15+
scan:
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
os: [ubuntu-latest, windows-latest]
20+
runs-on: ${{ matrix.os }}
21+
timeout-minutes: 10
22+
permissions:
23+
contents: read
24+
steps:
25+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
26+
- name: Codex plugin scanner
27+
uses: hashgraph-online/hol-codex-plugin-scanner-action@b45d6b583afe05819b24edc8e6418c9ad2e1f1d0 # v1
28+
with:
29+
# The pinned action resolves .codex-plugin/plugin.json from the repo root.
30+
plugin_dir: "."
31+
min_score: "70"
32+
33+
scan-regression:
34+
strategy:
35+
fail-fast: false
36+
matrix:
37+
include:
38+
- os: ubuntu-latest
39+
fixture: good
40+
plugin_dir: ".github/plugin-scanner-fixtures/good"
41+
expect_outcome: success
42+
- os: ubuntu-latest
43+
fixture: bad
44+
plugin_dir: ".github/plugin-scanner-fixtures/bad"
45+
expect_outcome: failure
46+
- os: windows-latest
47+
fixture: good
48+
plugin_dir: ".github/plugin-scanner-fixtures/good"
49+
expect_outcome: success
50+
- os: windows-latest
51+
fixture: bad
52+
plugin_dir: ".github/plugin-scanner-fixtures/bad"
53+
expect_outcome: failure
54+
runs-on: ${{ matrix.os }}
55+
timeout-minutes: 10
56+
permissions:
57+
contents: read
58+
steps:
59+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
60+
- name: Codex plugin scanner regression
61+
id: scan
62+
continue-on-error: true
63+
uses: hashgraph-online/hol-codex-plugin-scanner-action@b45d6b583afe05819b24edc8e6418c9ad2e1f1d0 # v1
64+
with:
65+
plugin_dir: ${{ matrix.plugin_dir }}
66+
min_score: "70"
67+
- name: Assert fixture outcome
68+
shell: bash
69+
run: |
70+
if [ "${{ steps.scan.outcome }}" != "${{ matrix.expect_outcome }}" ]; then
71+
echo "Expected fixture '${{ matrix.fixture }}' to '${{ matrix.expect_outcome }}', got '${{ steps.scan.outcome }}'."
72+
exit 1
73+
fi

0 commit comments

Comments
 (0)