GEO-SEO Skill Updater
One command syncs your locally installed GEO-SEO skills, agents, scripts and schema templates to the latest upstream release, with a change summary before and after.
The skill writes to ~/.claude skill/agent/script/hook directories and may pip install the upstream requirements.txt. Positives: diff summary before updating, explicit never-delete policy, explicit prohibition on touching settings files, abort on clone failure. Deductions: no enforced user confirmation before overwrite (Step 3 only presents the summary; Step 4 copies immediately), pip installs unreviewed dependency changes, hooks/scripts are chmod +x'd and would execute as-is, and there is no rollback/backup mechanism.
Workflow is self-consistent: existence check, abort on clone failure, skip when no diff, upstream-removed files preserved and listed. Deductions: static review cannot verify execution; Step 4 assumes ~/.claude/skills/geo and scripts/schema subdirectories exist without mkdir (partial installs would fail); pip failures are non-fatal but consequences unexplained; failure feedback depends on model adherence rather than structure.
Trigger semantics are clear (pull GEO-SEO skill updates), scenario well-defined, boundaries declared (not-installed fallback, custom files preserved). Deductions: depends on GitHub clone reachability, a connectivity risk for mainland-China users that is not disclosed; Windows environment differences not covered.
Clear structure with purpose, stepwise workflow, important notes, and output template; valid frontmatter. Deductions: no version numbers or changelog, so the target release cannot be identified; no disclosed handling for corrupted or conflicting updates; maintenance responsibility only implied by the upstream repo.
The core task (diff and update installed skills) has a complete flow producing a usable update summary. Deductions: static review cannot confirm the update paths work against the real repository layout (16 SKILL.md files, agents/, hooks/); Step 4 path mapping diverges somewhat from the README architecture (e.g., hooks location), so output may need manual repair.
The repo includes a LICENSE, requirements.txt, a CI workflow, and a test suite — but for fetch_page.py, not this update skill; the diff/update flow has no reproduction evidence. Deductions: no tests or example runs cover this skill's key paths; capped by static-review limits.
- Updates overwrite installed files with no backup or rollback; back up ~/.claude/skills/geo* manually before running, or review the Step 3 diff before copying.
- The skill will pip install upstream requirements and chmod +x hooks/scripts; review upstream changes to dependencies and hooks before updating.
- Updating requires direct GitHub access, which may fail on mainland-China networks; consider a mirror or manual zip download.
- This is a static source review; the update flow was not executed and the diff/copy paths are unverified against a real installation.
What does this skill do, and when should you use it?
geo-update is the built-in self-update skill from the zubair-trabzada/geo-seo-claude repository. It checks whether the GEO-SEO toolkit is installed under ~/.claude/, shallow-clones the latest upstream code, diffs it against your local install, then copies new and changed files into place without ever deleting local-only files. It also syncs Python dependencies from requirements.txt and finishes with a report of new, modified, unchanged, and upstream-removed (kept locally) file counts. Every step is a deterministic Bash procedure written in SKILL.md, making the behavior predictable and auditable.
Concretely: 1) verifies ~/.claude/skills/geo/SKILL.md exists and otherwise tells you to run the installer; 2) creates a temp dir with mktemp and runs git clone --depth 1 of the upstream repo; 3) runs diff --recursive --brief against the main skill, sub-skills, agents/geo-*.md, scripts, schema templates and hooks, categorizing new, modified, and upstream-removed files; 4) copies upstream files over the install locations, chmod +x on scripts and hooks; 5) runs pip install -r if requirements.txt changed; 6) removes the temp dir; 7) prints an update summary. Hard constraints: it never deletes local-only files and never touches ~/.claude/settings. or settings.local..
- A Claude Code user who installed the GEO-SEO toolkit via install.sh and wants the latest version without re-running the full installer
- A GEO consultant using the toolkit on client projects who needs audit logic and schema templates kept at upstream-latest
- A user with local customizations who wants a diff summary first before deciding what to update and what to merge manually
- An admin maintaining installs on multiple machines who needs each copy synced to the same version
- A user of the pip-dependent scripts who wants requirements.txt upgrades to come along with the update
What are this skill's strengths and limitations?
- Generates a full diff summary before updating, with clear new/modified/removed categories
- Never deletes local files and never touches settings. — safe for customized installs and user config
- Dependency install failures are reported but treated as non-fatal
- All steps are readable Bash commands — auditable and manually reproducible
- Quantified end report: new, modified, unchanged, and locally-kept counts
- No rollback mechanism — once files are overwritten, recovery means re-cloning from git
- No version or commit-hash comparison; you can only sync to upstream main, not a specific release
- No test suite in the repo validating the update flow itself
- Tightly coupled to the geo-seo-claude install layout; it cannot update other skills
- Recovery guidance for clone or pip failures is minimal
How do you install this skill?
This skill ships as part of the geo-seo-claude collection. Install the whole repo: on macOS/Linux run curl -fsSL https://raw.githubusercontent.com/zubair-trabzada/geo-seo-claude/main/install.sh | bash; on Windows use install-win.sh from Git Bash. It lands under ~/.claude/skills/ as part of the skill set (repo path: skills/geo-update/SKILL.md). Prerequisites: Claude Code CLI, Git, Python 3.8+ (plus python3-venv on Debian/Ubuntu). Steps for installing this single sub-skill standalone are not documented in the source.
How do you use this skill?
In Claude Code, with the GEO-SEO toolkit already installed, invoke the skill with an update request such as "update my GEO-SEO skills to the latest" or by referencing geo-update directly. It will clone upstream, show a diff summary, apply the copy, and report results. Note: changes take effect in new Claude Code sessions, so restart after updating; files removed upstream are kept locally for you to review and delete manually if desired.
How does this skill compare with similar options?
Versus re-running install.sh: the installer targets a fresh install (including the virtual environment), while geo-update targets an existing install, diffs first, and never deletes locally customized files. The source names no third-party update alternatives.