Claude Code Plugins

Community-maintained marketplace

Feedback

user-profile-reader

@memorysaver/looplia-core
3
0

|

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name user-profile-reader
description Read user profile from workspace and calculate content relevance. Use to personalize output based on user interests.
tools Read
model claude-haiku-4-5-20251001

User Profile Reader Skill

Read and interpret user preferences for content personalization.

What This Skill Does

  • Reads user-profile.json from workspace root
  • Provides user context to other processing
  • Calculates relevance scores for content

User Profile Location

~/.looplia/user-profile.json

User Profile Schema

{
  "userId": "string",
  "topics": [
    { "topic": "string", "interestLevel": 1-5 }
  ],
  "style": {
    "tone": "beginner" | "intermediate" | "expert" | "mixed",
    "targetWordCount": 100-10000,
    "voice": "first-person" | "third-person" | "instructional"
  }
}

Relevance Scoring Algorithm

Calculate score.relevanceToUser (0-1):

1. For each user topic:
   - weight = interestLevel / 5
   - matched = content tags/themes contain topic (case-insensitive)

2. Calculate score:
   - matchedWeight = sum of weights for matched topics
   - totalWeight = sum of all topic weights
   - score = matchedWeight / totalWeight

3. If no user topics defined:
   - score = 0.5 (neutral)

Example Calculation

User profile:

{
  "topics": [
    { "topic": "AI", "interestLevel": 5 },
    { "topic": "productivity", "interestLevel": 3 },
    { "topic": "cooking", "interestLevel": 2 }
  ]
}

Content tags: ["AI", "safety", "alignment"]

Calculation:

  • AI: matched, weight = 5/5 = 1.0 (contributes to matchedWeight)
  • productivity: not matched, weight = 3/5 = 0.6 (contributes to totalWeight only)
  • cooking: not matched, weight = 2/5 = 0.4 (contributes to totalWeight only)
  • matchedWeight = 1.0
  • totalWeight = 1.0 + 0.6 + 0.4 = 2.0
  • score = 1.0 / 2.0 = 0.5

Usage in Other Skills

When content-documenter needs relevance score:

  1. Read user-profile.json
  2. Compare content tags/themes to user topics
  3. Apply algorithm above
  4. Return score in score.relevanceToUser field

Handling Edge Cases

  • No user profile file: Use score = 0.5
  • Empty topics array: Use score = 0.5
  • Invalid JSON: Use score = 0.5, log warning
  • All topics matched: score = 1.0
  • No topics matched: score = 0.0