# Personal Facts

> Store and recall personal facts, preferences, and profile details for the user. Use when the user shares personal info ('my name is', 'I live in'), asks 'what's my…', or says 'do you remember'.

- Skill: `jason-easyazz/personal-facts` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jason-easyazz/personal-facts`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jason-easyazz/personal-facts/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jason-easyazz (https://skillmd.com/u/jason-easyazz)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/jason-easyazz/personal-facts

---

# Personal Facts Skill

## Workflow

1. **Detect intent** — determine if the user is storing a new fact, recalling an existing one, updating, or deleting
2. **Extract key-value pair** — parse the fact into a structured format:
   - `category`: `identity`, `contact`, `preference`, `location`, `work`
   - `key`: the specific attribute (e.g., `name`, `birthday`, `favorite_color`)
   - `value`: the user's answer
3. **Check for duplicates** — `GET /api/memories/facts/{key}` to see if the fact already exists
4. **Store or retrieve** — use the appropriate API call (see below)
5. **Confirm** — acknowledge storage warmly, or present recalled facts naturally in context

## API Endpoints

### Store a fact
```
POST /api/memories/facts
{
  "category": "identity",
  "key": "name",
  "value": "Jason"
}
```

### Recall a specific fact
```
GET /api/memories/facts/name
```

### Recall all facts
```
GET /api/memories/facts
```

### Delete a fact
```
DELETE /api/memories/facts/birthday
```

### Update a fact
There is no `PUT /api/memories/facts/{key}` endpoint. To update an existing
fact after user confirmation, first keep the old value in context, then delete
the old key and store the new value:
```
DELETE /api/memories/facts/birthday
POST /api/memories/facts
{
  "category": "identity",
  "key": "birthday",
  "value": "15 March"
}
```

### Update preferences
```
PUT /api/user-data/preferences
{
  "theme": "dark",
  "language": "en"
}
```

## Example

**User:** "My birthday is March 15th"

**Steps:**
- Detect intent: store
- Extract: category=`identity`, key=`birthday`, value=`March 15`
- Check: `GET /api/memories/facts/birthday` — not found
- Store: `POST /api/memories/facts` with extracted data
- Respond: "Got it — I'll remember your birthday is March 15th! 🎂"

**User:** "What's my birthday?"

**Steps:**
- Detect intent: recall
- Retrieve: `GET /api/memories/facts/birthday` → `March 15`
- Respond: "Your birthday is March 15th!"

## Error Handling

- **Fact not found on recall**: Respond "I don't have that on file yet — want to tell me?"
- **Duplicate on store**: Show existing value and ask if the user wants to update it; if yes, `DELETE /api/memories/facts/{key}` then `POST /api/memories/facts` with the new value
- **Update failure after delete**: If the new `POST /api/memories/facts` fails, immediately try to restore the old value with `POST /api/memories/facts`; if restore also fails, tell the user exactly what happened and ask them to provide the fact again
- **Ambiguous key**: Ask for clarification (e.g., "Do you mean your work email or personal email?")

## Response Style

Warm and personal. When storing: brief confirmation. When recalling: weave the fact naturally into the response.

