agentsclimarketplace

Skill manager

Skill mrdenox109-nyx/skill-manager/skills/skill-manager

Automatically detect and disable irrelevant Claude Code skills per project to save tokens and streamline your tech workflow.

Install
npx -y skills add mrdenox109-nyx/skill-manager --skill skill-manager

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Detect project tech stack and disable irrelevant skills to save context window space. Use when the user says "manage skills", "optimize skills", "disable irrelevant skills", "skill manager", or asks which skills are relevant for this project.

SKILL.md

9.7 KB, as published. Nobody here has run it

Skill Manager

Analyze the current project's tech stack and disable irrelevant globally-installed skills by injecting a bounded section into the project's CLAUDE.md.

When to Use

  • User says "manage skills", "optimize skills", "skill manager"
  • User says "disable irrelevant skills" or "which skills do I need?"
  • User says "clean up skills for this project"
  • User says "re-enable all skills"
  • At the start of a new project to reduce context window waste

Quick Start

Run the Python analysis script if available, otherwise follow the manual workflow below.

Step 1: Detect Project Tech Stack

Check for these files in the project root (current working directory):

FileStack Signal
package.jsonNode.js — read for framework (next, react, vue, angular, svelte, etc.)
Podfile or *.xcodeprojiOS/macOS native
Package.swiftSwift Package (iOS/macOS)
Cargo.tomlRust
go.modGo
requirements.txt / pyproject.toml / setup.pyPython
GemfileRuby
composer.jsonPHP
build.gradle / build.gradle.ktsAndroid/JVM
pubspec.yamlFlutter/Dart
Dockerfile / docker-compose.ymlContainerized
vercel.json / netlify.tomlJamstack deployment
tsconfig.jsonTypeScript
.swift files in root/SourcesSwift CLI/Server

Read package.json dependencies to identify frameworks:

  • next -> Next.js
  • react -> React
  • vue -> Vue
  • @angular/core -> Angular
  • svelte -> Svelte
  • stripe -> Payment processing
  • express / fastify / hono -> Node server
  • tailwindcss -> Tailwind CSS
  • remotion -> Video/media processing

Monorepo detection: If the project has packages/, apps/, or a workspace config in package.json, scan subdirectories too and union all detected stacks.

Empty project: If no recognizable files are found, warn the user and keep all skills active.

Step 2: Read Installed Skills

Read ~/.agents/.skill-lock.json to get the list of all globally installed skills. For each skill, note:

  • name (the key)
  • source (GitHub repo)
  • skillPath (where the SKILL.md lives)

Step 3: Score Each Skill

Assign each skill to a tier based on the detected tech stack.

Tier Definitions

TierScore RangeMeaning
essential80-100Directly relevant to detected stack
useful40-79Cross-platform utility, may be used
irrelevant0-39Wrong platform/domain entirely
universalN/ANever disabled regardless of stack

Universal Skills (NEVER disable these)

find-skills, skill-creator, writing-skills, brainstorming,
writing-plans, test-driven-development, dispatching-parallel-agents,
subagent-driven-development, using-superpowers, agentation, skill-manager

Domain Mapping

iOS/macOS Native Skills — essential when Swift/Xcode detected:

  • mobile-ios-design (iOS UI/SwiftUI)
  • asc-xcode-build (Xcode build/archive)
  • asc-metadata-sync (App Store metadata)
  • asc-localize-metadata (App Store localization)
  • asc-subscription-localization (IAP localization)
  • asc-ppp-pricing (territory pricing)
  • asc-shots-pipeline (screenshot automation)
  • asc-notarization (macOS notarization)
  • app-store-optimization (ASO)
  • aso-full-audit, aso-optimize, aso-competitor, aso-prelaunch, aso

Web/SaaS Marketing Skills — essential when web framework detected:

  • page-cro, signup-flow-cro, onboarding-cro, popup-cro, form-cro
  • copywriting, copy-editing, content-strategy
  • seo-audit, programmatic-seo, schema-markup
  • analytics-tracking, ab-test-setup
  • email-sequence, social-content
  • marketing-ideas, marketing-psychology
  • free-tool-strategy, launch-strategy
  • paid-ads, referral-program
  • pricing-strategy, competitor-alternatives
  • audit-website

Payment Skills — essential when stripe/payment dependency detected:

  • stripe-integration
  • paywall-upgrade-cro
  • churn-prevention

Media/AI Generation Skills — essential when media dependencies detected:

  • fal-audio, fal-generate, fal-image-edit, fal-platform, fal-upscale, fal-workflow
  • remotion-best-practices

Cross-Domain Rules

  • Marketing skills are scored "useful" (50) in non-web projects — users sometimes do marketing from any project
  • Stripe/payment skills are "useful" (50) unless stripe is in dependencies, then "essential" (90)
  • ASO skills are "essential" (95) for iOS, "irrelevant" (10) for non-mobile
  • fal- skills* are "irrelevant" (10) unless media processing detected
  • asc- skills* are "irrelevant" (5) for non-Apple projects
  • remotion-best-practices is "essential" (90) if remotion is in dependencies, "irrelevant" (10) otherwise

