Skip to content
Data
Skill

/setup

Use when Mem9 needs to be initialized, repaired, or checked in this Claude Code environment.

From plugin
mem9
1.2k8 skills
Install
$ npx -y skills add mem9-ai/mem9 --skill setup --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/setup

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when Mem9 needs to be initialized, repaired, or checked in this Claude Code environment.

SKILL.md

setup.SKILL.md
description: Use when Mem9 needs to be initialized, repaired, or checked in this Claude Code environment.
context: fork
allowed-tools:
  - Bash
  - Read
  - Edit
disable-model-invocation: true

Mem9 Setup

Use this skill when the user asks to set up Mem9, diagnose why memory is not working, or manually retry initialization.

What to check

1. Verify `node` is installed and version `>= 18`. 2. Verify `${CLAUDE_PLUGIN_DATA}` is available. 3. Check `${CLAUDE_PLUGIN_DATA}/auth.json`.

If auth already exists

  • Tell the user Mem9 is already initialized.
  • Show the auth file path.
  • Do not print the file contents or the API key.

If auth is missing

Provision an API key and write `${CLAUDE_PLUGIN_DATA}/auth.json`:

set -euo pipefail

plugin_data_dir="${CLAUDE_PLUGIN_DATA}"
test -n "$plugin_data_dir"
node -e 'process.exit(Number(process.versions.node.split(".")[0]) >= 18 ? 0 : 1)'
plugin_version="unknown"
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -f "${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json" ]; then
  plugin_version="$(node -e 'const fs=require("node:fs"); const data=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); process.stdout.write(data.version || "unknown");' "${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json")"
fi

response="$(curl -sf --max-time 8 -X POST \
  -H "User-Agent: mem9-plugin/claude-code/${plugin_version}" \
  https://api.mem9.ai/v1alpha1/mem9s)"
api_key="$(printf '%s' "$response" | node -e 'const fs=require("node:fs"); const data=JSON.parse(fs.readFileSync(0,"utf8")); process.stdout.write(data.id || "");')"
test -n "$api_key"

auth_file="${plugin_data_dir}/auth.json"
mkdir -p "$(dirname "$auth_file")"
node -e 'const fs=require("node:fs"); const authPath=process.argv[1]; const apiKey=process.argv[2]; const payload={base_url:"https://api.mem9.ai",api_key:apiKey,created_at:new Date().toISOString(),source:"manual_setup_skill"}; fs.writeFileSync(authPath, JSON.stringify(payload, null, 2) + "\n");' "$auth_file" "$api_key"

If setup cannot complete

  • If Node is missing, tell the user to install `Node.js 18+`.
  • If `${CLAUDE_PLUGIN_DATA}` is missing, tell the user this skill must run from the Mem9 Claude plugin environment.
  • If provisioning fails, tell the user Mem9 server could not be reached.
  • Never print or quote the API key in the reply.
Read more
Ships withmem9

Unlimited memory for OpenClaw

Get the whole plugin
Stats
1,177
Stars
120
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
3d ago
Last commit
5mo ago
Created

Repo: mem9-ai/mem9