PE

Detects the active developer persona to customize the AI's behavior and workspace memory.

Install

mkdir -p .claude/skills/persona-detection && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17959" && unzip -o skill.zip -d .claude/skills/persona-detection && rm skill.zip

Installs to .claude/skills/persona-detection

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Intelligent project persona identification using priority chain detection with LLM and heuristic fallback
105 charsno explicit “when” trigger
Advanced

Key capabilities

  • Detect user persona based on active Pomodoro session topic
  • Identify persona from stated session objective in `goals.json`
  • Determine persona using current ROADMAP phase keywords
  • Infer persona from project goals in `user-profile.json`
  • Extract persona from `Persona:` field in `copilot-instructions.md`

How it works

This skill detects user persona by evaluating a priority chain of signals, from active focus topics to workspace file structure, using LLM and heuristic fallbacks to determine the most appropriate role.

Inputs & outputs

You give it
Workspace context including active sessions, project goals, file structure, and configuration files
You get back
The most appropriate user persona for a workspace with a confidence score

When to use persona-detection

  • Personalizing agent behavior
  • Adjusting workspace configuration
  • Improving skill suggestions

About this skill

Persona Detection Skill

Inheritance: heir:vscode


Purpose

Detect the most appropriate user persona for a workspace to personalize the Alex experience — sidebar branding, skill suggestions, and working memory P5-P7 configuration.


Priority Chain (Highest to Lowest)

PrioritySourceSignalConfidence
1FocusActive Pomodoro session topic0.95
2GoalStated session objective from goals.json0.85
3PhaseCurrent ROADMAP phase keywords0.75
4Project GoalsLearning goals from user-profile.json0.70
5Copilot InstructionsPersona: field in copilot-instructions.md Active Context0.85
6Profile CacheSaved projectPersona (< 7 days old)cached
7Profile + WorkspaceTech stack, expertise, file structure scoringvariable
8DefaultDeveloper fallback0.50

Detection stops at the first confident match. Lower priorities only run if higher ones return null.


Available Personas (as of v5.7.1)

developer, academic, researcher, technical-writer, architect, data-engineer, devops, content-creator, fiction-writer, game-developer, project-manager, security, student, job-seeker, presenter, power-user


Workspace Scoring (Priority 6 Heuristics)

Three pattern types with distinct matching logic:

Pattern TypeExampleMatch Method
Path (contains /)src/, .github/workflows/fs.pathExists() — directory must actually exist
Extension (starts with .).tex, .fountainendsWith() on workspace entries
FilenameDockerfile, package.jsonExact case-insensitive Set lookup

Critical rule: Never use bidirectional substring matching for workspace patterns. It causes false positives (e.g., .github/workflows/ matching any .github/ entry).


LLM Detection Path

When detectAndUpdateProjectPersona() is called (initialize/upgrade):

  1. Detect technologies from file structure
  2. Gather project context (directory tree, README, package.json, copilot-instructions.md)
  3. Send structured prompt to LLM (prefers GPT-4o > Claude Sonnet > any)
  4. Parse JSON response → match to existing persona or create dynamic one
  5. Save to user-profile.json as projectPersona
  6. Update Active Context persona field via updatePersona()

Active Context Integration

Persona detection updates the Active Context section in copilot-instructions.md:

## Active Context
Persona: Developer (90% confidence)
Objective: v5.7.1 — Avatar UI Enhanced + Architecture Validation Complete
Focus Trifectas: release-management, quality-assurance, documentation-quality-assurance
Principles: KISS, DRY, Quality-First
Last Assessed: 2026-02-15 — v5.7.1

What gets updated:

  • Persona: Name + confidence (e.g., "Developer (90% confidence)")
  • Focus Trifectas: NOT auto-assigned during persona detection — managed independently via updateFocusTrifectas()

Why separate?

  • Persona = WHO the user is (developer, writer, researcher)
  • Focus Trifectas = WHAT I'm working on NOW (3 skills for current task)
  • Focus changes frequently (per-session), persona changes rarely (per-project)

The welcome view displays the persona with confidence % and detection source (profile vs. project detection).


Adding New Personas

  1. Add to PERSONAS array in personaDetection.ts with: id, name, bannerNoun, hook, skill, icon, accentColor, keywords, techStack, projectPatterns
  2. Add persona ID to the LLM prompt's personaId enum
  3. Add skill to skillNameMap in welcomeView.ts
  4. Ensure matching skill exists in .github/skills/

Note: Focus Trifectas are NOT defined per-persona. They're managed independently based on current work context.


Known Pitfalls

IssueRoot CauseFix
Every Alex project shows DevOps.github/ matched via substringUse fs.pathExists() for path patterns (v5.7.1)
.github/ triggers power-userNoise signal in every projectRemoved from power-user patterns (v5.7.1)
Wrong persona cachedprojectPersona in user-profile.json stale7-day expiry + re-detect on upgrade

When not to use it

  • When bidirectional substring matching is used for workspace patterns
  • When `.github/` is used as a pattern for power-user persona
  • When `projectPersona` in `user-profile.json` is stale and not expired

Limitations

  • Detection stops at the first confident match in the priority chain
  • Focus Trifectas are not auto-assigned during persona detection
  • Workspace scoring relies on specific pattern types and matching logic

How it compares

This skill employs a hierarchical detection system with confidence scores and LLM integration to identify user personas, offering a more dynamic and context-aware approach than static role assignments.

Compared to similar skills

persona-detection side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
persona-detection (this skill)03moNo flagsAdvanced
using-superpowers952moNo flagsBeginner
ultrawork112moNo flagsAdvanced
prompt-optimizer435moNo flagsBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

using-superpowers

obra

Use when starting any conversation - establishes mandatory workflows for finding and using skills, including using Skill tool before announcing usage, following brainstorming before coding, and creating TodoWrite todos for checklists

95205

ultrawork

Yeachan-Heo

Parallel execution engine for high-throughput task completion

11184

prompt-optimizer

solatis

Optimize system prompts for Claude Code agents using proven prompt engineering patterns. Use when users request prompt improvement, optimization, or refinement for agent workflows, tool instructions, or system behaviors.

43147

clawhub

openclaw

Use the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawhub CLI.

25151

skill-installer

openai

Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos).

29141

archon

coleam00

Interactive Archon integration for knowledge base and project management via REST API. On first use, asks for Archon host URL. Use when searching documentation, managing projects/tasks, or querying indexed knowledge. Provides RAG-powered semantic search, website crawling, document upload, hierarchical project/task management, and document versioning. Always try Archon first for external documentation and knowledge retrieval before using other sources.

9140

Search skills

Search the agent skills registry