Data
Skill
/setup
Use when Mem9 needs to be initialized, repaired, or checked in this Claude Code environment.
Claude Code
$ npx -y skills add mem9-ai/mem9 --skill setup --agent claude-code
Codex
$ npx skills add mem9-ai/mem9 --skill setup -a codex -y
Cursor
$ npx skills add mem9-ai/mem9 --skill setup -a cursor -y
Gemini CLI
$ npx skills add mem9-ai/mem9 --skill setup -a gemini-cli -y
GitHub Copilot
$ npx skills add mem9-ai/mem9 --skill setup -a github-copilot -y
OpenCode
$ npx skills add mem9-ai/mem9 --skill setup -a opencode -y
Windsurf
$ npx skills add mem9-ai/mem9 --skill setup -a windsurf -y
SKILL.md
setup.SKILL.mddescription: 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
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.
Stats
1,236
Stars
125
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
Last commit
Created
1.2k5 skills
Other skills on mem9.
More skills from other plugins.
paddleocr-doc-parsing
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Auto-invoked
13c-metabolic-flux
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…
Questions about setup.
- Which coding agents can use setup?
- setup installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