Step 4: Check for Overrides

If .claude/skill-manager.json already exists, read the overrides section:

{
  "overrides": {
    "forceEnable": ["seo-audit"],
    "forceDisable": ["fal-audio"]
  }
}
  • forceEnable: Move these skills to "essential" tier regardless of scoring
  • forceDisable: Move these skills to "irrelevant" tier regardless of scoring

Step 5: Generate .claude/skill-manager.json

Create the .claude/ directory if it doesn't exist. Write the analysis file:

{
  "version": 1,
  "generatedAt": "2026-02-23T12:00:00Z",
  "detectedStack": {
    "primary": "Next.js",
    "languages": ["TypeScript", "JavaScript"],
    "frameworks": ["Next.js", "React", "Tailwind CSS"],
    "platforms": ["Web"],
    "signals": {
      "package.json": true,
      "tsconfig.json": true,
      "next.config.ts": true
    }
  },
  "skills": {
    "page-cro": { "tier": "essential", "score": 95, "reason": "Web CRO directly applicable" },
    "mobile-ios-design": { "tier": "irrelevant", "score": 5, "reason": "No iOS stack detected" }
  },
  "disabled": ["mobile-ios-design", "asc-xcode-build"],
  "enabled": ["page-cro", "stripe-integration"],
  "universal": ["find-skills", "brainstorming"],
  "overrides": {
    "forceEnable": [],
    "forceDisable": []
  },
  "stats": {
    "total": 53,
    "essential": 20,
    "useful": 10,
    "irrelevant": 12,
    "universal": 11
  }
}

Step 6: Update CLAUDE.md

If "re-enable all" was requested:

  1. Remove the <!-- SKILL-MANAGER:START --> ... <!-- SKILL-MANAGER:END --> block from CLAUDE.md
  2. Delete .claude/skill-manager.json
  3. Confirm to user: "All skills re-enabled."
  4. Stop here.

Normal flow:

Build the injection block:

<!-- SKILL-MANAGER:START -->
## Disabled Skills

The following skills are **not relevant** to this project and should be **ignored** (do not invoke them):

- `mobile-ios-design` — No iOS stack detected
- `asc-xcode-build` — No Xcode project detected
- ...

**Stack**: Next.js / TypeScript / React / Tailwind CSS
**Last analyzed**: 2026-02-23
**Re-run**: Say "manage skills" or "/skill-manager" to re-analyze
**Re-enable all**: Say "re-enable all skills" to remove this section
<!-- SKILL-MANAGER:END -->

Injection rules:

  1. Read the current CLAUDE.md (or note it doesn't exist)
  2. If markers exist: Replace everything between <!-- SKILL-MANAGER:START --> and <!-- SKILL-MANAGER:END --> (inclusive) with the new block
  3. If no markers: Append the block to the end of CLAUDE.md with a blank line separator
  4. If no CLAUDE.md: Create it with only the skill-manager block

IMPORTANT: Do NOT modify any other content in CLAUDE.md. Only touch the bounded marker section.

Step 7: Suggest New Skills (Optional)

If the detected stack suggests skills that aren't installed, mention them:

Based on your Next.js project, you might also want:

  • npx skills find nextjs for Next.js-specific skills
  • npx skills find react for React patterns

Only suggest if there's a clear gap. Don't overwhelm with suggestions.

Step 8: Report Summary

Print a summary table:

Skill Manager Analysis Complete

Stack: Next.js / TypeScript / React
Total skills: 53
  Essential: 20 (kept active)
  Useful: 10 (kept active)
  Irrelevant: 12 (disabled in CLAUDE.md)
  Universal: 11 (always active)

Disabled skills written to CLAUDE.md
Full analysis: .claude/skill-manager.json

Automated Mode (Python Script)

If Python 3.9+ is available, you can run the analysis script for faster, deterministic results:

python3 skills/skill-manager/scripts/analyze_project.py --analyze "$(pwd)"

Or just detect the stack:

python3 skills/skill-manager/scripts/analyze_project.py --detect-stack "$(pwd)"

The script path is relative to where the skill is installed. Find it via:

# The skill is installed at ~/.agents/skills/skill-manager/
python3 ~/.agents/skills/skill-manager/scripts/analyze_project.py --analyze "$(pwd)"

The script outputs JSON to stdout. Use the output to populate .claude/skill-manager.json and the CLAUDE.md injection block.

If Python is not available, follow the manual steps above — they produce the same result.

Idempotency

  • Running this skill multiple times is safe
  • The CLAUDE.md section is replaced, never duplicated
  • The JSON file is overwritten with fresh analysis
  • User overrides in the JSON are preserved across re-runs

Edge Cases

  • Monorepo: Union all detected stacks from subdirectories. More skills stay enabled.
  • Empty project: Keep all skills active. Warn user: "No stack detected."
  • New skills installed since last run: Automatically picked up on re-run.
  • Skill uninstalled: Removed from disabled list on re-run.
  • CLAUDE.md has other content: Only the marker-bounded section is touched.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.