registry / happyskills / 2.0.0
happyskills@2.0.0
Package manager for AI agent skills
AI Security Review
scanned 3mo ago · by lpm-firewall-aiSource establishes an explicit-user-command agent-extension installer, not a concrete malicious chain. Warn for the real lifecycle/control-surface risk without blocking the package.
Static reason
One or more suspicious static signals were detected.; previous stored version diff introduced dangerous source
Trigger
User runs happyskills setup, install, or agents add.
Impact
Downloaded skills can become available to configured AI-agent clients.
Mechanism
Registry skill installation and agent-directory symlink/copy setup
AI rationale
Source establishes an explicit-user-command agent-extension installer, not a concrete malicious chain. Warn for the real lifecycle/control-surface risk without blocking the package.
Evidence
package.jsonbin/happyskills.jssrc/commands/setup.jssrc/engine/installer.jssrc/agents/linker.jssrc/agents/registry.jssrc/commands/self-update.jssrc/api/client.js~/.agents/skills/~/.claude/skills/~/.cursor/skills/~/.codex/skills/~/.github/skills/~/.config/happyskills/credentials.json
Network endpoints2
api.happyskills.airegistry.npmjs.org/happyskills/latest
Decision evidence
public snapshotAI called this Suspicious at 91.0% confidence as Dangerous Capability with low false-positive risk.
Evidence for warning
- src/commands/setup.js explicitly installs a global HappySkills skill constellation.
- src/engine/installer.js downloads registry packages and links enabled skills into agent skill directories.
- src/agents/registry.js targets Claude, Cursor, Codex, Copilot, and other agent skill paths.
- src/commands/self-update.js runs npm install -g only after explicit self-update.
- src/utils/analytics.js sends command/install metadata to the package API.
Evidence against
- package.json has no preinstall, install, postinstall, or prepare hook.
- bin/happyskills.js runs only when the CLI is invoked.
- src/index.js dispatches only names from a fixed command allowlist.
- src/api/client.js uses the package-aligned https://api.happyskills.ai endpoint.
- src/auth/token_store.js stores credentials locally with mode 0600; no credential harvesting found.
- src/engine/archive_installer.js applies archive size and path-traversal checks.
Behavioral surface
ChildProcessCryptoDynamicRequire
Source & flagged code
4 flaggedsrc/integration/drift.test.jsView file
27const assert = require('node:assert/strict')
L28: const { spawnSync } = require('child_process')
L29: const fs = require('fs')
High
Child Process
Package source references child process execution.
src/integration/drift.test.jsView on unpkg · L27bin/happyskills.jsView file
2L3: try { require('dotenv').config({ path: require('path').join(__dirname, '..', '.env'), quiet: true }) } catch {}
L4: const { run } = require('../src/index')
Medium
Dynamic Require
Package source references dynamic require/import behavior.
bin/happyskills.jsView on unpkg · L2src/commands/self-update.jsView file
35
Findings
1 Critical2 High4 Medium5 Low
CriticalPrevious Version Dangerous Deltasrc/integration/cli.test.js
HighChild Processsrc/integration/drift.test.js
HighRuntime Package Installsrc/commands/self-update.js
MediumDynamic Requirebin/happyskills.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
LowNo License
Affected versions and remediation
This report applies to happyskills@2.0.0.
See all versions of happyskills for other recorded verdicts.
- Review the evidence and your use of happyskills@2.0.0 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
Evidence last updated: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.