persona-detection
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.zipInstalls 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 fallbackKey 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
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)
| Priority | Source | Signal | Confidence |
|---|---|---|---|
| 1 | Focus | Active Pomodoro session topic | 0.95 |
| 2 | Goal | Stated session objective from goals.json | 0.85 |
| 3 | Phase | Current ROADMAP phase keywords | 0.75 |
| 4 | Project Goals | Learning goals from user-profile.json | 0.70 |
| 5 | Copilot Instructions | Persona: field in copilot-instructions.md Active Context | 0.85 |
| 6 | Profile Cache | Saved projectPersona (< 7 days old) | cached |
| 7 | Profile + Workspace | Tech stack, expertise, file structure scoring | variable |
| 8 | Default | Developer fallback | 0.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 Type | Example | Match Method |
|---|---|---|
Path (contains /) | src/, .github/workflows/ | fs.pathExists() — directory must actually exist |
Extension (starts with .) | .tex, .fountain | endsWith() on workspace entries |
| Filename | Dockerfile, package.json | Exact 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):
- Detect technologies from file structure
- Gather project context (directory tree, README, package.json, copilot-instructions.md)
- Send structured prompt to LLM (prefers GPT-4o > Claude Sonnet > any)
- Parse JSON response → match to existing persona or create dynamic one
- Save to
user-profile.jsonasprojectPersona - 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
- Add to
PERSONASarray inpersonaDetection.tswith: id, name, bannerNoun, hook, skill, icon, accentColor, keywords, techStack, projectPatterns - Add persona ID to the LLM prompt's
personaIdenum - Add skill to
skillNameMapinwelcomeView.ts - 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
| Issue | Root Cause | Fix |
|---|---|---|
| Every Alex project shows DevOps | .github/ matched via substring | Use fs.pathExists() for path patterns (v5.7.1) |
.github/ triggers power-user | Noise signal in every project | Removed from power-user patterns (v5.7.1) |
| Wrong persona cached | projectPersona in user-profile.json stale | 7-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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| persona-detection (this skill) | 0 | 3mo | No flags | Advanced |
| using-superpowers | 95 | 2mo | No flags | Beginner |
| ultrawork | 11 | 2mo | No flags | Advanced |
| prompt-optimizer | 43 | 5mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by fabioc-aloha
View all by fabioc-aloha →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
ultrawork
Yeachan-Heo
Parallel execution engine for high-throughput task completion
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.
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.
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).
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.