com um clique
persona-detection
Intelligent project persona identification using priority chain detection with LLM and heuristic fallback
Menu
Intelligent project persona identification using priority chain detection with LLM and heuristic fallback
Defense-in-depth, PII protection, secrets scanning, and secure packaging for distributed software
Systematic testing for confidence without over-testing — the right test at the right level
Generate consistent visual character references across multiple scenarios using Flux and nano-banana-pro on Replicate
Create professional ultra-wide cinematic banners for GitHub READMEs using Flux and Ideogram models with typography options
Generate professional presentations using the Gamma API with expert storytelling consulting based on Duarte methodology.
Reusable patterns for VS Code extension development.
| name | persona-detection |
| description | Intelligent project persona identification using priority chain detection with LLM and heuristic fallback |
Classification: Inheritable (VS Code heir) | Feature Knowledge Activation: persona, know your customer, project type detection, welcome screen, sidebar persona Inheritance: heir:vscode
Detect the most appropriate user persona for a workspace to personalize the Alex experience — sidebar branding, skill suggestions, and Active Context configuration.
| 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 | Profile Cache | Saved projectPersona (< 7 days old) | cached |
| 6 | Profile + Workspace | Tech stack, expertise, file structure scoring | variable |
| 7 | Default | Developer fallback | 0.50 |
Detection stops at the first confident match. Lower priorities only run if higher ones return null.
developer, academic, researcher, technical-writer, architect, data-engineer, devops, content-creator, fiction-writer, game-developer, project-manager, security, student, job-seeker, presenter, power-user
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).
When detectAndUpdateProjectPersona() is called (initialize/upgrade):
user-profile.json as projectPersonaupdatePersona()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:
updateFocusTrifectas()Why separate?
The welcome view displays the persona with confidence % and detection source (profile vs. project detection).
PERSONAS array in personaDetection.ts with: id, name, bannerNoun, hook, skill, icon, accentColor, keywords, techStack, projectPatternspersonaId enumskillNameMap in welcomeView.ts.github/skills/Note: Focus Trifectas are NOT defined per-persona. They're managed independently based on current work context.
3. Add persona ID to the LLM prompt's personaId enum
4. Add skill to getSkillDescription() map and skillNameMap in welcomeView.ts
5. Ensure matching skill exists in .github/skills/
| Issue | Root Cause | Fix |
|---|---|---|
| Every Alex project shows DevOps | .github/ matched via substring | Use fs.pathExists() for path patterns (v5.6.8) |
.github/ triggers power-user | Noise signal in every project | Removed from power-user patterns (v5.6.8) |
| Wrong persona cached | projectPersona in user-profile.json stale | 7-day expiry + re-detect on upgrade |