geo-update — Claude Code skill: keep GEO-SEO current
Pulls the newest GEO-SEO release from upstream, diffs it against your installed files, and copies the changes in place.
npx skills add zubair-trabzada/geo-seo-claude --skill geo-update -a claude-codeWhat geo-update does
Use this when your local GEO-SEO copy has fallen behind the repository. The skill clones upstream into a temp directory, runs diff --recursive --brief across the component folders, and sorts the results into new, modified and removed files. Removed ones stay put — you may have edited them — so the skill lists them and leaves the call to you.
Copying then follows fixed paths under ~/.claude/: the main skill into skills/geo/, sub-skills into skills/geo-*/, agents into agents/geo-*.md, plus scripts, schema templates and hooks. If upstream ships a requirements.txt that differs, it installs the dependencies with python3 -m pip install; a failure there is reported but not treated as fatal.
One thing to check first: ~/.claude/skills/geo/SKILL.md has to exist, otherwise there is nothing to update and the skill tells you to run the installer instead. It never writes to settings.json or settings.local.json. Skill changes only land in a fresh Claude session, so restart yours afterwards.
What it helps with
- pull the latest GEO-SEO release from upstream
- see which toolkit files changed before anything is copied
- refresh sub-skills, agents and schema templates in one pass
- keep local edits to files that upstream dropped
- reinstall the toolkit's Python dependencies after an update
Example prompts for the agent
- update GEO-SEO from upstream and show me what changed
- run geo-update and list the new and modified files
- refresh the GEO-SEO skills but don't delete my local files
How to install geo-update
1Skills CLI (Vercel)
npx skills add zubair-trabzada/geo-seo-claude --skill geo-update -a claude-code2Manually: put the files in place
~/.claude/skills/geo-update/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/geo-update/
1Skills CLI (Vercel)
npx skills add zubair-trabzada/geo-seo-claude --skill geo-update -a codex2Manually: put the files in place
.agents/skills/geo-update/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add zubair-trabzada/geo-seo-claude --skill geo-update -a cursor2Manually: put the files in place
.cursor/skills/geo-update/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install zubair-trabzada/geo-seo-claude geo-update2Manually: put the files in place
.github/skills/geo-update/SKILL.md1Skills CLI (Vercel)
npx skills add zubair-trabzada/geo-seo-claude --skill geo-update -a gemini-cli2Platform CLI
gemini skills install https://github.com/zubair-trabzada/geo-seo-claude --path skills/geo-updateManually: put the files in place
.devin/skills/geo-update/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add zubair-trabzada/geo-seo-claude --skill geo-update -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about geo-update
How do I install geo-update in Claude?
Run npx skills add zubair-trabzada/geo-seo-claude --skill geo-update -a claude-code. The skill lands at ~/.claude/skills/geo-update/SKILL.md.
What does geo-update do?
It clones the GEO-SEO repository, compares its files against your installed ones, and copies the updates into ~/.claude/. A change summary comes first.
What happens to files that upstream removed?
They are left alone, since you may have customised them. The skill lists them so you can decide whether to delete them yourself.
Source text
SKILL.md · MIT
---
name: geo-update
description: Pull the latest GEO-SEO skill updates from the upstream repository. Compares installed files against the latest release, shows what changed, and updates all skills, agents, scripts, and schema templates in place.
allowed-tools:
- Bash
- Read
- Write
---
# GEO-SEO Update Skill
## Purpose
Updates the locally installed GEO-SEO skills, agents, scripts, and schema templates to the latest version from the upstream repository. Shows a summary of what changed before and after the update.
---
## Update Workflow
### Step 1: Determine Installed Location
The GEO-SEO toolkit installs to these locations under `~/.claude/`:
| Component | Install Path |
|-----------|-------------|
| Main skill | `~/.claude/skills/geo/` |
| Sub-skills | `~/.claude/skills/geo-*/` |
| Agents | `~/.claude/agents/geo-*.md` |
| Scripts | `~/.claude/skills/geo/scripts/` |
| Schema templates | `~/.claude/skills/geo/schema/` |
| Hooks | `~/.claude/skills/geo/hooks/` |
Verify the installation exists by checking for `~/.claude/skills/geo/SKILL.md`. If it does not exist, inform the user that GEO-SEO is not installed and suggest running the installer instead.
### Step 2: Clone Latest from Upstream
```bash
TEMP_DIR=$(mktemp -d)
git clone --depth 1 https://github.com/zubair-trabzada/geo-seo-claude.git "$TEMP_DIR/repo"
```
If the clone fails, report the error and stop. Do not modify any installed files.
### Step 3: Compare Installed vs Latest
Before copying files, generate a diff summary so the user knows what will change:
1. For each component directory, compare the installed files against the cloned files using `diff --recursive --brief`.
2. Categorise changes as:
- **New files** — exist in upstream but not locally
- **Modified files** — exist in both but differ
- **Removed files** — exist locally but not in upstream (these are NOT deleted automatically)
3. Present the summary to the user.
### Step 4: Apply Updates
Copy files from the cloned repo over the installed locations:
```bash
CLAUDE_DIR="${HOME}/.claude"
SOURCE_DIR="$TEMP_DIR/repo"
# Main skill
cp -r "$SOURCE_DIR/geo/"* "$CLAUDE_DIR/skills/geo/"
# Sub-skills
for skill_dir in "$SOURCE_DIR/skills"/*/; do
skill_name=$(basename "$skill_dir")
mkdir -p "$CLAUDE_DIR/skills/${skill_name}"
cp -r "$skill_dir"* "$CLAUDE_DIR/skills/${skill_name}/"
done
# Agents
for agent_file in "$SOURCE_DIR/agents/"*.md; do
cp "$agent_file" "$CLAUDE_DIR/agents/"
done
# Scripts
if [ -d "$SOURCE_DIR/scripts" ]; then
cp -r "$SOURCE_DIR/scripts/"* "$CLAUDE_DIR/skills/geo/scripts/"
chmod +x "$CLAUDE_DIR/skills/geo/scripts/"*.py 2>/dev/null || true
fi
# Schema templates
if [ -d "$SOURCE_DIR/schema" ]; then
cp -r "$SOURCE_DIR/schema/"* "$CLAUDE_DIR/skills/geo/schema/"
fi
# Hooks
if [ -d "$SOURCE_DIR/hooks" ] && [ "$(ls -A "$SOURCE_DIR/hooks" 2>/dev/null)" ]; then
mkdir -p "$CLAUDE_DIR/skills/geo/hooks"
cp -r "$SOURCE_DIR/hooks/"* "$CLAUDE_DIR/skills/geo/hooks/"
chmod +x "$CLAUDE_DIR/skills/geo/hooks/"* 2>/dev/null || true
fi
```
### Step 5: Update Python Dependencies
If `requirements.txt` exists in the upstream repo and differs from the installed version:
```bash
python3 -m pip install -r "$SOURCE_DIR/requirements.txt" --quiet
```
Report any failures but do not treat them as fatal.
### Step 6: Clean Up
```bash
rm -rf "$TEMP_DIR"
```
### Step 7: Report Results
Present a summary:
```
GEO-SEO Update Complete
=======================
New files: [count]
Modified files: [count]
Unchanged: [count]
Removed upstream (kept locally): [count]
Dependencies: [updated / unchanged / failed]
```
If there were removed files upstream, list them and suggest the user review whether to delete them manually.
---
## Important Notes
- **Never delete locally installed files** that no longer exist upstream. The user may have customised them. List them and let the user decide.
- **Never modify `~/.claude/settings.json` or `~/.claude/settings.local.json`** — these are user configuration files, not part of the GEO-SEO toolkit.
- **If already up to date** (no diff), report that and skip the copy step.
- **Restart notice:** Remind the user that skill changes take effect in new Claude Code sessions. They should restart their session to use the updated skills.
© zubair-trabzada · MIT · zubair-trabzada/geo-seo-claude