[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HW6YR2S41075HQBQWBC16":3,"skill-same:01M71HW6YR2S41075HQBQWBC16":105},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":60,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":6,"ownerHtmlUrl":65,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":66,"install":67,"resources":80},"01M71HW6YR2S41075HQBQWBC16","crisis-detection-intervention-ai",null,"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.","JSGforever\u002Fskillguard","JSGforever","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F85541948?v=4","01M71FQD3E132VMR5F4TAYX3YS","01M71FQD4DYW0XJ4XQ4YQH75Y9",2,"GPL-3.0","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"crisis","detection","crisis detection intervention ai","patterns","edit","safe","write","read","mental health","diagnosis","support","signals","activate","analysis","Bash","apps","clinical","medical","professional","communities","2026-11-10 10:12:30",false,"---\nname: crisis-detection-intervention-ai\ndescription: 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\n  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\n  analysis, medical diagnosis, or replacing professional help.\nallowed-tools: Read,Write,Edit,Bash(npm:*)\nmetadata:\n  category: Lifestyle & Personal\n  tags:\n  - crisis\n  - detection\n  - intervention\n  - crisis-detection\n  - suicide-prevention\n  pairs-with:\n  - skill: crisis-response-protocol\n    reason: Detection identifies the crisis; response protocol determines the safe intervention\n  - skill: sober-addict-protector\n    reason: Relapse crisis signals require the same NLP detection patterns as general crisis detection\n  - skill: clinical-diagnostic-reasoning\n    reason: Bias-aware clinical reasoning improves accuracy of crisis signal classification\n---\n\n# Crisis Detection & Intervention AI\n\nExpert in detecting mental health crises and implementing safe, ethical intervention protocols.\n\n## ⚠️ ETHICAL DISCLAIMER\n\n**This skill assists with crisis detection, NOT crisis response**.\n\n✅ **Appropriate uses**:\n- Flagging concerning content for human review\n- Connecting users to professional resources\n- Escalating to crisis counselors\n- Providing immediate hotline information\n\n❌ **NOT a substitute for**:\n- Licensed therapists\n- Emergency services (911)\n- Medical diagnosis\n- Professional mental health treatment\n\n**Always provide crisis hotlines**: National Suicide Prevention Lifeline: 988\n\n---\n\n## When to Use\n\n✅ **Use for**:\n- Mental health journaling apps\n- Recovery community platforms\n- Support group monitoring\n- Online therapy platforms\n- Crisis text line integration\n\n❌ **NOT for**:\n- General sentiment analysis (use standard tools)\n- Medical diagnosis (not qualified)\n- Automated responses without human review\n- Replacing professional crisis counselors\n\n## Quick Decision Tree\n\n```\nDetected concerning content?\n├── Immediate danger? → Escalate to crisis counselor + show 988\n├── Suicidal ideation? → Flag for review + show resources\n├── Substance relapse? → Connect to sponsor + resources\n├── Self-harm mention? → Gentle check-in + resources\n└── General distress? → Supportive response + resources\n```\n\n---\n\n## Technology Selection\n\n### NLP Models for Mental Health (2024)\n\n| Model | Best For | Accuracy | Latency |\n|-------|----------|----------|---------|\n| MentalBERT | Mental health text | 89% | 50ms |\n| GPT-4 + Few-shot | Crisis detection | 92% | 200ms |\n| RoBERTa-Mental | Depression detection | 87% | 40ms |\n| Custom Fine-tuned BERT | Domain-specific | 90%+ | 60ms |\n\n**Timeline**:\n- 2019: BERT fine-tuned for mental health\n- 2021: MentalBERT released\n- 2023: GPT-4 shows strong zero-shot crisis detection\n- 2024: Specialized models for specific conditions\n\n---\n\n## Common Anti-Patterns\n\n### Anti-Pattern 1: Using Generic Sentiment Analysis\n\n**Novice thinking**: \"Negative sentiment = crisis\"\n\n**Problem**: Mental health language is nuanced, context-dependent.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Generic sentiment misses mental health signals\nconst sentiment = analyzeSentiment(text);\n\nif (sentiment.score \u003C -0.5) {\n  alertCrisis();  \u002F\u002F Too broad!\n}\n```\n\n**Why wrong**: \"I'm tired\" vs \"I'm tired of living\" - different meanings, same sentiment.\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Mental health-specific model\nimport { pipeline } from '@huggingface\u002Ftransformers';\n\nconst detector = await pipeline('text-classification', 'mental\u002Fbert-base-uncased');\n\nconst result = await detector(text, {\n  labels: ['suicidal_ideation', 'self_harm', 'substance_relapse', 'safe']\n});\n\nif (result[0].label === 'suicidal_ideation' && result[0].score > 0.8) {\n  await escalateToCrisisCounselor({\n    text,\n    confidence: result[0].score,\n    timestamp: Date.now()\n  });\n\n  \u002F\u002F IMMEDIATELY show crisis resources\n  showCrisisResources({\n    phone: '988',\n    text: 'Text \"HELLO\" to 741741',\n    chat: 'https:\u002F\u002F988lifeline.org\u002Fchat'\n  });\n}\n```\n\n**Timeline context**:\n- 2015: Rule-based keyword matching\n- 2020: BERT fine-tuning for mental health\n- 2024: Multi-label models with context understanding\n\n---\n\n### Anti-Pattern 2: Automated Responses Without Human Review\n\n**Problem**: AI cannot replace empathy, may escalate distress.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ AI auto-responds to crisis\nif (isCrisis(text)) {\n  await sendMessage(userId, \"I'm concerned about you. Are you okay?\");\n}\n```\n\n**Why wrong**:\n- Feels robotic, invalidating\n- May increase distress\n- No human judgment\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Flag for human review, show resources\nif (isCrisis(text)) {\n  \u002F\u002F 1. Flag for counselor review\n  await flagForReview({\n    userId,\n    text,\n    severity: 'high',\n    detectedAt: Date.now(),\n    requiresImmediate: true\n  });\n\n  \u002F\u002F 2. Notify on-call counselor\n  await notifyOnCallCounselor({\n    userId,\n    summary: 'Suicidal ideation detected',\n    urgency: 'immediate'\n  });\n\n  \u002F\u002F 3. Show resources (no AI message)\n  await showInAppResources({\n    type: 'crisis_support',\n    resources: [\n      { name: '988 Suicide & Crisis Lifeline', link: 'tel:988' },\n      { name: 'Crisis Text Line', link: 'sms:741741' },\n      { name: 'Chat Now', link: 'https:\u002F\u002F988lifeline.org\u002Fchat' }\n    ]\n  });\n\n  \u002F\u002F 4. DO NOT send automated \"are you okay\" message\n}\n```\n\n**Human review flow**:\n```\nAI Detection → Flag → On-call counselor notified → Human reaches out\n```\n\n---\n\n### Anti-Pattern 3: Not Providing Immediate Resources\n\n**Problem**: User in crisis needs help NOW, not later.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Just flags, no immediate help\nif (isCrisis(text)) {\n  await logCrisisEvent(userId, text);\n  \u002F\u002F User left with no resources\n}\n```\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Immediate resources + escalation\nif (isCrisis(text)) {\n  \u002F\u002F Show resources IMMEDIATELY (blocking modal)\n  await showCrisisModal({\n    title: 'Resources Available',\n    resources: [\n      {\n        name: '988 Suicide & Crisis Lifeline',\n        description: 'Free, confidential support 24\u002F7',\n        action: 'tel:988',\n        type: 'phone'\n      },\n      {\n        name: 'Crisis Text Line',\n        description: 'Text support with trained counselor',\n        action: 'sms:741741',\n        message: 'HELLO',\n        type: 'text'\n      },\n      {\n        name: 'Chat with counselor',\n        description: 'Online chat support',\n        action: 'https:\u002F\u002F988lifeline.org\u002Fchat',\n        type: 'web'\n      }\n    ],\n    dismissible: true,  \u002F\u002F User can close, but resources shown first\n    analytics: { event: 'crisis_resources_shown', source: 'ai_detection' }\n  });\n\n  \u002F\u002F Then flag for follow-up\n  await flagForReview({ userId, text, severity: 'high' });\n}\n```\n\n---\n\n### Anti-Pattern 4: Storing Crisis Data Insecurely\n\n**Problem**: Crisis content is extremely sensitive PHI.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Plain text storage\nawait db.logs.insert({\n  userId: user.id,\n  type: 'crisis',\n  content: text,  \u002F\u002F Stored in plain text!\n  timestamp: Date.now()\n});\n```\n\n**Why wrong**: Data breach exposes most vulnerable moments.\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Encrypted, access-logged, auto-deleted\nimport { encrypt, decrypt } from '.\u002Fencryption';\n\nawait db.crisisEvents.insert({\n  id: generateId(),\n  userId: hashUserId(user.id),  \u002F\u002F Hash, not plain ID\n  contentHash: hashContent(text),  \u002F\u002F For deduplication only\n  encryptedContent: encrypt(text, process.env.CRISIS_DATA_KEY),\n  detectedAt: Date.now(),\n  reviewedAt: null,\n  reviewedBy: null,\n  autoDeleteAt: Date.now() + (30 * 24 * 60 * 60 * 1000),  \u002F\u002F 30 days\n  accessLog: []\n});\n\n\u002F\u002F Log all access\nawait logAccess({\n  eventId: crisisEvent.id,\n  accessedBy: counselorId,\n  accessedAt: Date.now(),\n  reason: 'Review for follow-up',\n  ipAddress: hashedIp\n});\n\n\u002F\u002F Auto-delete after retention period\nschedule.daily(() => {\n  db.crisisEvents.deleteMany({\n    autoDeleteAt: { $lt: Date.now() }\n  });\n});\n```\n\n**HIPAA Requirements**:\n- Encryption at rest and in transit\n- Access logging\n- Auto-deletion after retention period\n- Minimum necessary access\n\n---\n\n### Anti-Pattern 5: No Escalation Protocol\n\n**Problem**: No clear path from detection to human intervention.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Flags crisis but no escalation process\nif (isCrisis(text)) {\n  await db.flags.insert({ userId, text, flaggedAt: Date.now() });\n  \u002F\u002F Now what? Who responds?\n}\n```\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Clear escalation protocol\nenum CrisisSeverity {\n  LOW = 'low',        \u002F\u002F Distress, no immediate danger\n  MEDIUM = 'medium',  \u002F\u002F Self-harm thoughts, no plan\n  HIGH = 'high',      \u002F\u002F Suicidal ideation with plan\n  IMMEDIATE = 'immediate'  \u002F\u002F Imminent danger\n}\n\nasync function escalateCrisis(detection: CrisisDetection): Promise\u003Cvoid> {\n  const severity = assessSeverity(detection);\n\n  switch (severity) {\n    case CrisisSeverity.IMMEDIATE:\n      \u002F\u002F Notify on-call counselor (push notification)\n      await notifyOnCall({\n        userId: detection.userId,\n        severity,\n        requiresResponse: 'immediate',\n        text: detection.text\n      });\n\n      \u002F\u002F Send SMS to backup on-call if no response in 5 min\n      setTimeout(async () => {\n        if (!await hasResponded(detection.id)) {\n          await notifyBackupOnCall(detection);\n        }\n      }, 5 * 60 * 1000);\n\n      \u002F\u002F Show 988 modal (blocking)\n      await show988Modal(detection.userId);\n      break;\n\n    case CrisisSeverity.HIGH:\n      \u002F\u002F Notify on-call counselor (email + push)\n      await notifyOnCall({ severity, requiresResponse: '1 hour' });\n\n      \u002F\u002F Show crisis resources\n      await showCrisisResources(detection.userId);\n      break;\n\n    case CrisisSeverity.MEDIUM:\n      \u002F\u002F Add to review queue for next business day\n      await addToReviewQueue({ priority: 'high' });\n\n      \u002F\u002F Suggest self-help resources\n      await suggestResources(detection.userId, 'coping_strategies');\n      break;\n\n    case CrisisSeverity.LOW:\n      \u002F\u002F Add to review queue\n      await addToReviewQueue({ priority: 'normal' });\n      break;\n  }\n\n  \u002F\u002F Always log for audit\n  await logEscalation({\n    detectionId: detection.id,\n    severity,\n    actions: ['notified_on_call', 'showed_resources'],\n    timestamp: Date.now()\n  });\n}\n```\n\n---\n\n## Implementation Patterns\n\n### Pattern 1: Multi-Signal Detection\n\n```typescript\ninterface CrisisSignal {\n  type: 'suicidal_ideation' | 'self_harm' | 'substance_relapse' | 'severe_distress';\n  confidence: number;\n  evidence: string[];\n}\n\nasync function detectCrisisSignals(text: string): Promise\u003CCrisisSignal[]> {\n  const signals: CrisisSignal[] = [];\n\n  \u002F\u002F Signal 1: NLP model\n  const nlpResult = await mentalHealthNLP(text);\n  if (nlpResult.score > 0.75) {\n    signals.push({\n      type: nlpResult.label,\n      confidence: nlpResult.score,\n      evidence: ['NLP model detection']\n    });\n  }\n\n  \u002F\u002F Signal 2: Keyword matching (backup)\n  const keywords = detectKeywords(text);\n  if (keywords.length > 0) {\n    signals.push({\n      type: 'suicidal_ideation',\n      confidence: 0.6,\n      evidence: keywords\n    });\n  }\n\n  \u002F\u002F Signal 3: Sentiment + context\n  const sentiment = await sentimentAnalysis(text);\n  const hasHopelessness = \u002Fno (hope|point|reason|future)\u002Fi.test(text);\n\n  if (sentiment.score \u003C -0.8 && hasHopelessness) {\n    signals.push({\n      type: 'severe_distress',\n      confidence: 0.7,\n      evidence: ['Extreme negative sentiment + hopelessness language']\n    });\n  }\n\n  return signals;\n}\n```\n\n### Pattern 2: Safe Keyword Matching\n\n```typescript\nconst CRISIS_KEYWORDS = {\n  suicidal_ideation: [\n    \u002F\\b(kill|end|take)\\s+(my|own)\\s+life\\b\u002Fi,\n    \u002F\\bsuicide\\b\u002Fi,\n    \u002F\\bdon'?t\\s+want\\s+to\\s+(live|be here|exist)\\b\u002Fi,\n    \u002F\\bbetter off dead\\b\u002Fi\n  ],\n  self_harm: [\n    \u002F\\b(cut|cutting|hurt)\\s+(myself|me)\\b\u002Fi,\n    \u002F\\bself[- ]harm\\b\u002Fi\n  ],\n  substance_relapse: [\n    \u002F\\b(relapsed|used|drank)\\s+(again|today)\\b\u002Fi,\n    \u002F\\bback on\\s+(drugs|alcohol)\\b\u002Fi\n  ]\n};\n\nfunction detectKeywords(text: string): string[] {\n  const matches: string[] = [];\n\n  for (const [type, patterns] of Object.entries(CRISIS_KEYWORDS)) {\n    for (const pattern of patterns) {\n      if (pattern.test(text)) {\n        matches.push(type);\n      }\n    }\n  }\n\n  return [...new Set(matches)];  \u002F\u002F Deduplicate\n}\n```\n\n### Pattern 3: GPT-4 Few-Shot Detection\n\n```typescript\nimport Anthropic from '@anthropic-ai\u002Fsdk';\n\nconst client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });\n\nasync function detectWithClaude(text: string): Promise\u003CCrisisDetection> {\n  const response = await client.messages.create({\n    model: 'claude-3-5-sonnet-20241022',\n    max_tokens: 200,\n    messages: [{\n      role: 'user',\n      content: `You are a mental health crisis detection system. Analyze this text for crisis signals.\n\nText: \"${text}\"\n\nRespond in JSON:\n{\n  \"is_crisis\": boolean,\n  \"severity\": \"none\" | \"low\" | \"medium\" | \"high\" | \"immediate\",\n  \"signals\": [\"suicidal_ideation\" | \"self_harm\" | \"substance_relapse\"],\n  \"confidence\": 0.0-1.0,\n  \"reasoning\": \"brief explanation\"\n}\n\nExamples:\n- \"I'm thinking about ending it all\" → { \"is_crisis\": true, \"severity\": \"high\", \"signals\": [\"suicidal_ideation\"], \"confidence\": 0.95 }\n- \"I relapsed today, feeling ashamed\" → { \"is_crisis\": true, \"severity\": \"medium\", \"signals\": [\"substance_relapse\"], \"confidence\": 0.9 }\n- \"Had a tough day at work\" → { \"is_crisis\": false, \"severity\": \"none\", \"signals\": [], \"confidence\": 0.95 }`\n    }]\n  });\n\n  const result = JSON.parse(response.content[0].text);\n  return result;\n}\n```\n\n---\n\n## Production Checklist\n\n```\n□ Mental health-specific NLP model (not generic sentiment)\n□ Human review required before automated action\n□ Crisis resources shown IMMEDIATELY (988, text line)\n□ Clear escalation protocol (severity-based)\n□ Encrypted storage of crisis content\n□ Access logging for all crisis data access\n□ Auto-deletion after retention period (30 days)\n□ On-call counselor notification system\n□ Backup notification if no response\n□ False positive tracking (improve model)\n□ Regular model evaluation with experts\n□ Ethics review board approval\n```\n\n---\n\n## When to Use vs Avoid\n\n| Scenario | Appropriate? |\n|----------|--------------|\n| Journaling app for recovery | ✅ Yes - monitor for relapses |\n| Support group chat | ✅ Yes - flag concerning posts |\n| Therapy platform messages | ✅ Yes - assist therapists |\n| Public social media | ❌ No - privacy concerns |\n| Replace human counselors | ❌ Never - AI assists, doesn't replace |\n| Medical diagnosis | ❌ Never - not qualified |\n\n---\n\n## References\n\n- `\u002Freferences\u002Fmental-health-nlp.md` - NLP models for mental health\n- `\u002Freferences\u002Fintervention-protocols.md` - Evidence-based intervention strategies\n- `\u002Freferences\u002Fcrisis-resources.md` - Hotlines, text lines, and support services\n\n## Scripts\n\n- `scripts\u002Fcrisis_detector.ts` - Real-time crisis detection system\n- `scripts\u002Fmodel_evaluator.ts` - Evaluate detection accuracy with test cases\n\n---\n\n**This skill guides**: Crisis detection | Mental health NLP | Intervention protocols | Suicide prevention | HIPAA compliance | Ethical AI\n","# Crisis Detection & Intervention AI\n\nExpert in detecting mental health crises and implementing safe, ethical intervention protocols.\n\n## ⚠️ ETHICAL DISCLAIMER\n\n**This skill assists with crisis detection, NOT crisis response**.\n\n✅ **Appropriate uses**:\n- Flagging concerning content for human review\n- Connecting users to professional resources\n- Escalating to crisis counselors\n- Providing immediate hotline information\n\n❌ **NOT a substitute for**:\n- Licensed therapists\n- Emergency services (911)\n- Medical diagnosis\n- Professional mental health treatment\n\n**Always provide crisis hotlines**: National Suicide Prevention Lifeline: 988\n\n---\n\n## When to Use\n\n✅ **Use for**:\n- Mental health journaling apps\n- Recovery community platforms\n- Support group monitoring\n- Online therapy platforms\n- Crisis text line integration\n\n❌ **NOT for**:\n- General sentiment analysis (use standard tools)\n- Medical diagnosis (not qualified)\n- Automated responses without human review\n- Replacing professional crisis counselors\n\n## Quick Decision Tree\n\n```\nDetected concerning content?\n├── Immediate danger? → Escalate to crisis counselor + show 988\n├── Suicidal ideation? → Flag for review + show resources\n├── Substance relapse? → Connect to sponsor + resources\n├── Self-harm mention? → Gentle check-in + resources\n└── General distress? → Supportive response + resources\n```\n\n---\n\n## Technology Selection\n\n### NLP Models for Mental Health (2024)\n\n| Model | Best For | Accuracy | Latency |\n|-------|----------|----------|---------|\n| MentalBERT | Mental health text | 89% | 50ms |\n| GPT-4 + Few-shot | Crisis detection | 92% | 200ms |\n| RoBERTa-Mental | Depression detection | 87% | 40ms |\n| Custom Fine-tuned BERT | Domain-specific | 90%+ | 60ms |\n\n**Timeline**:\n- 2019: BERT fine-tuned for mental health\n- 2021: MentalBERT released\n- 2023: GPT-4 shows strong zero-shot crisis detection\n- 2024: Specialized models for specific conditions\n\n---\n\n## Common Anti-Patterns\n\n### Anti-Pattern 1: Using Generic Sentiment Analysis\n\n**Novice thinking**: \"Negative sentiment = crisis\"\n\n**Problem**: Mental health language is nuanced, context-dependent.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Generic sentiment misses mental health signals\nconst sentiment = analyzeSentiment(text);\n\nif (sentiment.score \u003C -0.5) {\n  alertCrisis();  \u002F\u002F Too broad!\n}\n```\n\n**Why wrong**: \"I'm tired\" vs \"I'm tired of living\" - different meanings, same sentiment.\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Mental health-specific model\nimport { pipeline } from '@huggingface\u002Ftransformers';\n\nconst detector = await pipeline('text-classification', 'mental\u002Fbert-base-uncased');\n\nconst result = await detector(text, {\n  labels: ['suicidal_ideation', 'self_harm', 'substance_relapse', 'safe']\n});\n\nif (result[0].label === 'suicidal_ideation' && result[0].score > 0.8) {\n  await escalateToCrisisCounselor({\n    text,\n    confidence: result[0].score,\n    timestamp: Date.now()\n  });\n\n  \u002F\u002F IMMEDIATELY show crisis resources\n  showCrisisResources({\n    phone: '988',\n    text: 'Text \"HELLO\" to 741741',\n    chat: 'https:\u002F\u002F988lifeline.org\u002Fchat'\n  });\n}\n```\n\n**Timeline context**:\n- 2015: Rule-based keyword matching\n- 2020: BERT fine-tuning for mental health\n- 2024: Multi-label models with context understanding\n\n---\n\n### Anti-Pattern 2: Automated Responses Without Human Review\n\n**Problem**: AI cannot replace empathy, may escalate distress.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ AI auto-responds to crisis\nif (isCrisis(text)) {\n  await sendMessage(userId, \"I'm concerned about you. Are you okay?\");\n}\n```\n\n**Why wrong**:\n- Feels robotic, invalidating\n- May increase distress\n- No human judgment\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Flag for human review, show resources\nif (isCrisis(text)) {\n  \u002F\u002F 1. Flag for counselor review\n  await flagForReview({\n    userId,\n    text,\n    severity: 'high',\n    detectedAt: Date.now(),\n    requiresImmediate: true\n  });\n\n  \u002F\u002F 2. Notify on-call counselor\n  await notifyOnCallCounselor({\n    userId,\n    summary: 'Suicidal ideation detected',\n    urgency: 'immediate'\n  });\n\n  \u002F\u002F 3. Show resources (no AI message)\n  await showInAppResources({\n    type: 'crisis_support',\n    resources: [\n      { name: '988 Suicide & Crisis Lifeline', link: 'tel:988' },\n      { name: 'Crisis Text Line', link: 'sms:741741' },\n      { name: 'Chat Now', link: 'https:\u002F\u002F988lifeline.org\u002Fchat' }\n    ]\n  });\n\n  \u002F\u002F 4. DO NOT send automated \"are you okay\" message\n}\n```\n\n**Human review flow**:\n```\nAI Detection → Flag → On-call counselor notified → Human reaches out\n```\n\n---\n\n### Anti-Pattern 3: Not Providing Immediate Resources\n\n**Problem**: User in crisis needs help NOW, not later.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Just flags, no immediate help\nif (isCrisis(text)) {\n  await logCrisisEvent(userId, text);\n  \u002F\u002F User left with no resources\n}\n```\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Immediate resources + escalation\nif (isCrisis(text)) {\n  \u002F\u002F Show resources IMMEDIATELY (blocking modal)\n  await showCrisisModal({\n    title: 'Resources Available',\n    resources: [\n      {\n        name: '988 Suicide & Crisis Lifeline',\n        description: 'Free, confidential support 24\u002F7',\n        action: 'tel:988',\n        type: 'phone'\n      },\n      {\n        name: 'Crisis Text Line',\n        description: 'Text support with trained counselor',\n        action: 'sms:741741',\n        message: 'HELLO',\n        type: 'text'\n      },\n      {\n        name: 'Chat with counselor',\n        description: 'Online chat support',\n        action: 'https:\u002F\u002F988lifeline.org\u002Fchat',\n        type: 'web'\n      }\n    ],\n    dismissible: true,  \u002F\u002F User can close, but resources shown first\n    analytics: { event: 'crisis_resources_shown', source: 'ai_detection' }\n  });\n\n  \u002F\u002F Then flag for follow-up\n  await flagForReview({ userId, text, severity: 'high' });\n}\n```\n\n---\n\n### Anti-Pattern 4: Storing Crisis Data Insecurely\n\n**Problem**: Crisis content is extremely sensitive PHI.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Plain text storage\nawait db.logs.insert({\n  userId: user.id,\n  type: 'crisis',\n  content: text,  \u002F\u002F Stored in plain text!\n  timestamp: Date.now()\n});\n```\n\n**Why wrong**: Data breach exposes most vulnerable moments.\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Encrypted, access-logged, auto-deleted\nimport { encrypt, decrypt } from '.\u002Fencryption';\n\nawait db.crisisEvents.insert({\n  id: generateId(),\n  userId: hashUserId(user.id),  \u002F\u002F Hash, not plain ID\n  contentHash: hashContent(text),  \u002F\u002F For deduplication only\n  encryptedContent: encrypt(text, process.env.CRISIS_DATA_KEY),\n  detectedAt: Date.now(),\n  reviewedAt: null,\n  reviewedBy: null,\n  autoDeleteAt: Date.now() + (30 * 24 * 60 * 60 * 1000),  \u002F\u002F 30 days\n  accessLog: []\n});\n\n\u002F\u002F Log all access\nawait logAccess({\n  eventId: crisisEvent.id,\n  accessedBy: counselorId,\n  accessedAt: Date.now(),\n  reason: 'Review for follow-up',\n  ipAddress: hashedIp\n});\n\n\u002F\u002F Auto-delete after retention period\nschedule.daily(() => {\n  db.crisisEvents.deleteMany({\n    autoDeleteAt: { $lt: Date.now() }\n  });\n});\n```\n\n**HIPAA Requirements**:\n- Encryption at rest and in transit\n- Access logging\n- Auto-deletion after retention period\n- Minimum necessary access\n\n---\n\n### Anti-Pattern 5: No Escalation Protocol\n\n**Problem**: No clear path from detection to human intervention.\n\n**Wrong approach**:\n```typescript\n\u002F\u002F ❌ Flags crisis but no escalation process\nif (isCrisis(text)) {\n  await db.flags.insert({ userId, text, flaggedAt: Date.now() });\n  \u002F\u002F Now what? Who responds?\n}\n```\n\n**Correct approach**:\n```typescript\n\u002F\u002F ✅ Clear escalation protocol\nenum CrisisSeverity {\n  LOW = 'low',        \u002F\u002F Distress, no immediate danger\n  MEDIUM = 'medium',  \u002F\u002F Self-harm thoughts, no plan\n  HIGH = 'high',      \u002F\u002F Suicidal ideation with plan\n  IMMEDIATE = 'immediate'  \u002F\u002F Imminent danger\n}\n\nasync function escalateCrisis(detection: CrisisDetection): Promise\u003Cvoid> {\n  const severity = assessSeverity(detection);\n\n  switch (severity) {\n    case CrisisSeverity.IMMEDIATE:\n      \u002F\u002F Notify on-call counselor (push notification)\n      await notifyOnCall({\n        userId: detection.userId,\n        severity,\n        requiresResponse: 'immediate',\n        text: detection.text\n      });\n\n      \u002F\u002F Send SMS to backup on-call if no response in 5 min\n      setTimeout(async () => {\n        if (!await hasResponded(detection.id)) {\n          await notifyBackupOnCall(detection);\n        }\n      }, 5 * 60 * 1000);\n\n      \u002F\u002F Show 988 modal (blocking)\n      await show988Modal(detection.userId);\n      break;\n\n    case CrisisSeverity.HIGH:\n      \u002F\u002F Notify on-call counselor (email + push)\n      await notifyOnCall({ severity, requiresResponse: '1 hour' });\n\n      \u002F\u002F Show crisis resources\n      await showCrisisResources(detection.userId);\n      break;\n\n    case CrisisSeverity.MEDIUM:\n      \u002F\u002F Add to review queue for next business day\n      await addToReviewQueue({ priority: 'high' });\n\n      \u002F\u002F Suggest self-help resources\n      await suggestResources(detection.userId, 'coping_strategies');\n      break;\n\n    case CrisisSeverity.LOW:\n      \u002F\u002F Add to review queue\n      await addToReviewQueue({ priority: 'normal' });\n      break;\n  }\n\n  \u002F\u002F Always log for audit\n  await logEscalation({\n    detectionId: detection.id,\n    severity,\n    actions: ['notified_on_call', 'showed_resources'],\n    timestamp: Date.now()\n  });\n}\n```\n\n---\n\n## Implementation Patterns\n\n### Pattern 1: Multi-Signal Detection\n\n```typescript\ninterface CrisisSignal {\n  type: 'suicidal_ideation' | 'self_harm' | 'substance_relapse' | 'severe_distress';\n  confidence: number;\n  evidence: string[];\n}\n\nasync function detectCrisisSignals(text: string): Promise\u003CCrisisSignal[]> {\n  const signals: CrisisSignal[] = [];\n\n  \u002F\u002F Signal 1: NLP model\n  const nlpResult = await mentalHealthNLP(text);\n  if (nlpResult.score > 0.75) {\n    signals.push({\n      type: nlpResult.label,\n      confidence: nlpResult.score,\n      evidence: ['NLP model detection']\n    });\n  }\n\n  \u002F\u002F Signal 2: Keyword matching (backup)\n  const keywords = detectKeywords(text);\n  if (keywords.length > 0) {\n    signals.push({\n      type: 'suicidal_ideation',\n      confidence: 0.6,\n      evidence: keywords\n    });\n  }\n\n  \u002F\u002F Signal 3: Sentiment + context\n  const sentiment = await sentimentAnalysis(text);\n  const hasHopelessness = \u002Fno (hope|point|reason|future)\u002Fi.test(text);\n\n  if (sentiment.score \u003C -0.8 && hasHopelessness) {\n    signals.push({\n      type: 'severe_distress',\n      confidence: 0.7,\n      evidence: ['Extreme negative sentiment + hopelessness language']\n    });\n  }\n\n  return signals;\n}\n```\n\n### Pattern 2: Safe Keyword Matching\n\n```typescript\nconst CRISIS_KEYWORDS = {\n  suicidal_ideation: [\n    \u002F\\b(kill|end|take)\\s+(my|own)\\s+life\\b\u002Fi,\n    \u002F\\bsuicide\\b\u002Fi,\n    \u002F\\bdon'?t\\s+want\\s+to\\s+(live|be here|exist)\\b\u002Fi,\n    \u002F\\bbetter off dead\\b\u002Fi\n  ],\n  self_harm: [\n    \u002F\\b(cut|cutting|hurt)\\s+(myself|me)\\b\u002Fi,\n    \u002F\\bself[- ]harm\\b\u002Fi\n  ],\n  substance_relapse: [\n    \u002F\\b(relapsed|used|drank)\\s+(again|today)\\b\u002Fi,\n    \u002F\\bback on\\s+(drugs|alcohol)\\b\u002Fi\n  ]\n};\n\nfunction detectKeywords(text: string): string[] {\n  const matches: string[] = [];\n\n  for (const [type, patterns] of Object.entries(CRISIS_KEYWORDS)) {\n    for (const pattern of patterns) {\n      if (pattern.test(text)) {\n        matches.push(type);\n      }\n    }\n  }\n\n  return [...new Set(matches)];  \u002F\u002F Deduplicate\n}\n```\n\n### Pattern 3: GPT-4 Few-Shot Detection\n\n```typescript\nimport Anthropic from '@anthropic-ai\u002Fsdk';\n\nconst client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });\n\nasync function detectWithClaude(text: string): Promise\u003CCrisisDetection> {\n  const response = await client.messages.create({\n    model: 'claude-3-5-sonnet-20241022',\n    max_tokens: 200,\n    messages: [{\n      role: 'user',\n      content: `You are a mental health crisis detection system. Analyze this text for crisis signals.\n\nText: \"${text}\"\n\nRespond in JSON:\n{\n  \"is_crisis\": boolean,\n  \"severity\": \"none\" | \"low\" | \"medium\" | \"high\" | \"immediate\",\n  \"signals\": [\"suicidal_ideation\" | \"self_harm\" | \"substance_relapse\"],\n  \"confidence\": 0.0-1.0,\n  \"reasoning\": \"brief explanation\"\n}\n\nExamples:\n- \"I'm thinking about ending it all\" → { \"is_crisis\": true, \"severity\": \"high\", \"signals\": [\"suicidal_ideation\"], \"confidence\": 0.95 }\n- \"I relapsed today, feeling ashamed\" → { \"is_crisis\": true, \"severity\": \"medium\", \"signals\": [\"substance_relapse\"], \"confidence\": 0.9 }\n- \"Had a tough day at work\" → { \"is_crisis\": false, \"severity\": \"none\", \"signals\": [], \"confidence\": 0.95 }`\n    }]\n  });\n\n  const result = JSON.parse(response.content[0].text);\n  return result;\n}\n```\n\n---\n\n## Production Checklist\n\n```\n□ Mental health-specific NLP model (not generic sentiment)\n□ Human review required before automated action\n□ Crisis resources shown IMMEDIATELY (988, text line)\n□ Clear escalation protocol (severity-based)\n□ Encrypted storage of crisis content\n□ Access logging for all crisis data access\n□ Auto-deletion after retention period (30 days)\n□ On-call counselor notification system\n□ Backup notification if no response\n□ False positive tracking (improve model)\n□ Regular model evaluation with experts\n□ Ethics review board approval\n```\n\n---\n\n## When to Use vs Avoid\n\n| Scenario | Appropriate? |\n|----------|--------------|\n| Journaling app for recovery | ✅ Yes - monitor for relapses |\n| Support group chat | ✅ Yes - flag concerning posts |\n| Therapy platform messages | ✅ Yes - assist therapists |\n| Public social media | ❌ No - privacy concerns |\n| Replace human counselors | ❌ Never - AI assists, doesn't replace |\n| Medical diagnosis | ❌ Never - not qualified |\n\n---\n\n## References\n\n- `\u002Freferences\u002Fmental-health-nlp.md` - NLP models for mental health\n- `\u002Freferences\u002Fintervention-protocols.md` - Evidence-based intervention strategies\n- `\u002Freferences\u002Fcrisis-resources.md` - Hotlines, text lines, and support services\n\n## Scripts\n\n- `scripts\u002Fcrisis_detector.ts` - Real-time crisis detection system\n- `scripts\u002Fmodel_evaluator.ts` - Evaluate detection accuracy with test cases\n\n---\n\n**This skill guides**: Crisis detection | Mental health NLP | Intervention protocols | Suicide prevention | HIPAA compliance | Ethical AI\n",{"name":5,"metadata":43,"description":7,"allowed-tools":59},{"tags":44,"category":48,"pairs-with":49},[18,19,45,46,47],"intervention","crisis-detection","suicide-prevention","Lifestyle & Personal",[50,53,56],{"skill":51,"reason":52},"crisis-response-protocol","Detection identifies the crisis; response protocol determines the safe intervention",{"skill":54,"reason":55},"sober-addict-protector","Relapse crisis signals require the same NLP detection patterns as general crisis detection",{"skill":57,"reason":58},"clinical-diagnostic-reasoning","Bias-aware clinical reasoning improves accuracy of crisis signal classification","Read,Write,Edit,Bash(npm:*)","main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add JSGforever\u002Fskillguard --skill crisis-detection-intervention-ai",{"tool":73,"command":74},"bunx","bunx skills add JSGforever\u002Fskillguard --skill crisis-detection-intervention-ai",{"tool":76,"command":77},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill crisis-detection-intervention-ai","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai\u002FSKILL.md",true,[81,87,91,95,101],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fcrisis-resources.md","REFERENCE","参考文档",14127,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai\u002Freferences\u002Fcrisis-resources.md",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fintervention-protocols.md",12751,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai\u002Freferences\u002Fintervention-protocols.md",{"path":92,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fmental-health-nlp.md",3954,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai\u002Freferences\u002Fmental-health-nlp.md",{"path":96,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":99,"sourceHtmlUrl":100},"scripts\u002Fcrisis_detector.ts","SCRIPT","脚本",10988,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai\u002Fscripts\u002Fcrisis_detector.ts",{"path":102,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":103,"sourceHtmlUrl":104},"scripts\u002Fmodel_evaluator.ts",13243,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--crisis-detection-intervention-ai\u002Fscripts\u002Fmodel_evaluator.ts",[106,137,153,177,199,219],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":117,"publishedAt":38},"01M71HY2SNXBA9Q00WZDTZQ31Z","skillguard-codex-scanner","Hybrid deterministic+LLM agent-skill security scanner. Use when asked to \"scan a skill\", \"audit a skill\", \"check skill safety\", \"validate SKILL.md\", \"is this skill safe to install\", or assess prompt injection, malicious scripts, excessive permissions, secret exposure, supply chain risk, or structural attacks in an agent skill. Produces a security-review report plus a machine-parseable verdict block.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fsrc\u002Fskillguard\u002Fstatic_scanner\u002Fskillguard-codex-scanner\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,23],"scanner","skillguard codex scanner","skillguard","codex","chain","skill security","security-review","review report","structural","secret","prompt injection","security scanner","when","review","malicious","permissions","exposure","audit","scripts",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":141,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":149,"publishedAt":38},"01M71HY0SPKTT3S27BC2HPAC5M","data-exfiltrator","Analyzes data files","MIT","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Fsmoke-one-skill\u002Fasset1__cisco-ai-defense--data-exfiltrator\u002FSKILL.md",[144],{"categoryNo":145,"categoryName":146,"taxonomyType":147,"taxonomyTypeDesc":148},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[150,151,152],"data","data exfiltrator","files",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":38},"01M71HXVS9EMN44BGDW215FZ72","real-time-collaboration-engine","Build real-time collaborative editing with WebSockets, OT\u002FCRDT conflict resolution, and presence awareness. Implements cursor tracking, optimistic updates, and offline sync. Use for collaborative editors, whiteboards, video editing. Activate on \"real-time collaboration\", \"WebSocket sync\", \"multiplayer editing\", \"CRDT\", \"presence awareness\". NOT for simple chat, request-response APIs, or single-user apps.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--real-time-collaboration-engine\u002FSKILL.md",[],[160,161,162,163,164,165,166,167,168,169,170,171,172,33,173,32,30,174,175,176],"time","real time collaboration engine","real time collaboration","collaboration","engine","real time","Video","reliability","video editing","performance","conflict resolution","presence","access","updates","optimizer","react","streaming",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":186,"publishedAt":38},"01M71HXP6CTY4KFN0QVMMN0V7J","react-performance-optimizer","Optimize React apps for 60fps performance. Implements memoization, virtualization, code splitting, bundle optimization. Use for slow renders, large lists, bundle bloat. Activate on \"React performance\", \"slow render\", \"useMemo\", \"bundle size\", \"virtualization\". NOT for backend optimization, non-React frameworks, or premature optimization.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--react-performance-optimizer\u002FSKILL.md",[183],{"categoryNo":184,"categoryName":185,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000009","前端开发",[169,187,174,175,188,189,190,191,192,193,160,194,195,33,32,196,30,176,197,198],"react performance optimizer","react performance","performance optimizer","app","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":206,"publishedAt":38},"01M71HXH7QXSQB4QTDZ7SP7YXQ","llm-streaming-response-handler","Build production LLM streaming UIs with Server-Sent Events, real-time token display, cancellation, error recovery. Handles OpenAI\u002FAnthropic\u002FClaude streaming APIs. Use for chatbots, AI assistants, real-time text generation. Activate on \"LLM streaming\", \"SSE\", \"token stream\", \"chat UI\", \"real-time AI\". NOT for batch processing, non-streaming APIs, or WebSocket bidirectional chat.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--llm-streaming-response-handler\u002FSKILL.md",[205],{"categoryNo":184,"categoryName":185,"taxonomyType":115,"taxonomyTypeDesc":116},[207,176,208,209,210,211,169,160,212,213,214,32,30,174,215,175,216,217,218,25],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server",{"skillNo":220,"name":221,"nameZh":6,"description":222,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":232,"publishedAt":38},"01M71HXCB0E1YRKYW1Y8T0Y106","github-actions-pipeline-builder","Build production CI\u002FCD pipelines with GitHub Actions. Implements matrix builds, caching, deployments, testing, security scanning. Use for automated testing, deployments, release workflows. Activate on \"GitHub Actions\", \"CI\u002FCD\", \"workflow\", \"deployment pipeline\", \"automated testing\". NOT for Jenkins\u002FCircleCI, manual deployments, or non-GitHub repositories.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--github-actions-pipeline-builder\u002FSKILL.md",[225,228,231],{"categoryNo":226,"categoryName":227,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":229,"categoryName":230,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[233,234,235,236,237,238,239,167,192,240,241,242,30,198,243,25,244,24,22,245],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","git"]