Agent skill
setup
Set up the personal assistant plugin. Run this once after installing the plugin.
Install this agent skill to your Project
npx add-skill https://github.com/kenneth-liao/ai-launchpad-marketplace/tree/main/personal-assistant/skills/setup
SKILL.md
Personal Assistant Setup (v2)
Set up Elle with native rules delivery, context system, and default Claude Code settings.
Step 1: Set Default Settings
Read current settings:
cat ~/.claude/settings.json
If the file doesn't exist or is empty, create it with the content below. If the file exists, merge the fields below into the existing settings (you MUST preserve other settings).
{
"outputStyle": "personal-assistant:Personal Assistant",
"statusLine": {
"type": "command",
"command": "INPUT=$(cat); STYLE_NAME=$(echo \"$INPUT\" | jq -r '.output_style.name // \"default\"'); STYLE_PLUGIN=$(echo \"$INPUT\" | jq -r '.output_style.plugin // \"\"'); MODEL=$(echo \"$INPUT\" | jq -r '.model.display_name // \"default\"'); STYLE_DISPLAY=\"$STYLE_NAME\"; PLUGINS=$(ls -1d ~/.claude/plugins/marketplaces/*/ 2>/dev/null | wc -l | tr -d ' '); TOOLS=$(uv tool list 2>/dev/null | grep -c ' v[0-9]' || echo 0); CC_MCPS=$(cat ~/.claude/mcp.json 2>/dev/null | jq '.mcpServers | length // 0' || echo 0); PROJ_MCPS=$(cat .mcp.json 2>/dev/null | jq '.mcpServers | length // 0' || echo 0); MCPL_MCPS=$(mcpl list 2>/dev/null | grep -c '^[[:space:]]*\\[' || echo 0); MCPS=$((CC_MCPS + PROJ_MCPS + MCPL_MCPS)); if [ \"$CC_MCPS\" -eq \"$MCPL_MCPS\" ]; then MCPS=$((CC_MCPS + PROJ_MCPS)); fi; COST=$(echo \"$INPUT\" | jq -r '.cost.total_cost_usd // 0'); TIME=$(echo \"$INPUT\" | jq -r '.cost.total_duration_ms // 0'); if [ \"$TIME\" -lt 60000 ]; then SECS=$((TIME / 1000)); TIME_DISPLAY=\"${SECS}s\"; elif [ \"$TIME\" -lt 3600000 ]; then MINS=$((TIME / 60000)); SECS=$(((TIME % 60000) / 1000)); TIME_DISPLAY=\"${MINS}m ${SECS}s\"; else HOURS=$((TIME / 3600000)); MINS=$(((TIME % 3600000) / 60000)); TIME_DISPLAY=\"${HOURS}h ${MINS}m\"; fi; printf \"%s | %s\\n%s Plugins | %s UV | %s MCPs\\n\\$%.2f | %s\" \"$STYLE_DISPLAY\" \"$MODEL\" \"$PLUGINS\" \"$TOOLS\" \"$MCPS\" \"$COST\" \"$TIME_DISPLAY\""
}
}
Dedup Notification Hooks
Check if the user's ~/.claude/settings.json already has Stop or Notification sound hooks:
cat ~/.claude/settings.json | python3 -c "
import sys, json
d = json.load(sys.stdin)
hooks = d.get('hooks', {})
has_stop = bool(hooks.get('Stop'))
has_notif = bool(hooks.get('Notification'))
print(f'Stop hooks: {has_stop}, Notification hooks: {has_notif}')
"
If the user already has Stop and/or Notification sound hooks in settings.json, the plugin's hooks.json will also register them -- this causes duplicate sounds. Inform the user and offer to remove the duplicates from settings.json (the plugin hooks.json will handle them).
Step 2: Initialize Context System
Check if context already exists
ls ~/.claude/.context/ 2>/dev/null
- If the directory exists: Context is already set up. Do NOT overwrite it. CRITICAL: Do NOT proceed with the copy if the directory already exists!
- If the directory doesn't exist: Proceed with setup below.
Fresh Install (only if directory doesn't exist)
cp -r ${CLAUDE_PLUGIN_ROOT}/context-template/ ~/.claude/.context/
Verify
ls ~/.claude/.context/
You should see: CLAUDE.md, context-update.md, core/
Step 3: Generate elle-core.md
Create the rules directory and generate the derived rules file:
mkdir -p ~/.claude/rules
uv run python ${CLAUDE_PLUGIN_ROOT}/skills/sync-context/scripts/sync_context.py
Verify
cat ~/.claude/rules/elle-core.md
You should see a compact file with Identity, Communication Preferences, Rules, Active Projects, and Loading Full Context sections.
Step 4: Onboarding
"Now that Elle is set up, I'd love to get to know you better so I can be truly helpful. Would you like to spend a few minutes telling me about yourself?" </REQUIRED>
If YES: Run /personal-assistant:onboard, which will populate context files. After onboarding, run /sync-context to update elle-core.md with the new information.
If NO: Let them know they can run /personal-assistant:onboard anytime, then skip to "After Setup".
After Setup
Let the user know:
- Elle is now set up and personalized
- Context is loaded natively via
~/.claude/rules/elle-core.md(no per-message overhead) - SessionStart hook checks for upcoming events proactively
- Context survives compaction automatically
- Run
/sync-contextafter significant context changes to keep rules current - Run
/context-healthperiodically to audit data quality - Run
/evolveafter Claude Code updates to check for new capabilities
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
test-skill
Run or generate test suites for any skill. Use when testing a skill before deployment, after making changes, before/after plugin upgrades, when validating skill behavior, or when the user says "test skill", "run skill tests", "generate tests for skill", or "check for regressions".
upgrade-plugin
Upgrade a plugin's skills, hooks, and patterns to align with latest Claude Code capabilities and best practices. Use when a plugin needs modernization, after Claude Code updates, or when the user says "upgrade plugin", "modernize plugin", or "update plugin to latest patterns".
skill-retro
Use when reviewing how skills performed during a session, when the user wants to analyze skill invocations and identify improvements, or when the user says "skill retro", "review skills", "how did skills do", "improve this skill", or "skill retrospective".
view-team-session
Generate a self-contained HTML viewer for any Claude Code session, including agent team sessions with full inter-agent DM timelines. Use whenever the user asks to "view a session", "visualize a conversation", "show me what happened in session X", "generate a session viewer", "replay a session", "show me what my agents did", "session replay", "team timeline", or references viewing/inspecting Claude Code JSONL logs. Also use when the user provides a session ID and wants to see the conversation.
analyze-team-session
Use when reviewing an agent team session export for quality, when asked to "analyze this team session", "review my agent team run", "what went wrong with this session", "how can I improve my agent team usage", or when provided a markdown team session transcript and asked for feedback on agent teams effectiveness.
youtube-data
Retrieve YouTube data using the YouTube Data API. Use when you need to search videos, get video or channel details, fetch transcripts, read comments, find trending or related content, or when the user mentions 'YouTube data', 'video stats', 'transcript', or 'channel info'.
Didn't find tool you were looking for?