Skills memory-management
Persist SEO/GEO campaign context across Claude sessions with automatic hot-list, active work, and archive tiers. 项目记忆/跨会话
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aaron-he-zhu/memory-management" ~/.claude/skills/clawdbot-skills-memory-management && rm -rf "$T"
skills/aaron-he-zhu/memory-management/SKILL.mdMemory Management
SEO & GEO Skills Library · 20 skills for SEO + GEO · ClawHub · skills.sh System Mode: This cross-cutting skill is part of the protocol layer and follows the shared Skill Contract and State Model.
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.
System role: Campaign Memory Loop. It defines how project context is captured, promoted, archived, and handed off across sessions. It is the sole executor of WARM-to-COLD archival and the aggregator for cross-skill project status queries.
When This Must Trigger
Use this whenever project state should survive the current session — even if the user doesn't use memory terminology:
- User says "remember this", "save this", "keep track of this"
- User asks "what did we decide", "what do we know", "project status"
- Setting up memory structure for a new SEO project
- After completing audits, ranking checks, or performance reports (Stop hook reminds automatically)
- When project context needs updating (new keywords, competitors, priorities)
- When you need to look up historical data or project-specific terminology
- After 30+ days of work to clean up and archive stale data
- When open-loops.md has items older than 7 days (SessionStart hook reminds automatically)
What This Skill Does
- HOT Cache Management: Maintains
(80 lines max) — loaded automatically every session by SessionStart hookmemory/hot-cache.md - WARM Storage: Organizes dated findings in
subdirectories — loaded on demand by relevant skillsmemory/ - COLD Archive: Moves stale data (90+ days unreferenced) to
with date prefixmemory/archive/ - Promotion: Elevates frequently-referenced findings from WARM to HOT (3+ refs in 7 days, or 2+ skill refs)
- Demotion: Moves unreferenced HOT items to WARM (30 days), WARM to COLD (90 days)
- Cross-Skill Aggregation: When user asks "what do we know", aggregates from all
subdirectoriesmemory/ - Open Loop Tracking: Maintains
, reminds user of stale items via SessionStart hookmemory/open-loops.md - Wiki Index Maintenance: Compiles
— a structured, auto-refreshed index of all WARM files with precise fields (score, 健康度, status, next_action, mtime) and best-effort summaries. Supports project isolation viamemory/wiki/index.md
. Auto-refreshed on PostToolUse; user confirmation not required (index is a fully rebuildable derived artifact). Deletememory/wiki/<project>/index.md
at any time to revert to pre-wiki behavior.memory/wiki/ - Wiki Compiled Pages (Phase 2): Generates interlinked entity, keyword, and topic pages from WARM files with source hash tracking, contradiction detection, and confidence-labeled reconciliation. Requires user confirmation before writing.
- Wiki Lint (Phase 2): Detects contradictions, orphan pages, stale claims, missing pages, and source hash mismatches across wiki and WARM files via
./seo:wiki-lint - WARM Retirement Preview (Phase 3):
lists WARM files fully covered by wiki compiled pages as retirement candidates. Actual archival to COLD requires explicit user confirmation.wiki-lint --retire-preview
Quick Start
Start with one of these prompts. Finish with a hot-cache update plan and a handoff summary using the repository format in Skill Contract.
Initialize Wiki Index
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.
Initialize Memory Structure
Set up SEO memory for [project name]
Initialize memory structure for a new [industry] website optimization project
Update After Analysis
Update memory after ranking check for [keyword group]
Refresh hot cache with latest competitor analysis findings
Query Stored Context
What are our hero keywords?
Show me the last ranking update date for [keyword category]
Look up our primary competitors and their domain authority
Promotion and Demotion
Promote [keyword] to hot cache
Archive stale data that hasn't been referenced in 30+ days
Glossary Management
Add [term] to project glossary: [definition]
What does [internal jargon] mean in this project?
Skill Contract
Expected output: a memory update plan, hot-cache changes, and a short handoff summary.
-
Reads: current campaign facts, new findings from other skills, approved decisions, and the shared State Model.
-
Writes: updates to
,memory/hot-cache.md
,memory/open-loops.md
, and relatedmemory/decisions.md
folders. Manages WARM-to-COLD archival inmemory/
. Compilesmemory/archive/
(auto-refreshed) and wiki compiled pages (user-confirmed). Auditor handoff archiving (v7.1.0+): when triggered (by the Stop hook, by a direct user request, or via an auditor's "Save these results?" yes-response), append a structured block tomemory/wiki/index.md
using the exact format below. The archive is consumed bymemory/audits/YYYY-MM.md
for the 2026-07-10 tombstone evaluation tied to ADR-001./seo:p2-reviewArchive block format (append to end of the monthly file, newest entries at bottom):
## YYYY-MM-DD · <target> · <framework> - runbook_version: 1.1 - status: DONE | DONE_WITH_CONCERNS | BLOCKED - framework: CORE-EEAT | CITE - vetos_failed: [T04, R10] # empty list [] if none - veto_count: 2 - raw_overall: 78 - final_overall: 60 # or "n/a" if BLOCKED - cap_applied: true - gap_types: [missing, shallow] # derived from key_findings if present; [] if none - false_positive: false # user annotation; default false; set true only on explicit user "this was wrong" feedback - audit_source: content-quality-auditor | domain-authority-auditorRules:
- One block per audit. Do not overwrite existing blocks.
is the URL or domain audited.target
is copied from the current runbook header — this is howrunbook_version
identifies cross-version reruns./seo:p2-review
is derived fromgap_types
if the handoff carries them (deferred to P2; until then, leave askey_findings[].gap_type
).[]
is the ONLY field that can be added/flipped after initial write, via explicit user annotation.false_positive- If the monthly file does not exist, create it with a single
header at top.# Audit Archive — YYYY-MM
-
Promotes: durable strategy, blockers, terminology, entity candidates, and major deltas. Applies temperature lifecycle rules: promote to HOT on high reference frequency, demote on staleness.
-
Next handoff: use the
below when the project memory baseline is ready for active work.Next Best Skill
Temperature Lifecycle Rules
See references/promotion-demotion-rules.md for the full promotion/demotion table and action procedures.
Hook Integration
This skill's behavior is reinforced by the library's prompt-based hooks:
- SessionStart: loads
, reminds of stale open loops; loadsmemory/hot-cache.md
(or globalmemory/wiki/<project>/index.md
) if it exists; provides light-user guidance based on Quick Status whenindex.md
items are availablenext_action - PostToolUse: after any WARM file write, silently refreshes
(Phase 1); prompts to update compiled pages (Phase 2)memory/wiki/index.md - Stop: prompts to save session findings, auto-saves veto issues to hot-cache; appends changelog entry to index.md bottom
Data Sources
See CONNECTORS.md for tool category placeholders.
With ~~SEO tool + ~~analytics + ~~search console connected: Automatically populate memory from historical data: keyword rankings over time, competitor domain authority changes, traffic metrics, conversion data, backlink profile evolution. The skill will fetch current rankings, alert on significant changes, and update both hot cache and cold storage.
With manual data only: Ask the user to provide:
- Current target keywords with priority levels
- Primary competitors (3-5 domains)
- Key performance metrics and last update date
- Active campaigns and their status
- Any project-specific terminology or abbreviations
Proceed with memory structure creation using provided data. Note in CLAUDE.md which data requires manual updates vs. automated refresh.
Instructions
When a user requests SEO memory management:
1. Initialize Memory Structure
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 spec
2. Context Lookup Flow
When a user references something unclear, follow this lookup sequence:
Step 1: Check CLAUDE.md (Hot Cache)
- Is it in active keywords?
- Is it in primary competitors?
- Is it in current priorities or campaigns?
Step 2: Check Wiki Index (
memory/wiki/index.md or project-level) — locate relevant WARM files
Step 3: Check memory/glossary.md
- Is it defined as project terminology?
- Is it a custom segment or shorthand?
Step 4: Check Cold Storage
- Search memory/research/keywords/ for historical keyword context
- Search memory/research/competitors/ for past analyses
- Search memory/monitoring/reports/ for archived mentions
Step 5: Ask User
- If not found in any layer, ask for clarification
- Log the new term in glossary if it's project-specific
Example lookup:
User: "Update rankings for our hero KWs" Step 1: Check CLAUDE.md → Found "Hero Keywords (Priority 1)" section Step 2: Extract keyword list from hot cache Step 3: Execute ranking check Step 4: Update both CLAUDE.md and memory/monitoring/rank-history/YYYY-MM-DD-ranks.csv
3. Promotion & Demotion Logic
Reference: See references/promotion-demotion-rules.md for detailed promotion/demotion triggers (keywords, competitors, metrics, campaigns) and the action procedures for each.
4. Update Triggers, Archive Management & Cross-Skill Integration
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).
5. Memory Hygiene Checks
When invoked for review or cleanup:
- Line count check: Count lines in
. If >80, list oldest entries for archival.memory/hot-cache.md - Byte check: If hot-cache exceeds 25KB, warn and recommend trimming long entries.
- Staleness scan: List memory files older than 30 days that have not been referenced. Recommend archival for files >90 days.
- Frontmatter audit: Check that all memory files (except hot-cache.md) have
,name
, anddescription
in their frontmatter. Report any missing fields.type
6. Save Results
After delivering any memory update or aggregation to the user, ask:
"Save these results for future sessions?"
If yes, write a dated summary to the appropriate
memory/ path using filename YYYY-MM-DD-<topic>.md containing:
- One-line verdict or headline finding
- Top 3-5 actionable items
- Open loops or blockers
- Source data references
If any veto-level issue was found (CORE-EEAT T04, C01, R10 or CITE T03, T05, T09), also append a one-liner to
memory/hot-cache.md without asking.
Validation Checkpoints
Structure Validation
- memory/hot-cache.md exists and is under 80 lines
- memory/ directory structure matches the shared state model
- glossary.md exists and is populated with project basics
- All historical data files include timestamps in filename or metadata
Content Validation
- CLAUDE.md "Last Updated" date is current
- Every keyword in hot cache has current rank, target rank, and status
- Every competitor has domain authority and position assessment
- Every active campaign has status percentage and expected completion date
- Key Metrics Snapshot shows "Previous" values for comparison
Lookup Validation
- Test lookup flow: reference a term → verify it finds it in correct layer
- Test promotion: manually promote item → verify it appears in CLAUDE.md
- Test demotion: manually archive item → verify removed from CLAUDE.md
- Glossary contains all custom segments and shorthand used in CLAUDE.md
Update Validation
- After ranking check,
has a dated snapshot or exportmemory/monitoring/rank-history/ - After competitor analysis,
has a dated filememory/research/competitors/ - After audit, top action items appear in CLAUDE.md priorities
- After monthly report, metrics snapshot reflects new data
Examples
Reference: See references/examples.md for three complete examples: (1) updating hero keyword rankings with memory refresh, (2) glossary lookup flow, and (3) initializing memory for a new e-commerce project.
Advanced Features
- Smart Context Loading:
— retrieves hot cache + all cold storage files for a campaignLoad full context for [campaign name] - Memory Health Check:
— finds orphaned files, missing timestamps, stale items, broken referencesRun memory health check - Bulk Promotion/Demotion:
/Promote all keywords ranking in top 10 to hot cacheDemote all completed campaigns from Q3 - Memory Snapshot:
— point-in-time copy for major milestonesCreate memory snapshot for [date/milestone] - Cross-Project Memory:
— keyword overlaps, competitor intersections across projectsCompare memory with [other project] - Wiki Lint:
— contradictions, orphans, stale claims, hash mismatches. See commands/wiki-lint.md/seo:wiki-lint [--fix] [--project name] [--retire-preview]
Practical Limitations
- Concurrent access: Use timestamped filenames to avoid overwrites from parallel sessions.
- Cold storage retrieval: WARM/COLD files only load on demand. Hot cache is the primary cross-session mechanism.
- Data freshness: Stale data (>90 days) should be flagged for refresh. Wiki index
field helps detect staleness.mtime - Wiki compilation: Index is best-effort for summaries; precise fields (score, status, mtime) are deterministic. Delete
anytime to revert.memory/wiki/
Reference Materials
- CORE-EEAT Content Benchmark — Content quality scoring stored in memory
- CITE Domain Rating — Domain authority scoring stored in memory
Next Best Skill
- Primary: keyword-research — seed or refresh campaign strategy with current demand signals.