codex-plugin-doctor 1.35.0 → 1.36.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/README.md CHANGED
@@ -402,9 +402,9 @@ jobs:
402
402
  runs-on: ubuntu-latest
403
403
  steps:
404
404
  - uses: actions/checkout@v5
405
- - uses: Esquetta/CodexPluginDoctor@v1.35.0
405
+ - uses: Esquetta/CodexPluginDoctor@v1.36.1
406
406
  with:
407
- version: "1.35.0"
407
+ version: "1.36.1"
408
408
  path: .
409
409
  runtime: "true"
410
410
  policy: codex-publish
@@ -459,7 +459,7 @@ npm run prepare-release
459
459
  npm run release-check
460
460
  ```
461
461
 
462
- `prepare-release` runs tests, builds the TypeScript output, and performs `npm pack --dry-run`. `release-check` adds release preflight checks for a clean git tree, existing npm versions, existing version tags, tests, build, and pack dry-run.
462
+ `prepare-release` runs tests, builds the TypeScript output, and performs `npm pack --dry-run`. `release-check` adds release preflight checks for a clean git tree, existing npm versions, existing version tags, tests, build, pack dry-run, fresh temp install audit, and publish dry-run.
463
463
 
464
464
  Related docs:
465
465
 
@@ -130,6 +130,8 @@ export async function renderEnvironmentDoctor(terminalContext) {
130
130
  "Recommended next commands",
131
131
  "-------------------------",
132
132
  "codex-plugin-doctor self-test",
133
+ "codex-plugin-doctor doctor --update-check",
134
+ "codex-plugin-doctor doctor snapshot --json",
133
135
  "codex-plugin-doctor list --installed",
134
136
  "codex-plugin-doctor check . --runtime --explain",
135
137
  "codex-plugin-doctor compat . --all --scorecard",
package/dist/run-cli.js CHANGED
@@ -742,19 +742,29 @@ function renderSelfTestReport(targetPath, validationStatus, findingsCount, compa
742
742
  ].join("\n");
743
743
  }
744
744
  async function resolveLatestNpmVersion() {
745
- return new Promise((resolve, reject) => {
746
- execFile("npm", ["view", "codex-plugin-doctor", "version"], { shell: process.platform === "win32" }, (error, stdout, stderr) => {
747
- if (error) {
748
- reject(new Error(stderr.trim() || error.message));
749
- return;
750
- }
751
- resolve(stdout.trim());
745
+ const controller = new AbortController();
746
+ const timeout = setTimeout(() => controller.abort(), 10_000);
747
+ try {
748
+ const response = await fetch("https://registry.npmjs.org/codex-plugin-doctor", {
749
+ signal: controller.signal
752
750
  });
753
- });
751
+ if (!response.ok) {
752
+ throw new Error(`npm registry returned ${response.status}`);
753
+ }
754
+ const data = await response.json();
755
+ const latestVersion = data["dist-tags"]?.latest;
756
+ if (!latestVersion) {
757
+ throw new Error("npm registry response did not include dist-tags.latest");
758
+ }
759
+ return latestVersion;
760
+ }
761
+ finally {
762
+ clearTimeout(timeout);
763
+ }
754
764
  }
755
765
  async function uploadGitHubReleaseAsset(args) {
756
766
  return new Promise((resolve, reject) => {
757
- execFile("gh", args, { shell: process.platform === "win32" }, (error, _stdout, stderr) => {
767
+ execFile("gh", args, (error, _stdout, stderr) => {
758
768
  if (error) {
759
769
  reject(new Error(stderr.trim() || error.message));
760
770
  return;
@@ -4,6 +4,13 @@ This folder contains manual example packs for local testing. Unlike `tests/fixtu
4
4
 
5
5
  ## Example Packs
6
6
 
7
+ Use the smallest example that matches what you need to prove:
8
+
9
+ - `codex-doctor-starter` for static manifest and skill validation.
10
+ - `codex-doctor-runtime` for full MCP runtime probing and compatibility scoring.
11
+ - `codex-doctor-risky` for security finding output.
12
+ - `codex-doctor-generic-mcp` for MCP-only packages without a Codex plugin manifest.
13
+
7
14
  ### `codex-doctor-starter`
8
15
 
9
16
  Minimal valid Codex plugin package with one skill and no runtime MCP server.
@@ -60,6 +67,21 @@ Command:
60
67
  codex-plugin-doctor check examples/codex-doctor-risky --ascii
61
68
  ```
62
69
 
70
+ ### `codex-doctor-generic-mcp`
71
+
72
+ Generic MCP package with a `.mcp.json` file and no Codex plugin manifest.
73
+
74
+ Expected result:
75
+
76
+ - `codex-plugin-doctor mcp` passes generic MCP static health checks
77
+ - `codex-plugin-doctor check` still reports the missing Codex plugin manifest
78
+
79
+ Command:
80
+
81
+ ```bash
82
+ codex-plugin-doctor mcp examples/codex-doctor-generic-mcp
83
+ ```
84
+
63
85
  ## Suggested Local Flow
64
86
 
65
87
  ```bash
@@ -70,4 +92,3 @@ codex-plugin-doctor check examples/codex-doctor-starter
70
92
  codex-plugin-doctor check examples/codex-doctor-runtime --json --runtime --verbose-runtime
71
93
  codex-plugin-doctor check examples/codex-doctor-risky --ascii
72
94
  ```
73
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-plugin-doctor",
3
- "version": "1.35.0",
3
+ "version": "1.36.1",
4
4
  "description": "CLI-first validator for Codex plugins, skills, and MCP package surfaces with runtime MCP protocol validation.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",