{
  "id": "memory-tidy",
  "slug": "memory-tidy",
  "name": "Memory Tidy",
  "tagline": "Remember less, remember it right.",
  "description": "A weekly clean-up of a bot's memory: merges duplicates, settles conflicts, retires stale one-offs and flags anything sensitive.",
  "category": "For bots",
  "platforms": [
    "Grok Bot",
    "Muse",
    "Dots"
  ],
  "schedule": "Weekly, Sunday 8:00 PM",
  "outputType": "report",
  "previewImage": "previews/memory-tidy.png",
  "installSteps": {
    "grokBot": {
      "label": "Grok Bot",
      "status": "verified",
      "steps": [
        "Copy skills/memory-tidy/SKILL.md (the whole file, including the --- header).",
        "Open a one-to-one chat with your Grok Bot and paste the prompt below, with the file where it says.",
        "Try it once now: \"Run Memory Tidy.\"",
        "The routine shows in the Bot's info pane (click the Bot's name in the chat header) under Routines, where you can pause or edit it."
      ],
      "prompt": "Save the following as a skill called \"Memory Tidy\". Then create a routine called \"Weekly memory tidy\" that runs it every Sunday at 8:00 PM and posts the result here. Before the first run, ask me the setup questions in the skill and remember my answers.\n\n<paste SKILL.md here>",
      "note": "Skills and routines are saved by asking the Bot; no settings to dig through.",
      "promptFull": "Save the following as a skill called \"Memory Tidy\". Then create a routine called \"Weekly memory tidy\" that runs it every Sunday at 8:00 PM and posts the result here. Before the first run, ask me the setup questions in the skill and remember my answers.\n\n---\nname: memory-tidy\ndescription: Use weekly, or when an assistant's saved memory or notes feel cluttered, contradictory, or out of date. Reviews every saved fact, merges duplicates, resolves conflicts (newer wins, or asks), drops stale one-offs, flags anything sensitive that shouldn't be stored, and reports the changes in a short list for the person to confirm.\nmetadata:\n  id: memory-tidy\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Memory Tidy\n\n## What it does\n\nA weekly clean-up of everything a bot has saved about its person. Duplicates get merged, contradictions get settled, expired one-off facts get retired, and anything that should never have been stored (passwords, codes, card numbers) gets flagged for removal. The bot remembers less, but what it remembers is right.\n\n## When to use\n\n- On a weekly schedule, or when the bot notices it gave two different answers to the same question.\n- After a big change for the person (a move, a new job, a new program).\n\n## Requires\n\nAccess to the bot's own memory or notes, with the ability to edit or forget entries.\n\n## Schedule\n\nDefault: Sundays at 8:00 PM.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `auto_apply` | merges only | Merges are applied on their own. Deletions and conflict fixes wait for the person's OK. |\n| `stale_after` | 90 days | For one-off facts that haven't been used. |\n| `report` | only if changes | Stay silent when nothing changed. |\n\n## Steps\n\n1. **List** every saved fact with its date and scope.\n2. **Merge duplicates** that say the same thing. Keep the clearest wording and the newest date.\n3. **Find conflicts:** two facts in the same scope that disagree. Propose that the newer one wins, and ask if they're close in date.\n4. **Retire stale one-offs** that are past `stale_after` and tied to finished tasks.\n5. **Flag sensitive entries** (secrets, ID numbers, health or legal details stored without a reason) for removal.\n6. **Report** the proposed changes in one short list and apply them after the OK.\n\n## Output format\n\n```markdown\n**Memory tidy \u00b7 {date}:** 3 merged \u00b7 1 conflict \u00b7 2 retired \u00b7 0 flagged\n- Conflict: portfolio link \"example.com/work\" (Oct 30) vs \"example.com/old\" (Oct 12). Keep the newer link?\n- Retired: \"Pay figure for Acme application\" (one-off, done)\n```\n\n## Edge cases\n\n- **Shared memory across several bots:** fix only your own entries, and tell the owner of any other entry that's wrong.\n- **The person disagrees with a merge:** restore both entries and add the difference to their scopes.\n\n## Boundaries\n\n- Never delete without approval, except exact duplicates.\n- Never move secrets anywhere. Flag them for deletion only."
    },
    "muse": {
      "label": "Muse",
      "status": "partially-verified",
      "steps": [
        "Copy skills/memory-tidy/SKILL.md.",
        "Open Muse and paste the prompt below with the file where it says.",
        "Try it: \"Run Memory Tidy.\" Muse has no skill install for outside skills, so it follows the pasted instructions.",
        "Ask Muse to make it a recurring task every Sunday at 8:00 PM. It then shows under the Assistant icon > Upcoming.",
        "Muse Code (developer CLI): unzip downloads/memory-tidy.zip, run `muse skills validate ./memory-tidy` then `muse skills install ./memory-tidy --scope user`. Optional: add the BotPlaza connector (https://botplaza.lol/api/mcp) under mcpServers in ~/.config/muse/settings.json."
      ],
      "sourceUrl": "https://www.meta.com/help/superintelligence/1484325780075655/",
      "note": "Recurring tasks and Muse Code skill install are documented by Meta. Installing outside skills in the Muse app is not.",
      "prompt": "Here are instructions for a task called \"Memory Tidy\". Follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>\n\nIf you can save this as a skill, please do.",
      "promptFull": "Here are instructions for a task called \"Memory Tidy\". Follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n---\nname: memory-tidy\ndescription: Use weekly, or when an assistant's saved memory or notes feel cluttered, contradictory, or out of date. Reviews every saved fact, merges duplicates, resolves conflicts (newer wins, or asks), drops stale one-offs, flags anything sensitive that shouldn't be stored, and reports the changes in a short list for the person to confirm.\nmetadata:\n  id: memory-tidy\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Memory Tidy\n\n## What it does\n\nA weekly clean-up of everything a bot has saved about its person. Duplicates get merged, contradictions get settled, expired one-off facts get retired, and anything that should never have been stored (passwords, codes, card numbers) gets flagged for removal. The bot remembers less, but what it remembers is right.\n\n## When to use\n\n- On a weekly schedule, or when the bot notices it gave two different answers to the same question.\n- After a big change for the person (a move, a new job, a new program).\n\n## Requires\n\nAccess to the bot's own memory or notes, with the ability to edit or forget entries.\n\n## Schedule\n\nDefault: Sundays at 8:00 PM.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `auto_apply` | merges only | Merges are applied on their own. Deletions and conflict fixes wait for the person's OK. |\n| `stale_after` | 90 days | For one-off facts that haven't been used. |\n| `report` | only if changes | Stay silent when nothing changed. |\n\n## Steps\n\n1. **List** every saved fact with its date and scope.\n2. **Merge duplicates** that say the same thing. Keep the clearest wording and the newest date.\n3. **Find conflicts:** two facts in the same scope that disagree. Propose that the newer one wins, and ask if they're close in date.\n4. **Retire stale one-offs** that are past `stale_after` and tied to finished tasks.\n5. **Flag sensitive entries** (secrets, ID numbers, health or legal details stored without a reason) for removal.\n6. **Report** the proposed changes in one short list and apply them after the OK.\n\n## Output format\n\n```markdown\n**Memory tidy \u00b7 {date}:** 3 merged \u00b7 1 conflict \u00b7 2 retired \u00b7 0 flagged\n- Conflict: portfolio link \"example.com/work\" (Oct 30) vs \"example.com/old\" (Oct 12). Keep the newer link?\n- Retired: \"Pay figure for Acme application\" (one-off, done)\n```\n\n## Edge cases\n\n- **Shared memory across several bots:** fix only your own entries, and tell the owner of any other entry that's wrong.\n- **The person disagrees with a merge:** restore both entries and add the difference to their scopes.\n\n## Boundaries\n\n- Never delete without approval, except exact duplicates.\n- Never move secrets anywhere. Flag them for deletion only.\n\nIf you can save this as a skill, please do."
    },
    "dots": {
      "label": "Dots",
      "status": "partially-verified",
      "steps": [
        "Copy skills/memory-tidy/SKILL.md.",
        "Paste the prompt below into your dot's conversation in ChatGPT, with the file where it says.",
        "Wait for the dot to confirm the schedule, time zone and end date.",
        "Optional: in ChatGPT, Plugins > + > Add custom MCP server with https://botplaza.lol/api/mcp (no authentication). Dots can use installed plugins, but OpenAI hasn't said whether that includes custom ones.",
        "Business, Enterprise, Healthcare and Edu workspaces can also upload downloads/memory-tidy.zip under Plugins > Skills > Create > Upload from your computer."
      ],
      "sourceUrl": "https://learn.chatgpt.com/docs/dots",
      "note": "Dots are available on ChatGPT Pro, Business Premium and Enterprise, and are still rolling out. Pasting instructions in and scheduled check-ins are documented.",
      "prompt": "Here are instructions for a task called \"Memory Tidy\". Take this on as an ongoing responsibility and follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>\n\nCheck in every Sunday at 8:00 PM Eastern time for the next 3 months, and confirm the schedule back to me.",
      "promptFull": "Here are instructions for a task called \"Memory Tidy\". Take this on as an ongoing responsibility and follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n---\nname: memory-tidy\ndescription: Use weekly, or when an assistant's saved memory or notes feel cluttered, contradictory, or out of date. Reviews every saved fact, merges duplicates, resolves conflicts (newer wins, or asks), drops stale one-offs, flags anything sensitive that shouldn't be stored, and reports the changes in a short list for the person to confirm.\nmetadata:\n  id: memory-tidy\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Memory Tidy\n\n## What it does\n\nA weekly clean-up of everything a bot has saved about its person. Duplicates get merged, contradictions get settled, expired one-off facts get retired, and anything that should never have been stored (passwords, codes, card numbers) gets flagged for removal. The bot remembers less, but what it remembers is right.\n\n## When to use\n\n- On a weekly schedule, or when the bot notices it gave two different answers to the same question.\n- After a big change for the person (a move, a new job, a new program).\n\n## Requires\n\nAccess to the bot's own memory or notes, with the ability to edit or forget entries.\n\n## Schedule\n\nDefault: Sundays at 8:00 PM.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `auto_apply` | merges only | Merges are applied on their own. Deletions and conflict fixes wait for the person's OK. |\n| `stale_after` | 90 days | For one-off facts that haven't been used. |\n| `report` | only if changes | Stay silent when nothing changed. |\n\n## Steps\n\n1. **List** every saved fact with its date and scope.\n2. **Merge duplicates** that say the same thing. Keep the clearest wording and the newest date.\n3. **Find conflicts:** two facts in the same scope that disagree. Propose that the newer one wins, and ask if they're close in date.\n4. **Retire stale one-offs** that are past `stale_after` and tied to finished tasks.\n5. **Flag sensitive entries** (secrets, ID numbers, health or legal details stored without a reason) for removal.\n6. **Report** the proposed changes in one short list and apply them after the OK.\n\n## Output format\n\n```markdown\n**Memory tidy \u00b7 {date}:** 3 merged \u00b7 1 conflict \u00b7 2 retired \u00b7 0 flagged\n- Conflict: portfolio link \"example.com/work\" (Oct 30) vs \"example.com/old\" (Oct 12). Keep the newer link?\n- Retired: \"Pay figure for Acme application\" (one-off, done)\n```\n\n## Edge cases\n\n- **Shared memory across several bots:** fix only your own entries, and tell the owner of any other entry that's wrong.\n- **The person disagrees with a merge:** restore both entries and add the difference to their scopes.\n\n## Boundaries\n\n- Never delete without approval, except exact duplicates.\n- Never move secrets anywhere. Flag them for deletion only.\n\nCheck in every Sunday at 8:00 PM Eastern time for the next 3 months, and confirm the schedule back to me."
    },
    "chatgpt": {
      "label": "ChatGPT",
      "status": "unverified",
      "verified": false,
      "steps": [
        "Download https://botplaza.lol/downloads/memory-tidy.zip (don't unzip).",
        "ChatGPT sidebar \u2192 Plugins \u2192 Skills tab \u2192 Create \u2192 Upload from your computer.",
        "Wait for the scan; if it says Needs Review, read it and approve.",
        "Use it with @memory-tidy or just ask.",
        "Ask ChatGPT to set a scheduled task that runs @memory-tidy at this cadence: every Sunday at 8:00 PM. Set the time in your own time zone."
      ],
      "sourceUrl": "https://help.openai.com/en/articles/20001066-skills-in-chatgpt",
      "note": "Business, Enterprise, Edu and Healthcare plans only. Other plans fall back to pasting the prompt.",
      "prompt": "Here are instructions for a task called \"Memory Tidy\". Follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>",
      "promptFull": "Here are instructions for a task called \"Memory Tidy\". Follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n---\nname: memory-tidy\ndescription: Use weekly, or when an assistant's saved memory or notes feel cluttered, contradictory, or out of date. Reviews every saved fact, merges duplicates, resolves conflicts (newer wins, or asks), drops stale one-offs, flags anything sensitive that shouldn't be stored, and reports the changes in a short list for the person to confirm.\nmetadata:\n  id: memory-tidy\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Memory Tidy\n\n## What it does\n\nA weekly clean-up of everything a bot has saved about its person. Duplicates get merged, contradictions get settled, expired one-off facts get retired, and anything that should never have been stored (passwords, codes, card numbers) gets flagged for removal. The bot remembers less, but what it remembers is right.\n\n## When to use\n\n- On a weekly schedule, or when the bot notices it gave two different answers to the same question.\n- After a big change for the person (a move, a new job, a new program).\n\n## Requires\n\nAccess to the bot's own memory or notes, with the ability to edit or forget entries.\n\n## Schedule\n\nDefault: Sundays at 8:00 PM.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `auto_apply` | merges only | Merges are applied on their own. Deletions and conflict fixes wait for the person's OK. |\n| `stale_after` | 90 days | For one-off facts that haven't been used. |\n| `report` | only if changes | Stay silent when nothing changed. |\n\n## Steps\n\n1. **List** every saved fact with its date and scope.\n2. **Merge duplicates** that say the same thing. Keep the clearest wording and the newest date.\n3. **Find conflicts:** two facts in the same scope that disagree. Propose that the newer one wins, and ask if they're close in date.\n4. **Retire stale one-offs** that are past `stale_after` and tied to finished tasks.\n5. **Flag sensitive entries** (secrets, ID numbers, health or legal details stored without a reason) for removal.\n6. **Report** the proposed changes in one short list and apply them after the OK.\n\n## Output format\n\n```markdown\n**Memory tidy \u00b7 {date}:** 3 merged \u00b7 1 conflict \u00b7 2 retired \u00b7 0 flagged\n- Conflict: portfolio link \"example.com/work\" (Oct 30) vs \"example.com/old\" (Oct 12). Keep the newer link?\n- Retired: \"Pay figure for Acme application\" (one-off, done)\n```\n\n## Edge cases\n\n- **Shared memory across several bots:** fix only your own entries, and tell the owner of any other entry that's wrong.\n- **The person disagrees with a merge:** restore both entries and add the difference to their scopes.\n\n## Boundaries\n\n- Never delete without approval, except exact duplicates.\n- Never move secrets anywhere. Flag them for deletion only."
    },
    "gemini": {
      "label": "Gemini",
      "status": "unverified",
      "verified": false,
      "steps": [
        "gemini.google.com \u2192 Customize \u2192 Skills \u2192 Create \u2192 Upload \u2192 pick the SKILL.md at https://botplaza.lol/skills/memory-tidy.md (or https://botplaza.lol/downloads/memory-tidy.zip).",
        "Review, then Create.",
        "Use it with /memory-tidy."
      ],
      "sourceUrl": "https://support.google.com/gemini/answer/17094296",
      "note": "Personal accounts 18+. Workspace users must recreate the skill in Workspace Studio.",
      "prompt": "Here are instructions for a task called \"Memory Tidy\". Follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>",
      "promptFull": "Here are instructions for a task called \"Memory Tidy\". Follow them whenever I say \"Run Memory Tidy\". Ask me the setup questions first and remember my answers.\n\n---\nname: memory-tidy\ndescription: Use weekly, or when an assistant's saved memory or notes feel cluttered, contradictory, or out of date. Reviews every saved fact, merges duplicates, resolves conflicts (newer wins, or asks), drops stale one-offs, flags anything sensitive that shouldn't be stored, and reports the changes in a short list for the person to confirm.\nmetadata:\n  id: memory-tidy\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Memory Tidy\n\n## What it does\n\nA weekly clean-up of everything a bot has saved about its person. Duplicates get merged, contradictions get settled, expired one-off facts get retired, and anything that should never have been stored (passwords, codes, card numbers) gets flagged for removal. The bot remembers less, but what it remembers is right.\n\n## When to use\n\n- On a weekly schedule, or when the bot notices it gave two different answers to the same question.\n- After a big change for the person (a move, a new job, a new program).\n\n## Requires\n\nAccess to the bot's own memory or notes, with the ability to edit or forget entries.\n\n## Schedule\n\nDefault: Sundays at 8:00 PM.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `auto_apply` | merges only | Merges are applied on their own. Deletions and conflict fixes wait for the person's OK. |\n| `stale_after` | 90 days | For one-off facts that haven't been used. |\n| `report` | only if changes | Stay silent when nothing changed. |\n\n## Steps\n\n1. **List** every saved fact with its date and scope.\n2. **Merge duplicates** that say the same thing. Keep the clearest wording and the newest date.\n3. **Find conflicts:** two facts in the same scope that disagree. Propose that the newer one wins, and ask if they're close in date.\n4. **Retire stale one-offs** that are past `stale_after` and tied to finished tasks.\n5. **Flag sensitive entries** (secrets, ID numbers, health or legal details stored without a reason) for removal.\n6. **Report** the proposed changes in one short list and apply them after the OK.\n\n## Output format\n\n```markdown\n**Memory tidy \u00b7 {date}:** 3 merged \u00b7 1 conflict \u00b7 2 retired \u00b7 0 flagged\n- Conflict: portfolio link \"example.com/work\" (Oct 30) vs \"example.com/old\" (Oct 12). Keep the newer link?\n- Retired: \"Pay figure for Acme application\" (one-off, done)\n```\n\n## Edge cases\n\n- **Shared memory across several bots:** fix only your own entries, and tell the owner of any other entry that's wrong.\n- **The person disagrees with a merge:** restore both entries and add the difference to their scopes.\n\n## Boundaries\n\n- Never delete without approval, except exact duplicates.\n- Never move secrets anywhere. Flag them for deletion only."
    },
    "cli": {
      "label": "Skills CLI",
      "status": "verified",
      "steps": [
        "All agents: `npx skills add https://botplaza.lol --skill memory-tidy` (add `-a claude-code`, `-a codex`, or `-a cursor` to choose one).",
        "Claude Code marketplace: `/plugin marketplace add https://botplaza.lol/.claude-plugin/marketplace.json` then `/plugin install memory-tidy@botplaza`.",
        "Fallback, Claude Code: `curl -fsSL https://botplaza.lol/downloads/memory-tidy.zip -o s.zip && unzip s.zip -d ~/.claude/skills/`.",
        "Fallback, Codex and other .agents readers: `curl -fsSL https://botplaza.lol/downloads/memory-tidy.zip -o s.zip && unzip s.zip -d ~/.agents/skills/`.",
        "Fallback, Cursor project: `curl -fsSL https://botplaza.lol/downloads/memory-tidy.zip -o s.zip && unzip s.zip -d .cursor/skills/`."
      ],
      "sourceUrl": "https://www.skills.sh/docs",
      "note": "The skills CLI reads /.well-known/agent-skills/index.json and installs each SKILL.md. The zip fallback uses the existing downloads/<slug>.zip folder layout.",
      "prompt": "npx skills add https://botplaza.lol --skill memory-tidy",
      "promptFull": "npx skills add https://botplaza.lol --skill memory-tidy"
    }
  },
  "author": "BotPlaza",
  "tags": [
    "memory",
    "maintenance",
    "weekly",
    "privacy"
  ],
  "featured": false,
  "longDescription": "Memory Tidy reviews every saved fact once a week. Duplicates get merged, contradictions get settled (the newer one wins, or the person decides), and expired one-offs get retired. Anything that should never have been stored is flagged for deletion. Deletions always wait for the person's OK.",
  "customization": [
    {
      "key": "autoApply",
      "label": "Auto-apply",
      "type": "select",
      "question": "What can it change without asking?",
      "default": "Exact duplicates only",
      "options": [
        "Exact duplicates only",
        "Nothing"
      ]
    },
    {
      "key": "staleAfter",
      "label": "Stale after",
      "type": "select",
      "question": "When is an unused one-off fact stale?",
      "default": "90 days",
      "options": [
        "30 days",
        "90 days",
        "1 year"
      ]
    }
  ],
  "whatYouGet": [
    "Merged duplicates",
    "Conflicts settled with your OK",
    "Stale facts retired",
    "Sensitive entries flagged"
  ],
  "dataSources": [
    {
      "name": "Assistant memory",
      "required": true
    }
  ],
  "setupTime": "1 minute",
  "sampleOutput": "samples/memory-tidy.md",
  "skillFile": "skills/memory-tidy/SKILL.md",
  "version": "1.0.0",
  "license": "",
  "previewAlt": "A weekly memory report showing merged, conflicting, retired and flagged facts with approve buttons.",
  "writesOrSends": "Edits memory only after your OK, except exact duplicates.",
  "audience": "bots",
  "setup": [
    {
      "key": "autoApply",
      "question": "What can it change without asking?",
      "type": "select",
      "default": "Exact duplicates only",
      "options": [
        "Exact duplicates only",
        "Nothing"
      ]
    },
    {
      "key": "staleAfter",
      "question": "When is an unused one-off fact stale?",
      "type": "select",
      "default": "90 days",
      "options": [
        "30 days",
        "90 days",
        "1 year"
      ]
    }
  ],
  "safety": {
    "dataAccess": [
      "The bot's own saved memory and notes"
    ],
    "writesOrSends": "Edits memory only after your OK, except exact duplicates.",
    "estCost": "Low: ~4 runs a month.",
    "costLevel": "light",
    "warnings": [
      "It edits memory only after your OK, except removing exact duplicates.",
      "It flags sensitive facts that shouldn't be stored instead of keeping them."
    ]
  },
  "checked": {
    "instructionOnly": true,
    "scripts": false,
    "runtimeFetch": false,
    "sha256": "ed340d8d1fae45a90eee4e5244087aaa145598d7a951e52bfb533f65647b3e2d",
    "checkedOn": "2026-10-31"
  },
  "urls": {
    "page": "https://botplaza.lol/skills/memory-tidy/",
    "markdown": "https://botplaza.lol/skills/memory-tidy.md",
    "skillMd": "https://botplaza.lol/skills/memory-tidy/SKILL.md",
    "json": "https://botplaza.lol/skills/memory-tidy.json",
    "zip": "https://botplaza.lol/downloads/memory-tidy.zip",
    "mcp": "https://botplaza.lol/api/mcp"
  }
}