registry  /  @andy-toolforge/seo-generation  /  1.0.0

@andy-toolforge/seo-generation@1.0.0

Toolforge domain: SEO content generation for YouTube, TikTok, blog

AI Security Review

scanned 2h ago · by lpm-firewall-ai

LPM blocks this version under the AI-agent control-surface policy. Install triggers unconsented mutation of a project-level OpenCode skill directory. The package plants its own SEO skill markdown into .opencode/skills during npm postinstall.

Static reason
One or more suspicious static signals were detected.
Trigger
npm install or any install path running lifecycle scripts
Impact
Can alter future OpenCode agent behavior in the consuming project without explicit consent.
Mechanism
postinstall creates AI-agent skills via symlink/copy
Policy narrative
On installation, npm runs skills/postinstall.js. That script creates .opencode/skills in the current project and symlinks or copies all package markdown skill files into it. This unconsented lifecycle write modifies a broad AI-agent control surface, so future OpenCode sessions in the project may load package-supplied instructions.
Rationale
The confirmed issue is not classic malware or exfiltration, but the package uses an npm lifecycle hook to plant agent skill files into a project-level .opencode control surface without consent. Under the install control-surface policy, this is blockable AI-agent control hijack even though the planted skill content is SEO-aligned.
Evidence
package.jsonskills/postinstall.jsskills/seo-content-arbitrage.mdskills/seo-niche-blog-generator.mdskills/seo-video-podcast.mdlib/publisher.js.opencode/skills/seo-generation-seo-content-arbitrage.md.opencode/skills/seo-generation-seo-niche-blog-generator.md.opencode/skills/seo-generation-seo-video-podcast.md
Network endpoints6
www.googleapis.com/upload/youtube/v3/videos?part=snippet,status&uploadType=resumablestudio.youtube.comgraph.facebook.com/v19.0/me/feedwww.facebook.com${wordpressUrl}/wp/v2/posts${wordpressUrl || 'http://localhost'}/wp-admin/post-new.php

Decision evidence

public snapshot
AI called this Malicious at 93.0% confidence as Dangerous Capability with low false-positive risk.
Evidence for policy block
  • package.json defines postinstall: node skills/postinstall.js
  • skills/postinstall.js runs at install time and creates .opencode/skills under process.cwd()
  • skills/postinstall.js symlinks or copies package markdown skills into that AI-agent skill directory without user opt-in
  • The lifecycle write targets a broad project agent control surface rather than only package internals
Evidence against
  • Runtime library code is mostly SEO analysis, LLM prompt generation, and platform publishing utilities
  • Network calls in lib/publisher.js are user-invoked publishing paths to YouTube, WordPress, and Facebook APIs
  • No credential harvesting, shell execution, eval/vm, native binary loading, destructive behavior, or remote payload download found
Behavioral surface
Source
FilesystemNetwork
Supply chain
UrlStrings
Manifest
NoLicense
scanned 8 file(s), 45.8 KB of source, external domains: example.com, graph.facebook.com, studio.youtube.com, tiktok.com, www.facebook.com, www.googleapis.com, youtu.be

Source & flagged code

2 flagged · loading source
package.jsonView file
scripts.postinstall = node skills/postinstall.js
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.postinstall = node skills/postinstall.js
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg

Findings

1 High2 Medium4 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
LowScripts Present
LowFilesystem
LowUrl Strings
LowNo License