Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/swastik023-upgrade
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
upgrade- Description
- Upgrade the NotFair plugin to the latest version. Updates the marketplace repo, installs the new version to the plugin cache, and updates installed_plugins.json. Use when asked to "upgrade notfair", "update notfair", or "get latest version". Also handles inline upgrade prompts when a skill detects UPGRADE_AVAILABLE at startup.
- License
- MIT
- Instructions
- 177 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: "upgrade" does not match folder "notfair-upgrade-skill"
- allowed-tools: must be a space-separated string
Files (2)
- SKILL.md
- evals.json · evals/
SKILL.md (first lines)
# /notfair:upgrade
Upgrade the NotFair plugin to the latest version and show what's new.
## Key paths
| What | Path |
|------|------|
| Marketplace repo | `~/.claude/plugins/marketplaces/swastik-agnihotri/` |
| Plugin cache | `~/.claude/plugins/cache/swastik-agnihotri/notfair/<version>/` |
| Installed plugins | `~/.claude/plugins/installed_plugins.json` |
| Update state | `~/.toprank/` (intentionally preserved — see CHANGELOG 0.24.0) |
---
## Inline upgrade flow
This section is used when a skill preamble outputs `UPGRADE_AVAILABLE`.
### Step 1: Auto-upgrade
Log "Upgrading NotFair v{old} → v{new}..." and proceed to Step 2.
---
### Step 2: Detect current install
First check for dev symlink (see "Dev symlink detection" section). If detected, stop — do not upgrade.
```bash
# Find the currently installed plugin path
INSTALLED_DIR=$(ls -d ~/.claude/plugins/cache/swastik-agnihotri/notfair/*/ 2>/dev/null | grep -v '.bak' | head -1)
if [ -z "$INSTALLED_DIR" ]; then
echo "ERROR: NotFair plugin not found in cache"; exit 1
fi
MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/swastik-agnihotri"
if [ ! -d "$MARKETPLACE_DIR/.git" ]; then
echo "ERROR: marketplace repo not found at $MARKETPLACE_DIR"; exit 1
fi
echo "Current install: $INSTALLED_DIR"
echo "Marketplace repo: $MARKETPLACE_DIR"
```
### Step 3: Save old version
```bash
OLD_VERSION=$(cat "$INSTALLED_DIR/VERSION" 2>/dev/null | tr -d '[:space:]' || echo "unknown")
```
### Step 4: Update marketplace repo and install
```bash
cd "$MARKETPLACE_DIR"
git fetch origin
git reset --hard origin/main
NEW_VERSION=$(cat VERSION | tr -d '[:space:]')
GIT_SHA=$(git rev-parse HEAD)
# Create new versioned cache directory
NEW_CACHE_DIR="$HOME/.claude/plugins/cache/swastik-agnihotri/notfair/$NEW_VERSION"
if [ -d "$NEW_CACHE_DIR" ]; then
rm -rf "$NEW_CACHE_DIR"
fi
mkdir -p "$NEW_CACHE_DIR"
# Copy plugin files (exclude .git to save space)
rsync -a --exclude='.git' "$MARKETPLACE_DIR/" "$NEW_CACHE_DIR/"
```
If the copy fails, warn: "Upgrade failed — the old version is still active. Run `/notfair:upgrade` manually." and stop.
### Step 5: Update installed_plugins.json
Read `~/.claude/plugins/installed_plugins.json`, then update the `notfair@swastik-agnihotri` entry:
```bash
python3 -c "
import json, os
from datetime import datetime, timezone
path = os.path.expanduser('~/.claude/plugins/installed_plugins.json')
with open(path) as f:
data = json.load(f)
data['plugins']['notfair@swastik-agnihotri'] = [{
'scope': 'user',
'installPath': os.path.expanduser('~/.claude/plugins/cache/swastik-agnihotri/notfair/$NEW_VERSION'),
'version': '$NEW_VERSION',
'installedAt': data['plugins'].get('notfair@swastik-agnihotri', [{}])[0].get('installedAt', datetime.now(timezone.utc).isoformat()),
'lastUpdated': datetime.now(timezone.utc).isoformat(),
'gitCommitSha': '$GIT_SHA'
}]
with open(path, 'w') as f:
json.dump(data, f, indent=4)
print('Updated installed_plugins.json: notfair@swastik-agnihotri -> v$NEW_VERSION')
"
```
### Step 6: Clean up old cache versions
Remove old versioned cache directories (keep only the new one). Never remove a `dev` symlink:
```bash
for dir in ~/.claude/plugins/cache/swastik-agnihotri/notfair/*/; do
ver=$(basename "$dir")
if [ "$ver" != "$NEW_VERSION" ] && [ "$ver" != "dev" ]; then
rm -rf "$dir"
echo "Removed old cache: $ver"
fi
done
```
### Step 7: Write marker + clear update state
```bash
mkdir -p ~/.toprank
echo "$OLD_VERSION" > ~/.toprank/just-upgraded-from
rm -f ~/.toprank/last-update-checkFrom Swastik023/marketing-api-automation-mcp, MIT.
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 24, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from Swastik023
- 0.516score
diagnose-pending
Swastik023
Diagnose Kubernetes Pending Pods and Unschedulable failures caused by node CPU/memory exhaustion, taints/tolerations, affinity constraints, or…
SkillBFreshness: BClaude Code +9 - 0.516score
diagnose-deadlock
Swastik023
Diagnose PostgreSQL table deadlocks, transaction lock contention chains, blocked backend PIDs, and conflicting lock modes.
SkillBFreshness: BClaude Code +9 - 0.516score
diagnose-crashloop
Swastik023
Diagnose Kubernetes Pod CrashLoopBackOff incidents, identify root causes (OOMKilled, configuration error, exit code failures, liveness probe failure), and…
SkillBFreshness: BClaude Code +9 - 0.516score
diagnose-replication-lag
Swastik023
Diagnose PostgreSQL physical and logical streaming replication lag, WAL sender stalls, network saturation, and replay bottlenecks on read replicas.
SkillBFreshness: BClaude Code +9 - 0.516score
diagnose-oom
Swastik023
Diagnose Kubernetes Out-Of-Memory (OOMKilled) events, evaluate container memory limits against working set spikes, and formulate evidence-backed scaling…
SkillBFreshness: BClaude Code +9 - 0.516score
detect-privilege-escalation
Swastik023
Detect container privilege escalation, root UID execution, dangerous Linux capabilities (CAP_SYS_ADMIN), and host namespace mounting.
SkillBFreshness: BClaude Code +9
Cite this page
upgrade skill. Agent Mart. https://agentmart.dev/skills/swastik023-upgrade (last updated 2026-10-24)