Skills Plugins MCP Prompt Model 博客 我的中心

crisis-detection-intervention-ai

Detect crisis signals in user content using NLP, mental health sentiment analysis, and safe intervention protocols. Implements suicide ideation detection, automated escalation, and crisis resource integration. Use for mental health apps, recovery platforms, support communities. Activate on "crisis detection", "suicide prevention", "mental health NLP", "intervention protocol". NOT for general sentiment analysis, medical diagnosis, or replacing professional help.

DeepseekModel Curated skill Quality Excellent · 90 v1.0.0

Get

https://deepseekmodel.com/api/download.php?id=freedomintelligence-openclaw-medical-skills-skills-crisis-detection-intervention-ai-skill-md&format=skill
Download .skill Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name crisis-detection-intervention-ai description Detect crisis signals in user content using NLP, mental health sentiment analysis, and safe intervention protocols. Implements suicide ideation detection, automated escalation, and crisis resource integration. Use for mental health apps, recovery platforms, support communities. Activate on "crisis detection", "suicide prevention", "mental health NLP", "intervention protocol". NOT for general sentiment analysis, medical diagnosis, or replacing professional help. allowed-tools Read,Write,Edit,Bash(npm:*) metadata {"category":"Lifestyle & Personal","tags":["crisis","detection","intervention","crisis-detection","suicide-prevention"],"pairs-with":[{"skill":"crisis-response-protocol","reason":"Detection identifies the crisis; response protocol determines the safe intervention"},{"skill":"sober-addict-protector","reason":"Relapse crisis signals require the same NLP detection patterns as general crisis detection"},{"skill":"clinical-diagnostic-reasoning","reason":"Bias-aware clinical reasoning improves accuracy of crisis signal classification"}]} Crisis Detection & Intervention AI Expert in detecting mental health crises and implementing safe, ethical intervention protocols. ⚠️ ETHICAL DISCLAIMER This skill assists with crisis detection, NOT crisis response . ✅ Appropriate uses : Flagging concerning content for human review Connecting users to professional resources Escalating to crisis counselors Providing immediate hotline information ❌ NOT a substitute for : Licensed therapists Emergency services (911) Medical diagnosis Professional mental health treatment Always provide crisis hotlines : National Suicide Prevention Lifeline: 988 When to Use ✅ Use for : Mental health journaling apps Recovery community platforms Support group monitoring Online therapy platforms Crisis text line integration ❌ NOT for : General sentiment analysis (use standard tools) Medical diagnosis (not qualified) Automated responses without human review Replacing professional crisis counselors Quick Decision Tree Detected concerning content? ├── Immediate danger? → Escalate to crisis counselor + show 988 ├── Suicidal ideation? → Flag for review + show resources ├── Substance relapse? → Connect to sponsor + resources ├── Self-harm mention? → Gentle check-in + resources └── General distress? → Supportive response + resources Technology Selection NLP Models for Mental Health (2024) Model Best For Accuracy Latency MentalBERT Mental health text 89% 50ms GPT-4 + Few-shot Crisis detection 92% 200ms RoBERTa-Mental Depression detection 87% 40ms Custom Fine-tuned BERT Domain-specific 90%+ 60ms Timeline : 2019: BERT fine-tuned for mental health 2021: MentalBERT released 2023: GPT-4 shows strong zero-shot crisis detection 2024: Specialized models for specific conditions Common Anti-Patterns Anti-Pattern 1: Using Generic Sentiment Analysis Novice thinking : "Negative sentiment = crisis" Problem : Mental health language is nuanced, context-dependent. Wrong approach : // ❌ Generic sentiment misses mental health signals const sentiment = analyzeSentiment (text); if (sentiment. score < - 0.5 ) { alertCrisis (); // Too broad! } Why wrong : "I'm tired" vs "I'm tired of living" - different meanings, same sentiment. Correct approach : // ✅ Mental health-specific model import { pipeline } from '@huggingface/transformers' ; const detector = await pipeline ( 'text-classification' , 'mental/bert-base-uncased' ); const result = await detector (text, { labels : [ 'suicidal_ideation' , 'self_harm' , 'substance_relapse' , 'safe' ] }); if (result[ 0 ]. label === 'suicidal_ideation' && result[ 0 ]. score > 0.8 ) { await escalateToCrisisCounselor ({ text, confidence : result[ 0 ]. score , timestamp : Date . now () }); // IMMEDIATELY show crisis resources showCrisisResources ({ phone : '988' , text : 'Text "HELLO" to 741741' , chat : 'https://988lifeline.org/chat' }); } Timeline context : 2015: Rule-based keyword matching 2020: BERT fine-tuning for mental health 2024: Multi-label models with context understanding Anti-Pattern 2: Automated Responses Without Human Review Problem : AI cannot replace empathy, may escalate distress. Wrong approach : // ❌ AI auto-responds to crisis if ( isCrisis (text)) { await sendMessage (userId, "I'm concerned about you. Are you okay?" ); } Why wrong : Feels robotic, invalidating May increase distress No human judgment Correct approach : // ✅ Flag for human review, show resources if ( isCrisis (text)) { // 1. Flag for counselor review await flagForReview ({ userId, text, severity : 'high' , detectedAt : Date . now (), requiresImmediate : true }); // 2. Notify on-call counselor await notifyOnCallCounselor ({ userId, summary : 'Suicidal ideation detected' , urgency : 'immediate' }); // 3. Show resources (no AI message) await showInAppResources ({ type : 'crisis_support' , resources : [ { name : '988 Suicide & Crisis Lifeline' , link : 'tel:988' }, { name : 'Crisis Text Line' , link : 'sms:741741' }, { name : 'Chat Now' , link : 'https://988lifeline.org/chat' } ] }); // 4. DO NOT send automated "are you okay" message } Human review flow : AI Detection → Flag → On-call counselor notified → Human reaches out Anti-Pattern 3: Not Providing Immediate Resources Problem : User in crisis needs help NOW, not later. Wrong approach : // ❌ Just flags, no immediate help if ( isCrisis (text)) { await logCrisisEvent (userId, text); // User left with no resources } Correct approach : // ✅ Immediate resources + escalation if ( isCrisis (text)) { // Show resources IMMEDIATELY (blocking modal) await showCrisisModal ({ title : 'Resources Available' , resources : [ { name : '988 Suicide & Crisis Lifeline' , description : 'Free, confidential support 24/7' , action : 'tel:988' , type : 'phone' }, { name : 'Crisis Text Line' , description : 'Text support with trained counselor' , action : 'sms:741741' , message : 'HELLO' , type : 'text' }, { name : 'Chat with counselor' , description : 'Online chat support' , action : 'https://988lifeline.org/chat' , type : 'web' } ], dismissible : true , // User can close, but resources shown first analytics : { event : 'crisis_resources_shown' , source : 'ai_detection' } }); // Then flag for follow-up await flagForReview ({ userId, text, severity : 'high' }); } Anti-Pattern 4: Storing Crisis Data Insecurely Problem : Crisis content is extremely sensitive PHI. Wrong approach : // ❌ Plain text storage await db. logs . insert ({ userId : user. id , type : 'crisis' , content : text, // Stored in plain text! timestamp : Date . now () }); Why wrong : Data breach exposes most vulnerable moments. Correct approach : // ✅ Encrypted, access-logged, auto-deleted import { encrypt, decrypt } from './encryption' ; await db. crisisEvents . insert ({ id : generateId (), userId : hashUserId (user. id ), // Hash, not plain ID contentHash : hashContent (text), // For deduplication only encryptedContent : encrypt (text, process. env . CRISIS_DATA_KEY ), detectedAt : Date . now (), reviewedAt : null , reviewedBy : null , autoDeleteAt : Date . now () + ( 30 * 24 * 60 * 60 * 1000 ), // 30 days accessLog : [] }); // Log all access await logAccess ({ eventId : crisisEvent. id , accessedBy : counselorId, accessedAt : Date . now (), reason : 'Review for follow-up' , ipAddress : hashedIp }); // Auto-delete after retention period schedule. daily ( () => { db. crisisEvents . deleteMany ({ autoDeleteAt : { $lt : Date . now () } }); }); HIPAA Requirements : Encryption at rest and in transit Access logging Auto-deletion after retention period Minimum necessary access Anti-Pattern 5: No Escalation Protocol Problem : No clear path from detection to human intervention. Wrong approach : // ❌ Flags crisis but no escalation process if ( isCrisis (text)) { await db. flags . insert ({ userId, text, flaggedAt : Date . now () }); // Now what? Who responds? } Correct approach : // ✅ Clear escalation protocol enum CrisisSeverity { LOW = 'low' , // Distress, no immediate danger MEDIUM = 'medium' , // Self-harm thoughts, no plan HIGH = 'high' , // Suicidal ideation with plan IMMEDIATE = 'immediate' // Imminent danger } async function escalateCrisis ( detection : CrisisDetection ): Promise < void > { const severity = assessSeverity (detection); switch (severity) { case CrisisSeverity . IMMEDIATE : // Notify on-call counselor (push notification) await notifyOnCall ({ userId : detection. userId , severity, requiresResponse : 'immediate' , text : detection. text }); // Send SMS to backup on-call if no response in 5 min setTimeout ( async () => { if (! await hasResponded (detection. id )) { await notifyBackupOnCall (detection); } }, 5 * 60 * 1000 ); // Show 988 modal (blocking) await show988Modal (detection. userId ); break ; case CrisisSeverity . HIGH : // Notify on-call counselor (email + push) await notifyOnCall ({ severity, requiresResponse : '1 hour' }); // Show crisis resources await showCrisisResources (detection. userId ); break ; case CrisisSeverity . MEDIUM : // Add to review queue for next business day await addToReviewQueue ({ priority : 'high' }); // Suggest self-help resources await suggestResources (detection. userId , 'coping_strategies' ); break ; case CrisisSeverity . LOW : // Add to review queue await addToReviewQueue ({ priority : 'normal' }); break ; } // Always log for audit await logEscalation ({ detectionId : detection. id , severity, actions : [ 'notified_on_call' , 'showed_resources' ], timestamp : Date . now () }); } Implementation Patterns Pattern 1: Multi-Signal Detection interface CrisisSignal { type : 'suicidal_ideation' | 'self_harm' | 'substance_relapse' | 'severe_distress' ; confidence : number ; evidence : string []; } async function detectCrisisSignals ( text : string ): Promise < CrisisSignal []> { const signals : CrisisSignal [] = []; // Signal 1: NLP model const nlpResult = await mentalHealthNLP (text); if (nlpResult. score > 0.75 ) { signals. push ({ type : nlpResult. label , confidence : nlpResult. score , evidence : [ 'NLP model detection' ] }); } // Signal 2: Keyword matching (backup) const keywords = detectKeywords (text); if (keywords. length > 0 ) { signals. push ({ type : 'suicidal_ideation' , confidence : 0.6 , evidence : keywords }); } // Signal 3: Sentiment + context const sentiment = await sentimentAnalysis (text); const hasHopelessness = /no (hope|point|reason|future)/i . test (text); if (sentiment. score < - 0.8 && hasHopelessness) { signals. push ({ type : 'severe_distress' , confidence : 0.7 , evidence : [ 'Extreme negative sentiment + hopelessness language' ] }); } return signals; } Pattern 2: Safe Keyword Matching const CRISIS_KEYWORDS = { suicidal_ideation : [ /\b(kill|end|take)\s+(my|own)\s+life\b/i , /\bsuicide\b/i , /\bdon'?t\s+want\s+to\s+(live|be here|exist)\b/i , /\bbetter off dead\b/i ], self_harm : [ /\b(cut|cutting|hurt)\s+(myself|me)\b/i , /\bself[- ]harm\b/i ], substance_relapse : [ /\b(relapsed|used|drank)\s+(again|today)\b/i , /\bback on\s+(drugs|alcohol)\b/i ] }; function detectKeywords ( text : string ): string [] { const matches : string [] = []; for ( const [ type , patterns] of Object . entries ( CRISIS_KEYWORDS )) { for ( const pattern of patterns) { if (pattern. test (text)) { matches. push ( type ); } } } return [... new Set (matches)]; // Deduplicate }
Keywords that activate this skill. Click one to copy it.

This skill does not provide trigger words.

The downloaded .skill package contains the following fields.
Field Description
formatFormat tag (skill/v1)
skill_idUnique skill ID
nameSkill name
versionVersion
descriptionDescription
categoryCategories (array)
trigger_wordsTrigger words
tagsTags
sourceSource
source_urlSource URL (this page)
exported_atExported at (set per download)
system_promptSystem prompt body
model_configModel config: provider / model / temperature / max_tokens / top_p
examplesExamples
install_guideImport guide for Coze / Dify / Claude / custom frameworks
The same skill can be exported in different platform formats.
.skill Standard format with system_prompt and model_config, ready for any agent framework Download
.skillpro Enhanced format with scripts, tools, dependencies and hooks Download
.json Plain JSON export with system_prompt and model parameters only Download
Coze Markdown with frontmatter, for Coze platform import Download
Dify Dify DSL, import directly after creating an app Download

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

验证码 --

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。