[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M76VYT46GNGCA02BS4T3NETM":3,"skill-same:01M76VYT46GNGCA02BS4T3NETM":46},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M76VYT46GNGCA02BS4T3NETM","amp-update",null,"Safely update Amp with one command (handles everything automatically)","hemory\u002Famp","hemory","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F21179881?v=4","01M6D31HFJ391DN8N0JP8AQGFE","Hemory Phifer","01M758Z6KK3NGD8654Y5CT668C",0,"MIT","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Famp-update\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: amp-update\ndescription: Safely update Amp with one command (handles everything automatically)\n---\n\n## What This Command Does\n\n**For non-technical users:** Updates Amp to the latest version automatically. No command line knowledge needed — just run the command and follow the prompts.\n\n**When to use:**\n- After `\u002Famp-whats-new` shows new version available\n- When you want the latest features and bug fixes\n\n**What it handles:**\n- Downloads updates automatically\n- Protects your data (never touches your notes, tasks, projects)\n- Preserves protected user blocks and user-owned MCP entries\n- Resolves conflicts with a guided choice (no manual merge editor)\n- Shows clear progress and confirmation\n\n**Time:** 2-5 minutes\n\n> **Unsure about compatibility?** Run `\u002Famp-update-preflight` first for environment checks, dependency scanning, and a go\u002Fno-go recommendation.\n\n---\n\n## Process\n\n### Step 1: Quick Environment Check\n\nVerify Git and a valid remote are available. If issues are found, suggest running `\u002Famp-update-preflight` for detailed diagnostics.\n\n```bash\ngit --version && git remote -v\n```\n\n**Detect the correct remote name.** Users who cloned directly have `origin`. Users who forked have `upstream`. Check in this order:\n\n```bash\n# Prefer \"upstream\" if it exists, fall back to \"origin\"\nif git remote | grep -q '^upstream$'; then\n  AMP_REMOTE=\"upstream\"\nelse\n  AMP_REMOTE=\"origin\"\nfi\n```\n\nUse `$AMP_REMOTE` for all fetch\u002Fmerge commands in this process.\n\nIf Git is missing or no remote is configured, redirect: \"Run `\u002Famp-update-preflight` to diagnose and fix your setup.\"\n\nCheck for updates:\n```\ncheck_for_updates(force=True)\n```\n\nIf no updates: show \"✅ You're already on the latest version\" and exit.\nIf updates available: show version summary and proceed.\n\n---\n\n### Step 2: Pre-Update Safety Check\n\nBefore changing anything, capture a protected-content inventory. This inventory is used for post-update verification and the final update summary.\n\n```bash\npython3 - \u003C\u003C'PY'\nimport json, os, pathlib, re\nroot = pathlib.Path('.')\nprotected_dirs = ['00-Inbox','01-Quarter_Goals','02-Week_Priorities','03-Tasks','04-Projects','05-Areas','06-Resources','07-Archives']\nclaude = root \u002F 'CLAUDE.md'\ntext = claude.read_text(errors='ignore') if claude.exists() else ''\nuser_block = bool(re.search(r'USER_EXTENSIONS_START.*USER_EXTENSIONS_END', text, re.S))\ncustom_mcp = []\nif (root \u002F '.mcp.json').exists():\n    data = json.loads((root \u002F '.mcp.json').read_text())\n    custom_mcp = sorted(k for k in data.get('mcpServers', {}) if k.startswith('custom-'))\ncustom_skills = sorted(p.name for p in (root \u002F '.claude' \u002F 'skills').glob('*-custom') if p.is_dir())\ninventory = {\n    'user_extensions': user_block,\n    'custom_mcp': custom_mcp,\n    'custom_skills': custom_skills,\n    'user_data_dirs': [d for d in protected_dirs if (root \u002F d).exists()],\n    'user_profile': (root \u002F 'System' \u002F 'user-profile.yaml').exists(),\n    'pillars': (root \u002F 'System' \u002F 'pillars.yaml').exists(),\n    'env_present': (root \u002F '.env').exists(),\n}\nprint(json.dumps(inventory, indent=2))\nPY\n```\n\nTreat every item in this inventory as user-owned. Do not replace it with Amp defaults during the update.\n\n**A. Check for uncommitted changes**\n\nRun: `git status --porcelain`\n\n**If there are changes:**\n```\n💾 Saving your work...\n\nAmp found unsaved changes in your vault.\nLet me save them before updating.\n```\n\nRun:\n```bash\ngit add .\ngit commit -m \"Auto-save before Amp update to v1.3.0\"\n```\n\nShow:\n```\n✓ Your work is saved\n```\n\n**B. Create backup reference (safety net)**\n\nRun:\n```bash\ngit tag backup-before-v1.3.0\n```\n\nThis creates a snapshot user can revert to if needed.\n\n---\n\n### Step 4: Download and Apply Updates\n\n```\n⬇️ Downloading updates from GitHub...\n```\n\nRun:\n```bash\ngit fetch $AMP_REMOTE\n```\n\n**If network error:**\n```\n❌ Couldn't connect to GitHub\n\nPlease check your internet connection and try again.\n\n[Retry]\n[Cancel]\n```\n\n**Optional breaking-change registry check:**\n\nIf Sprint 1's manifest exists, use it in addition to the update-checker response. Do not fail if it is absent.\n\n```bash\nfor manifest in System\u002Fupdate-manifest.json System\u002Fbreaking-changes.json core\u002Fupdate-manifest.json core\u002Fbreaking-changes.json; do\n  if [ -f \"$manifest\" ]; then\n    echo \"Using update manifest: $manifest\"\n    python3 - \u003C\u003C'PY' \"$manifest\"\nimport json, sys\nwith open(sys.argv[1]) as f:\n    data = json.load(f)\nitems = data.get('breaking_changes') or data.get('breakingChanges') or []\nprint(json.dumps(items, indent=2))\nPY\n    break\n  fi\ndone\n```\n\nIf the manifest contains breaking changes for the target version range, show them before continuing. If no manifest exists, rely on `breaking_changes` from `check_for_updates` and release notes.\n\n**If `breaking_changes: true` in update response or optional manifest:**\n```\n⚠️ Important: This update includes major changes\n\n[Show what's changing]\n\nThis is safe to proceed, but some folders or configs may change.\nMigration will run automatically.\n\n[Continue with update]\n[Cancel — I'll read the details first]\n```\n\nIf cancelled, show link to release notes and exit gracefully.\n\n---\n\n### Step 6: Apply Updates\n\n```\n🔄 Applying updates...\n```\n\n**A. Merge updates**\n\nRun:\n```bash\ngit merge $AMP_REMOTE\u002Fmain --no-edit\n```\n\n**B. Handle merge outcome**\n\n**Case 1: Clean merge (no conflicts)**\n```\n✓ Updates applied successfully\n```\n\nContinue to Step 7.\n\n---\n\n**Case 2: Merge conflicts**\n\nCheck which files have conflicts:\n```bash\ngit status | grep \"both modified\"\n```\n\n**Automatic conflict resolution (protected blocks + guided choices):**\n\n**Protected user blocks (preserved verbatim):**\n- `CLAUDE.md` contains a user block:\n  - `USER_EXTENSIONS_START` ... `USER_EXTENSIONS_END`\n\n**Custom MCP servers (preserved by name):**\n- Any MCP server name starting with `custom-` is preserved\n- Example: `custom-gmail`, `custom-hubspot`\n\n**Custom skills (preserved by name):**\n- Any skill folder ending with `-custom` is preserved\n- Example: `meeting-prep-custom`, `daily-plan-custom`\n\n**When conflicts occur:**\n\n1. **If file is user data** (00-07, System\u002Fuser-profile.yaml, System\u002Fpillars.yaml):\n   - Keep user version\n   - Run: `git checkout --ours \u003Cfile>`\n\n2. **If file contains protected user block** (CLAUDE.md):\n   - Take upstream version\n   - Re-insert preserved user block(s) verbatim\n   - Validate markers still present\n\n3. **If file is .mcp.json**:\n   - Preserve any MCP entries named `custom-*`\n   - Continue with Amp core updates for all other MCPs\n\n4. **If skill folder ends with `-custom`**:\n   - Preserve entirely, never modify\n   - These are user's personal skills\n\n5. **If file is core Amp** (skills, core MCP, scripts) **and user edited it**:\n   - Use AskUserQuestion to resolve, instead of a merge editor\n\n**AskUserQuestion flow (generic, parameterized):**\n```\nTitle: Amp update conflict: {{item_name}}\n\nYour change:\n{{user_change_summary}}\nEnables: {{user_use_case_summary}}\n\nAmp update:\n{{amp_change_summary}}\nEnables: {{amp_use_case_summary}}\n\nOptions:\n1) Keep my version (preserve my changes)\n2) Use Amp version (take upstream changes)\n3) Keep both (rename one)\n4) Let me tell you what to do (I'll write instructions)\n```\n\n**If AskUserQuestion is not available (non-Claude Code):**\n\nUse the tracked CLI helper instead of opening a merge editor:\n\n```bash\n.scripts\u002Famp-merge-resolver.sh\n```\n\nThe helper must show each conflicted file, a conflict preview, and the same four choices:\n1. Keep mine: preserve local version, skip Amp changes for that file\n2. Use Amp: take the update version, discard local edits for that file\n3. Keep both: keep the local file and save the Amp version as `\u003Cfile>.amp-update`\n4. Instructions: collect user instructions in `System\u002Fupdate-conflict-instructions.md` and leave the conflict unresolved for follow-up\n\nIf the user types an invalid choice twice, default to \"Use Amp version\" for core Amp files only. For user data, `System\u002Fuser-profile.yaml`, `System\u002Fpillars.yaml`, `.env`, `custom-*` MCPs, and `*-custom` skills, keep the user's version.\n\n**If user chooses \"Keep both\":**\n- MCP: `name` → `name-custom`\n- Skill folder: `name\u002F` → `name-custom\u002F`\n\n**After resolving all conflicts:**\n```bash\ngit add \u003Cfile>\ngit commit --no-edit\n```\n\n**Show to user:**\n```\n✓ Updates applied successfully\n\nHandled conflicts:\n• Preserved your protected blocks\n• Updated core Amp features\n• Resolved overlapping changes with your choice\n\n[See what changed]\n```\n\n---\n\n**Case 3: Merge failed (rare)**\n\n```\n❌ Update couldn't complete automatically\n\nThis is rare, but sometimes updates need manual review.\n\n**What happened:**\n[Error message]\n\n**Options:**\n[Restore to before update] — Uses the backup we created\n[Get help] — Opens GitHub issue template\n```\n\nIf restore:\n```bash\ngit merge --abort\ngit reset --hard backup-before-v1.3.0\n```\n\n---\n\n### Step 7: Post-Update Steps\n\n**A. Check for migration needs**\n\nIf breaking_changes was true, check for migration script:\n\n```bash\nls core\u002Fmigrations\u002Fv*-to-v*.sh\n```\n\nIf found:\n```\n🔧 Running migration...\n\nThis update requires a one-time migration to update your data structure.\nThis is safe and automatic.\n```\n\nRun:\n```bash\n.\u002Fcore\u002Fmigrations\u002Fv1-to-v2.sh --auto\n```\n\nShow migration output.\n\n**B. Update dependencies**\n\n```\n📦 Updating dependencies...\n```\n\nRun:\n```bash\nnpm install\npip3 install -r requirements.txt\n```\n\n**C. Sync MCP Configuration (Automatic)**\n\nCheck if new MCP servers were added in the update by comparing `.mcp.json.template` entries against the user's live `.mcp.json`.\n\nFor each entry in `.mcp.json.template` that is NOT in the user's `.mcp.json`:\n1. Read the entry from `.mcp.json.template`\n2. Replace `{{VAULT_PATH}}` with the actual vault path\n3. Add to the user's `.mcp.json`\n4. Log: \"✓ Added new MCP server: [name]\"\n\n**Never remove or modify existing user MCP entries.** Only add missing ones.\n\n**Example:** If `.mcp.json.template` has `amp-analytics` but user's config doesn't:\n```json\n\"amp-analytics\": {\n  \"type\": \"stdio\",\n  \"command\": \"python\",\n  \"args\": [\"\u003Cvault_path>\u002Fcore\u002Fmcp\u002Fanalytics_server.py\"],\n  \"env\": { \"VAULT_PATH\": \"\u003Cvault_path>\" }\n}\n```\n\nAdd to summary if new MCPs added: \"✓ Added new MCP servers: amp-analytics\"\n\n**MCP validation after sync:**\n\nNever copy a private `.mcp.json` from another vault. Validate only the user's live file after template entries are merged.\n\n```bash\npython3 - \u003C\u003C'PY'\nimport json, pathlib\nroot = pathlib.Path('.').resolve()\nconfig_path = root \u002F '.mcp.json'\nif not config_path.exists():\n    raise SystemExit('Missing .mcp.json after update')\ndata = json.loads(config_path.read_text())\nservers = data.get('mcpServers', {})\nerrors = []\nfor name, server in servers.items():\n    blob = json.dumps(server)\n    if '{{VAULT_PATH}}' in blob:\n        errors.append(f'{name}: template placeholder not replaced')\n    env_path = (server.get('env') or {}).get('VAULT_PATH')\n    args = server.get('args') or []\n    if env_path and pathlib.Path(env_path).expanduser().resolve() != root:\n        errors.append(f'{name}: VAULT_PATH does not match this vault')\n    for arg in args:\n        if isinstance(arg, str) and 'core\u002Fmcp\u002F' in arg:\n            resolved = pathlib.Path(arg).expanduser()\n            if not resolved.is_absolute():\n                resolved = root \u002F resolved\n            if not resolved.exists():\n                errors.append(f'{name}: arg path missing: {arg}')\nif errors:\n    raise SystemExit('\\n'.join(errors))\nprint('✓ MCP config valid')\nPY\n```\n\nIf validation fails, stop before dismissing the update notification and show the exact server names to fix.\n\n**D. Sync Usage Log Features (Automatic)**\n\nMerge new feature entries from the template `System\u002Fusage_log.md` into the user's existing `System\u002Fusage_log.md`.\n\n**Merge logic:**\n1. Read the upstream template `System\u002Fusage_log.md` (from the just-updated amp-core files)\n2. Read the user's existing `System\u002Fusage_log.md`\n3. For each `- [ ]` or `- [x]` line in the template:\n   - Extract the feature description (text after the checkbox)\n   - Search the user's file for a line containing the same feature description\n   - **If found:** Keep the user's version (preserves their `[x]` state)\n   - **If NOT found:** This is a new feature — add it to the same section in the user's file\n4. Preserve ALL user state: checked boxes, consent decisions, journey metadata, dates\n5. Update the feature count in `Feature adoption score: X\u002FY` (Y = new total)\n\n**Section matching:** Match new entries to the correct section by the `## Section Name` headers (e.g., \"## Core Workflows\", \"## Advanced\"). If a new section exists in the template but not in the user's file, add the entire section.\n\n**Never:**\n- Uncheck a user's checked box\n- Change consent or metadata values\n- Remove entries the user has\n\nLog: \"✓ Added N new features to usage_log.md\" (or \"✓ Usage log up to date\" if nothing added)\n\n**E. Enable new background automations (Automatic)**\n\nCheck for automation scripts that need installation. These run silently without prompting.\n\n**Meeting Sync (if Granola detected):**\n\nCheck if Granola is installed:\n```bash\nls \"$HOME\u002FLibrary\u002FApplication Support\u002FGranola\u002Fcache-v3.json\" 2>\u002Fdev\u002Fnull\n```\n\nIf Granola cache exists AND meeting automation not yet installed:\n```bash\n# Check if already installed\nlaunchctl list | grep com.amp.meeting-intel\n```\n\nIf not installed:\n```bash\ncd .scripts\u002Fmeeting-intel && .\u002Finstall-automation.sh 2>\u002Fdev\u002Fnull\n```\n\nAdd to summary if installed: \"✓ Enabled automatic meeting sync (runs every 30 min)\"\n\n**Future automations:** This pattern extends to other background services. Check for the prerequisite (e.g., app installed, API key present), then run the installer silently.\n\n---\n\n### Step 8: Verification\n\n```\n✓ Update complete! Now testing...\n```\n\n**Quick smoke test:**\n\n1. Check key files exist:\n   - `03-Tasks\u002FTasks.md`\n   - `System\u002Fuser-profile.yaml`\n   - `.claude\u002Fskills\u002Fdaily-plan\u002FSKILL.md`\n\n2. Check MCP configuration:\n   - `.mcp.json` exists and is valid JSON\n   - No `{{VAULT_PATH}}` placeholders remain\n   - Every `env.VAULT_PATH` matches this vault\n   - Every local `core\u002Fmcp\u002F*.py` arg exists\n   - Custom MCP entries (`custom-*`) from the inventory still present\n\n3. Check custom content preservation:\n   - `USER_EXTENSIONS_START\u002FEND` markers still present if they existed before\n   - `*-custom` skill folders from the inventory still present\n   - User data folders from the inventory still present\n   - `System\u002Fuser-profile.yaml`, `System\u002Fpillars.yaml`, and `.env` presence matches the inventory\n\n4. Try loading user profile:\n   - Read `System\u002Fuser-profile.yaml`\n\n5. Produce an update summary:\n   - Write `System\u002Fupdate-summary.md`\n   - Print the same summary in chat\n   - Include versions, files changed, conflicts resolved, MCPs added, custom items preserved, validation results, and rollback tag\n\n**If all pass:**\n```\n✅ Update successful!\n```\n\n**If something fails:**\n```\n⚠️ Update completed but found an issue\n\n[Details of what failed]\n\nYour data is safe, but you may want to:\n[Restore to previous version]\n[Report this issue]\n[Continue anyway]\n```\n\n---\n\n### Step 9: Summary\n\nWrite this to `System\u002Fupdate-summary.md` and display it to the user. This file is user-local runtime output, not a production template.\n\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n✅ Amp Updated: v1.2.0 → v1.3.0\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nWhat's new:\n• Career coach improvements\n• Task deduplication fix\n• Meeting intelligence enhancement\n\nYour data:\n✓ User data folders preserved\n✓ USER_EXTENSIONS preserved\n✓ custom-* MCP entries preserved\n✓ *-custom skills preserved\n✓ user-profile, pillars, and .env presence preserved\n\nValidation:\n✓ MCP config valid\n✓ Smoke checks passed\n✓ Summary written to System\u002Fupdate-summary.md\n\n[View full changelog]\n[Start using new features]\n```\n\n**If new automations were enabled:**\n```\n🤖 New automations enabled:\n✓ Automatic meeting sync (runs every 30 min)\n```\n\n**If there were conflicts:**\n```\n🔍 Changes applied:\n• Updated 12 core files\n• Kept 5 of your customized files\n• Protected all your data folders\n\n[See detailed change list]\n```\n\n---\n\n### Step 9b: Check New Integrations (After Success)\n\nAfter successful update, check if new integration features are available:\n\n```python\nfrom core.integrations import get_post_update_integration_message, should_show_integration_prompt\n\nif should_show_integration_prompt():\n    msg = get_post_update_integration_message()\n    if msg:\n        print(msg)\n```\n\n**If integrations are available but not configured:**\n```\n---\n\n## 🔌 New: Productivity Integrations\n\nThis update includes integrations for your favorite tools:\n\n- **Notion** — Search your workspace, pull docs into meeting prep\n- **Slack** — Search conversations, get context about people\n- **Google** — Gmail search, email context in person pages\n\n**Set up now?** These are optional but unlock powerful features like:\n- \"What did Sarah say about the Q1 budget?\" → Searches Slack\n- Meeting prep pulls relevant docs from Notion\n- Person pages show email\u002FSlack history\n\nRun `\u002Fintegrate-notion`, `\u002Fintegrate-slack`, or `\u002Fintegrate-google` to set up.\n```\n\n**If user has integrations that could be upgraded:**\n```\n---\n\n## 🔄 Integration Upgrade Available\n\nYou have some integrations that could be upgraded to Amp recommended packages:\n\n### Notion\n- **Current:** custom-notion-mcp\n- **Recommended:** @notionhq\u002Fnotion-mcp-server\n- **Benefits:** Official from Notion, Best maintained, Full API coverage\n\n**Options:**\n1. **Keep existing** — Your current setup works fine\n2. **Upgrade** — Run `\u002Fintegrate-notion` to switch to recommended\n```\n\n---\n\n### Step 10: Track Usage (Silent)\n\nUpdate `System\u002Fusage_log.md` to mark Amp update as used.\n\n**Analytics (Silent):**\n\nCall `track_event` with event_name `amp_update_completed` and properties:\n- `from_version`\n- `to_version`\n\nThis only fires if the user has opted into analytics. No action needed if it returns \"analytics_disabled\".\n\n**Clear update notification:**\n\nCall `dismiss_update()` from the Update Checker MCP to remove the `System\u002F.update-available` file. This stops the daily update reminder from appearing in future sessions.\n\n---\n\n## Error Recovery\n\n### If Update Fails at Any Point\n\nUser always has escape hatch:\n\n```\n🔙 Restoring to before update...\n```\n\nRun:\n```bash\ngit merge --abort 2>\u002Fdev\u002Fnull || true\ngit reset --hard backup-before-v1.3.0\ngit clean -fd\n```\n\n```\n✓ Restored to v1.2.0\n\nNothing was changed. Your Amp is exactly as it was.\n\n[Try update again]\n[Report issue]\n[Cancel]\n```\n\n---\n\n## Migration Support (for Breaking Changes)\n\n### Auto-Migration Flag\n\nIf migration script supports `--auto` flag, run non-interactively:\n\n```bash\n.\u002Fcore\u002Fmigrations\u002Fv1-to-v2.sh --auto\n```\n\n**Migration script must:**\n- Accept `--auto` flag\n- Skip confirmation prompts\n- Return exit code 0 on success\n- Log to `System\u002F.migration-log`\n\n### Manual Migration Required\n\nIf script doesn't support `--auto`:\n\n```\n⚠️ Manual step required\n\nThis update needs you to run a migration script.\n\nDon't worry - it's one command and takes 30 seconds.\n\n**In Cursor's terminal (bottom panel), run:**\n\n.\u002Fcore\u002Fmigrations\u002Fv1-to-v2.sh\n\n**Then come back here when it's done.**\n\n[I've run the migration — continue]\n[Show me what the migration does]\n[Cancel update]\n```\n\n---\n\n## Alternative: ZIP Download Path\n\nFor users who can't\u002Fwon't use Git, provide manual instructions:\n\n```\n📥 Manual Update Method\n\nIf automatic updates don't work, you can update manually:\n\n1. **Download latest Amp:**\n   https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Farchive\u002Frefs\u002Fheads\u002Fmain.zip\n\n2. **Copy your data and custom blocks:**\n   From OLD Amp folder, copy these to NEW Amp folder:\n   \n   ✓ System\u002Fuser-profile.yaml\n   ✓ System\u002Fpillars.yaml\n   ✓ 00-Inbox\u002F (entire folder)\n   ✓ 01-Quarter_Goals\u002F (entire folder)\n   ✓ 02-Week_Priorities\u002F (entire folder)\n   ✓ 03-Tasks\u002F (entire folder)\n   ✓ 04-Projects\u002F (entire folder)\n   ✓ 05-Areas\u002F (entire folder)\n   ✓ 07-Archives\u002F (entire folder)\n   ✓ .env (if it exists)\n   ✓ Your `USER_EXTENSIONS` block from `CLAUDE.md`\n   ✓ Any custom MCP entries named `custom-*` from `.mcp.json`\n   ✓ Any custom skills ending with `-custom`\n\n3. **DON'T copy:**\n   ✗ .claude\u002Fskills\u002F (use new version)\n   ✗ core\u002Fmcp\u002F (use new version)\n   ✗ README.md (use new version)\n\n4. **Open new folder in Cursor**\n\n5. **Run \u002Fsetup to verify**\n\n[Download now]\n[Copy step-by-step instructions to clipboard]\n```\n\n---\n\n## Related Commands\n\n- `\u002Famp-update-preflight` — Pre-update checks, compatibility verification, dependency scanning\n- `\u002Famp-whats-new` — Check what's new without updating\n- `\u002Famp-rollback` — Undo last update (if something went wrong)\n\n---\n\n## Philosophy\n\n**Automatic where possible:**\n- Git commands run silently\n- Conflicts resolved automatically\n- Dependencies updated automatically\n- Migrations run automatically (when safe)\n\n**Interactive where necessary:**\n- Breaking changes: confirm understanding\n- Manual migration: clear instructions\n- Errors: always offer restoration\n\n**Safe always:**\n- Backup created before any changes\n- User data never at risk (gitignored)\n- One-command rollback if issues\n- Clear status at every step\n\n**No jargon:**\n- Don't say \"merge conflict\" - say \"overlapping changes\"\n- Don't say \"upstream\" - say \"main Amp repository\"\n- Don't say \"git fetch\" - say \"downloading updates\"\n- Don't say \"rebase\" - just don't use rebase\n","## What This Command Does\n\n**For non-technical users:** Updates Amp to the latest version automatically. No command line knowledge needed — just run the command and follow the prompts.\n\n**When to use:**\n- After `\u002Famp-whats-new` shows new version available\n- When you want the latest features and bug fixes\n\n**What it handles:**\n- Downloads updates automatically\n- Protects your data (never touches your notes, tasks, projects)\n- Preserves protected user blocks and user-owned MCP entries\n- Resolves conflicts with a guided choice (no manual merge editor)\n- Shows clear progress and confirmation\n\n**Time:** 2-5 minutes\n\n> **Unsure about compatibility?** Run `\u002Famp-update-preflight` first for environment checks, dependency scanning, and a go\u002Fno-go recommendation.\n\n---\n\n## Process\n\n### Step 1: Quick Environment Check\n\nVerify Git and a valid remote are available. If issues are found, suggest running `\u002Famp-update-preflight` for detailed diagnostics.\n\n```bash\ngit --version && git remote -v\n```\n\n**Detect the correct remote name.** Users who cloned directly have `origin`. Users who forked have `upstream`. Check in this order:\n\n```bash\n# Prefer \"upstream\" if it exists, fall back to \"origin\"\nif git remote | grep -q '^upstream$'; then\n  AMP_REMOTE=\"upstream\"\nelse\n  AMP_REMOTE=\"origin\"\nfi\n```\n\nUse `$AMP_REMOTE` for all fetch\u002Fmerge commands in this process.\n\nIf Git is missing or no remote is configured, redirect: \"Run `\u002Famp-update-preflight` to diagnose and fix your setup.\"\n\nCheck for updates:\n```\ncheck_for_updates(force=True)\n```\n\nIf no updates: show \"✅ You're already on the latest version\" and exit.\nIf updates available: show version summary and proceed.\n\n---\n\n### Step 2: Pre-Update Safety Check\n\nBefore changing anything, capture a protected-content inventory. This inventory is used for post-update verification and the final update summary.\n\n```bash\npython3 - \u003C\u003C'PY'\nimport json, os, pathlib, re\nroot = pathlib.Path('.')\nprotected_dirs = ['00-Inbox','01-Quarter_Goals','02-Week_Priorities','03-Tasks','04-Projects','05-Areas','06-Resources','07-Archives']\nclaude = root \u002F 'CLAUDE.md'\ntext = claude.read_text(errors='ignore') if claude.exists() else ''\nuser_block = bool(re.search(r'USER_EXTENSIONS_START.*USER_EXTENSIONS_END', text, re.S))\ncustom_mcp = []\nif (root \u002F '.mcp.json').exists():\n    data = json.loads((root \u002F '.mcp.json').read_text())\n    custom_mcp = sorted(k for k in data.get('mcpServers', {}) if k.startswith('custom-'))\ncustom_skills = sorted(p.name for p in (root \u002F '.claude' \u002F 'skills').glob('*-custom') if p.is_dir())\ninventory = {\n    'user_extensions': user_block,\n    'custom_mcp': custom_mcp,\n    'custom_skills': custom_skills,\n    'user_data_dirs': [d for d in protected_dirs if (root \u002F d).exists()],\n    'user_profile': (root \u002F 'System' \u002F 'user-profile.yaml').exists(),\n    'pillars': (root \u002F 'System' \u002F 'pillars.yaml').exists(),\n    'env_present': (root \u002F '.env').exists(),\n}\nprint(json.dumps(inventory, indent=2))\nPY\n```\n\nTreat every item in this inventory as user-owned. Do not replace it with Amp defaults during the update.\n\n**A. Check for uncommitted changes**\n\nRun: `git status --porcelain`\n\n**If there are changes:**\n```\n💾 Saving your work...\n\nAmp found unsaved changes in your vault.\nLet me save them before updating.\n```\n\nRun:\n```bash\ngit add .\ngit commit -m \"Auto-save before Amp update to v1.3.0\"\n```\n\nShow:\n```\n✓ Your work is saved\n```\n\n**B. Create backup reference (safety net)**\n\nRun:\n```bash\ngit tag backup-before-v1.3.0\n```\n\nThis creates a snapshot user can revert to if needed.\n\n---\n\n### Step 4: Download and Apply Updates\n\n```\n⬇️ Downloading updates from GitHub...\n```\n\nRun:\n```bash\ngit fetch $AMP_REMOTE\n```\n\n**If network error:**\n```\n❌ Couldn't connect to GitHub\n\nPlease check your internet connection and try again.\n\n[Retry]\n[Cancel]\n```\n\n**Optional breaking-change registry check:**\n\nIf Sprint 1's manifest exists, use it in addition to the update-checker response. Do not fail if it is absent.\n\n```bash\nfor manifest in System\u002Fupdate-manifest.json System\u002Fbreaking-changes.json core\u002Fupdate-manifest.json core\u002Fbreaking-changes.json; do\n  if [ -f \"$manifest\" ]; then\n    echo \"Using update manifest: $manifest\"\n    python3 - \u003C\u003C'PY' \"$manifest\"\nimport json, sys\nwith open(sys.argv[1]) as f:\n    data = json.load(f)\nitems = data.get('breaking_changes') or data.get('breakingChanges') or []\nprint(json.dumps(items, indent=2))\nPY\n    break\n  fi\ndone\n```\n\nIf the manifest contains breaking changes for the target version range, show them before continuing. If no manifest exists, rely on `breaking_changes` from `check_for_updates` and release notes.\n\n**If `breaking_changes: true` in update response or optional manifest:**\n```\n⚠️ Important: This update includes major changes\n\n[Show what's changing]\n\nThis is safe to proceed, but some folders or configs may change.\nMigration will run automatically.\n\n[Continue with update]\n[Cancel — I'll read the details first]\n```\n\nIf cancelled, show link to release notes and exit gracefully.\n\n---\n\n### Step 6: Apply Updates\n\n```\n🔄 Applying updates...\n```\n\n**A. Merge updates**\n\nRun:\n```bash\ngit merge $AMP_REMOTE\u002Fmain --no-edit\n```\n\n**B. Handle merge outcome**\n\n**Case 1: Clean merge (no conflicts)**\n```\n✓ Updates applied successfully\n```\n\nContinue to Step 7.\n\n---\n\n**Case 2: Merge conflicts**\n\nCheck which files have conflicts:\n```bash\ngit status | grep \"both modified\"\n```\n\n**Automatic conflict resolution (protected blocks + guided choices):**\n\n**Protected user blocks (preserved verbatim):**\n- `CLAUDE.md` contains a user block:\n  - `USER_EXTENSIONS_START` ... `USER_EXTENSIONS_END`\n\n**Custom MCP servers (preserved by name):**\n- Any MCP server name starting with `custom-` is preserved\n- Example: `custom-gmail`, `custom-hubspot`\n\n**Custom skills (preserved by name):**\n- Any skill folder ending with `-custom` is preserved\n- Example: `meeting-prep-custom`, `daily-plan-custom`\n\n**When conflicts occur:**\n\n1. **If file is user data** (00-07, System\u002Fuser-profile.yaml, System\u002Fpillars.yaml):\n   - Keep user version\n   - Run: `git checkout --ours \u003Cfile>`\n\n2. **If file contains protected user block** (CLAUDE.md):\n   - Take upstream version\n   - Re-insert preserved user block(s) verbatim\n   - Validate markers still present\n\n3. **If file is .mcp.json**:\n   - Preserve any MCP entries named `custom-*`\n   - Continue with Amp core updates for all other MCPs\n\n4. **If skill folder ends with `-custom`**:\n   - Preserve entirely, never modify\n   - These are user's personal skills\n\n5. **If file is core Amp** (skills, core MCP, scripts) **and user edited it**:\n   - Use AskUserQuestion to resolve, instead of a merge editor\n\n**AskUserQuestion flow (generic, parameterized):**\n```\nTitle: Amp update conflict: {{item_name}}\n\nYour change:\n{{user_change_summary}}\nEnables: {{user_use_case_summary}}\n\nAmp update:\n{{amp_change_summary}}\nEnables: {{amp_use_case_summary}}\n\nOptions:\n1) Keep my version (preserve my changes)\n2) Use Amp version (take upstream changes)\n3) Keep both (rename one)\n4) Let me tell you what to do (I'll write instructions)\n```\n\n**If AskUserQuestion is not available (non-Claude Code):**\n\nUse the tracked CLI helper instead of opening a merge editor:\n\n```bash\n.scripts\u002Famp-merge-resolver.sh\n```\n\nThe helper must show each conflicted file, a conflict preview, and the same four choices:\n1. Keep mine: preserve local version, skip Amp changes for that file\n2. Use Amp: take the update version, discard local edits for that file\n3. Keep both: keep the local file and save the Amp version as `\u003Cfile>.amp-update`\n4. Instructions: collect user instructions in `System\u002Fupdate-conflict-instructions.md` and leave the conflict unresolved for follow-up\n\nIf the user types an invalid choice twice, default to \"Use Amp version\" for core Amp files only. For user data, `System\u002Fuser-profile.yaml`, `System\u002Fpillars.yaml`, `.env`, `custom-*` MCPs, and `*-custom` skills, keep the user's version.\n\n**If user chooses \"Keep both\":**\n- MCP: `name` → `name-custom`\n- Skill folder: `name\u002F` → `name-custom\u002F`\n\n**After resolving all conflicts:**\n```bash\ngit add \u003Cfile>\ngit commit --no-edit\n```\n\n**Show to user:**\n```\n✓ Updates applied successfully\n\nHandled conflicts:\n• Preserved your protected blocks\n• Updated core Amp features\n• Resolved overlapping changes with your choice\n\n[See what changed]\n```\n\n---\n\n**Case 3: Merge failed (rare)**\n\n```\n❌ Update couldn't complete automatically\n\nThis is rare, but sometimes updates need manual review.\n\n**What happened:**\n[Error message]\n\n**Options:**\n[Restore to before update] — Uses the backup we created\n[Get help] — Opens GitHub issue template\n```\n\nIf restore:\n```bash\ngit merge --abort\ngit reset --hard backup-before-v1.3.0\n```\n\n---\n\n### Step 7: Post-Update Steps\n\n**A. Check for migration needs**\n\nIf breaking_changes was true, check for migration script:\n\n```bash\nls core\u002Fmigrations\u002Fv*-to-v*.sh\n```\n\nIf found:\n```\n🔧 Running migration...\n\nThis update requires a one-time migration to update your data structure.\nThis is safe and automatic.\n```\n\nRun:\n```bash\n.\u002Fcore\u002Fmigrations\u002Fv1-to-v2.sh --auto\n```\n\nShow migration output.\n\n**B. Update dependencies**\n\n```\n📦 Updating dependencies...\n```\n\nRun:\n```bash\nnpm install\npip3 install -r requirements.txt\n```\n\n**C. Sync MCP Configuration (Automatic)**\n\nCheck if new MCP servers were added in the update by comparing `.mcp.json.template` entries against the user's live `.mcp.json`.\n\nFor each entry in `.mcp.json.template` that is NOT in the user's `.mcp.json`:\n1. Read the entry from `.mcp.json.template`\n2. Replace `{{VAULT_PATH}}` with the actual vault path\n3. Add to the user's `.mcp.json`\n4. Log: \"✓ Added new MCP server: [name]\"\n\n**Never remove or modify existing user MCP entries.** Only add missing ones.\n\n**Example:** If `.mcp.json.template` has `amp-analytics` but user's config doesn't:\n```json\n\"amp-analytics\": {\n  \"type\": \"stdio\",\n  \"command\": \"python\",\n  \"args\": [\"\u003Cvault_path>\u002Fcore\u002Fmcp\u002Fanalytics_server.py\"],\n  \"env\": { \"VAULT_PATH\": \"\u003Cvault_path>\" }\n}\n```\n\nAdd to summary if new MCPs added: \"✓ Added new MCP servers: amp-analytics\"\n\n**MCP validation after sync:**\n\nNever copy a private `.mcp.json` from another vault. Validate only the user's live file after template entries are merged.\n\n```bash\npython3 - \u003C\u003C'PY'\nimport json, pathlib\nroot = pathlib.Path('.').resolve()\nconfig_path = root \u002F '.mcp.json'\nif not config_path.exists():\n    raise SystemExit('Missing .mcp.json after update')\ndata = json.loads(config_path.read_text())\nservers = data.get('mcpServers', {})\nerrors = []\nfor name, server in servers.items():\n    blob = json.dumps(server)\n    if '{{VAULT_PATH}}' in blob:\n        errors.append(f'{name}: template placeholder not replaced')\n    env_path = (server.get('env') or {}).get('VAULT_PATH')\n    args = server.get('args') or []\n    if env_path and pathlib.Path(env_path).expanduser().resolve() != root:\n        errors.append(f'{name}: VAULT_PATH does not match this vault')\n    for arg in args:\n        if isinstance(arg, str) and 'core\u002Fmcp\u002F' in arg:\n            resolved = pathlib.Path(arg).expanduser()\n            if not resolved.is_absolute():\n                resolved = root \u002F resolved\n            if not resolved.exists():\n                errors.append(f'{name}: arg path missing: {arg}')\nif errors:\n    raise SystemExit('\\n'.join(errors))\nprint('✓ MCP config valid')\nPY\n```\n\nIf validation fails, stop before dismissing the update notification and show the exact server names to fix.\n\n**D. Sync Usage Log Features (Automatic)**\n\nMerge new feature entries from the template `System\u002Fusage_log.md` into the user's existing `System\u002Fusage_log.md`.\n\n**Merge logic:**\n1. Read the upstream template `System\u002Fusage_log.md` (from the just-updated amp-core files)\n2. Read the user's existing `System\u002Fusage_log.md`\n3. For each `- [ ]` or `- [x]` line in the template:\n   - Extract the feature description (text after the checkbox)\n   - Search the user's file for a line containing the same feature description\n   - **If found:** Keep the user's version (preserves their `[x]` state)\n   - **If NOT found:** This is a new feature — add it to the same section in the user's file\n4. Preserve ALL user state: checked boxes, consent decisions, journey metadata, dates\n5. Update the feature count in `Feature adoption score: X\u002FY` (Y = new total)\n\n**Section matching:** Match new entries to the correct section by the `## Section Name` headers (e.g., \"## Core Workflows\", \"## Advanced\"). If a new section exists in the template but not in the user's file, add the entire section.\n\n**Never:**\n- Uncheck a user's checked box\n- Change consent or metadata values\n- Remove entries the user has\n\nLog: \"✓ Added N new features to usage_log.md\" (or \"✓ Usage log up to date\" if nothing added)\n\n**E. Enable new background automations (Automatic)**\n\nCheck for automation scripts that need installation. These run silently without prompting.\n\n**Meeting Sync (if Granola detected):**\n\nCheck if Granola is installed:\n```bash\nls \"$HOME\u002FLibrary\u002FApplication Support\u002FGranola\u002Fcache-v3.json\" 2>\u002Fdev\u002Fnull\n```\n\nIf Granola cache exists AND meeting automation not yet installed:\n```bash\n# Check if already installed\nlaunchctl list | grep com.amp.meeting-intel\n```\n\nIf not installed:\n```bash\ncd .scripts\u002Fmeeting-intel && .\u002Finstall-automation.sh 2>\u002Fdev\u002Fnull\n```\n\nAdd to summary if installed: \"✓ Enabled automatic meeting sync (runs every 30 min)\"\n\n**Future automations:** This pattern extends to other background services. Check for the prerequisite (e.g., app installed, API key present), then run the installer silently.\n\n---\n\n### Step 8: Verification\n\n```\n✓ Update complete! Now testing...\n```\n\n**Quick smoke test:**\n\n1. Check key files exist:\n   - `03-Tasks\u002FTasks.md`\n   - `System\u002Fuser-profile.yaml`\n   - `.claude\u002Fskills\u002Fdaily-plan\u002FSKILL.md`\n\n2. Check MCP configuration:\n   - `.mcp.json` exists and is valid JSON\n   - No `{{VAULT_PATH}}` placeholders remain\n   - Every `env.VAULT_PATH` matches this vault\n   - Every local `core\u002Fmcp\u002F*.py` arg exists\n   - Custom MCP entries (`custom-*`) from the inventory still present\n\n3. Check custom content preservation:\n   - `USER_EXTENSIONS_START\u002FEND` markers still present if they existed before\n   - `*-custom` skill folders from the inventory still present\n   - User data folders from the inventory still present\n   - `System\u002Fuser-profile.yaml`, `System\u002Fpillars.yaml`, and `.env` presence matches the inventory\n\n4. Try loading user profile:\n   - Read `System\u002Fuser-profile.yaml`\n\n5. Produce an update summary:\n   - Write `System\u002Fupdate-summary.md`\n   - Print the same summary in chat\n   - Include versions, files changed, conflicts resolved, MCPs added, custom items preserved, validation results, and rollback tag\n\n**If all pass:**\n```\n✅ Update successful!\n```\n\n**If something fails:**\n```\n⚠️ Update completed but found an issue\n\n[Details of what failed]\n\nYour data is safe, but you may want to:\n[Restore to previous version]\n[Report this issue]\n[Continue anyway]\n```\n\n---\n\n### Step 9: Summary\n\nWrite this to `System\u002Fupdate-summary.md` and display it to the user. This file is user-local runtime output, not a production template.\n\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n✅ Amp Updated: v1.2.0 → v1.3.0\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nWhat's new:\n• Career coach improvements\n• Task deduplication fix\n• Meeting intelligence enhancement\n\nYour data:\n✓ User data folders preserved\n✓ USER_EXTENSIONS preserved\n✓ custom-* MCP entries preserved\n✓ *-custom skills preserved\n✓ user-profile, pillars, and .env presence preserved\n\nValidation:\n✓ MCP config valid\n✓ Smoke checks passed\n✓ Summary written to System\u002Fupdate-summary.md\n\n[View full changelog]\n[Start using new features]\n```\n\n**If new automations were enabled:**\n```\n🤖 New automations enabled:\n✓ Automatic meeting sync (runs every 30 min)\n```\n\n**If there were conflicts:**\n```\n🔍 Changes applied:\n• Updated 12 core files\n• Kept 5 of your customized files\n• Protected all your data folders\n\n[See detailed change list]\n```\n\n---\n\n### Step 9b: Check New Integrations (After Success)\n\nAfter successful update, check if new integration features are available:\n\n```python\nfrom core.integrations import get_post_update_integration_message, should_show_integration_prompt\n\nif should_show_integration_prompt():\n    msg = get_post_update_integration_message()\n    if msg:\n        print(msg)\n```\n\n**If integrations are available but not configured:**\n```\n---\n\n## 🔌 New: Productivity Integrations\n\nThis update includes integrations for your favorite tools:\n\n- **Notion** — Search your workspace, pull docs into meeting prep\n- **Slack** — Search conversations, get context about people\n- **Google** — Gmail search, email context in person pages\n\n**Set up now?** These are optional but unlock powerful features like:\n- \"What did Sarah say about the Q1 budget?\" → Searches Slack\n- Meeting prep pulls relevant docs from Notion\n- Person pages show email\u002FSlack history\n\nRun `\u002Fintegrate-notion`, `\u002Fintegrate-slack`, or `\u002Fintegrate-google` to set up.\n```\n\n**If user has integrations that could be upgraded:**\n```\n---\n\n## 🔄 Integration Upgrade Available\n\nYou have some integrations that could be upgraded to Amp recommended packages:\n\n### Notion\n- **Current:** custom-notion-mcp\n- **Recommended:** @notionhq\u002Fnotion-mcp-server\n- **Benefits:** Official from Notion, Best maintained, Full API coverage\n\n**Options:**\n1. **Keep existing** — Your current setup works fine\n2. **Upgrade** — Run `\u002Fintegrate-notion` to switch to recommended\n```\n\n---\n\n### Step 10: Track Usage (Silent)\n\nUpdate `System\u002Fusage_log.md` to mark Amp update as used.\n\n**Analytics (Silent):**\n\nCall `track_event` with event_name `amp_update_completed` and properties:\n- `from_version`\n- `to_version`\n\nThis only fires if the user has opted into analytics. No action needed if it returns \"analytics_disabled\".\n\n**Clear update notification:**\n\nCall `dismiss_update()` from the Update Checker MCP to remove the `System\u002F.update-available` file. This stops the daily update reminder from appearing in future sessions.\n\n---\n\n## Error Recovery\n\n### If Update Fails at Any Point\n\nUser always has escape hatch:\n\n```\n🔙 Restoring to before update...\n```\n\nRun:\n```bash\ngit merge --abort 2>\u002Fdev\u002Fnull || true\ngit reset --hard backup-before-v1.3.0\ngit clean -fd\n```\n\n```\n✓ Restored to v1.2.0\n\nNothing was changed. Your Amp is exactly as it was.\n\n[Try update again]\n[Report issue]\n[Cancel]\n```\n\n---\n\n## Migration Support (for Breaking Changes)\n\n### Auto-Migration Flag\n\nIf migration script supports `--auto` flag, run non-interactively:\n\n```bash\n.\u002Fcore\u002Fmigrations\u002Fv1-to-v2.sh --auto\n```\n\n**Migration script must:**\n- Accept `--auto` flag\n- Skip confirmation prompts\n- Return exit code 0 on success\n- Log to `System\u002F.migration-log`\n\n### Manual Migration Required\n\nIf script doesn't support `--auto`:\n\n```\n⚠️ Manual step required\n\nThis update needs you to run a migration script.\n\nDon't worry - it's one command and takes 30 seconds.\n\n**In Cursor's terminal (bottom panel), run:**\n\n.\u002Fcore\u002Fmigrations\u002Fv1-to-v2.sh\n\n**Then come back here when it's done.**\n\n[I've run the migration — continue]\n[Show me what the migration does]\n[Cancel update]\n```\n\n---\n\n## Alternative: ZIP Download Path\n\nFor users who can't\u002Fwon't use Git, provide manual instructions:\n\n```\n📥 Manual Update Method\n\nIf automatic updates don't work, you can update manually:\n\n1. **Download latest Amp:**\n   https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Farchive\u002Frefs\u002Fheads\u002Fmain.zip\n\n2. **Copy your data and custom blocks:**\n   From OLD Amp folder, copy these to NEW Amp folder:\n   \n   ✓ System\u002Fuser-profile.yaml\n   ✓ System\u002Fpillars.yaml\n   ✓ 00-Inbox\u002F (entire folder)\n   ✓ 01-Quarter_Goals\u002F (entire folder)\n   ✓ 02-Week_Priorities\u002F (entire folder)\n   ✓ 03-Tasks\u002F (entire folder)\n   ✓ 04-Projects\u002F (entire folder)\n   ✓ 05-Areas\u002F (entire folder)\n   ✓ 07-Archives\u002F (entire folder)\n   ✓ .env (if it exists)\n   ✓ Your `USER_EXTENSIONS` block from `CLAUDE.md`\n   ✓ Any custom MCP entries named `custom-*` from `.mcp.json`\n   ✓ Any custom skills ending with `-custom`\n\n3. **DON'T copy:**\n   ✗ .claude\u002Fskills\u002F (use new version)\n   ✗ core\u002Fmcp\u002F (use new version)\n   ✗ README.md (use new version)\n\n4. **Open new folder in Cursor**\n\n5. **Run \u002Fsetup to verify**\n\n[Download now]\n[Copy step-by-step instructions to clipboard]\n```\n\n---\n\n## Related Commands\n\n- `\u002Famp-update-preflight` — Pre-update checks, compatibility verification, dependency scanning\n- `\u002Famp-whats-new` — Check what's new without updating\n- `\u002Famp-rollback` — Undo last update (if something went wrong)\n\n---\n\n## Philosophy\n\n**Automatic where possible:**\n- Git commands run silently\n- Conflicts resolved automatically\n- Dependencies updated automatically\n- Migrations run automatically (when safe)\n\n**Interactive where necessary:**\n- Breaking changes: confirm understanding\n- Manual migration: clear instructions\n- Errors: always offer restoration\n\n**Safe always:**\n- Backup created before any changes\n- User data never at risk (gitignored)\n- One-command rollback if issues\n- Clear status at every step\n\n**No jargon:**\n- Don't say \"merge conflict\" - say \"overlapping changes\"\n- Don't say \"upstream\" - say \"main Amp repository\"\n- Don't say \"git fetch\" - say \"downloading updates\"\n- Don't say \"rebase\" - just don't use rebase\n",{"name":5,"description":7},"main","6a447b9ff35eed7bda9e12399bcd373dd31e0a53",".claude\u002Fskills\u002Famp-update","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp","https:\u002F\u002Fgithub.com\u002Fhemory","https:\u002F\u002Fwww.heminthehat.com\u002F","The People Developer | L&D Program Manager | Software Engineer","2026-06-09 00:20:04",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add hemory\u002Famp --skill amp-update",{"tool":38,"command":39},"bunx","bunx skills add hemory\u002Famp --skill amp-update",{"tool":41,"command":42},"pnpm","pnpm dlx skills add hemory\u002Famp --skill amp-update","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Famp-update\u002FSKILL.md",true,[],[47,54,61,68,75,82],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M76W5GGTP0YHZQQJ4G2ZPSZE","zoom-setup","Connect Zoom to Amp for meeting recordings, scheduling, and transcript context","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fzoom-setup\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M76W5CWR8MABE0XPZVRXFMDK","xray","Understand what just happened under the hood - learn AI by seeing it in action","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fxray\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M76W582J6PD3TTXZXFA2HVQJ","week-review","Review week's progress with concrete accomplishments (not fake percentages), pattern detection, and goal tracking.","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fweek-review\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M76W54EY8D8Y55DEPYPJ9YBV","week-plan","Set weekly priorities and plan the week ahead with intelligent suggestions based on goals, calendar shape, and task effort.","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fweek-plan\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M76W527EJ43YXBN0CE9SRAYT","triage","Strategically route orphaned files and extract scattered tasks","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftriage\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M76W4ZYRDVHZ3SS8W5WZ53Q8","trello-setup","Connect Trello to Amp for visual Kanban task sync","https:\u002F\u002Fgithub.com\u002Fhemory\u002Famp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftrello-setup\u002FSKILL.md",[],[]]