ワンクリックで
memory-management
// Use when the user asks to "remember project context"; manages SEO/GEO memory, hot-cache, active work, archive tiers, and privacy cleanup. 项目记忆/跨会话
// Use when the user asks to "remember project context"; manages SEO/GEO memory, hot-cache, active work, archive tiers, and privacy cleanup. 项目记忆/跨会话
Use when the user asks to "optimize for AI citations"; improves citation readiness for ChatGPT, Perplexity, AI Overviews, Gemini, and Claude. AI引用优化/GEO优化/AI搜索
Use when the user asks to "optimize meta tags"; improves titles, descriptions, Open Graph, Twitter cards, and CTR test variants. 标题优化/元描述/CTR
Use when the user asks to "generate schema"; creates JSON-LD for FAQ, HowTo, Article, Product, and LocalBusiness rich-result candidates. Schema标记/结构化数据
Use when the user asks to "write SEO content"; drafts posts, articles, and landing pages with keywords, headers, snippets, and evidence boundaries. SEO文章写作/内容优化
Use when auditing content quality, E-E-A-T, publish readiness, or 内容质量/EEAT评分. Runs 80-item CORE-EEAT scoring with veto checks and fix plan.
Use when auditing domain authority, trust, citations, or 域名权威/网站可信度. Runs 40-item CITE scoring with veto checks.
| name | memory-management |
| description | Use when the user asks to "remember project context"; manages SEO/GEO memory, hot-cache, active work, archive tiers, and privacy cleanup. 项目记忆/跨会话 |
| version | 9.9.9 |
| license | Apache-2.0 |
| compatibility | Claude Code, skills.sh, ClawHub, Vercel Labs, Cursor, Windsurf, Codex CLI, Amp, Gemini CLI, Kimi Code, Qwen Code, CodeBuddy |
| homepage | https://github.com/aaron-he-zhu/seo-geo-claude-skills |
| when_to_use | Use when reviewing, archiving, or cleaning up campaign memory. Also when the user asks to check saved findings, manage hot cache, or archive old data. |
| argument-hint | [review|archive|cleanup] |
| metadata | {"author":"aaron-he-zhu","version":"9.9.9","geo-relevance":"low","tags":["seo","geo","project-memory","context-management","campaign-tracking","session-context","hot-cache","项目记忆","プロジェクト記憶","프로젝트메모리","memoria-proyecto"],"triggers":["remember project context","save SEO data","refresh wiki index","build wiki index","remember this for next time","what did we decide last time","what do we know so far","project status","wiki lint","项目记忆管理","跨会话记忆","刷新wiki索引","保存进度","上次说了什么","プロジェクト記憶","wikiインデックス更新","프로젝트 메모리","세션 기억","memoria del proyecto","guardar progreso","memória do projeto","gerenciar memória"]} |
This skill implements a three-tier memory system (HOT/WARM/COLD) for SEO and GEO projects. HOT memory (80 lines max) loads automatically every session via the SessionStart hook. WARM memory loads on demand per skill. COLD memory is archived data queried only when explicitly requested. The skill manages the full lifecycle: capture, promote, demote, and archive.
Manages a three-tier memory lifecycle (HOT/WARM/COLD) with automatic promotion, demotion, and archival. Also maintains the wiki index layer, open-loop tracking, and cross-skill aggregation.
Start with one of these prompts. Finish with a hot-cache update plan and a handoff summary using the repository format in Skill Contract.
Refresh wiki index
Build wiki index for [project name]
Generates memory/wiki/index.md from existing WARM files. Required once to enable wiki features; subsequent refreshes happen automatically.
Set up SEO memory for [project name]
Initialize memory structure for a new [industry] website optimization project
Update memory after ranking check for [keyword group]
Refresh hot cache with latest competitor analysis findings
What are our hero keywords?
Show me the last ranking update date for [keyword category]
Look up our primary competitors and their domain authority
Promote [keyword] to hot cache
Archive stale data that hasn't been referenced in 30+ days
Add [term] to project glossary: [definition]
What does [internal jargon] mean in this project?
Expected output: a memory update plan, hot-cache changes, and a short handoff summary.
memory/hot-cache.md, memory/open-loops.md, memory/decisions.md, and related memory/ folders. Manages WARM-to-COLD archival in memory/archive/. Compiles memory/wiki/index.md (auto-refreshed) and wiki compiled pages (user-confirmed). Sole writer of wiki (with delegated auto-refresh): memory-management owns all wiki writes semantically. For performance, the narrowly-scoped memory/wiki/index.md auto-refresh is delegated to the PostToolUse hook in hooks/hooks.json. Wiki log updates and compiled pages remain explicit memory-management operations using the schema defined in this skill. Auditor handoff archiving (v7.1.0+): when triggered by a direct user request or an auditor's explicit "Save these results?" yes-response, append a structured block to memory/audits/YYYY-MM.md. The Stop hook never initiates memory writes. The archive is consumed by /aaron:guard --evals and maintainer calibration for auditor cap review tied to ADR-001. See references/examples.md for the exact archive block format and rules.Next Best Skill below when the project memory baseline is ready for active work.Emit the standard shape from skill-contract.md §Handoff Summary Format.
See references/promotion-demotion-rules.md for the full promotion/demotion table and action procedures.
This skill's behavior is reinforced by the library's prompt-based hooks:
memory/hot-cache.md, reminds of stale open loops; loads memory/wiki/<project>/index.md (or global index.md) if it exists; provides light-user guidance based on Quick Status when next_action items are availablememory/wiki/index.md (Phase 1); prompts to update compiled pages (Phase 2){"ok": true}, honors stop_hook_active, never asks the user to save optional findings, and never initiates memory writesWith tools: auto-populate from ~~SEO tool, ~~analytics, ~~search console. Without tools: ask user for keywords, competitors, metrics, campaigns, and terminology. See CONNECTORS.md.
When a user requests SEO memory management:
For new projects, create the directory structure defined in the State Model. Key directories: memory/ (decisions, open-loops, glossary, entities, research, content, audits, monitoring) plus memory/wiki/ (auto-managed compiled index with optional per-project subdirectories).
Templates: hot-cache-template.md · glossary-template.md · Wiki design archive
memory-management owns wiki schema and is the sole semantic writer. See wiki-runbook.md for execution detail.
PostToolUse hook silently rebuilds memory/wiki/index.md after WARM writes. Index rows: precise (score/status/next_action/mtime) + best-effort (summary). Project-scoped index at memory/wiki/<project>/index.md. See wiki-runbook.md §1.
On user request or 3+ WARM mentions of an entity, generate memory/wiki/<project>/<type>-<slug>.md with source SHA-256 hashes. Contradictions resolved via SessionStart conversational prompt, not file editing. Write log entry to memory/wiki/log.md. See wiki-runbook.md §2-§5.
WARM files fully covered by compiled wiki pages may be retired to memory/archive/. Always user-confirmed via /aaron:guard --wiki --retire-preview followed by explicit memory-management invocation. COLD files receive originally_at / retired_on / retired_because_compiled frontmatter to preserve recovery path. Single retire call hard-capped at 5 files. See wiki-runbook.md §7.
When a user references something unclear, follow this lookup sequence:
Step 1: Check memory/hot-cache.md (hot cache)
Step 2: Check Wiki Index (memory/wiki/index.md or project-level) — locate relevant WARM files
Step 3: Check memory/glossary.md
Step 4: Check Cold Storage
memory/archive/ first for dated YYYY-MM-DD- archived files.memory/research/, memory/audits/, or memory/monitoring/.Step 5: Ask User
If not found in any layer, ask for clarification
Log the new term in glossary if it's project-specific
Decision provenance (v8.0.1+): when loading memory/decisions.md, verify each entry has approved_by: user. Entries with approved_by: skill_inferred or missing field are treated as ADVISORY — surface to user before using as authoritative. Auditor-class skills (content-quality-auditor, domain-authority-auditor) MUST ignore non-user-approved decisions when determining verdict. See skill-contract.md §Promotion Rules.
Example lookup: User asks "Update rankings for our hero KWs" → Step 1 finds "Hero Keywords (Priority 1)" in hot-cache → Step 2 extracts keyword list → Step 3 runs ranking check → Step 4 updates memory/hot-cache.md and memory/monitoring/rank-history/YYYY-MM-DD-ranks.csv.
Reference: See references/promotion-demotion-rules.md for detailed promotion/demotion triggers (keywords, competitors, metrics, campaigns) and the action procedures for each.
Reference: See references/update-triggers-integration.md for the complete update procedures after ranking checks, competitor analyses, audits, and reports; monthly/quarterly archive routines; and integration points with all 8 connected skills (keyword-research, rank-tracker, competitor-analysis, content-gap-analysis, seo-content-writer, content-quality-auditor, domain-authority-auditor).
When invoked for review or cleanup:
memory/hot-cache.md. If >80, list oldest entries for archival.name, description, and type in their frontmatter. Report any missing fields.Ask "Save these results for future sessions?" — if yes, write YYYY-MM-DD-<topic>.md to memory/. Add veto issues to memory/hot-cache.md only from auditor handoff or explicit user approval.
Reference: See references/examples.md for three complete examples (hero keyword rankings, glossary lookup, e-commerce project init), advanced features (smart context loading, memory health check, bulk promotion/demotion, memory snapshot, cross-project memory, wiki lint), and practical limitations (concurrent access, cold storage retrieval, data freshness, wiki compilation).
memory/ may store third-party personal data — entity names, founder bios, LinkedIn profiles, author/journalist names surfaced by entity-optimizer or research skills. Under GDPR Art 4(1) (applies to processing of personal data of EU/EEA/UK residents regardless of where the controller is located), these qualify as "personal data". The user is the data controller. Non-EU users without EU/EEA/UK data subjects may still face analogous obligations under CCPA/CPRA (California), PIPEDA (Canada), LGPD (Brazil), or other national regimes. Not legal advice.
memory/archive/ after 90 days unreferenced (default lifecycle)Invoke: memory-management purge <entity-name-or-slug>
This skill then:
memory/ (including memory/archive/) for the entity name, slug, or domainmemory/hot-cache.md, WARM notes, COLD/archive files, memory/entities/<slug>.md, memory/entities/candidates.md, memory/geo-feedback/, audit aggregates, open loopsmemory/wiki/ pages, memory/wiki/log.md, memory/wiki/log-archive/, memory/wiki/.unresolved.md, memory/wiki/.drift-log, memory/wiki/.retire-day-loggrep -l "originally_at:.*<entity>" memory/archive/*.md AND grep -l "retired_because_compiled:.*<entity>" memory/archive/*.md — purge entity name, originally_at path string, AND retired_because_compiled path string from any matched archive frontmatter.unresolved.md value-field scrub (v9.9.9+): the .unresolved.md schema stores value_a: / value_b: as freeform values. If the entity name appears as a VALUE (e.g., value_a: "CEO is Jane Doe") rather than as the contradiction's entity: field, the standard entity-name grep catches it via line-match. Confirm by running grep -F "<entity-name>" memory/wiki/.unresolved.md AND scrubbing each match (replace value with redacted label, preserve the contradiction structure for audit integrity).originally_at: (legacy / manually-mv'd files) or contain non-printable bytes in the field. The reverse-link grep silently skips these, creating compliance ghosts. Mitigation: ALSO run grep -F "<entity-name>" memory/archive/*.md body-content grep — catches the entity name regardless of frontmatter integrity. If a malformed archive is touched by the purge, log it explicitly to memory/audits/gdpr-purges.md so a compliance audit can verify scope.memory/privacy/tombstones.md with redacted label, salted non-reversible fingerprint, date, scope, and reingest_blocked: true; never store the raw subjectmemory/audits/gdpr-purges.md per the canonical schema in references/gdpr-purge-log-template.md (v9.9.9+) — required fields: purge_id, date, redacted_label, fingerprint, scope.{canonical,wiki,archive}, action, action_detail, legal_basis, proof.{grep_count_before,grep_count_after}, reingest_blocked: true, audit_signature. Auditor-verifiable structure: never raw subject; mechanical grep-count proof; cross-referenced to tombstone fingerprint.Before writing a third-party person to memory/entities/, the user must have one lawful basis per GDPR Art 6 (where GDPR applies — see scope note above): consent, legitimate_interest, contract, or equivalent. Advisory — this skill does not enforce, and does not substitute for legal review.
Primary: keyword-research — seed or refresh campaign strategy with current demand signals.