Installs into .claude/skills of the current project.
Are you the author of Member Profile?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/lycfyi-member-profile)
# Member Profile Management
Manage community member profiles to build persistent understanding of who community members are over time.
## When to Use
- User asks to "remember" something about a community member
- User wants to look up information about a specific member
- User asks "who is @username" or wants member context
- User wants to search for members with specific interests/skills
- User asks for a list of community members
- When building context for personalized responses to members
- After gathering profile-relevant information from chat activity
## Smart Defaults
| User Says | Default Action |
|-----------|----------------|
| "remember that @alice works in fintech" | Save observation to Alice's profile |
| "who is @bob" | Get Bob's profile and display |
| "who knows Python" | Search profiles for "python" |
| "list members" | List all profiles (default platform: discord) |
## Commands
### Save or Update a Profile
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py save \
--platform discord \
--member-id "123456789" \
--name "Alice Smith" \
--observation "Works at a fintech startup"
```
**Parameters:**
- `--platform`: Required. Platform identifier (`discord` or `telegram`)
- `--member-id`: Required. The member's platform-specific ID
- `--name`: Required for new profiles. Display name (max 100 chars)
- `--observation`: Optional. Initial observation to record
- `--notes`: Optional. Free-form notes about the member
- `--keywords`: Optional. Keywords for search (space-separated)
- `--json`: Optional. Output in JSON format
### Get a Profile
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py get \
--platform discord \
--member-id "123456789"
```
**Parameters:**
- `--platform`: Required. Platform identifier
- `--member-id`: Required. The member's ID
- `--json`: Optional. Output in JSON format
### Add an Observation
Use this to record new information learned about a member without needing to reload their full profile.
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py add-observation \
--platform discord \
--member-id "123456789" \
--text "Interested in Python and machine learning"
```
**Parameters:**
- `--platform`: Required. Platform identifier
- `--member-id`: Required. The member's ID
- `--text`: Required. Observation text (max 500 chars)
- `--name`: Optional. Display name (required if profile doesn't exist yet)
- `--json`: Optional. Output in JSON format
### Search Profiles
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py search \
--platform discord \
--query "python developer" \
--limit 20
```
**Parameters:**
- `--platform`: Required. Platform identifier
- `--query`: Required. Search query string
- `--limit`: Optional. Maximum results (default: 20)
- `--json`: Optional. Output in JSON format
### List All Profiles
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py list \
--platform discord \
--offset 0 \
--limit 50
```
**Parameters:**
- `--platform`: Required. Platform identifier
- `--offset`: Optional. Skip first N profiles (default: 0)
- `--limit`: Optional. Maximum results (default: 50)
- `--json`: Optional. Output in JSON format
### Count Profiles
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py count \
--platform discord
```
### Rebuild Index
Use if the index becomes corrupted or out of sync with profile files.
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py rebuild-index \
--platform discord
```
## Profile Data Structure
Each profile contains:
| Field | Description |
|-------|-------------|
| `member_id` | Platform-specific unique identifier |
| `platform` | "discord" or "telegram" |
| `display_name` | Current display name |
| `first_seen` | When profile was created |
| `last_updated` | When profile was last modified |
| `observations` | Timestamped facts about the member (max 50) |
| `notes` | Free-form agent notes |
| `keywords` | Extracted keywords for search (max 10) |
## Storage Location
Profiles are stored in:
```
profiles/
├── discord/
│ ├── index.yaml # Fast lookup index
│ └── {member_id}.yaml # Individual profiles
└── telegram/
├── index.yaml
└── {member_id}.yaml
```
## Examples
### Remember information about a member
When a user shares that "@alice works in fintech":
```bash
# First check if profile exists
python {{PLUGIN_DIR}}/tools/member_profile.py get \
--platform discord \
--member-id "123456789" \
--json
# If exists, add observation:
python {{PLUGIN_DIR}}/tools/member_profile.py add-observation \
--platform discord \
--member-id "123456789" \
--text "Works at a fintech startup"
# If new, create profile:
python {{PLUGIN_DIR}}/tools/member_profile.py save \
--platform discord \
--member-id "123456789" \
--name "Alice" \
--observation "Works at a fintech startup"
```
### Look up a member
When user asks "who is @bob":
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py get \
--platform discord \
--member-id "987654321" \
--json
```
### Find members with specific skills
When user asks "who knows Python here":
```bash
python {{PLUGIN_DIR}}/tools/member_profile.py search \
--platform discord \
--query "python" \
--json
```
## Limits
- **Observations**: Max 50 per profile (oldest trimmed automatically)
- **Keywords**: Max 10 per profile
- **Display name**: Max 100 characters
- **Observation text**: Max 500 characters
- **Notes**: Max 2000 characters
- **Profiles**: Supports up to 100,000 per platform
## Notes
- Profiles are **platform-scoped**: One profile per member per platform
- A member active in multiple Discord servers shares **one Discord profile**
- Observations are **append-only** - conflicting info is preserved with timestamps
- The index enables **fast search** without loading all profiles
- Use `--json` flag for programmatic access to output