← Home

@ai-plugins-cc/ai

Umbrella Claude Code plugin: dispatches /ai:review|rescue|gater across codex, gemini, grok and adds /ai:compare for fan-out.

3
Versions
Apache-2.0
License
No
Install Scripts
Missing
Provenance

Supply chain provenance

Status for the latest visible version.

No SLSA provenance npm registry signatures gitHead linked

Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.

Maintainers

builtwithlove

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
typosquat typosquat.levenshtein:hapi AI (typosquat): Scoped package @ai-plugins-cc/ai; Levenshtein match to 'hapi' is a false positive with no impersonation intent. ai
typosquat typosquat.levenshtein:pg AI (typosquat): Scoped package @ai-plugins-cc/ai; Levenshtein match to 'pg' is a false positive with no impersonation intent. ai
typosquat typosquat.levenshtein:qs AI (typosquat): Scoped package @ai-plugins-cc/ai; Levenshtein match to 'qs' is a false positive with no impersonation intent. ai
typosquat typosquat.levenshtein:joi AI (typosquat): Scoped package @ai-plugins-cc/ai; Levenshtein match to 'joi' is a false positive with no impersonation intent. ai
typosquat typosquat.levenshtein:ajv AI (typosquat): Scoped package @ai-plugins-cc/ai; Levenshtein match to 'ajv' is a false positive with no impersonation intent. ai
semgrep semgrep:env-spread AI (semgrep): env-spread is behind an explicit unsafeRawEnv opt-in flag; intentional escape hatch, not accidental secret leakage. ai
phantom-deps phantom-dep:@ai-plugins-cc/core AI (phantom-deps): Same-org scoped dep; likely consumed transitively or via monorepo resolution, stable false positive. ai
phantom-deps phantom-dep:@ai-plugins-cc/shared-prompts AI (phantom-deps): Same-org scoped dep; likely consumed transitively or via monorepo resolution, stable false positive. ai

Versions (showing 3 of 3)

Version Deps Published
0.2.1 3 / 0
0.2.0 3 / 0
0.1.0 3 / 0

v0.2.1

2 findings
HIGH env-spread: scripts/lib/dispatch.mjs:252 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/dysfunc/ai-plugins-cc/blob/96bb869df351494ada19ffe3391a016df6077d6e/scripts/lib/dispatch.mjs#L252 250 | // the spawnInHouseCompanion fixtures, which spawn fake-companion.mjs). 251 | const env = options.unsafeRawEnv > 252 | ? { ...process.env, ...(options.env ?? {}) } 253 | : filteredEnvForProvider(provider.id, options.env ?? {}); 254 |

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.2.0

2 findings
HIGH env-spread: scripts/lib/dispatch.mjs:252 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/dysfunc/ai-plugins-cc/blob/175fa81430f60cfdf16be083249ace1208df7a70/scripts/lib/dispatch.mjs#L252 250 | // the spawnInHouseCompanion fixtures, which spawn fake-companion.mjs). 251 | const env = options.unsafeRawEnv > 252 | ? { ...process.env, ...(options.env ?? {}) } 253 | : filteredEnvForProvider(provider.id, options.env ?? {}); 254 |

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.1.0

2 findings
HIGH env-spread: scripts/lib/dispatch.mjs:252 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/dysfunc/ai-plugins-cc/blob/468b26667f7a9e2d4b0185807d6bb903bf7b99fd/scripts/lib/dispatch.mjs#L252 250 | // the spawnInHouseCompanion fixtures, which spawn fake-companion.mjs). 251 | const env = options.unsafeRawEnv > 252 | ? { ...process.env, ...(options.env ?? {}) } 253 | : filteredEnvForProvider(provider.id, options.env ?? {}); 254 |

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.