[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H96DN562ETN2GCB4YMPFXG":3,"skill-same:01M6H96DN562ETN2GCB4YMPFXG":74},{"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":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":73},"01M6H96DN562ETN2GCB4YMPFXG","twinmind-debug-bundle",null,"Collect comprehensive diagnostic information for TwinMind issues.\nUse when preparing support requests, investigating complex problems,\nor gathering evidence for bug reports.\nTrigger with phrases like \"twinmind debug\", \"twinmind diagnostics\",\n\"collect twinmind info\", \"twinmind support bundle\".","micsapp\u002Fmicstec-skills","micsapp","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F82411001?v=4","01M6GWCFQ6D3PV8EHNY62NN5VW","01M6GWCFVE1PA5HG0DKC7AMFJ3",4,"MIT","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fclaude-code\u002Fplugins-plus-skills\u002Fplugins\u002Fsaas-packs\u002Ftwinmind-pack\u002Fskills\u002Ftwinmind-debug-bundle\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"debug","twinmind debug bundle","bundle","evidence","for","information","trigger","io","info","reports","bug","openclaw","write","read","Bash","collect","issues","code","diagnostics","support","2026-11-10 10:12:30",false,"---\nname: twinmind-debug-bundle\ndescription: |\n  Collect comprehensive diagnostic information for TwinMind issues.\n  Use when preparing support requests, investigating complex problems,\n  or gathering evidence for bug reports.\n  Trigger with phrases like \"twinmind debug\", \"twinmind diagnostics\",\n  \"collect twinmind info\", \"twinmind support bundle\".\nallowed-tools: Read, Write, Bash(curl:*), Bash(npm:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\n---\n# TwinMind Debug Bundle\n\n## Overview\nCollect comprehensive diagnostic data to troubleshoot TwinMind issues.\n\n## Prerequisites\n- TwinMind extension or API configured\n- Access to browser developer tools\n- Command-line access (for API debugging)\n\n## Instructions\n\n### Step 1: Create Debug Bundle Script\n\n```typescript\n\u002F\u002F scripts\u002Ftwinmind-debug-bundle.ts\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\n\ninterface DebugBundle {\n  timestamp: string;\n  environment: EnvironmentInfo;\n  apiStatus: ApiStatus;\n  recentErrors: ErrorEntry[];\n  configuration: ConfigSnapshot;\n  networkTests: NetworkTest[];\n}\n\ninterface EnvironmentInfo {\n  nodeVersion: string;\n  platform: string;\n  arch: string;\n  osRelease: string;\n  timezone: string;\n  memory: {\n    total: number;\n    free: number;\n    used: number;\n  };\n}\n\ninterface ApiStatus {\n  healthy: boolean;\n  latencyMs: number;\n  endpoint: string;\n  responseHeaders?: Record\u003Cstring, string>;\n}\n\ninterface ErrorEntry {\n  timestamp: string;\n  type: string;\n  message: string;\n  stack?: string;\n  context?: Record\u003Cstring, any>;\n}\n\ninterface ConfigSnapshot {\n  apiKeyPresent: boolean;\n  apiKeyPrefix: string;\n  baseUrl: string;\n  timeout: number;\n  environment: string;\n}\n\ninterface NetworkTest {\n  endpoint: string;\n  reachable: boolean;\n  latencyMs?: number;\n  error?: string;\n}\n\nexport async function generateDebugBundle(): Promise\u003CDebugBundle> {\n  const bundle: DebugBundle = {\n    timestamp: new Date().toISOString(),\n    environment: getEnvironmentInfo(),\n    apiStatus: await checkApiStatus(),\n    recentErrors: collectRecentErrors(),\n    configuration: getConfigSnapshot(),\n    networkTests: await runNetworkTests(),\n  };\n\n  return bundle;\n}\n\nfunction getEnvironmentInfo(): EnvironmentInfo {\n  return {\n    nodeVersion: process.version,\n    platform: os.platform(),\n    arch: os.arch(),\n    osRelease: os.release(),\n    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n    memory: {\n      total: os.totalmem(),\n      free: os.freemem(),\n      used: os.totalmem() - os.freemem(),\n    },\n  };\n}\n\nasync function checkApiStatus(): Promise\u003CApiStatus> {\n  const endpoint = process.env.TWINMIND_API_URL || 'https:\u002F\u002Fapi.twinmind.com\u002Fv1';\n  const start = Date.now();\n\n  try {\n    const response = await fetch(`${endpoint}\u002Fhealth`, {\n      headers: {\n        'Authorization': `Bearer ${process.env.TWINMIND_API_KEY}`,\n      },\n    });\n\n    return {\n      healthy: response.ok,\n      latencyMs: Date.now() - start,\n      endpoint,\n      responseHeaders: Object.fromEntries(response.headers.entries()),\n    };\n  } catch (error: any) {\n    return {\n      healthy: false,\n      latencyMs: Date.now() - start,\n      endpoint,\n    };\n  }\n}\n\nfunction collectRecentErrors(): ErrorEntry[] {\n  \u002F\u002F In a real implementation, this would read from error logs\n  \u002F\u002F For now, return empty array\n  return [];\n}\n\nfunction getConfigSnapshot(): ConfigSnapshot {\n  const apiKey = process.env.TWINMIND_API_KEY || '';\n\n  return {\n    apiKeyPresent: apiKey.length > 0,\n    apiKeyPrefix: apiKey.substring(0, 8) + '...',\n    baseUrl: process.env.TWINMIND_API_URL || 'https:\u002F\u002Fapi.twinmind.com\u002Fv1',\n    timeout: parseInt(process.env.TWINMIND_TIMEOUT || '30000'),  # 30000: 30 seconds in ms\n    environment: process.env.NODE_ENV || 'development',\n  };\n}\n\nasync function runNetworkTests(): Promise\u003CNetworkTest[]> {\n  const endpoints = [\n    'https:\u002F\u002Fapi.twinmind.com',\n    'https:\u002F\u002Fstatus.twinmind.com',\n    'https:\u002F\u002Ftwinmind.com',\n  ];\n\n  const tests: NetworkTest[] = [];\n\n  for (const endpoint of endpoints) {\n    const start = Date.now();\n    try {\n      const response = await fetch(endpoint, { method: 'HEAD' });\n      tests.push({\n        endpoint,\n        reachable: response.ok,\n        latencyMs: Date.now() - start,\n      });\n    } catch (error: any) {\n      tests.push({\n        endpoint,\n        reachable: false,\n        error: error.message,\n      });\n    }\n  }\n\n  return tests;\n}\n\n\u002F\u002F Save bundle to file\nexport async function saveDebugBundle(outputPath?: string): Promise\u003Cstring> {\n  const bundle = await generateDebugBundle();\n\n  const filename = outputPath || path.join(\n    os.tmpdir(),\n    `twinmind-debug-${Date.now()}.json`\n  );\n\n  fs.writeFileSync(filename, JSON.stringify(bundle, null, 2));\n\n  console.log(`Debug bundle saved to: ${filename}`);\n  return filename;\n}\n```\n\n### Step 2: Run Debug Bundle Collection\n\n```bash\nset -euo pipefail\n# Using the script\nnpx ts-node scripts\u002Ftwinmind-debug-bundle.ts\n\n# Or quick CLI commands:\n\n# Check API health\ncurl -w \"\\nLatency: %{time_total}s\\n\" \\\n  -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Fhealth\n\n# Check account status\ncurl -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Fme | jq\n\n# Check rate limit status\ncurl -I -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Fhealth 2>\u002Fdev\u002Fnull | grep -i ratelimit\n\n# Test transcription endpoint\ncurl -X POST \\\n  -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"audio_url\":\"https:\u002F\u002Fexample.com\u002Ftest.mp3\"}' \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Ftranscribe\n```\n\n### Step 3: Browser Extension Debugging\n\n```javascript\n\u002F\u002F Open Chrome DevTools (F12) on any TwinMind page\n\u002F\u002F Console commands for debugging:\n\n\u002F\u002F Check extension version\nchrome.runtime.getManifest().version\n\n\u002F\u002F Check stored data\nchrome.storage.local.get(null, console.log)\n\n\u002F\u002F Check permissions\nnavigator.permissions.query({name: 'microphone'}).then(console.log)\n\n\u002F\u002F Check audio devices\nnavigator.mediaDevices.enumerateDevices().then(devices => {\n  console.log('Audio devices:', devices.filter(d => d.kind === 'audioinput'))\n})\n\n\u002F\u002F Check extension errors\n\u002F\u002F Go to: chrome:\u002F\u002Fextensions > TwinMind > Errors\n```\n\n### Step 4: Collect Network HAR File\n\n```\n1. Open Chrome DevTools (F12)\n2. Go to Network tab\n3. Check \"Preserve log\"\n4. Reproduce the issue\n5. Right-click > Save all as HAR with content\n```\n\n### Step 5: Generate Full Debug Report\n\n```typescript\n\u002F\u002F scripts\u002Ffull-debug-report.ts\nimport { generateDebugBundle } from '.\u002Ftwinmind-debug-bundle';\n\nasync function generateFullReport() {\n  const bundle = await generateDebugBundle();\n\n  const report = `\n# TwinMind Debug Report\nGenerated: ${bundle.timestamp}\n\n## Environment\n- Node: ${bundle.environment.nodeVersion}\n- Platform: ${bundle.environment.platform} (${bundle.environment.arch})\n- OS: ${bundle.environment.osRelease}\n- Timezone: ${bundle.environment.timezone}\n- Memory: ${Math.round(bundle.environment.memory.used \u002F 1024 \u002F 1024)}MB \u002F ${Math.round(bundle.environment.memory.total \u002F 1024 \u002F 1024)}MB  # 1024: 1 KB\n\n## API Status\n- Healthy: ${bundle.apiStatus.healthy ? 'Yes' : 'No'}\n- Latency: ${bundle.apiStatus.latencyMs}ms\n- Endpoint: ${bundle.apiStatus.endpoint}\n\n## Configuration\n- API Key Present: ${bundle.configuration.apiKeyPresent}\n- API Key Prefix: ${bundle.configuration.apiKeyPrefix}\n- Base URL: ${bundle.configuration.baseUrl}\n- Timeout: ${bundle.configuration.timeout}ms\n- Environment: ${bundle.configuration.environment}\n\n## Network Tests\n${bundle.networkTests.map(t =>\n  `- ${t.endpoint}: ${t.reachable ? `OK (${t.latencyMs}ms)` : `FAILED - ${t.error}`}`\n).join('\\n')}\n\n## Recent Errors\n${bundle.recentErrors.length === 0 ? 'No recent errors' :\n  bundle.recentErrors.map(e =>\n    `- [${e.timestamp}] ${e.type}: ${e.message}`\n  ).join('\\n')\n}\n\n## Troubleshooting Steps Taken\n[ ] Verified API key is valid\n[ ] Checked microphone permissions\n[ ] Tested network connectivity\n[ ] Cleared browser cache\u002Fdata\n[ ] Disabled conflicting extensions\n[ ] Reproduced in incognito mode\n\n## Issue Description\n[Describe the issue here]\n\n## Steps to Reproduce\n1. [Step 1]\n2. [Step 2]\n3. [Step 3]\n\n## Expected Behavior\n[What should happen]\n\n## Actual Behavior\n[What actually happens]\n`;\n\n  console.log(report);\n  return report;\n}\n\ngenerateFullReport();\n```\n\n## Output\n- JSON debug bundle file\n- Environment information\n- API connectivity status\n- Network test results\n- Configuration snapshot (no secrets)\n- Debug report template\n\nExample output:\n```json\n{\n  \"timestamp\": \"2025-01-15T10:30:00Z\",  # 2025 year\n  \"environment\": {\n    \"nodeVersion\": \"v20.10.0\",\n    \"platform\": \"darwin\",\n    \"arch\": \"arm64\"\n  },\n  \"apiStatus\": {\n    \"healthy\": true,\n    \"latencyMs\": 145\n  },\n  \"networkTests\": [\n    {\"endpoint\": \"https:\u002F\u002Fapi.twinmind.com\", \"reachable\": true, \"latencyMs\": 120}\n  ]\n}\n```\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| API unreachable | Network\u002Ffirewall | Check VPN\u002Fproxy settings |\n| Auth failed | Invalid key | Regenerate API key |\n| Timeout | Slow network | Increase timeout value |\n| Missing env vars | Not configured | Check .env file |\n\n## Information to Include in Support Request\n\n1. **Debug bundle JSON** - Generated by this script\n2. **HAR file** - Network requests during failure\n3. **Console logs** - Browser or terminal errors\n4. **Request ID** - From response headers (X-Request-Id)\n5. **Timestamps** - When the issue occurred\n6. **Steps to reproduce** - Detailed sequence\n\n## Security Notes\n\nThe debug bundle intentionally excludes:\n- Full API keys (only prefix shown)\n- Audio content\n- Transcript content\n- Personal information\n- OAuth tokens\n\nAlways review the bundle before sharing with support.\n\n## Resources\n- [TwinMind Support](https:\u002F\u002Ftwinmind.com\u002Fsupport)\n- [TwinMind Status](https:\u002F\u002Fstatus.twinmind.com)\n- [Community Forum](https:\u002F\u002Fcommunity.twinmind.com)\n\n## Next Steps\nFor rate limiting strategies, see `twinmind-rate-limits`.\n\n## Examples\n\n**Basic usage**: Apply twinmind debug bundle to a standard project setup with default configuration options.\n\n**Advanced scenario**: Customize twinmind debug bundle for production environments with multiple constraints and team-specific requirements.","# TwinMind Debug Bundle\n\n## Overview\nCollect comprehensive diagnostic data to troubleshoot TwinMind issues.\n\n## Prerequisites\n- TwinMind extension or API configured\n- Access to browser developer tools\n- Command-line access (for API debugging)\n\n## Instructions\n\n### Step 1: Create Debug Bundle Script\n\n```typescript\n\u002F\u002F scripts\u002Ftwinmind-debug-bundle.ts\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\n\ninterface DebugBundle {\n  timestamp: string;\n  environment: EnvironmentInfo;\n  apiStatus: ApiStatus;\n  recentErrors: ErrorEntry[];\n  configuration: ConfigSnapshot;\n  networkTests: NetworkTest[];\n}\n\ninterface EnvironmentInfo {\n  nodeVersion: string;\n  platform: string;\n  arch: string;\n  osRelease: string;\n  timezone: string;\n  memory: {\n    total: number;\n    free: number;\n    used: number;\n  };\n}\n\ninterface ApiStatus {\n  healthy: boolean;\n  latencyMs: number;\n  endpoint: string;\n  responseHeaders?: Record\u003Cstring, string>;\n}\n\ninterface ErrorEntry {\n  timestamp: string;\n  type: string;\n  message: string;\n  stack?: string;\n  context?: Record\u003Cstring, any>;\n}\n\ninterface ConfigSnapshot {\n  apiKeyPresent: boolean;\n  apiKeyPrefix: string;\n  baseUrl: string;\n  timeout: number;\n  environment: string;\n}\n\ninterface NetworkTest {\n  endpoint: string;\n  reachable: boolean;\n  latencyMs?: number;\n  error?: string;\n}\n\nexport async function generateDebugBundle(): Promise\u003CDebugBundle> {\n  const bundle: DebugBundle = {\n    timestamp: new Date().toISOString(),\n    environment: getEnvironmentInfo(),\n    apiStatus: await checkApiStatus(),\n    recentErrors: collectRecentErrors(),\n    configuration: getConfigSnapshot(),\n    networkTests: await runNetworkTests(),\n  };\n\n  return bundle;\n}\n\nfunction getEnvironmentInfo(): EnvironmentInfo {\n  return {\n    nodeVersion: process.version,\n    platform: os.platform(),\n    arch: os.arch(),\n    osRelease: os.release(),\n    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n    memory: {\n      total: os.totalmem(),\n      free: os.freemem(),\n      used: os.totalmem() - os.freemem(),\n    },\n  };\n}\n\nasync function checkApiStatus(): Promise\u003CApiStatus> {\n  const endpoint = process.env.TWINMIND_API_URL || 'https:\u002F\u002Fapi.twinmind.com\u002Fv1';\n  const start = Date.now();\n\n  try {\n    const response = await fetch(`${endpoint}\u002Fhealth`, {\n      headers: {\n        'Authorization': `Bearer ${process.env.TWINMIND_API_KEY}`,\n      },\n    });\n\n    return {\n      healthy: response.ok,\n      latencyMs: Date.now() - start,\n      endpoint,\n      responseHeaders: Object.fromEntries(response.headers.entries()),\n    };\n  } catch (error: any) {\n    return {\n      healthy: false,\n      latencyMs: Date.now() - start,\n      endpoint,\n    };\n  }\n}\n\nfunction collectRecentErrors(): ErrorEntry[] {\n  \u002F\u002F In a real implementation, this would read from error logs\n  \u002F\u002F For now, return empty array\n  return [];\n}\n\nfunction getConfigSnapshot(): ConfigSnapshot {\n  const apiKey = process.env.TWINMIND_API_KEY || '';\n\n  return {\n    apiKeyPresent: apiKey.length > 0,\n    apiKeyPrefix: apiKey.substring(0, 8) + '...',\n    baseUrl: process.env.TWINMIND_API_URL || 'https:\u002F\u002Fapi.twinmind.com\u002Fv1',\n    timeout: parseInt(process.env.TWINMIND_TIMEOUT || '30000'),  # 30000: 30 seconds in ms\n    environment: process.env.NODE_ENV || 'development',\n  };\n}\n\nasync function runNetworkTests(): Promise\u003CNetworkTest[]> {\n  const endpoints = [\n    'https:\u002F\u002Fapi.twinmind.com',\n    'https:\u002F\u002Fstatus.twinmind.com',\n    'https:\u002F\u002Ftwinmind.com',\n  ];\n\n  const tests: NetworkTest[] = [];\n\n  for (const endpoint of endpoints) {\n    const start = Date.now();\n    try {\n      const response = await fetch(endpoint, { method: 'HEAD' });\n      tests.push({\n        endpoint,\n        reachable: response.ok,\n        latencyMs: Date.now() - start,\n      });\n    } catch (error: any) {\n      tests.push({\n        endpoint,\n        reachable: false,\n        error: error.message,\n      });\n    }\n  }\n\n  return tests;\n}\n\n\u002F\u002F Save bundle to file\nexport async function saveDebugBundle(outputPath?: string): Promise\u003Cstring> {\n  const bundle = await generateDebugBundle();\n\n  const filename = outputPath || path.join(\n    os.tmpdir(),\n    `twinmind-debug-${Date.now()}.json`\n  );\n\n  fs.writeFileSync(filename, JSON.stringify(bundle, null, 2));\n\n  console.log(`Debug bundle saved to: ${filename}`);\n  return filename;\n}\n```\n\n### Step 2: Run Debug Bundle Collection\n\n```bash\nset -euo pipefail\n# Using the script\nnpx ts-node scripts\u002Ftwinmind-debug-bundle.ts\n\n# Or quick CLI commands:\n\n# Check API health\ncurl -w \"\\nLatency: %{time_total}s\\n\" \\\n  -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Fhealth\n\n# Check account status\ncurl -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Fme | jq\n\n# Check rate limit status\ncurl -I -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Fhealth 2>\u002Fdev\u002Fnull | grep -i ratelimit\n\n# Test transcription endpoint\ncurl -X POST \\\n  -H \"Authorization: Bearer $TWINMIND_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"audio_url\":\"https:\u002F\u002Fexample.com\u002Ftest.mp3\"}' \\\n  https:\u002F\u002Fapi.twinmind.com\u002Fv1\u002Ftranscribe\n```\n\n### Step 3: Browser Extension Debugging\n\n```javascript\n\u002F\u002F Open Chrome DevTools (F12) on any TwinMind page\n\u002F\u002F Console commands for debugging:\n\n\u002F\u002F Check extension version\nchrome.runtime.getManifest().version\n\n\u002F\u002F Check stored data\nchrome.storage.local.get(null, console.log)\n\n\u002F\u002F Check permissions\nnavigator.permissions.query({name: 'microphone'}).then(console.log)\n\n\u002F\u002F Check audio devices\nnavigator.mediaDevices.enumerateDevices().then(devices => {\n  console.log('Audio devices:', devices.filter(d => d.kind === 'audioinput'))\n})\n\n\u002F\u002F Check extension errors\n\u002F\u002F Go to: chrome:\u002F\u002Fextensions > TwinMind > Errors\n```\n\n### Step 4: Collect Network HAR File\n\n```\n1. Open Chrome DevTools (F12)\n2. Go to Network tab\n3. Check \"Preserve log\"\n4. Reproduce the issue\n5. Right-click > Save all as HAR with content\n```\n\n### Step 5: Generate Full Debug Report\n\n```typescript\n\u002F\u002F scripts\u002Ffull-debug-report.ts\nimport { generateDebugBundle } from '.\u002Ftwinmind-debug-bundle';\n\nasync function generateFullReport() {\n  const bundle = await generateDebugBundle();\n\n  const report = `\n# TwinMind Debug Report\nGenerated: ${bundle.timestamp}\n\n## Environment\n- Node: ${bundle.environment.nodeVersion}\n- Platform: ${bundle.environment.platform} (${bundle.environment.arch})\n- OS: ${bundle.environment.osRelease}\n- Timezone: ${bundle.environment.timezone}\n- Memory: ${Math.round(bundle.environment.memory.used \u002F 1024 \u002F 1024)}MB \u002F ${Math.round(bundle.environment.memory.total \u002F 1024 \u002F 1024)}MB  # 1024: 1 KB\n\n## API Status\n- Healthy: ${bundle.apiStatus.healthy ? 'Yes' : 'No'}\n- Latency: ${bundle.apiStatus.latencyMs}ms\n- Endpoint: ${bundle.apiStatus.endpoint}\n\n## Configuration\n- API Key Present: ${bundle.configuration.apiKeyPresent}\n- API Key Prefix: ${bundle.configuration.apiKeyPrefix}\n- Base URL: ${bundle.configuration.baseUrl}\n- Timeout: ${bundle.configuration.timeout}ms\n- Environment: ${bundle.configuration.environment}\n\n## Network Tests\n${bundle.networkTests.map(t =>\n  `- ${t.endpoint}: ${t.reachable ? `OK (${t.latencyMs}ms)` : `FAILED - ${t.error}`}`\n).join('\\n')}\n\n## Recent Errors\n${bundle.recentErrors.length === 0 ? 'No recent errors' :\n  bundle.recentErrors.map(e =>\n    `- [${e.timestamp}] ${e.type}: ${e.message}`\n  ).join('\\n')\n}\n\n## Troubleshooting Steps Taken\n[ ] Verified API key is valid\n[ ] Checked microphone permissions\n[ ] Tested network connectivity\n[ ] Cleared browser cache\u002Fdata\n[ ] Disabled conflicting extensions\n[ ] Reproduced in incognito mode\n\n## Issue Description\n[Describe the issue here]\n\n## Steps to Reproduce\n1. [Step 1]\n2. [Step 2]\n3. [Step 3]\n\n## Expected Behavior\n[What should happen]\n\n## Actual Behavior\n[What actually happens]\n`;\n\n  console.log(report);\n  return report;\n}\n\ngenerateFullReport();\n```\n\n## Output\n- JSON debug bundle file\n- Environment information\n- API connectivity status\n- Network test results\n- Configuration snapshot (no secrets)\n- Debug report template\n\nExample output:\n```json\n{\n  \"timestamp\": \"2025-01-15T10:30:00Z\",  # 2025 year\n  \"environment\": {\n    \"nodeVersion\": \"v20.10.0\",\n    \"platform\": \"darwin\",\n    \"arch\": \"arm64\"\n  },\n  \"apiStatus\": {\n    \"healthy\": true,\n    \"latencyMs\": 145\n  },\n  \"networkTests\": [\n    {\"endpoint\": \"https:\u002F\u002Fapi.twinmind.com\", \"reachable\": true, \"latencyMs\": 120}\n  ]\n}\n```\n\n## Error Handling\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| API unreachable | Network\u002Ffirewall | Check VPN\u002Fproxy settings |\n| Auth failed | Invalid key | Regenerate API key |\n| Timeout | Slow network | Increase timeout value |\n| Missing env vars | Not configured | Check .env file |\n\n## Information to Include in Support Request\n\n1. **Debug bundle JSON** - Generated by this script\n2. **HAR file** - Network requests during failure\n3. **Console logs** - Browser or terminal errors\n4. **Request ID** - From response headers (X-Request-Id)\n5. **Timestamps** - When the issue occurred\n6. **Steps to reproduce** - Detailed sequence\n\n## Security Notes\n\nThe debug bundle intentionally excludes:\n- Full API keys (only prefix shown)\n- Audio content\n- Transcript content\n- Personal information\n- OAuth tokens\n\nAlways review the bundle before sharing with support.\n\n## Resources\n- [TwinMind Support](https:\u002F\u002Ftwinmind.com\u002Fsupport)\n- [TwinMind Status](https:\u002F\u002Fstatus.twinmind.com)\n- [Community Forum](https:\u002F\u002Fcommunity.twinmind.com)\n\n## Next Steps\nFor rate limiting strategies, see `twinmind-rate-limits`.\n\n## Examples\n\n**Basic usage**: Apply twinmind debug bundle to a standard project setup with default configuration options.\n\n**Advanced scenario**: Customize twinmind debug bundle for production environments with multiple constraints and team-specific requirements.",{"name":5,"author":48,"license":14,"version":49,"description":50,"allowed-tools":51,"compatible-with":52},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Collect comprehensive diagnostic information for TwinMind issues.\nUse when preparing support requests, investigating complex problems,\nor gathering evidence for bug reports.\nTrigger with phrases like \"twinmind debug\", \"twinmind diagnostics\",\n\"collect twinmind info\", \"twinmind support bundle\".\n","Read, Write, Bash(curl:*), Bash(npm:*), Grep","claude-code, codex, openclaw","master","3f5d983eb4ef375b749adcd6b07ec03bd82ae8a8","claude-code\u002Fplugins-plus-skills\u002Fplugins\u002Fsaas-packs\u002Ftwinmind-pack\u002Fskills\u002Ftwinmind-debug-bundle",0,"https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills","https:\u002F\u002Fgithub.com\u002Fmicsapp","2026-03-20 11:24:18",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add micsapp\u002Fmicstec-skills --skill twinmind-debug-bundle",{"tool":66,"command":67},"bunx","bunx skills add micsapp\u002Fmicstec-skills --skill twinmind-debug-bundle",{"tool":69,"command":70},"pnpm","pnpm dlx skills add micsapp\u002Fmicstec-skills --skill twinmind-debug-bundle","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fclaude-code\u002Fplugins-plus-skills\u002Fplugins\u002Fsaas-packs\u002Ftwinmind-pack\u002Fskills\u002Ftwinmind-debug-bundle\u002FSKILL.md",true,[],[75,107,136,157,177,201],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":87,"publishedAt":43},"01M6HBTJ02FXBFG9NYEHHYAP52","azure-apim-architecture","Analyzes and explains Azure API Management architecture decisions for enterprise API marketplace implementations using VNet Internal mode, Front Door, hybrid authentication, and multi-environment strategies. Use when discussing APIM component selection, network topology, cost optimization, or comparing alternatives like workspaces vs instances, VNet Internal vs External mode, or Front Door vs Application Gateway.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fazure-apim-architecture\u002FSKILL.md",[81,86],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,27],"architecture","azure","azure apim architecture","component","authentication","gateway","topology","Optimization","network","api","team","environment","multi-environment","workspaces","instances","selection","strategies","azure api management","mode",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":121,"publishedAt":43},"01M6HBT7J4H082JEEA670B3EQ9","apiops-deployment","Guides deployment of Azure API Management infrastructure using Infrastructure as Code (Bicep\u002FTerraform), CI\u002FCD pipelines (GitHub Actions\u002FAzure DevOps), and APIOps workflows. Use when deploying APIM, creating pipelines, or implementing dev→test→prod promotion strategies.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fapiops-deployment\u002FSKILL.md",[113,114,117,120],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},{"categoryNo":115,"categoryName":116,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":118,"categoryName":119,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[122,123,124,125,89,126,40,127,128,129,130,131,97,98,104,132,133,105,134,135],"deployment","apiops deployment","workflows","azure devops","infrastructure","infrastructure as code","actions","ci","github actions","github-actions","as","guides","CI\u002FCD","implementing",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":43},"01M6HBT2HEA23THNE9E00GYQBE","apim-policy-authoring","Creates production-ready Azure API Management policy XML for authentication (OAuth 2.0, JWT validation, subscription keys), rate limiting, CORS configuration, error handling, and API transformations. Use when implementing API security, access control, or request\u002Fresponse processing logic.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fapim-policy-authoring\u002FSKILL.md",[142],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},[144,145,146,147,89,92,97,98,148,149,150,151,152,153,154,105,155,156,135,27],"policy","authoring","apim policy authoring","security","access","use","ready","api security","Access Control","error","processing","cors configuration","production-ready",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":165,"publishedAt":43},"01M6HBSY65SB29J9WE9KYD0K6T","api-security-review","Reviews Azure API Management configurations for security vulnerabilities, OWASP API Security Top 10 compliance, VNet Internal mode validation, Private Link verification, and Azure Security Benchmark alignment. Use when performing security audits, pre-deployment validation, or compliance reviews.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fapi-security-review\u002FSKILL.md",[163,164],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[166,147,167,97,151,168,89,122,169,170,171,172,98,173,105,174,175,176,106,27],"review","security review","api security review","benchmark","verification","owasp","owasp-api","alignment","azure security","reviews","top",{"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":183,"publishedAt":43},"01M6HBSRW4PDFE6K4F8JYPZQ05","jira-cli","Interact with Jira from the command line to create, list, view, edit, and transition issues, manage sprints and epics, and perform common Jira workflows. Use when the user asks about Jira tasks, tickets, issues, sprints, or needs to manage project work items.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fawesome-copilot-agents\u002Fskills\u002Fjira-cli\u002FSKILL.md",[],[184,185,186,124,187,188,189,39,97,190,191,192,193,194,195,196,197,198,199,200],"cli","jira","jira cli","init","tasks","create","common","work","command","edit","list","view","project","project work","token","line","sprints",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":207,"publishedAt":43},"01M6HBSNS3JHMW603G47TWE31H","calculator","Performs arbitrary-precision arithmetic calculations including addition, subtraction, multiplication, division, and exponents. Use when the user asks to calculate, compute, or evaluate math expressions, or when precise decimal arithmetic is needed to avoid floating-point errors.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fawesome-copilot-agents\u002Fskills\u002Fcalculator\u002FSKILL.md",[],[203,208,209,210,211,212,213,149,214,215],"npm","js","calculate","node","math","user","compute","errors"]